docs: hook up new RTP FEC elements

https://bugzilla.gnome.org/show_bug.cgi?id=792696
This commit is contained in:
Tim-Philipp Müller 2018-02-22 14:58:12 +00:00
parent 59fc403ee6
commit 427033591c
11 changed files with 484 additions and 0 deletions

View file

@ -224,6 +224,8 @@
<xi:include href="xml/element-rtpptdemux.xml" /> <xi:include href="xml/element-rtpptdemux.xml" />
<xi:include href="xml/element-rtpqcelpdepay.xml" /> <xi:include href="xml/element-rtpqcelpdepay.xml" />
<xi:include href="xml/element-rtpqdm2depay.xml" /> <xi:include href="xml/element-rtpqdm2depay.xml" />
<xi:include href="xml/element-rtpreddec.xml" />
<xi:include href="xml/element-rtpredenc.xml" />
<xi:include href="xml/element-rtprtxqueue.xml" /> <xi:include href="xml/element-rtprtxqueue.xml" />
<xi:include href="xml/element-rtprtxreceive.xml" /> <xi:include href="xml/element-rtprtxreceive.xml" />
<xi:include href="xml/element-rtprtxsend.xml" /> <xi:include href="xml/element-rtprtxsend.xml" />
@ -235,11 +237,14 @@
<xi:include href="xml/element-rtpspeexdepay.xml" /> <xi:include href="xml/element-rtpspeexdepay.xml" />
<xi:include href="xml/element-rtpspeexpay.xml" /> <xi:include href="xml/element-rtpspeexpay.xml" />
<xi:include href="xml/element-rtpssrcdemux.xml" /> <xi:include href="xml/element-rtpssrcdemux.xml" />
<xi:include href="xml/element-rtpstorage.xml" />
<xi:include href="xml/element-rtpstreamdepay.xml" /> <xi:include href="xml/element-rtpstreamdepay.xml" />
<xi:include href="xml/element-rtpstreampay.xml" /> <xi:include href="xml/element-rtpstreampay.xml" />
<xi:include href="xml/element-rtpsv3vdepay.xml" /> <xi:include href="xml/element-rtpsv3vdepay.xml" />
<xi:include href="xml/element-rtptheoradepay.xml" /> <xi:include href="xml/element-rtptheoradepay.xml" />
<xi:include href="xml/element-rtptheorapay.xml" /> <xi:include href="xml/element-rtptheorapay.xml" />
<xi:include href="xml/element-rtpulpfecdec.xml" />
<xi:include href="xml/element-rtpulpfecenc.xml" />
<xi:include href="xml/element-rtpvorbisdepay.xml" /> <xi:include href="xml/element-rtpvorbisdepay.xml" />
<xi:include href="xml/element-rtpvorbispay.xml" /> <xi:include href="xml/element-rtpvorbispay.xml" />
<xi:include href="xml/element-rtpvp8depay.xml" /> <xi:include href="xml/element-rtpvp8depay.xml" />

View file

