diff options
author | Tomasz Grobelny <tomasz@grobelny.oswiecenia.net> | 2008-07-07 10:16:07 +0000 |
---|---|---|
committer | Sebastian Dröge <slomo@circular-chaos.org> | 2008-07-07 10:16:07 +0000 |
commit | 5e2a462789be55a717238ca6f30902b1fc0432c6 (patch) | |
tree | 240a8b38cac96a38d7fb53add77f99e6f036ca04 | |
parent | cf3286dac701e58e9994f1a5e9f728cdb8ffe342 (diff) |
gst/rtp/gstrtpspeexdepay.*: Take timestamp from the RTP packet as a first step to fix problems with transmission over...
Original commit message from CVS:
Patch by: Tomasz Grobelny <tomasz at grobelny dot oswiecenia dot net>
* gst/rtp/gstrtpspeexdepay.c: (gst_rtp_speex_depay_init),
(gst_rtp_speex_depay_process):
* gst/rtp/gstrtpspeexdepay.h:
Take timestamp from the RTP packet as a first step to fix problems
with transmission over RTP when the network is not reliable.
Fixes bug #541787.
-rw-r--r-- | ChangeLog | 11 | ||||
-rw-r--r-- | gst/rtp/gstrtpspeexdepay.c | 10 | ||||
-rw-r--r-- | gst/rtp/gstrtpspeexdepay.h | 1 |
3 files changed, 21 insertions, 1 deletions
@@ -1,3 +1,14 @@ +2008-07-07 Sebastian Dröge <sebastian.droege@collabora.co.uk> + + Patch by: Tomasz Grobelny <tomasz at grobelny dot oswiecenia dot net> + + * gst/rtp/gstrtpspeexdepay.c: (gst_rtp_speex_depay_init), + (gst_rtp_speex_depay_process): + * gst/rtp/gstrtpspeexdepay.h: + Take timestamp from the RTP packet as a first step to fix problems + with transmission over RTP when the network is not reliable. + Fixes bug #541787. + 2008-07-05 Sebastian Dröge <sebastian.droege@collabora.co.uk> Patch by: Tero Saarni <tero dot saarni at gmail dot com> 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; } diff --git a/gst/rtp/gstrtpspeexdepay.h b/gst/rtp/gstrtpspeexdepay.h index 4a76a633..705886c8 100644 --- a/gst/rtp/gstrtpspeexdepay.h +++ b/gst/rtp/gstrtpspeexdepay.h @@ -37,6 +37,7 @@ typedef struct _GstRtpSPEEXDepayClass GstRtpSPEEXDepayClass; struct _GstRtpSPEEXDepay { GstBaseRTPDepayload depayload; + guint64 start_ts; }; struct _GstRtpSPEEXDepayClass |