basertpdepayload: create valid segment when given non-time segment
authorZaheer Abbas Merali <zaheermerali@gmail.com>
Fri, 29 Apr 2016 07:59:42 +0000 (00:59 -0700)
committerSebastian Dröge <sebastian@centricular.com>
Fri, 1 Jul 2016 12:16:46 +0000 (14:16 +0200)
This will become an error in 1.10.

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

gst-libs/gst/rtp/gstrtpbasedepayload.c

index fb5bdc9..e3a43c2 100644 (file)
@@ -613,6 +613,9 @@ gst_rtp_base_depayload_handle_event (GstRTPBaseDepayload * filter,
     {
       GST_OBJECT_LOCK (filter);
       gst_event_copy_segment (event, &filter->segment);
+      if (filter->segment.format != GST_FORMAT_TIME)
+        GST_ERROR_OBJECT (filter,
+            "Non-TIME segments are not supported and will likely fail");
       GST_OBJECT_UNLOCK (filter);
 
       /* don't pass the event downstream, we generate our own segment including
@@ -717,8 +720,11 @@ create_segment_event (GstRTPBaseDepayload * filter, guint rtptime,
   if (position == -1)
     position = start;
 
-  running_time = gst_segment_to_running_time (&filter->segment,
-      GST_FORMAT_TIME, start);
+  if (G_LIKELY (filter->segment.format == GST_FORMAT_TIME))
+    running_time = gst_segment_to_running_time (&filter->segment,
+        GST_FORMAT_TIME, start);
+  else
+    running_time = 0;
 
   gst_segment_init (&segment, GST_FORMAT_TIME);
   segment.rate = priv->play_speed;