@ -3331,6 +3331,38 @@ GST_TYPE_RTP_QD_M2_DEPAY
gst_rtp_qd_m2_depay_get_type gst_rtp_qd_m2_depay_get_type
</SECTION> </SECTION>
<SECTION>
<FILE>element-rtpreddec</FILE>
<TITLE>rtpreddec</TITLE>
GstRtpRedDec
<SUBSECTION Standard>
GstRtpRedDecClass
GST_RTP_RED_DEC
GST_RTP_RED_DEC_CAST
GST_IS_RTP_RED_DEC
GST_RTP_RED_DEC_CLASS
GST_IS_RTP_RED_DEC_CLASS
GST_TYPE_RTP_RED_DEC
<SUBSECTION Private>
gst_rtp_red_dec_get_type
</SECTION>
<SECTION>
<FILE>element-rtpredenc</FILE>
<TITLE>rtpredenc</TITLE>
GstRtpRedEnc
<SUBSECTION Standard>
GstRtpRedEncClass
GST_RTP_RED_ENC
GST_RTP_RED_ENC_CAST
GST_IS_RTP_RED_ENC
GST_RTP_RED_ENC_CLASS
GST_IS_RTP_RED_ENC_CLASS
GST_TYPE_RTP_RED_ENC
<SUBSECTION Private>
gst_rtp_red_enc_get_type
</SECTION>
<SECTION> <SECTION>
<FILE>element-rtprtxreceive</FILE> <FILE>element-rtprtxreceive</FILE>
<TITLE>rtprtxreceive</TITLE> <TITLE>rtprtxreceive</TITLE>
@ -3473,6 +3505,22 @@ GST_IS_RTP_SSRC_DEMUX_CLASS
GST_TYPE_RTP_SSRC_DEMUX GST_TYPE_RTP_SSRC_DEMUX
<SUBSECTION Private> <SUBSECTION Private>
gst_rtp_ssrc_demux_get_type gst_rtp_ssrc_demux_get_type
</SECTION>
<SECTION>
<FILE>element-rtpstorage</FILE>
<TITLE>rtpstorage</TITLE>
GstRtpStorage
<SUBSECTION Standard>
GstRtpStorageClass
GST_RTP_STORAGE
GST_RTP_STORAGE_CAST
GST_IS_RTP_STORAGE
GST_RTP_STORAGE_CLASS
GST_IS_RTP_STORAGE_CLASS
GST_TYPE_RTP_STORAGE
<SUBSECTION Private>
gst_rtp_storage_get_type
</SECTION> </SECTION>
<SECTION> <SECTION>
@ -3539,6 +3587,38 @@ GST_TYPE_RTP_THEORA_PAY
gst_rtp_theora_pay_get_type gst_rtp_theora_pay_get_type
</SECTION> </SECTION>
<SECTION>
<FILE>element-rtpulpfecdec</FILE>
<TITLE>rtpulpfecdec</TITLE>
GstRtpUlpFecDec
<SUBSECTION Standard>
GstRtpUlpFecDecClass
GST_RTP_ULP_FEC_DEC
GST_RTP_ULP_FEC_DEC_CAST
GST_IS_RTP_ULP_FEC_DEC
GST_RTP_ULP_FEC_DEC_CLASS
GST_IS_RTP_ULP_FEC_DEC_CLASS
GST_TYPE_RTP_ULP_FEC_DEC
<SUBSECTION Private>
gst_rtp_ulp_fec_dec_get_type
</SECTION>
<SECTION>
<FILE>element-rtpulpfecenc</FILE>
<TITLE>rtpulpfecenc</TITLE>
GstRtpUlpFecEnc
<SUBSECTION Standard>
GstRtpUlpFecEncClass
GST_RTP_ULP_FEC_ENC
GST_RTP_ULP_FEC_ENC_CAST
GST_IS_RTP_ULP_FEC_ENC
GST_RTP_ULP_FEC_ENC_CLASS
GST_IS_RTP_ULP_FEC_ENC_CLASS
GST_TYPE_RTP_ULP_FEC_ENC
<SUBSECTION Private>
gst_rtp_ulp_fec_enc_get_type
</SECTION>
<SECTION> <SECTION>
<FILE>element-rtpvp8depay</FILE> <FILE>element-rtpvp8depay</FILE>
<TITLE>rtpvp8depay</TITLE> <TITLE>rtpvp8depay</TITLE>

View file

