docs: hook up new RTP FEC elements

https://bugzilla.gnome.org/show_bug.cgi?id=792696
diff --git a/docs/plugins/gst-plugins-good-plugins-docs.sgml b/docs/plugins/gst-plugins-good-plugins-docs.sgml
index 626a23b..660d1ca 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 89de073..97cd235 100644
--- a/docs/plugins/gst-plugins-good-plugins-sections.txt
+++ b/docs/plugins/gst-plugins-good-plugins-sections.txt
@@ -3332,6 +3332,38 @@
 </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_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 @@
 </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 4a124b4..57e8fcb 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 9a43e0f..1f947d4 100644
--- a/docs/plugins/gst-plugins-good-plugins.hierarchy
+++ b/docs/plugins/gst-plugins-good-plugins.hierarchy
@@ -289,11 +289,16 @@
         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 2882331..82742a5 100644
--- a/docs/plugins/gst-plugins-good-plugins.signals
+++ b/docs/plugins/gst-plugins-good-plugins.signals
@@ -383,6 +383,39 @@
 </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 9186cd4..6ebba8c 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 &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>
       <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 &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>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 &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>
       <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 6a22972..488a935 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 59b9bc2..b3068bc 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 d35b3de..9073808 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 c9be119..28a0a69 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 43a735d..aa8ac7b 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>