From 98039503e90d89459a599cb3dc41955ff81482a6 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Tue, 6 Sep 2005 15:50:58 +0000 Subject: 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. --- gst/rtp/gstrtpmpapay.c | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'gst/rtp/gstrtpmpapay.c') 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 " }; @@ -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; -- cgit