From 0da8700ae58ce948ecb542284e6edec291c29a18 Mon Sep 17 00:00:00 2001 From: "F. Duncanh" Date: Sun, 29 Sep 2024 00:10:56 -0400 Subject: [PATCH] fixes #346 (video paused when screen orientation changes) --- renderers/video_renderer.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/renderers/video_renderer.c b/renderers/video_renderer.c index dcc5bc6..e41b32a 100644 --- a/renderers/video_renderer.c +++ b/renderers/video_renderer.c @@ -508,18 +508,24 @@ gboolean gstreamer_pipeline_bus_callback(GstBus *bus, GstMessage *message, void void video_renderer_h265 (bool video_is_h265) { /* set renderer to h264 or h265, depending on pps/sps received by raop_rtp_mirror */ + video_renderer_t *renderer_new = video_is_h265 ? renderer_type[1] : renderer_type[0]; + if (renderer == renderer_new) { + return; + } video_renderer_t *renderer_prev = renderer; + if (renderer) { video_renderer_pause(); } - renderer = video_is_h265 ? renderer_type[1] : renderer_type[0]; + renderer = renderer_new; if (renderer_prev && renderer_prev != renderer) { gst_app_src_end_of_stream (GST_APP_SRC(renderer_prev->appsrc)); gst_bus_set_flushing(renderer_prev->bus, TRUE); /* set state of previous renderer to GST_STATE_NULL to (hopefully?) close video window */ gst_element_set_state (renderer_prev->pipeline, GST_STATE_NULL); gst_element_set_state (renderer_prev->pipeline, GST_STATE_READY); - } + } + video_renderer_resume; } unsigned int video_reset_callback(void * loop) {