summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Dröge <sebastian.droege@collabora.co.uk>2013-05-10 11:31:37 +0200
committerTim-Philipp Müller <tim@centricular.net>2013-05-18 11:11:15 +0100
commit20998a6bd89615e34a6047e8eb89234e421bd4c0 (patch)
tree8f7032d2f177ac2ec7d919d49b7054eea28e3e8b
parenta314bcd969e2e68c355755e1c528cd3c267ad4e5 (diff)
vorbisparse: Fix event handling
Internal state should only be reset on FLUSH_STOP, not FLUSH_START. Also forward pre-caps events immediately and don't queue them.
-rw-r--r--ext/vorbis/gstvorbisparse.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/ext/vorbis/gstvorbisparse.c b/ext/vorbis/gstvorbisparse.c
index 5788767c3..ee593caa1 100644
--- a/ext/vorbis/gstvorbisparse.c
+++ b/ext/vorbis/gstvorbisparse.c
@@ -457,7 +457,7 @@ vorbis_parse_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
parse = GST_VORBIS_PARSE (parent);
switch (GST_EVENT_TYPE (event)) {
- case GST_EVENT_FLUSH_START:
+ case GST_EVENT_FLUSH_STOP:
vorbis_parse_clear_queue (parse);
parse->prev_granulepos = -1;
parse->prev_blocksize = -1;
@@ -468,7 +468,8 @@ vorbis_parse_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
ret = gst_pad_event_default (pad, parent, event);
break;
default:
- if (!parse->streamheader_sent && GST_EVENT_IS_SERIALIZED (event))
+ if (!parse->streamheader_sent && GST_EVENT_IS_SERIALIZED (event)
+ && GST_EVENT_TYPE (event) > GST_EVENT_CAPS)
ret = vorbis_parse_queue_event (parse, event);
else
ret = gst_pad_event_default (pad, parent, event);