@ -24648,3 +24648,203 @@
<DEFAULT></DEFAULT> <DEFAULT></DEFAULT>
</ARG> </ARG>
<ARG>
<NAME>GstRtpPtDemux::ignored-payload-types</NAME>
<TYPE>GstValueArray</TYPE>
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>Ignored payload types</NICK>
<BLURB>Packets with these payload types will be dropped.</BLURB>
<DEFAULT></DEFAULT>
</ARG>
<ARG>
<NAME>GstRtpUlpFecEnc::multipacket</NAME>
<TYPE>gboolean</TYPE>
<RANGE></RANGE>
<FLAGS>rwx</FLAGS>
<NICK>Multipacket</NICK>
<BLURB>Apply FEC on multiple packets.</BLURB>
<DEFAULT>FALSE</DEFAULT>
</ARG>
<ARG>
<NAME>GstRtpUlpFecEnc::mux-seq</NAME>
<TYPE>gboolean</TYPE>
<RANGE></RANGE>
<FLAGS>rwx</FLAGS>
<NICK>Mux seq</NICK>
<BLURB>Mux seqnum for media and fec packets in same seqnum space.</BLURB>
<DEFAULT>FALSE</DEFAULT>
</ARG>
<ARG>
<NAME>GstRtpUlpFecEnc::percentage</NAME>
<TYPE>guint</TYPE>
<RANGE><= 100</RANGE>
<FLAGS>rwx</FLAGS>
<NICK>Percentage</NICK>
<BLURB>FEC overhead percentage for the whole stream.</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
<NAME>GstRtpUlpFecEnc::percentage-important</NAME>
<TYPE>guint</TYPE>
<RANGE><= 100</RANGE>
<FLAGS>rwx</FLAGS>
<NICK>Percentage important</NICK>
<BLURB>FEC overhead percentage for important packets.</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
<NAME>GstRtpUlpFecEnc::protected</NAME>
<TYPE>guint</TYPE>
<RANGE></RANGE>
<FLAGS>r</FLAGS>
<NICK>Protected</NICK>
<BLURB>Count of protected packets.</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
<NAME>GstRtpUlpFecEnc::pt</NAME>
<TYPE>guint</TYPE>
<RANGE><= 255</RANGE>
<FLAGS>rwx</FLAGS>
<NICK>payload type</NICK>
<BLURB>The payload type of FEC packets.</BLURB>
<DEFAULT>255</DEFAULT>
</ARG>
<ARG>
<NAME>GstRtpUlpFecEnc::ssrc</NAME>
<TYPE>guint</TYPE>
<RANGE></RANGE>
<FLAGS>rwx</FLAGS>
<NICK>SSRC</NICK>
<BLURB>The SSRC to use on FEC'd packets.</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
<NAME>GstRtpUlpFecDec::pt</NAME>
<TYPE>guint</TYPE>
<RANGE><= 127</RANGE>
<FLAGS>rw</FLAGS>
<NICK>pt</NICK>
<BLURB>FEC packets payload type.</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
<NAME>GstRtpUlpFecDec::recovered</NAME>
<TYPE>guint</TYPE>
<RANGE></RANGE>
<FLAGS>r</FLAGS>
<NICK>recovered</NICK>
<BLURB>The number of recovered packets.</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
<NAME>GstRtpUlpFecDec::storage</NAME>
<TYPE>GObject*</TYPE>
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>RTP storage</NICK>
<BLURB>RTP storage.</BLURB>
<DEFAULT></DEFAULT>
</ARG>
<ARG>
<NAME>GstRtpUlpFecDec::unrecovered</NAME>
<TYPE>guint</TYPE>
<RANGE></RANGE>
<FLAGS>r</FLAGS>
<NICK>unrecovered</NICK>
<BLURB>The number of unrecovered packets.</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
<NAME>GstRtpStorage::internal-storage</NAME>
<TYPE>GObject*</TYPE>
<RANGE></RANGE>
<FLAGS>r</FLAGS>
<NICK>Internal storage</NICK>
<BLURB>Internal RtpStorage object.</BLURB>
<DEFAULT></DEFAULT>
</ARG>
<ARG>
<NAME>GstRtpStorage::size-time</NAME>
<TYPE>guint64</TYPE>
<RANGE></RANGE>
<FLAGS>rwx</FLAGS>
<NICK>Storage size (in ns)</NICK>
<BLURB>The amount of data to keep in the storage (in ns, 0-disable).</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
<NAME>GstRtpRedEnc::allow-no-red-blocks</NAME>
<TYPE>gboolean</TYPE>
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>Allow no redundant blocks</NICK>
<BLURB>true - can produce RED packets even without redundant blocks (distance==0) false - RED packets will be produced only if distance>0.</BLURB>
<DEFAULT>FALSE</DEFAULT>
</ARG>
<ARG>
<NAME>GstRtpRedEnc::distance</NAME>
<TYPE>guint</TYPE>
<RANGE></RANGE>
<FLAGS>rw</FLAGS>
<NICK>RED distance</NICK>
<BLURB>Tells which media packet to use as a redundant block (0 - no redundant blocks, 1 to use previous packet, 2 to use the packet before previous, etc.).</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
<NAME>GstRtpRedEnc::pt</NAME>
<TYPE>gint</TYPE>
<RANGE>[0,127]</RANGE>
<FLAGS>rw</FLAGS>
<NICK>payload type</NICK>
<BLURB>Payload type FEC packets (-1 disable).</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
<NAME>GstRtpRedEnc::sent</NAME>
<TYPE>guint</TYPE>
<RANGE></RANGE>
<FLAGS>r</FLAGS>
<NICK>Sent</NICK>
<BLURB>Count of sent packets.</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>
<ARG>
<NAME>GstRtpRedDec::pt</NAME>
<TYPE>gint</TYPE>
<RANGE>[G_MAXULONG,127]</RANGE>
<FLAGS>rw</FLAGS>
<NICK>payload type</NICK>
<BLURB>Payload type FEC packets.</BLURB>
<DEFAULT>-1</DEFAULT>
</ARG>
<ARG>
<NAME>GstRtpRedDec::received</NAME>
<TYPE>guint</TYPE>
<RANGE></RANGE>
<FLAGS>r</FLAGS>
<NICK>Received</NICK>
<BLURB>Count of received packets.</BLURB>
<DEFAULT>0</DEFAULT>
</ARG>

