diff --git a/gst/playback/gstdecodebin3-parse.c b/gst/playback/gstdecodebin3-parse.c index 0f1a17dfee..a54cf82942 100644 --- a/gst/playback/gstdecodebin3-parse.c +++ b/gst/playback/gstdecodebin3-parse.c @@ -360,6 +360,11 @@ remove_input_stream (GstDecodebin3 * dbin, DecodebinInputStream * stream) GST_DEBUG_OBJECT (dbin, "slot %p cleared", slot); } + if (stream->active_stream) + gst_object_unref (stream->active_stream); + if (stream->pending_stream) + gst_object_unref (stream->pending_stream); + dbin->input_streams = g_list_remove (dbin->input_streams, stream); g_free (stream); diff --git a/gst/playback/gstdecodebin3.c b/gst/playback/gstdecodebin3.c index 67afc4ab5b..c216590557 100644 --- a/gst/playback/gstdecodebin3.c +++ b/gst/playback/gstdecodebin3.c @@ -2312,6 +2312,7 @@ free_multiqueue_slot (GstDecodebin3 * dbin, MultiQueueSlot * slot) gst_element_release_request_pad (dbin->multiqueue, slot->sink_pad); gst_object_replace ((GstObject **) & slot->sink_pad, NULL); gst_object_replace ((GstObject **) & slot->src_pad, NULL); + gst_object_replace ((GstObject **) & slot->active_stream, NULL); g_free (slot); }