From e2a22e497c78b6d196e91a429d2a10fb005daea5 Mon Sep 17 00:00:00 2001 From: Thomas Vander Stichele Date: Sun, 12 Feb 2006 13:10:20 +0000 Subject: gst/rtp/gstrtpamrpay.c: set timestamps if no incoming timestamps set Original commit message from CVS: * gst/rtp/gstrtpamrpay.c: (gst_rtp_amr_pay_handle_buffer): set timestamps if no incoming timestamps set --- gst/rtp/gstrtpamrpay.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) (limited to 'gst/rtp') diff --git a/gst/rtp/gstrtpamrpay.c b/gst/rtp/gstrtpamrpay.c index da9944e5..27588d8c 100644 --- a/gst/rtp/gstrtpamrpay.c +++ b/gst/rtp/gstrtpamrpay.c @@ -36,7 +36,7 @@ GST_DEBUG_CATEGORY (rtpamrpay_debug); static GstElementDetails gst_rtp_amrpay_details = { "RTP packet parser", "Codec/Payloader/Network", - "Payode AMR audio into RTP packets (RFC 3267)", + "Payload-encode AMR audio into RTP packets (RFC 3267)", "Wim Taymans " }; @@ -230,8 +230,16 @@ gst_rtp_amr_pay_handle_buffer (GstBaseRTPPayload * basepayload, /* now alloc output buffer */ outbuf = gst_rtp_buffer_new_allocate (payload_len, 0, 0); - /* copy timestamp */ - GST_BUFFER_TIMESTAMP (outbuf) = timestamp; + /* copy timestamp, or fabricate one */ + if (timestamp != GST_CLOCK_TIME_NONE) + GST_BUFFER_TIMESTAMP (outbuf) = timestamp; + else { + /* AMR (nb) and AMR-WB both have 20 ms per frame */ + /* FIXME: when we do more than one AMR frame per packet, fix this */ + gint count = basepayload->seqnum - basepayload->seqnum_base; + + GST_BUFFER_TIMESTAMP (outbuf) = count * 20 * GST_MSECOND; + } /* get payload, this is now writable */ payload = gst_rtp_buffer_get_payload (outbuf); -- cgit