From 23eeb89a1647f98d8b0901aa395e92bf04e3b174 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Wed, 26 Sep 2007 14:26:39 +0000 Subject: [PATCH] gst/qtdemux/gstrtpxqtdepay.*: Fail if we don't know the quicktime format. Original commit message from CVS: * gst/qtdemux/gstrtpxqtdepay.c: (gst_rtp_xqt_depay_process), (gst_rtp_xqt_depay_change_state): * gst/qtdemux/gstrtpxqtdepay.h: Fail if we don't know the quicktime format. --- ChangeLog | 7 +++++++ gst/qtdemux/gstrtpxqtdepay.c | 14 ++++++++++++-- gst/qtdemux/gstrtpxqtdepay.h | 1 + 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 647b853..69c2390 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-09-26 Wim Taymans + + * gst/qtdemux/gstrtpxqtdepay.c: (gst_rtp_xqt_depay_process), + (gst_rtp_xqt_depay_change_state): + * gst/qtdemux/gstrtpxqtdepay.h: + Fail if we don't know the quicktime format. + 2007-09-26 Tim-Philipp Müller * ext/flac/gstflacenc.c: diff --git a/gst/qtdemux/gstrtpxqtdepay.c b/gst/qtdemux/gstrtpxqtdepay.c index 0a147ef..4cd9257 100644 --- a/gst/qtdemux/gstrtpxqtdepay.c +++ b/gst/qtdemux/gstrtpxqtdepay.c @@ -282,6 +282,7 @@ gst_rtp_xqt_depay_process (GstBaseRTPDepayload * depayload, GstBuffer * buf) /* discont, clear adapter and try to find a new packet start */ gst_adapter_clear (rtpxqtdepay->adapter); rtpxqtdepay->need_resync = TRUE; + GST_DEBUG_OBJECT (rtpxqtdepay, "we need resync"); } m = gst_rtp_buffer_get_marker (buf); @@ -435,7 +436,9 @@ gst_rtp_xqt_depay_process (GstBaseRTPDepayload * depayload, GstBuffer * buf) switch (tlv_type) { case TLV_sd: /* Session description */ - gst_rtp_quicktime_parse_sd (rtpxqtdepay, payload, tlv_len); + if (!gst_rtp_quicktime_parse_sd (rtpxqtdepay, payload, tlv_len)) + goto unknown_format; + rtpxqtdepay->have_sd = TRUE; break; case TLV_qt: case TLV_ti: @@ -665,6 +668,12 @@ wrong_length: ("Wrong payload length."), (NULL)); return NULL; } +unknown_format: + { + GST_ELEMENT_WARNING (rtpxqtdepay, STREAM, DECODE, + ("Unknown payload format."), (NULL)); + return NULL; + } } static void @@ -710,7 +719,8 @@ gst_rtp_xqt_depay_change_state (GstElement * element, GstStateChange transition) gst_adapter_clear (rtpxqtdepay->adapter); rtpxqtdepay->previous_id = -1; rtpxqtdepay->current_id = -1; - rtpxqtdepay->need_resync = FALSE; + rtpxqtdepay->need_resync = TRUE; + rtpxqtdepay->have_sd = FALSE; break; default: break; diff --git a/gst/qtdemux/gstrtpxqtdepay.h b/gst/qtdemux/gstrtpxqtdepay.h index 23cf6ee..4b8a6df 100644 --- a/gst/qtdemux/gstrtpxqtdepay.h +++ b/gst/qtdemux/gstrtpxqtdepay.h @@ -49,6 +49,7 @@ struct _GstRtpXQTDepay gboolean need_resync; guint16 previous_id; guint16 current_id; + gboolean have_sd; }; struct _GstRtpXQTDepayClass -- 2.7.4