From 027654e71ebe6af5e726d4403e173f65a0b4ec2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Fri, 10 May 2013 11:31:37 +0200 Subject: [PATCH] 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. --- ext/vorbis/gstvorbisparse.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/ext/vorbis/gstvorbisparse.c b/ext/vorbis/gstvorbisparse.c index 587bc02686..eff07b8eb2 100644 --- a/ext/vorbis/gstvorbisparse.c +++ b/ext/vorbis/gstvorbisparse.c @@ -456,7 +456,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; @@ -467,7 +467,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);