diff options
author | Tim-Philipp Müller <tim@centricular.com> | 2018-02-22 14:58:12 +0000 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.com> | 2018-02-22 15:56:49 +0000 |
commit | 427033591caf3cf9e51ed359072c518771313731 (patch) | |
tree | f38f35966cd6cfa2d279bcb89c94fd8e14785d7e | |
parent | 59fc403ee665af04351c7195c9bdd3ce5994e653 (diff) |
docs: hook up new RTP FEC elements
https://bugzilla.gnome.org/show_bug.cgi?id=792696
-rw-r--r-- | docs/plugins/gst-plugins-good-plugins-docs.sgml | 5 | ||||
-rw-r--r-- | docs/plugins/gst-plugins-good-plugins-sections.txt | 80 | ||||
-rw-r--r-- | docs/plugins/gst-plugins-good-plugins.args | 200 | ||||
-rw-r--r-- | docs/plugins/gst-plugins-good-plugins.hierarchy | 5 | ||||
-rw-r--r-- | docs/plugins/gst-plugins-good-plugins.signals | 33 | ||||
-rw-r--r-- | docs/plugins/inspect/plugin-rtp.xml | 105 | ||||
-rw-r--r-- | gst/rtp/gstrtpreddec.c | 10 | ||||
-rw-r--r-- | gst/rtp/gstrtpredenc.c | 10 | ||||
-rw-r--r-- | gst/rtp/gstrtpstorage.c | 14 | ||||
-rw-r--r-- | gst/rtp/gstrtpulpfecdec.c | 11 | ||||
-rw-r--r-- | gst/rtp/gstrtpulpfecenc.c | 11 |
11 files changed, 484 insertions, 0 deletions
diff --git a/docs/plugins/gst-plugins-good-plugins-docs.sgml b/docs/plugins/gst-plugins-good-plugins-docs.sgml index 626a23bde..660d1ca97 100644 --- a/docs/plugins/gst-plugins-good-plugins-docs.sgml +++ b/docs/plugins/gst-plugins-good-plugins-docs.sgml @@ -224,6 +224,8 @@ <xi:include href="xml/element-rtpptdemux.xml" /> <xi:include href="xml/element-rtpqcelpdepay.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-rtprtxreceive.xml" /> <xi:include href="xml/element-rtprtxsend.xml" /> @@ -235,11 +237,14 @@ <xi:include href="xml/element-rtpspeexdepay.xml" /> <xi:include href="xml/element-rtpspeexpay.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-rtpstreampay.xml" /> <xi:include href="xml/element-rtpsv3vdepay.xml" /> <xi:include href="xml/element-rtptheoradepay.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-rtpvorbispay.xml" /> <xi:include href="xml/element-rtpvp8depay.xml" /> diff --git a/docs/plugins/gst-plugins-good-plugins-sections.txt b/docs/plugins/gst-plugins-good-plugins-sections.txt index 89de073c3..97cd2351e 100644 --- a/docs/plugins/gst-plugins-good-plugins-sections.txt +++ b/docs/plugins/gst-plugins-good-plugins-sections.txt @@ -3332,6 +3332,38 @@ gst_rtp_qd_m2_depay_get_type </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> <FILE>element-rtprtxreceive</FILE> <TITLE>rtprtxreceive</TITLE> GstRtpRtxReceive @@ -3475,6 +3507,22 @@ GST_TYPE_RTP_SSRC_DEMUX 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> <FILE>element-rtpstreamdepay</FILE> <TITLE>rtpstreamdepay</TITLE> @@ -3540,6 +3588,38 @@ gst_rtp_theora_pay_get_type </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> <FILE>element-rtpvp8depay</FILE> <TITLE>rtpvp8depay</TITLE> GstRtpVP8Depay diff --git a/docs/plugins/gst-plugins-good-plugins.args b/docs/plugins/gst-plugins-good-plugins.args index 4a124b482..57e8fcbbb 100644 --- a/docs/plugins/gst-plugins-good-plugins.args +++ b/docs/plugins/gst-plugins-good-plugins.args @@ -24648,3 +24648,203 @@ <DEFAULT></DEFAULT> </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> + diff --git a/docs/plugins/gst-plugins-good-plugins.hierarchy b/docs/plugins/gst-plugins-good-plugins.hierarchy index 9a43e0fd8..1f947d451 100644 --- a/docs/plugins/gst-plugins-good-plugins.hierarchy +++ b/docs/plugins/gst-plugins-good-plugins.hierarchy @@ -289,11 +289,16 @@ GObject GstRndBufferSize GstRtpJitterBuffer GstRtpPtDemux + GstRtpRedDec + GstRtpRedEnc GstRtpRtxReceive GstRtpRtxSend GstRtpSession GstRtpSsrcDemux + GstRtpStorage GstRtpStreamPay + GstRtpUlpFecDec + GstRtpUlpFecEnc GstSMPTE GstShapeWipe GstTagDemux diff --git a/docs/plugins/gst-plugins-good-plugins.signals b/docs/plugins/gst-plugins-good-plugins.signals index 2882331ab..82742a5d1 100644 --- a/docs/plugins/gst-plugins-good-plugins.signals +++ b/docs/plugins/gst-plugins-good-plugins.signals @@ -383,6 +383,39 @@ guint arg1 </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> <NAME>GstRtpJitterBuffer::clear-pt-map</NAME> <RETURNS>void</RETURNS> <FLAGS>la</FLAGS> diff --git a/docs/plugins/inspect/plugin-rtp.xml b/docs/plugins/inspect/plugin-rtp.xml index 9186cd41a..6ebba8c85 100644 --- a/docs/plugins/inspect/plugin-rtp.xml +++ b/docs/plugins/inspect/plugin-rtp.xml @@ -1459,6 +1459,48 @@ </pads> </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 <hani@pexip.com>, Mikhail Fludkov <misha@pexip.com></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 <hani@pexip.com>, Mikhail Fludkov <misha@pexip.com></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>rtpsbcdepay</name> <longname>RTP SBC audio depayloader</longname> <class>Codec/Depayloader/Network/RTP</class> @@ -1585,6 +1627,27 @@ </pads> </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 <misha@pexip.com></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>rtpstreamdepay</name> <longname>RTP Stream Depayloading</longname> <class>Codec/Depayloader/Network</class> @@ -1690,6 +1753,48 @@ </pads> </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 <misha@pexip.com></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 <misha@pexip.com></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>rtpvorbisdepay</name> <longname>RTP Vorbis depayloader</longname> <class>Codec/Depayloader/Network/RTP</class> diff --git a/gst/rtp/gstrtpreddec.c b/gst/rtp/gstrtpreddec.c index 6a2297254..488a9350c 100644 --- a/gst/rtp/gstrtpreddec.c +++ b/gst/rtp/gstrtpreddec.c @@ -18,6 +18,16 @@ * 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 "rtpredcommon.h" diff --git a/gst/rtp/gstrtpredenc.c b/gst/rtp/gstrtpredenc.c index 59b9bc243..b3068bc8b 100644 --- a/gst/rtp/gstrtpredenc.c +++ b/gst/rtp/gstrtpredenc.c @@ -18,6 +18,16 @@ * 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 <string.h> #include <stdio.h> diff --git a/gst/rtp/gstrtpstorage.c b/gst/rtp/gstrtpstorage.c index d35b3def6..907380840 100644 --- a/gst/rtp/gstrtpstorage.c +++ b/gst/rtp/gstrtpstorage.c @@ -18,6 +18,20 @@ * 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" static GstStaticPadTemplate sinktemplate = GST_STATIC_PAD_TEMPLATE ("sink", diff --git a/gst/rtp/gstrtpulpfecdec.c b/gst/rtp/gstrtpulpfecdec.c index c9be11965..28a0a6914 100644 --- a/gst/rtp/gstrtpulpfecdec.c +++ b/gst/rtp/gstrtpulpfecdec.c @@ -18,6 +18,17 @@ * 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/gstrtp-enumtypes.h> diff --git a/gst/rtp/gstrtpulpfecenc.c b/gst/rtp/gstrtpulpfecenc.c index 43a735d28..aa8ac7b42 100644 --- a/gst/rtp/gstrtpulpfecenc.c +++ b/gst/rtp/gstrtpulpfecenc.c @@ -18,6 +18,17 @@ * 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/gstrtpbuffer.h> #include <string.h> |