summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSjoerd Simons <sjoerd@luon.net>2014-01-24 21:58:35 +0100
committerSjoerd Simons <sjoerd@luon.net>2014-01-24 22:22:48 +0100
commit1b5895c9365e2c02f65a1a9bdffcee327beaee18 (patch)
treefa8fc0b0ca4815ae11950025fdf98e84c2d7446d
parent520221c47a64e46c23cf120b9e8a497b6af157da (diff)
avdemux: Don't go into pull mode when the sequential flag is set
When the scheduling query results has GST_SCHEDULING_FLAG_SEQUENTIAL set in its flags don't go into pull mode to prevent over-eager seeking. https://bugzilla.gnome.org/show_bug.cgi?id=722935
-rw-r--r--ext/libav/gstavdemux.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/ext/libav/gstavdemux.c b/ext/libav/gstavdemux.c
index 1e4ef2f..3e81301 100644
--- a/ext/libav/gstavdemux.c
+++ b/ext/libav/gstavdemux.c
@@ -1747,6 +1747,7 @@ gst_ffmpegdemux_sink_activate (GstPad * sinkpad, GstObject * parent)
{
GstQuery *query;
gboolean pull_mode;
+ GstSchedulingFlags flags;
query = gst_query_new_scheduling ();
@@ -1757,6 +1758,11 @@ gst_ffmpegdemux_sink_activate (GstPad * sinkpad, GstObject * parent)
pull_mode = gst_query_has_scheduling_mode_with_flags (query,
GST_PAD_MODE_PULL, GST_SCHEDULING_FLAG_SEEKABLE);
+
+ gst_query_parse_scheduling (query, &flags, NULL, NULL, NULL);
+ if (flags & GST_SCHEDULING_FLAG_SEQUENTIAL)
+ pull_mode = FALSE;
+
gst_query_unref (query);
if (!pull_mode)