diff --git a/ChangeLog b/ChangeLog index 352cc2ff82..4636563f59 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2006-07-27 Wim Taymans + + patch by: Kai Vehmanen + + * 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 * ext/ogg/gstoggdemux.c: (gst_ogg_pad_internal_chain), diff --git a/gst-libs/gst/rtp/gstbasertpdepayload.c b/gst-libs/gst/rtp/gstbasertpdepayload.c index 5e94d8b844..df13a52c95 100644 --- a/gst-libs/gst/rtp/gstbasertpdepayload.c +++ b/gst-libs/gst/rtp/gstbasertpdepayload.c @@ -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