View file

@ -289,11 +289,16 @@ GObject
GstRndBufferSize GstRndBufferSize
GstRtpJitterBuffer GstRtpJitterBuffer
GstRtpPtDemux GstRtpPtDemux
GstRtpRedDec
GstRtpRedEnc
GstRtpRtxReceive GstRtpRtxReceive
GstRtpRtxSend GstRtpRtxSend
GstRtpSession GstRtpSession
GstRtpSsrcDemux GstRtpSsrcDemux
GstRtpStorage
GstRtpStreamPay GstRtpStreamPay
GstRtpUlpFecDec
GstRtpUlpFecEnc
GstSMPTE GstSMPTE
GstShapeWipe GstShapeWipe
GstTagDemux GstTagDemux

View file

@ -382,6 +382,39 @@ GstRtpBin *gstrtpbin
guint arg1 guint arg1
</SIGNAL> </SIGNAL>
<SIGNAL>
<NAME>GstRtpBin::get-internal-storage</NAME>
<RETURNS>GObject*</RETURNS>
<FLAGS>la</FLAGS>
GstRtpBin *gstrtpbin
guint arg1
</SIGNAL>
<SIGNAL>
<NAME>GstRtpBin::new-storage</NAME>
<RETURNS>void</RETURNS>
<FLAGS>l</FLAGS>
GstRtpBin *gstrtpbin
GstElement *arg1
guint arg2
</SIGNAL>
<SIGNAL>
<NAME>GstRtpBin::request-fec-decoder</NAME>
<RETURNS>GstElement*</RETURNS>
<FLAGS>l</FLAGS>
GstRtpBin *gstrtpbin
guint arg1
</SIGNAL>
<SIGNAL>
<NAME>GstRtpBin::request-fec-encoder</NAME>
<RETURNS>GstElement*</RETURNS>
<FLAGS>l</FLAGS>
GstRtpBin *gstrtpbin
guint arg1
</SIGNAL>
<SIGNAL> <SIGNAL>
<NAME>GstRtpJitterBuffer::clear-pt-map</NAME> <NAME>GstRtpJitterBuffer::clear-pt-map</NAME>
<RETURNS>void</RETURNS> <RETURNS>void</RETURNS>

View file

@ -1458,6 +1458,48 @@
</caps> </caps>
</pads> </pads>
</element> </element>
<element>
<name>rtpreddec</name>
<longname>Redundant Audio Data (RED) Decoder</longname>
<class>Codec/Depayloader/Network/RTP</class>
<description>Decode Redundant Audio Data (RED)</description>
<author>Hani Mustafa &lt;hani@pexip.com&gt;, Mikhail Fludkov &lt;misha@pexip.com&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>application/x-rtp</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>application/x-rtp</details>
</caps>
</pads>
</element>
<element>
<name>rtpredenc</name>
<longname>Redundant Audio Data (RED) Encoder</longname>
<class>Codec/Payloader/Network/RTP</class>
<description>Encode Redundant Audio Data (RED)</description>
<author>Hani Mustafa &lt;hani@pexip.com&gt;, Mikhail Fludkov &lt;misha@pexip.com&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>application/x-rtp</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>application/x-rtp</details>
</caps>
</pads>
</element>
<element> <element>
<name>rtpsbcdepay</name> <name>rtpsbcdepay</name>
<longname>RTP SBC audio depayloader</longname> <longname>RTP SBC audio depayloader</longname>
@ -1584,6 +1626,27 @@
</caps> </caps>
</pads> </pads>
</element> </element>
<element>
<name>rtpstorage</name>
<longname>RTP storage</longname>
<class>Analyzer/RTP</class>
<description>Helper element for various purposes (ex. recovering from packet loss using RED/FEC). Saves given number of RTP packets. Should be instantiated before jitterbuffer</description>
<author>Mikhail Fludkov &lt;misha@pexip.com&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>application/x-rtp</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>application/x-rtp</details>
</caps>
</pads>
</element>
<element> <element>
<name>rtpstreamdepay</name> <name>rtpstreamdepay</name>
<longname>RTP Stream Depayloading</longname> <longname>RTP Stream Depayloading</longname>
@ -1689,6 +1752,48 @@
</caps> </caps>
</pads> </pads>
</element> </element>
<element>
<name>rtpulpfecdec</name>
<longname>RTP FEC Decoder</longname>
<class>Codec/Depayloader/Network/RTP</class>
<description>Decodes RTP FEC (RFC5109)</description>
<author>Mikhail Fludkov &lt;misha@pexip.com&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>application/x-rtp</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>application/x-rtp</details>
</caps>
</pads>
</element>
<element>
<name>rtpulpfecenc</name>
<longname>RTP FEC Encoder</longname>
<class>Codec/Payloader/Network/RTP</class>
<description>Encodes RTP FEC (RFC5109)</description>
<author>Mikhail Fludkov &lt;misha@pexip.com&gt;</author>
<pads>
<caps>
<name>sink</name>
<direction>sink</direction>
<presence>always</presence>
<details>application/x-rtp</details>
</caps>
<caps>
<name>src</name>
<direction>source</direction>
<presence>always</presence>
<details>application/x-rtp</details>
</caps>
</pads>
</element>
<element> <element>
<name>rtpvorbisdepay</name> <name>rtpvorbisdepay</name>
<longname>RTP Vorbis depayloader</longname> <longname>RTP Vorbis depayloader</longname>

