summaryrefslogtreecommitdiffstats
path: root/gst/rtp/gstrtpmpapay.c
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2005-09-06 15:50:58 +0000
committerWim Taymans <wim.taymans@gmail.com>2005-09-06 15:50:58 +0000
commit98039503e90d89459a599cb3dc41955ff81482a6 (patch)
treeb8d3423ee9a01c48a4d16dc6b9b7594421800cba /gst/rtp/gstrtpmpapay.c
parenta0fc3846597e209c141cbc348c052fa2feb90e23 (diff)
gst/rtp/: Added mpeg4 video payload encoder/decoder.
Original commit message from CVS: * gst/rtp/Makefile.am: * gst/rtp/gstrtp.c: (plugin_init): * gst/rtp/gstrtpmp4vdec.c: (gst_rtpmp4vdec_get_type), (gst_rtpmp4vdec_base_init), (gst_rtpmp4vdec_class_init), (gst_rtpmp4vdec_init), (gst_rtpmp4vdec_setcaps), (gst_rtpmp4vdec_chain), (gst_rtpmp4vdec_set_property), (gst_rtpmp4vdec_get_property), (gst_rtpmp4vdec_change_state), (gst_rtpmp4vdec_plugin_init): * gst/rtp/gstrtpmp4vdec.h: * gst/rtp/gstrtpmp4venc.c: (gst_rtpmp4venc_get_type), (gst_rtpmp4venc_base_init), (gst_rtpmp4venc_class_init), (gst_rtpmp4venc_init), (gst_rtpmp4venc_setcaps), (gst_rtpmp4venc_flush), (gst_rtpmp4venc_chain), (gst_rtpmp4venc_set_property), (gst_rtpmp4venc_get_property), (gst_rtpmp4venc_change_state), (gst_rtpmp4venc_plugin_init): * gst/rtp/gstrtpmp4venc.h: * gst/rtp/gstrtpmpadec.c: (gst_rtpmpadec_chain): * gst/rtp/gstrtpmpaenc.c: (gst_rtpmpaenc_flush): Added mpeg4 video payload encoder/decoder. Added some docs in mpa payloader.
Diffstat (limited to 'gst/rtp/gstrtpmpapay.c')
-rw-r--r--gst/rtp/gstrtpmpapay.c18
1 files changed, 14 insertions, 4 deletions
diff --git a/gst/rtp/gstrtpmpapay.c b/gst/rtp/gstrtpmpapay.c
index 58b37522..6ad805c4 100644
--- a/gst/rtp/gstrtpmpapay.c
+++ b/gst/rtp/gstrtpmpapay.c
@@ -26,7 +26,7 @@
static GstElementDetails gst_rtp_mpaenc_details = {
"RTP packet parser",
"Codec/Parser/Network",
- "Encode MPEG audio as RTP packets",
+ "Encode MPEG audio as RTP packets (RFC 2038)",
"Wim Taymans <wim@fluendo.com>"
};
@@ -200,6 +200,13 @@ gst_rtpmpaenc_flush (GstRtpMPAEnc * rtpmpaenc)
gst_rtpbuffer_set_payload_type (outbuf, GST_RTP_PAYLOAD_MPA);
gst_rtpbuffer_set_seq (outbuf, rtpmpaenc->seqnum++);
+ /*
+ * 0 1 2 3
+ * 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ * | MBZ | Frag_offset |
+ * +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
+ */
payload = gst_rtpbuffer_get_payload (outbuf);
payload[0] = 0;
payload[1] = 0;
@@ -210,12 +217,15 @@ gst_rtpmpaenc_flush (GstRtpMPAEnc * rtpmpaenc)
memcpy (&payload[4], data, payload_len);
gst_adapter_flush (rtpmpaenc->adapter, payload_len);
+ avail -= payload_len;
+ frag_offset += payload_len;
+
+ if (avail == 0)
+ gst_rtpbuffer_set_marker (outbuf, TRUE);
+
GST_BUFFER_TIMESTAMP (outbuf) = rtpmpaenc->first_ts;
ret = gst_pad_push (rtpmpaenc->srcpad, outbuf);
-
- avail -= payload_len;
- frag_offset += payload_len;
}
return ret;