From: Wim Taymans Date: Wed, 29 Oct 2008 18:28:25 +0000 (+0000) Subject: gst/rtp/gstrtpL16pay.c: Only put an integral amount of samples in the RTP packet. X-Git-Tag: 1.19.3~509^2~10928 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=38eac47ec90296a1f3f3a09ec15633b20b672616;p=platform%2Fupstream%2Fgstreamer.git gst/rtp/gstrtpL16pay.c: Only put an integral amount of samples in the RTP packet. Original commit message from CVS: * gst/rtp/gstrtpL16pay.c: (gst_rtp_L16_pay_flush), (gst_rtp_L16_pay_getcaps): Only put an integral amount of samples in the RTP packet. Fixes #556641. --- diff --git a/ChangeLog b/ChangeLog index c3fce95..90e651f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-10-29 Wim Taymans + + * gst/rtp/gstrtpL16pay.c: (gst_rtp_L16_pay_flush), + (gst_rtp_L16_pay_getcaps): + Only put an integral amount of samples in the RTP packet. + Fixes #556641. + 2008-10-28 Wim Taymans * gst/rtp/gstrtpchannels.c: (gst_rtp_channels_get_by_index): diff --git a/gst/rtp/gstrtpL16pay.c b/gst/rtp/gstrtpL16pay.c index 2b5f250..f361ef3 100644 --- a/gst/rtp/gstrtpL16pay.c +++ b/gst/rtp/gstrtpL16pay.c @@ -245,6 +245,10 @@ gst_rtp_L16_pay_flush (GstRtpL16Pay * rtpL16pay, guint len) guint samples; GstClockTime duration; + /* calculate the amount of samples and round down the length */ + samples = len / (2 * rtpL16pay->channels); + len = samples * (2 * rtpL16pay->channels); + /* now alloc output buffer */ outbuf = gst_rtp_buffer_new_allocate (len, 0, 0); @@ -255,7 +259,6 @@ gst_rtp_L16_pay_flush (GstRtpL16Pay * rtpL16pay, guint len) gst_adapter_copy (rtpL16pay->adapter, payload, 0, len); gst_adapter_flush (rtpL16pay->adapter, len); - samples = len / (2 * rtpL16pay->channels); duration = gst_util_uint64_scale_int (samples, GST_SECOND, rtpL16pay->rate); GST_BUFFER_TIMESTAMP (outbuf) = rtpL16pay->first_ts; @@ -348,7 +351,6 @@ gst_rtp_L16_pay_getcaps (GstBaseRTPPayload * rtppayload, GstPad * pad) } gst_caps_unref (otherpadcaps); } - return caps; }