From 59fb749ef64fb54315ca7399785962b1ffb4ba55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Mon, 11 Aug 2014 10:57:43 +0200 Subject: [PATCH] decodebin: Remove buffering special casing for adaptive streaming demuxers They output smaller buffers now and we should be able to handle the buffering limits like in every other situation now. --- gst/playback/gstdecodebin2.c | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/gst/playback/gstdecodebin2.c b/gst/playback/gstdecodebin2.c index c7f61704e4..b8d8052448 100644 --- a/gst/playback/gstdecodebin2.c +++ b/gst/playback/gstdecodebin2.c @@ -239,7 +239,6 @@ enum * as low as possible (try to aim for 5 buffers) */ #define AUTO_PLAY_SIZE_BYTES 2 * 1024 * 1024 #define AUTO_PLAY_SIZE_BUFFERS 5 -#define AUTO_PLAY_ADAPTIVE_SIZE_BUFFERS 2 #define AUTO_PLAY_SIZE_TIME 0 #define DEFAULT_SUBTITLE_ENCODING NULL @@ -285,8 +284,7 @@ static void type_found (GstElement * typefind, guint probability, GstCaps * caps, GstDecodeBin * decode_bin); static void decodebin_set_queue_size (GstDecodeBin * dbin, - GstElement * multiqueue, gboolean preroll, gboolean seekable, - gboolean adaptive_streaming); + GstElement * multiqueue, gboolean preroll, gboolean seekable); static gboolean gst_decode_bin_autoplug_continue (GstElement * element, GstPad * pad, GstCaps * caps); @@ -2191,7 +2189,7 @@ connect_pad (GstDecodeBin * dbin, GstElement * src, GstDecodePad * dpad, chain->adaptive_demuxer = is_adaptive_demuxer_element (element); /* For adaptive streaming demuxer we insert a multiqueue after - * this demuxer. This multiqueue will get one fragment per buffer. + * this demuxer. * Now for the case where we have a container stream inside these * buffers, another demuxer will be plugged and after this second * demuxer there will be a second multiqueue. This second multiqueue @@ -3275,7 +3273,7 @@ gst_decode_group_hide (GstDecodeGroup * group) * playing or prerolling. */ static void decodebin_set_queue_size (GstDecodeBin * dbin, GstElement * multiqueue, - gboolean preroll, gboolean seekable, gboolean adaptive_streaming) + gboolean preroll, gboolean seekable) { guint max_bytes, max_buffers; guint64 max_time; @@ -3300,14 +3298,6 @@ decodebin_set_queue_size (GstDecodeBin * dbin, GstElement * multiqueue, max_time = seekable ? AUTO_PREROLL_SEEKABLE_SIZE_TIME : AUTO_PREROLL_NOT_SEEKABLE_SIZE_TIME; } - } else if (adaptive_streaming && dbin->use_buffering) { - /* If we're doing adaptive streaming and this is *not* - * the multiqueue doing the buffering messages, we only - * want a buffers limit here - */ - max_buffers = AUTO_PLAY_ADAPTIVE_SIZE_BUFFERS; - max_time = 0; - max_bytes = 0; } else { /* update runtime limits. At runtime, we try to keep the amount of buffers * in the queues as low as possible (but at least 5 buffers). */ @@ -3315,9 +3305,6 @@ decodebin_set_queue_size (GstDecodeBin * dbin, GstElement * multiqueue, max_bytes = 0; else if ((max_bytes = dbin->max_size_bytes) == 0) max_bytes = AUTO_PLAY_SIZE_BYTES; - /* if we're after an adaptive streaming demuxer keep - * a lower number of buffers as they are usually very - * large */ if ((max_buffers = dbin->max_size_buffers) == 0) max_buffers = AUTO_PLAY_SIZE_BUFFERS; /* this is a multiqueue with disabled buffering, don't limit max_time */ @@ -3369,8 +3356,7 @@ gst_decode_group_new (GstDecodeBin * dbin, GstDecodeChain * parent) gst_object_unref (pad); } } - decodebin_set_queue_size (dbin, mq, TRUE, seekable, - (parent ? parent->adaptive_demuxer : FALSE)); + decodebin_set_queue_size (dbin, mq, TRUE, seekable); group->overrunsig = g_signal_connect (mq, "overrun", G_CALLBACK (multi_queue_overrun_cb), group); @@ -3785,8 +3771,7 @@ gst_decode_group_reset_buffering (GstDecodeGroup * group) "high-percent", group->dbin->high_percent, NULL); } decodebin_set_queue_size (group->dbin, group->multiqueue, FALSE, - (group->parent ? group->parent->seekable : TRUE), - (group->parent ? group->parent->adaptive_demuxer : FALSE)); + (group->parent ? group->parent->seekable : TRUE)); GST_DEBUG_OBJECT (group->dbin, "Setting %s buffering to %d", GST_ELEMENT_NAME (group->multiqueue), !ret);