summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--gst/rtp/gstrtpamrpay.c14
2 files changed, 16 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index c370b019..2ecd5889 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2006-02-12 Thomas Vander Stichele <thomas at apestaart dot org>
+
+ * gst/rtp/gstrtpamrpay.c: (gst_rtp_amr_pay_handle_buffer):
+ set timestamps if no incoming timestamps set
+
2006-02-11 Tim-Philipp Müller <tim at centricular dot net>
* gst/apetag/gsttagdemux.c: (gst_tag_demux_get_upstream_size),
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 <wim@fluendo.com>"
};
@@ -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);