diff --git a/docs/plugins/gst-plugins-good-plugins-docs.sgml b/docs/plugins/gst-plugins-good-plugins-docs.sgml index 626a23bdeb..660d1ca971 100644 --- a/docs/plugins/gst-plugins-good-plugins-docs.sgml +++ b/docs/plugins/gst-plugins-good-plugins-docs.sgml @@ -224,6 +224,8 @@ + + @@ -235,11 +237,14 @@ + + + diff --git a/docs/plugins/gst-plugins-good-plugins-sections.txt b/docs/plugins/gst-plugins-good-plugins-sections.txt index 89de073c3a..97cd2351e7 100644 --- a/docs/plugins/gst-plugins-good-plugins-sections.txt +++ b/docs/plugins/gst-plugins-good-plugins-sections.txt @@ -3331,6 +3331,38 @@ GST_TYPE_RTP_QD_M2_DEPAY gst_rtp_qd_m2_depay_get_type +
+element-rtpreddec +rtpreddec +GstRtpRedDec + +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 + +gst_rtp_red_dec_get_type +
+ +
+element-rtpredenc +rtpredenc +GstRtpRedEnc + +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 + +gst_rtp_red_enc_get_type +
+
element-rtprtxreceive rtprtxreceive @@ -3473,6 +3505,22 @@ GST_IS_RTP_SSRC_DEMUX_CLASS GST_TYPE_RTP_SSRC_DEMUX gst_rtp_ssrc_demux_get_type +
+ +
+element-rtpstorage +rtpstorage +GstRtpStorage + +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 + +gst_rtp_storage_get_type
@@ -3539,6 +3587,38 @@ GST_TYPE_RTP_THEORA_PAY gst_rtp_theora_pay_get_type
+
+element-rtpulpfecdec +rtpulpfecdec +GstRtpUlpFecDec + +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 + +gst_rtp_ulp_fec_dec_get_type +
+ +
+element-rtpulpfecenc +rtpulpfecenc +GstRtpUlpFecEnc + +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 + +gst_rtp_ulp_fec_enc_get_type +
+
element-rtpvp8depay rtpvp8depay diff --git a/docs/plugins/gst-plugins-good-plugins.args b/docs/plugins/gst-plugins-good-plugins.args index 4a124b482f..57e8fcbbb6 100644 --- a/docs/plugins/gst-plugins-good-plugins.args +++ b/docs/plugins/gst-plugins-good-plugins.args @@ -24648,3 +24648,203 @@ + +GstRtpPtDemux::ignored-payload-types +GstValueArray + +rw +Ignored payload types +Packets with these payload types will be dropped. + + + + +GstRtpUlpFecEnc::multipacket +gboolean + +rwx +Multipacket +Apply FEC on multiple packets. +FALSE + + + +GstRtpUlpFecEnc::mux-seq +gboolean + +rwx +Mux seq +Mux seqnum for media and fec packets in same seqnum space. +FALSE + + + +GstRtpUlpFecEnc::percentage +guint +<= 100 +rwx +Percentage +FEC overhead percentage for the whole stream. +0 + + + +GstRtpUlpFecEnc::percentage-important +guint +<= 100 +rwx +Percentage important +FEC overhead percentage for important packets. +0 + + + +GstRtpUlpFecEnc::protected +guint + +r +Protected +Count of protected packets. +0 + + + +GstRtpUlpFecEnc::pt +guint +<= 255 +rwx +payload type +The payload type of FEC packets. +255 + + + +GstRtpUlpFecEnc::ssrc +guint + +rwx +SSRC +The SSRC to use on FEC'd packets. +0 + + + +GstRtpUlpFecDec::pt +guint +<= 127 +rw +pt +FEC packets payload type. +0 + + + +GstRtpUlpFecDec::recovered +guint + +r +recovered +The number of recovered packets. +0 + + + +GstRtpUlpFecDec::storage +GObject* + +rw +RTP storage +RTP storage. + + + + +GstRtpUlpFecDec::unrecovered +guint + +r +unrecovered +The number of unrecovered packets. +0 + + + +GstRtpStorage::internal-storage +GObject* + +r +Internal storage +Internal RtpStorage object. + + + + +GstRtpStorage::size-time +guint64 + +rwx +Storage size (in ns) +The amount of data to keep in the storage (in ns, 0-disable). +0 + + + +GstRtpRedEnc::allow-no-red-blocks +gboolean + +rw +Allow no redundant blocks +true - can produce RED packets even without redundant blocks (distance==0) false - RED packets will be produced only if distance>0. +FALSE + + + +GstRtpRedEnc::distance +guint + +rw +RED distance +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.). +0 + + + +GstRtpRedEnc::pt +gint +[0,127] +rw +payload type +Payload type FEC packets (-1 disable). +0 + + + +GstRtpRedEnc::sent +guint + +r +Sent +Count of sent packets. +0 + + + +GstRtpRedDec::pt +gint +[G_MAXULONG,127] +rw +payload type +Payload type FEC packets. +-1 + + + +GstRtpRedDec::received +guint + +r +Received +Count of received packets. +0 + + diff --git a/docs/plugins/gst-plugins-good-plugins.hierarchy b/docs/plugins/gst-plugins-good-plugins.hierarchy index 9a43e0fd8e..1f947d4517 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 2882331ab2..82742a5d16 100644 --- a/docs/plugins/gst-plugins-good-plugins.signals +++ b/docs/plugins/gst-plugins-good-plugins.signals @@ -382,6 +382,39 @@ GstRtpBin *gstrtpbin guint arg1 + +GstRtpBin::get-internal-storage +GObject* +la +GstRtpBin *gstrtpbin +guint arg1 + + + +GstRtpBin::new-storage +void +l +GstRtpBin *gstrtpbin +GstElement *arg1 +guint arg2 + + + +GstRtpBin::request-fec-decoder +GstElement* +l +GstRtpBin *gstrtpbin +guint arg1 + + + +GstRtpBin::request-fec-encoder +GstElement* +l +GstRtpBin *gstrtpbin +guint arg1 + + GstRtpJitterBuffer::clear-pt-map void diff --git a/docs/plugins/inspect/plugin-rtp.xml b/docs/plugins/inspect/plugin-rtp.xml index 9186cd41af..6ebba8c858 100644 --- a/docs/plugins/inspect/plugin-rtp.xml +++ b/docs/plugins/inspect/plugin-rtp.xml @@ -1458,6 +1458,48 @@ + + rtpreddec + Redundant Audio Data (RED) Decoder + Codec/Depayloader/Network/RTP + Decode Redundant Audio Data (RED) + Hani Mustafa <hani@pexip.com>, Mikhail Fludkov <misha@pexip.com> + + + sink + sink + always +
application/x-rtp
+
+ + src + source + always +
application/x-rtp
+
+
+
+ + rtpredenc + Redundant Audio Data (RED) Encoder + Codec/Payloader/Network/RTP + Encode Redundant Audio Data (RED) + Hani Mustafa <hani@pexip.com>, Mikhail Fludkov <misha@pexip.com> + + + sink + sink + always +
application/x-rtp
+
+ + src + source + always +
application/x-rtp
+
+
+
rtpsbcdepay RTP SBC audio depayloader @@ -1584,6 +1626,27 @@ + + rtpstorage + RTP storage + Analyzer/RTP + Helper element for various purposes (ex. recovering from packet loss using RED/FEC). Saves given number of RTP packets. Should be instantiated before jitterbuffer + Mikhail Fludkov <misha@pexip.com> + + + sink + sink + always +
application/x-rtp
+
+ + src + source + always +
application/x-rtp
+
+
+
rtpstreamdepay RTP Stream Depayloading @@ -1689,6 +1752,48 @@ + + rtpulpfecdec + RTP FEC Decoder + Codec/Depayloader/Network/RTP + Decodes RTP FEC (RFC5109) + Mikhail Fludkov <misha@pexip.com> + + + sink + sink + always +
application/x-rtp
+
+ + src + source + always +
application/x-rtp
+
+
+
+ + rtpulpfecenc + RTP FEC Encoder + Codec/Payloader/Network/RTP + Encodes RTP FEC (RFC5109) + Mikhail Fludkov <misha@pexip.com> + + + sink + sink + always +
application/x-rtp
+
+ + src + source + always +
application/x-rtp
+
+
+
rtpvorbisdepay RTP Vorbis depayloader diff --git a/gst/rtp/gstrtpreddec.c b/gst/rtp/gstrtpreddec.c index 6a2297254e..488a9350c3 100644 --- a/gst/rtp/gstrtpreddec.c +++ b/gst/rtp/gstrtpreddec.c @@ -18,6 +18,16 @@ * Author: Mikhail Fludkov */ +/** + * 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 #include "rtpredcommon.h" diff --git a/gst/rtp/gstrtpredenc.c b/gst/rtp/gstrtpredenc.c index 59b9bc2439..b3068bc8bc 100644 --- a/gst/rtp/gstrtpredenc.c +++ b/gst/rtp/gstrtpredenc.c @@ -18,6 +18,16 @@ * Author: Mikhail Fludkov */ +/** + * 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 #include #include diff --git a/gst/rtp/gstrtpstorage.c b/gst/rtp/gstrtpstorage.c index d35b3def6e..9073808405 100644 --- a/gst/rtp/gstrtpstorage.c +++ b/gst/rtp/gstrtpstorage.c @@ -18,6 +18,20 @@ * Author: Mikhail Fludkov */ +/** + * 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 c9be119657..28a0a69148 100644 --- a/gst/rtp/gstrtpulpfecdec.c +++ b/gst/rtp/gstrtpulpfecdec.c @@ -18,6 +18,17 @@ * Author: Mikhail Fludkov */ +/** + * 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 #include diff --git a/gst/rtp/gstrtpulpfecenc.c b/gst/rtp/gstrtpulpfecenc.c index 43a735d28a..aa8ac7b420 100644 --- a/gst/rtp/gstrtpulpfecenc.c +++ b/gst/rtp/gstrtpulpfecenc.c @@ -18,6 +18,17 @@ * Author: Mikhail Fludkov */ +/** + * 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 #include #include