mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2025-01-27 09:38:17 +00:00
decodebin3: Don't output bogus GST_MESSAGE_STREAMS_SELECTED
When `is_selection_done` is called, it checks that all the requested streams are present in the active stream list ... ... except there could very well be a (about to be removed) stream from the previous selection present. Therefore filter the list of streams we add to the message by the streams which are actually requested. Fixes issues when switching between different stream types (ex: video-only to audio-only). Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3457>
This commit is contained in:
parent
9794c9bfd0
commit
d12534d21d
1 changed files with 8 additions and 4 deletions
|
@ -2106,10 +2106,14 @@ is_selection_done (GstDecodebin3 * dbin)
|
|||
for (tmp = dbin->output_streams; tmp; tmp = tmp->next) {
|
||||
DecodebinOutputStream *output = (DecodebinOutputStream *) tmp->data;
|
||||
if (output->slot) {
|
||||
GST_DEBUG_OBJECT (dbin, "Adding stream %s",
|
||||
gst_stream_get_stream_id (output->slot->active_stream));
|
||||
|
||||
gst_message_streams_selected_add (msg, output->slot->active_stream);
|
||||
const gchar *output_streamid =
|
||||
gst_stream_get_stream_id (output->slot->active_stream);
|
||||
GST_DEBUG_OBJECT (dbin, "Adding stream %s", output_streamid);
|
||||
if (stream_in_list (dbin->requested_selection, output_streamid))
|
||||
gst_message_streams_selected_add (msg, output->slot->active_stream);
|
||||
else
|
||||
GST_WARNING_OBJECT (dbin,
|
||||
"Output slot still active for old selection ?");
|
||||
} else
|
||||
GST_WARNING_OBJECT (dbin, "No valid slot for output %p", output);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue