diff --git a/gst/playback/gstdecodebin2.c b/gst/playback/gstdecodebin2.c index 3e8268f026..ecf2a4d7c1 100644 --- a/gst/playback/gstdecodebin2.c +++ b/gst/playback/gstdecodebin2.c @@ -400,6 +400,7 @@ struct _GstDecodeChain GstPad *pad; /* srcpad that caused creation of this chain */ gboolean demuxer; /* TRUE if elements->data is a demuxer */ + gboolean seekable; /* TRUE if this chain ends on a demuxer and is seekable */ GList *elements; /* All elements in this group, first is the latest and most downstream element */ @@ -2401,7 +2402,8 @@ no_more_pads_cb (GstElement * element, GstDecodeChain * chain) * 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, TRUE); + decodebin_set_queue_size (group->dbin, group->multiqueue, FALSE, + (group->parent ? group->parent->seekable : TRUE)); CHAIN_MUTEX_UNLOCK (chain); EXPOSE_LOCK (chain->dbin); @@ -2927,7 +2929,7 @@ gst_decode_group_new (GstDecodeBin * dbin, GstDecodeChain * parent) ((GstDecodeElement *) parent->elements->data)->element; GstPad *pad = gst_element_get_static_pad (element, "sink"); if (pad) { - seekable = check_upstream_seekable (dbin, pad); + seekable = parent->seekable = check_upstream_seekable (dbin, pad); gst_object_unref (pad); } }