diff options
Diffstat (limited to 'gst/rtp/gstrtpspeexdepay.c')
-rw-r--r-- | gst/rtp/gstrtpspeexdepay.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/gst/rtp/gstrtpspeexdepay.c b/gst/rtp/gstrtpspeexdepay.c index c18c5e22..db6cbd53 100644 --- a/gst/rtp/gstrtpspeexdepay.c +++ b/gst/rtp/gstrtpspeexdepay.c @@ -105,6 +105,7 @@ gst_rtp_speex_depay_init (GstRtpSPEEXDepay * rtpspeexdepay, GstRtpSPEEXDepayClass * klass) { GST_BASE_RTP_DEPAYLOAD (rtpspeexdepay)->clock_rate = 8000; + rtpspeexdepay->start_ts = 0; } static gint @@ -202,8 +203,15 @@ gst_rtp_speex_depay_process (GstBaseRTPDepayload * depayload, GstBuffer * buf) gst_rtp_buffer_get_marker (buf), gst_rtp_buffer_get_timestamp (buf), gst_rtp_buffer_get_seq (buf)); - /* nothing special to be done */ + GstRtpSPEEXDepay *speexdepayload = GST_RTP_SPEEX_DEPAY (depayload); + /* apply correct timestamp from rtp packet */ outbuf = gst_rtp_buffer_get_payload_buffer (buf); + if (speexdepayload->start_ts == 0) + speexdepayload->start_ts = gst_rtp_buffer_get_timestamp (buf); + GST_BUFFER_TIMESTAMP (outbuf) = + gst_util_uint64_scale (GST_SECOND, + gst_rtp_buffer_get_timestamp (buf) - speexdepayload->start_ts, + depayload->clock_rate); return outbuf; } |