smartencoder: Only accept TIME segments for real
authorSebastian Dröge <sebastian@centricular.com>
Mon, 25 Apr 2016 14:16:04 +0000 (17:16 +0300)
committerSebastian Dröge <sebastian@centricular.com>
Mon, 25 Apr 2016 14:17:00 +0000 (17:17 +0300)
... and don't try to push pending data without ever having received a SEGMENT
event before EOS

https://bugzilla.gnome.org/show_bug.cgi?id=765541

gst/encoding/gstsmartencoder.c

index 5daf6f9..a950edf 100644 (file)
@@ -356,9 +356,12 @@ smart_encoder_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
 
       GST_DEBUG_OBJECT (smart_encoder, "segment: %" GST_SEGMENT_FORMAT,
           smart_encoder->segment);
-      if (smart_encoder->segment->format != GST_FORMAT_TIME)
+      if (smart_encoder->segment->format != GST_FORMAT_TIME) {
         GST_ERROR
             ("smart_encoder can not handle streams not specified in GST_FORMAT_TIME");
+        gst_event_unref (event);
+        return FALSE;
+      }
 
       /* And keep a copy for further usage */
       if (smart_encoder->newsegment)
@@ -368,7 +371,8 @@ smart_encoder_sink_event (GstPad * pad, GstObject * parent, GstEvent * event)
       break;
     case GST_EVENT_EOS:
       GST_DEBUG ("Eos, flushing remaining data");
-      gst_smart_encoder_push_pending_gop (smart_encoder);
+      if (smart_encoder->segment->format == GST_FORMAT_TIME)
+        gst_smart_encoder_push_pending_gop (smart_encoder);
       break;
     default:
       break;