GNOME Bugzilla – Bug 482541
Broken RTP timestamps
Last modified: 2007-11-16 17:18:36 UTC
Hi, In current gstbasertpdepayload.c there is the following comment :: /* we pass rtptime as backward compatibility, in reality, the incomming * buffer timestamp is always applied to the outgoing packet. */ The last function called is gst_base_rtp_depayload_push_full() and does not use incoming rtp timestamp. So the temporal reference seems to be the creation time of the incoming buffer and not the RTP timestamp. If some buffers come in in the same millisecond (for ex.), due to network congestion, all the buffers will be created with a similar timestamp, rtp timestamp information is lost, so the following pipeline outputs erroneous rtp timestamps : udpsrc ! rtpamrdepay ! rtpamrpay ! udpsink Regards.
The timing rules for RTP as outlined in http://webcvs.freedesktop.org/gstreamer/gst-plugins-good/gst/rtp/README?revision=1.13&view=markup state that the RTP timestamp in the payloaded packet equals the capture timestamp of the packet at the sender side (which is the GStreamer timestamp). We need this to reconstruct the timing at the sender in the normal "alsasrc ! amrnbenc ! rtpamrpay ! uspsink" case. There is not really any way to get this right currently unless we start creating the RTP timestamp from the buffer OFFSET field or so.
Well, So with a jitter buffer our pipeline works fine, udpsrc ! gstrtpjitterbuffer ! rtpamrdepay ! rtpamrpay ! udpsink Thanks for your help. Regards.