theoraparse: Fix event handling
authorSebastian Dröge <sebastian@centricular.com>
Fri, 29 Nov 2013 12:32:55 +0000 (13:32 +0100)
committerSebastian Dröge <sebastian@centricular.com>
Fri, 29 Nov 2013 12:33:45 +0000 (13:33 +0100)
Send CAPS event before any SEGMENT events or any other events
that must come in order after the CAPS event.

ext/theora/gsttheoraparse.c

index d44c55b..062cacd 100644 (file)
@@ -365,11 +365,11 @@ theora_parse_push_headers (GstTheoraParse * parse)
 {
   gint i;
 
-  theora_parse_drain_event_queue (parse);
-
   if (!parse->streamheader_received)
     theora_parse_set_streamheader (parse);
 
+  theora_parse_drain_event_queue (parse);
+
   /* ignore return values, we pass along the result of pushing data packets only
    */
   for (i = 0; i < 3; i++) {
@@ -719,7 +719,8 @@ theora_parse_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
       ret = gst_pad_event_default (pad, parent, event);
       break;
     default:
-      if (parse->send_streamheader && GST_EVENT_IS_SERIALIZED (event))
+      if (parse->send_streamheader && GST_EVENT_IS_SERIALIZED (event)
+          && GST_EVENT_TYPE (event) > GST_EVENT_CAPS)
         ret = theora_parse_queue_event (parse, event);
       else
         ret = gst_pad_event_default (pad, parent, event);