diff --git a/gst/playback/gstdecodebin2.c b/gst/playback/gstdecodebin2.c index f0f1ab807c..53f946d2fa 100644 --- a/gst/playback/gstdecodebin2.c +++ b/gst/playback/gstdecodebin2.c @@ -2901,6 +2901,13 @@ no_more_pads_cb (GstElement * element, GstDecodeChain * chain) GST_DEBUG_OBJECT (element, "Setting group %p to complete", group); group->no_more_pads = TRUE; + /* this group has prerolled enough to not need more pads, + * we can probably set its buffering state to playing now */ + GST_DEBUG_OBJECT (group->dbin, "Setting group %p multiqueue to " + "'playing' buffering mode", group); + decodebin_set_queue_size (group->dbin, group->multiqueue, FALSE, + (group->parent ? group->parent->seekable : TRUE), + (group->parent ? group->parent->adaptive_demuxer : FALSE)); CHAIN_MUTEX_UNLOCK (chain); EXPOSE_LOCK (chain->dbin); @@ -3316,6 +3323,13 @@ multi_queue_overrun_cb (GstElement * queue, GstDecodeGroup * group) queue); group->overrun = TRUE; + /* this group has prerolled enough to not need more pads, + * we can probably set its buffering state to playing now */ + GST_DEBUG_OBJECT (group->dbin, "Setting group %p multiqueue to " + "'playing' buffering mode", group); + decodebin_set_queue_size (group->dbin, group->multiqueue, FALSE, + (group->parent ? group->parent->seekable : TRUE), + (group->parent ? group->parent->adaptive_demuxer : FALSE)); /* FIXME: We should make sure that everything gets exposed now * even if child chains are not complete because the will never