• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html>
3<head>
4<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5<title>rtpulpfecdec: GStreamer Good Plugins 1.0 Plugins Reference Manual</title>
6<meta name="generator" content="DocBook XSL Stylesheets V1.79.1">
7<link rel="home" href="index.html" title="GStreamer Good Plugins 1.0 Plugins Reference Manual">
8<link rel="up" href="ch01.html" title="gst-plugins-good Elements">
9<link rel="prev" href="gst-plugins-good-plugins-rtptheorapay.html" title="rtptheorapay">
10<link rel="next" href="gst-plugins-good-plugins-rtpulpfecenc.html" title="rtpulpfecenc">
11<meta name="generator" content="GTK-Doc V1.28 (XML mode)">
12<link rel="stylesheet" href="style.css" type="text/css">
13</head>
14<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
15<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="5"><tr valign="middle">
16<td width="100%" align="left" class="shortcuts">
17<a href="#" class="shortcut">Top</a><span id="nav_description">  <span class="dim">|</span18                  <a href="#gst-plugins-good-plugins-rtpulpfecdec.description" class="shortcut">Description</a></span><span id="nav_hierarchy">  <span class="dim">|</span19                  <a href="#gst-plugins-good-plugins-rtpulpfecdec.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties">  <span class="dim">|</span20                  <a href="#gst-plugins-good-plugins-rtpulpfecdec.properties" class="shortcut">Properties</a></span>
21</td>
22<td><a accesskey="h" href="index.html"><img src="home.png" width="16" height="16" border="0" alt="Home"></a></td>
23<td><a accesskey="u" href="ch01.html"><img src="up.png" width="16" height="16" border="0" alt="Up"></a></td>
24<td><a accesskey="p" href="gst-plugins-good-plugins-rtptheorapay.html"><img src="left.png" width="16" height="16" border="0" alt="Prev"></a></td>
25<td><a accesskey="n" href="gst-plugins-good-plugins-rtpulpfecenc.html"><img src="right.png" width="16" height="16" border="0" alt="Next"></a></td>
26</tr></table>
27<div class="refentry">
28<a name="gst-plugins-good-plugins-rtpulpfecdec"></a><div class="titlepage"></div>
29<div class="refnamediv"><table width="100%"><tr>
30<td valign="top">
31<h2><span class="refentrytitle"><a name="gst-plugins-good-plugins-rtpulpfecdec.top_of_page"></a>rtpulpfecdec</span></h2>
32<p>rtpulpfecdec — Generic RTP Forward Error Correction (FEC) decoder</p>
33</td>
34<td class="gallery_image" valign="top" align="right"></td>
35</tr></table></div>
36<div class="refsect1">
37<a name="gst-plugins-good-plugins-rtpulpfecdec.properties"></a><h2>Properties</h2>
38<div class="informaltable"><table class="informaltable" border="0">
39<colgroup>
40<col width="150px" class="properties_type">
41<col width="300px" class="properties_name">
42<col width="200px" class="properties_flags">
43</colgroup>
44<tbody>
45<tr>
46<td class="property_type"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
47<td class="property_name"><a class="link" href="gst-plugins-good-plugins-rtpulpfecdec.html#GstRtpUlpFecDec--pt" title="The “pt” property">pt</a></td>
48<td class="property_flags">Read / Write</td>
49</tr>
50<tr>
51<td class="property_type"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
52<td class="property_name"><a class="link" href="gst-plugins-good-plugins-rtpulpfecdec.html#GstRtpUlpFecDec--recovered" title="The “recovered” property">recovered</a></td>
53<td class="property_flags">Read</td>
54</tr>
55<tr>
56<td class="property_type">
57<a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct"><span class="type">GObject</span></a> *</td>
58<td class="property_name"><a class="link" href="gst-plugins-good-plugins-rtpulpfecdec.html#GstRtpUlpFecDec--storage" title="The “storage” property">storage</a></td>
59<td class="property_flags">Read / Write</td>
60</tr>
61<tr>
62<td class="property_type"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td>
63<td class="property_name"><a class="link" href="gst-plugins-good-plugins-rtpulpfecdec.html#GstRtpUlpFecDec--unrecovered" title="The “unrecovered” property">unrecovered</a></td>
64<td class="property_flags">Read</td>
65</tr>
66</tbody>
67</table></div>
68</div>
69<a name="GstRtpUlpFecDec"></a><div class="refsect1">
70<a name="gst-plugins-good-plugins-rtpulpfecdec.other"></a><h2>Types and Values</h2>
71<div class="informaltable"><table class="informaltable" width="100%" border="0">
72<colgroup>
73<col width="150px" class="name">
74<col class="description">
75</colgroup>
76<tbody><tr>
77<td class="datatype_keyword">struct</td>
78<td class="function_name"><a class="link" href="gst-plugins-good-plugins-rtpulpfecdec.html#GstRtpUlpFecDec-struct" title="struct GstRtpUlpFecDec">GstRtpUlpFecDec</a></td>
79</tr></tbody>
80</table></div>
81</div>
82<div class="refsect1">
83<a name="gst-plugins-good-plugins-rtpulpfecdec.object-hierarchy"></a><h2>Object Hierarchy</h2>
84<pre class="screen">    <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct">GObject</a>
85    <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GInitiallyUnowned">GInitiallyUnowned</a>
86        <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstObject.html#GstObject-struct">GstObject</a>
87            <span class="lineart">╰──</span> <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstElement.html#GstElement-struct">GstElement</a>
88                <span class="lineart">╰──</span> GstRtpUlpFecDec
89</pre>
90</div>
91<div class="refsect1">
92<a name="gst-plugins-good-plugins-rtpulpfecdec.description"></a><h2>Description</h2>
93<p>Generic Forward Error Correction (FEC) decoder for Uneven Level
94Protection (ULP) as described in RFC 5109.</p>
95<p>It differs from the RFC in one important way, it multiplexes the
96FEC packets in the same sequence number as media packets. This is to be
97compatible with libwebrtc as using in Google Chrome and with Microsoft
98Lync / Skype for Business.</p>
99<p>This element will work in combination with an upstream <a class="link" href="gst-plugins-good-plugins-rtpstorage.html#GstRtpStorage"><span class="type">GstRtpStorage</span></a>
100element and attempt to recover packets declared lost through custom
101'GstRTPPacketLost' events, usually emitted by <a class="link" href="gst-plugins-good-plugins-rtpjitterbuffer.html#GstRtpJitterBuffer"><span class="type">GstRtpJitterBuffer</span></a>.</p>
102<p>If no storage is provided using the <a class="link" href="gst-plugins-good-plugins-rtpulpfecdec.html#GstRtpUlpFecDec--storage" title="The “storage” property"><span class="type">“storage”</span></a>
103property, it will try to get it from an element upstream.</p>
104<p>Additionally, the payload types of the protection packets *must* be
105provided to this element via its <a class="link" href="gst-plugins-good-plugins-rtpulpfecdec.html#GstRtpUlpFecDec--pt" title="The “pt” property"><span class="type">“pt”</span></a> property.</p>
106<p>When using <a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin"><span class="type">GstRtpBin</span></a>, this element should be inserted through the
107<a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-request-fec-decoder" title="The “request-fec-decoder” signal"><span class="type">“request-fec-decoder”</span></a> signal.</p>
108<div class="refsect2">
109<a name="id-1.2.227.7.8"></a><h3>Example pipeline</h3>
110<div class="informalexample">
111  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
112    <tbody>
113      <tr>
114        <td class="listing_lines" align="right"><pre>1</pre></td>
115        <td class="listing_code"><pre class="programlisting">gst<span class="gtkdoc opt">-</span>launch<span class="gtkdoc opt">-</span><span class="number">1.0</span> udpsrc port<span class="gtkdoc opt">=</span><span class="number">8888</span> caps<span class="gtkdoc opt">=</span><span class="string">&quot;application/x-rtp, payload=96, clock-rate=90000&quot;</span> <span class="gtkdoc opt">!</span> rtpstorage size<span class="gtkdoc opt">-</span>time<span class="gtkdoc opt">=</span><span class="number">220000000</span> <span class="gtkdoc opt">!</span> rtpssrcdemux <span class="gtkdoc opt">!</span> application<span class="gtkdoc opt">/</span>x<span class="gtkdoc opt">-</span>rtp<span class="gtkdoc opt">,</span> payload<span class="gtkdoc opt">=</span><span class="number">96</span><span class="gtkdoc opt">,</span> clock<span class="gtkdoc opt">-</span>rate<span class="gtkdoc opt">=</span><span class="number">90000</span><span class="gtkdoc opt">,</span> media<span class="gtkdoc opt">=</span>video<span class="gtkdoc opt">,</span> encoding<span class="gtkdoc opt">-</span>name<span class="gtkdoc opt">=</span>H264 <span class="gtkdoc opt">!</span> rtpjitterbuffer <span class="keyword">do</span><span class="gtkdoc opt">-</span>lost<span class="gtkdoc opt">=</span><span class="number">1</span> latency<span class="gtkdoc opt">=</span><span class="number">200</span> <span class="gtkdoc opt">!</span>  rtpulpfecdec pt<span class="gtkdoc opt">=</span><span class="number">122</span> <span class="gtkdoc opt">!</span> rtph264depay <span class="gtkdoc opt">!</span> avdec_h264 <span class="gtkdoc opt">!</span> videoconvert <span class="gtkdoc opt">!</span> autovideosink</pre></td>
116      </tr>
117    </tbody>
118  </table>
119</div>
120 This example will receive a stream with FEC and try to reconstruct the packets.
121
122Example programs are available at
123<a class="ulink" href="https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/blob/master/examples/src/bin/rtpfecserver.rs" target="_top">rtpfecserver.rs</a>
124and
125<a class="ulink" href="https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/blob/master/examples/src/bin/rtpfecclient.rs" target="_top">rtpfecclient.rs</a>
126</div>
127<p>See also: <a class="link" href="gst-plugins-good-plugins-rtpulpfecenc.html#GstRtpUlpFecEnc"><span class="type">GstRtpUlpFecEnc</span></a>, <a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin"><span class="type">GstRtpBin</span></a>, <a class="link" href="gst-plugins-good-plugins-rtpstorage.html#GstRtpStorage"><span class="type">GstRtpStorage</span></a></p>
128<div class="refsynopsisdiv">
129<h2>Synopsis</h2>
130<div class="refsect2">
131<a name="id-1.2.227.7.10.1"></a><h3>Element Information</h3>
132<div class="variablelist"><table border="0" class="variablelist">
133<colgroup>
134<col align="left" valign="top">
135<col>
136</colgroup>
137<tbody>
138<tr>
139<td><p><span class="term">plugin</span></p></td>
140<td>
141            <a class="link" href="gst-plugins-good-plugins-plugin-rtp.html#plugin-rtp">rtp</a>
142          </td>
143</tr>
144<tr>
145<td><p><span class="term">author</span></p></td>
146<td>Mikhail Fludkov &lt;misha@pexip.com&gt;</td>
147</tr>
148<tr>
149<td><p><span class="term">class</span></p></td>
150<td>Codec/Depayloader/Network/RTP</td>
151</tr>
152</tbody>
153</table></div>
154</div>
155<hr>
156<div class="refsect2">
157<a name="id-1.2.227.7.10.2"></a><h3>Element Pads</h3>
158<div class="variablelist"><table border="0" class="variablelist">
159<colgroup>
160<col align="left" valign="top">
161<col>
162</colgroup>
163<tbody>
164<tr>
165<td><p><span class="term">name</span></p></td>
166<td>sink</td>
167</tr>
168<tr>
169<td><p><span class="term">direction</span></p></td>
170<td>sink</td>
171</tr>
172<tr>
173<td><p><span class="term">presence</span></p></td>
174<td>always</td>
175</tr>
176<tr>
177<td><p><span class="term">details</span></p></td>
178<td>application/x-rtp</td>
179</tr>
180</tbody>
181</table></div>
182<div class="variablelist"><table border="0" class="variablelist">
183<colgroup>
184<col align="left" valign="top">
185<col>
186</colgroup>
187<tbody>
188<tr>
189<td><p><span class="term">name</span></p></td>
190<td>src</td>
191</tr>
192<tr>
193<td><p><span class="term">direction</span></p></td>
194<td>source</td>
195</tr>
196<tr>
197<td><p><span class="term">presence</span></p></td>
198<td>always</td>
199</tr>
200<tr>
201<td><p><span class="term">details</span></p></td>
202<td>application/x-rtp</td>
203</tr>
204</tbody>
205</table></div>
206</div>
207</div>
208</div>
209<div class="refsect1">
210<a name="gst-plugins-good-plugins-rtpulpfecdec.functions_details"></a><h2>Functions</h2>
211<p></p>
212</div>
213<div class="refsect1">
214<a name="gst-plugins-good-plugins-rtpulpfecdec.other_details"></a><h2>Types and Values</h2>
215<div class="refsect2">
216<a name="GstRtpUlpFecDec-struct"></a><h3>struct GstRtpUlpFecDec</h3>
217<pre class="programlisting">struct GstRtpUlpFecDec;</pre>
218</div>
219</div>
220<div class="refsect1">
221<a name="gst-plugins-good-plugins-rtpulpfecdec.property-details"></a><h2>Property Details</h2>
222<div class="refsect2">
223<a name="GstRtpUlpFecDec--pt"></a><h3>The <code class="literal">“pt”</code> property</h3>
224<pre class="programlisting">  “pt”                       <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
225<p>FEC packets payload type.</p>
226<p>Flags: Read / Write</p>
227<p>Allowed values: &lt;= 127</p>
228<p>Default value: 0</p>
229</div>
230<hr>
231<div class="refsect2">
232<a name="GstRtpUlpFecDec--recovered"></a><h3>The <code class="literal">“recovered”</code> property</h3>
233<pre class="programlisting">  “recovered”                <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
234<p>The number of recovered packets.</p>
235<p>Flags: Read</p>
236<p>Default value: 0</p>
237</div>
238<hr>
239<div class="refsect2">
240<a name="GstRtpUlpFecDec--storage"></a><h3>The <code class="literal">“storage”</code> property</h3>
241<pre class="programlisting">  “storage”                  <a href="/usr/share/gtk-doc/html/gobject/gobject-The-Base-Object-Type.html#GObject-struct"><span class="type">GObject</span></a> *</pre>
242<p>RTP storage.</p>
243<p>Flags: Read / Write</p>
244</div>
245<hr>
246<div class="refsect2">
247<a name="GstRtpUlpFecDec--unrecovered"></a><h3>The <code class="literal">“unrecovered”</code> property</h3>
248<pre class="programlisting">  “unrecovered”              <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre>
249<p>The number of unrecovered packets.</p>
250<p>Flags: Read</p>
251<p>Default value: 0</p>
252</div>
253</div>
254</div>
255<div class="footer">
256<hr>Generated by GTK-Doc V1.28</div>
257</body>
258</html>