View file

@ -18,6 +18,16 @@
* Author: Mikhail Fludkov <misha@pexip.com> * Author: Mikhail Fludkov <misha@pexip.com>
*/ */
/**
* SECTION:element-rtpreddec
* @short_description: RTP Redundant Audio Data (RED) decoder
* @title: rtpreddec
*
* Decode Redundant Audio Data (RED) as per RFC 2198.
*
* Since: 1.14
*/
#include <gst/rtp/gstrtpbuffer.h> #include <gst/rtp/gstrtpbuffer.h>
#include "rtpredcommon.h" #include "rtpredcommon.h"

View file

@ -18,6 +18,16 @@
* Author: Mikhail Fludkov <misha@pexip.com> * Author: Mikhail Fludkov <misha@pexip.com>
*/ */
/**
* SECTION:element-rtpredenc
* @short_description: RTP Redundant Audio Data (RED) encoder
* @title: rtpredenc
*
* Encode Redundant Audio Data (RED) as per RFC 2198.
*
* Since: 1.14
*/
#include <gst/rtp/gstrtpbuffer.h> #include <gst/rtp/gstrtpbuffer.h>
#include <string.h> #include <string.h>
#include <stdio.h> #include <stdio.h>

View file

@ -18,6 +18,20 @@
* Author: Mikhail Fludkov <misha@pexip.com> * Author: Mikhail Fludkov <misha@pexip.com>
*/ */
/**
* SECTION:element-rtpstorage
* @short_description: RTP storage for forward error correction (FEC) in rtpbin
* @title: rtpstorage
*
* Helper element for storing packets to aid later packet recovery from packet
* loss using RED/FEC (Forward Error Correction).
*
* This element is used internally by rtpbin and is usually created
* automatically.
*
* Since: 1.14
*/
#include "gstrtpstorage.h" #include "gstrtpstorage.h"
static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink", static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink",

View file

@ -18,6 +18,17 @@
* Author: Mikhail Fludkov <misha@pexip.com> * Author: Mikhail Fludkov <misha@pexip.com>
*/ */
/**
* SECTION:element-rtpulpfecdec
* @short_description: Generic RTP Forward Error Correction (FEC) decoder
* @title: rtpulpfecdec
*
* Generic Forward Error Correction (FEC) decoder for Uneven Level
* Protection (ULP) as described in RFC 5109.
*
* Since: 1.14
*/
#include <gst/rtp/gstrtpbuffer.h> #include <gst/rtp/gstrtpbuffer.h>
#include <gst/rtp/gstrtp-enumtypes.h> #include <gst/rtp/gstrtp-enumtypes.h>

View file

@ -18,6 +18,17 @@
* Author: Mikhail Fludkov <misha@pexip.com> * Author: Mikhail Fludkov <misha@pexip.com>
*/ */
/**
* SECTION:element-rtpulpfecenc
* @short_description: Generic RTP Forward Error Correction (FEC) encoder
* @title: rtpulpfecenc
*
* Generic Forward Error Correction (FEC) encoder using Uneven Level
* Protection (ULP) as described in RFC 5109.
*
* Since: 1.14
*/
#include <gst/rtp/gstrtp-enumtypes.h> #include <gst/rtp/gstrtp-enumtypes.h>
#include <gst/rtp/gstrtpbuffer.h> #include <gst/rtp/gstrtpbuffer.h>
#include <string.h> #include <string.h>