diff options
author | Wim Taymans <wim.taymans@gmail.com> | 2005-09-06 15:50:58 +0000 |
---|---|---|
committer | Wim Taymans <wim.taymans@gmail.com> | 2005-09-06 15:50:58 +0000 |
commit | 98039503e90d89459a599cb3dc41955ff81482a6 (patch) | |
tree | b8d3423ee9a01c48a4d16dc6b9b7594421800cba /gst/rtp/gstrtpmpapay.c | |
parent | a0fc3846597e209c141cbc348c052fa2feb90e23 (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.c | 18 |
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; |