diff options
author | Sebastian Dröge <sebastian.droege@collabora.co.uk> | 2013-05-10 11:31:37 +0200 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.net> | 2013-05-18 11:11:15 +0100 |
commit | 20998a6bd89615e34a6047e8eb89234e421bd4c0 (patch) | |
tree | 8f7032d2f177ac2ec7d919d49b7054eea28e3e8b | |
parent | a314bcd969e2e68c355755e1c528cd3c267ad4e5 (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.c | 5 |
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); |