baseparse: specific EOS handling if no output so far
authorMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Mon, 20 Sep 2010 11:57:55 +0000 (13:57 +0200)
committerMark Nauwelaerts <mark.nauwelaerts@collabora.co.uk>
Fri, 1 Oct 2010 10:15:49 +0000 (12:15 +0200)
gst/audioparsers/gstbaseparse.c

index bcc9466..46861b8 100644 (file)
@@ -686,6 +686,17 @@ gst_base_parse_sink_eventfunc (GstBaseParse * parse, GstEvent * event)
 
     case GST_EVENT_EOS:
       gst_base_parse_drain (parse);
+
+      /* If we STILL have zero frames processed, fire an error */
+      if (parse->priv->framecount == 0) {
+        GST_ELEMENT_ERROR (parse, STREAM, WRONG_TYPE,
+            ("No valid frames found before end of stream"), (NULL));
+      }
+      /* newsegment before eos */
+      if (parse->pending_segment) {
+        gst_pad_push_event (parse->srcpad, parse->pending_segment);
+        parse->pending_segment = NULL;
+      }
       break;
 
     default: