diff --git a/ChangeLog b/ChangeLog index 10ce60d238..3524d1920c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-02-17 Wim Taymans + + * gst/rtp/gstrtpamrdepay.c: (gst_rtp_amr_depay_chain): + Patch from Sebastien Cote, fixes #319884 + 2006-02-17 Tim-Philipp Müller * ext/cdio/gstcdio.c: (plugin_init): diff --git a/gst/rtp/gstrtpamrdepay.c b/gst/rtp/gstrtpamrdepay.c index 28ec3e39e6..aa410aa7ef 100644 --- a/gst/rtp/gstrtpamrdepay.c +++ b/gst/rtp/gstrtpamrdepay.c @@ -366,13 +366,6 @@ gst_rtp_amr_depay_chain (GstPad * pad, GstBuffer * buf) break; } - /* this is impossible */ - if (num_packets == payload_len) { - GST_ELEMENT_WARNING (rtpamrdepay, STREAM, DECODE, - (NULL), ("AMR RTP num_packets == payload_len")); - goto bad_packet; - } - if (rtpamrdepay->crc) { /* data len + CRC len + header bytes should be smaller than payload_len */ if (num_packets + num_nonempty_packets + amr_len > payload_len) { @@ -407,10 +400,11 @@ gst_rtp_amr_depay_chain (GstPad * pad, GstBuffer * buf) for (i = 0; i < num_packets; i++) { gint fr_size; + /* copy FT, clear F bit */ + *p++ = payload[i] & 0x7f; + fr_size = frame_size[(payload[i] & 0x78) >> 3]; if (fr_size > 0) { - /* copy FT, clear F bit */ - *p++ = payload[i] & 0x7f; /* copy data packet, FIXME, calc CRC here. */ memcpy (p, dp, fr_size);