gst-libs/gst/rtp/gstbasertpdepayload.c: Don't send multiple newsegments with differen...
authorKai Vehmanen <kv2004@eca.cx>
Thu, 27 Jul 2006 10:52:52 +0000 (10:52 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Thu, 27 Jul 2006 10:52:52 +0000 (10:52 +0000)
Original commit message from CVS:
patch by: Kai Vehmanen <kv2004 eca cx>
* gst-libs/gst/rtp/gstbasertpdepayload.c:
(gst_base_rtp_depayload_chain),
(gst_base_rtp_depayload_handle_sink_event),
(gst_base_rtp_depayload_change_state):
Don't send multiple newsegments with different formats.
Fixes #348677.

ChangeLog
gst-libs/gst/rtp/gstbasertpdepayload.c

index 352cc2f..4636563 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,14 @@
+2006-07-27  Wim Taymans  <wim@fluendo.com>
+
+       patch by: Kai Vehmanen <kv2004 eca cx>
+
+       * gst-libs/gst/rtp/gstbasertpdepayload.c:
+       (gst_base_rtp_depayload_chain),
+       (gst_base_rtp_depayload_handle_sink_event),
+       (gst_base_rtp_depayload_change_state):
+       Don't send multiple newsegments with different formats.
+       Fixes #348677.
+
 2006-07-26  Wim Taymans  <wim@fluendo.com>
 
        * ext/ogg/gstoggdemux.c: (gst_ogg_pad_internal_chain),
index 5e94d8b..df13a52 100644 (file)
@@ -249,18 +249,33 @@ gst_base_rtp_depayload_handle_sink_event (GstPad * pad, GstEvent * event)
         gst_event_unref (event);
         break;
       } else {
+        GstFormat format;
+
+        gst_event_parse_new_segment (event, NULL, NULL, &format, NULL, NULL,
+            NULL);
+        if (format != GST_FORMAT_TIME)
+          goto wrong_format;
+
         GST_DEBUG_OBJECT (filter,
             "Upstream sent a NEWSEGMENT, passing through.");
       }
-    }
       /* note: pass through to default if no thread running */
+    }
     default:
       /* pass other events forward */
       res = gst_pad_push_event (filter->srcpad, event);
       break;
   }
-
   return res;
+
+  /* ERRORS */
+wrong_format:
+  {
+    GST_DEBUG_OBJECT (filter,
+        "Upstream sent a NEWSEGMENT in wrong format, dropping.");
+    gst_event_unref (event);
+    return TRUE;
+  }
 }
 
 static GstFlowReturn