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>rtprtxreceive: 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-rtprtxqueue.html" title="rtprtxqueue"> 10<link rel="next" href="gst-plugins-good-plugins-rtprtxsend.html" title="rtprtxsend"> 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">|</span> 18 <a href="#gst-plugins-good-plugins-rtprtxreceive.description" class="shortcut">Description</a></span><span id="nav_hierarchy"> <span class="dim">|</span> 19 <a href="#gst-plugins-good-plugins-rtprtxreceive.object-hierarchy" class="shortcut">Object Hierarchy</a></span><span id="nav_properties"> <span class="dim">|</span> 20 <a href="#gst-plugins-good-plugins-rtprtxreceive.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-rtprtxqueue.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-rtprtxsend.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-rtprtxreceive"></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-rtprtxreceive.top_of_page"></a>rtprtxreceive</span></h2> 32<p>rtprtxreceive</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-rtprtxreceive.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-rtprtxreceive.html#GstRtpRtxReceive--num-rtx-requests" title="The “num-rtx-requests” property">num-rtx-requests</a></td> 48<td class="property_flags">Read</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-rtprtxreceive.html#GstRtpRtxReceive--num-rtx-packets" title="The “num-rtx-packets” property">num-rtx-packets</a></td> 53<td class="property_flags">Read</td> 54</tr> 55<tr> 56<td class="property_type"><a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a></td> 57<td class="property_name"><a class="link" href="gst-plugins-good-plugins-rtprtxreceive.html#GstRtpRtxReceive--num-rtx-assoc-packets" title="The “num-rtx-assoc-packets” property">num-rtx-assoc-packets</a></td> 58<td class="property_flags">Read</td> 59</tr> 60<tr> 61<td class="property_type"> 62<a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstStructure.html#GstStructure-struct"><span class="type">GstStructure</span></a> *</td> 63<td class="property_name"><a class="link" href="gst-plugins-good-plugins-rtprtxreceive.html#GstRtpRtxReceive--payload-type-map" title="The “payload-type-map” property">payload-type-map</a></td> 64<td class="property_flags">Read / Write</td> 65</tr> 66</tbody> 67</table></div> 68</div> 69<a name="GstRtpRtxReceive"></a><div class="refsect1"> 70<a name="gst-plugins-good-plugins-rtprtxreceive.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-rtprtxreceive.html#GstRtpRtxReceive-struct" title="struct GstRtpRtxReceive">GstRtpRtxReceive</a></td> 79</tr></tbody> 80</table></div> 81</div> 82<div class="refsect1"> 83<a name="gst-plugins-good-plugins-rtprtxreceive.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> GstRtpRtxReceive 89</pre> 90</div> 91<div class="refsect1"> 92<a name="gst-plugins-good-plugins-rtprtxreceive.description"></a><h2>Description</h2> 93<p>rtprtxreceive listens to the retransmission events from the 94downstream rtpjitterbuffer and remembers the SSRC (ssrc1) of the stream and 95the sequence number that was requested. When it receives a packet with 96a sequence number equal to one of the ones stored and with a different SSRC, 97it identifies the new SSRC (ssrc2) as the retransmission stream of ssrc1. 98From this point on, it replaces ssrc2 with ssrc1 in all packets of the 99ssrc2 stream and flags them as retransmissions, so that rtpjitterbuffer 100can reconstruct the original stream.</p> 101<p>This algorithm is implemented as specified in RFC 4588.</p> 102<p>This element is meant to be used with rtprtxsend on the sender side. 103See <a class="link" href="gst-plugins-good-plugins-rtprtxsend.html#GstRtpRtxSend"><span class="type">GstRtpRtxSend</span></a></p> 104<p>Below you can see some examples that illustrate how rtprtxreceive and 105rtprtxsend fit among the other rtp elements and how they work internally. 106Normally, hoewever, you should avoid using such pipelines and use 107rtpbin instead, with its <a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-request-aux-sender" title="The “request-aux-sender” signal"><span class="type">“request-aux-sender”</span></a> and 108<a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin-request-aux-receiver" title="The “request-aux-receiver” signal"><span class="type">“request-aux-receiver”</span></a> signals. See <a class="link" href="gst-plugins-good-plugins-rtpbin.html#GstRtpBin"><span class="type">GstRtpBin</span></a>.</p> 109<div class="refsect2"> 110<a name="id-1.2.211.7.6"></a><h3>Example pipelines</h3> 111<div class="informalexample"> 112 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> 113 <tbody> 114 <tr> 115 <td class="listing_lines" align="right"><pre>1 1162 1173 1184 1195 1206 1217 1228 1239</pre></td> 124 <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> rtpsession name<span class="gtkdoc opt">=</span>rtpsession rtp<span class="gtkdoc opt">-</span>profile<span class="gtkdoc opt">=</span>avpf \ 125 audiotestsrc is<span class="gtkdoc opt">-</span>live<span class="gtkdoc opt">=</span><span class="keyword">true</span> <span class="gtkdoc opt">!</span> opusenc <span class="gtkdoc opt">!</span> rtpopuspay pt<span class="gtkdoc opt">=</span><span class="number">96</span> <span class="gtkdoc opt">!</span> \ 126 rtprtxsend payload<span class="gtkdoc opt">-</span>type<span class="gtkdoc opt">-</span>map<span class="gtkdoc opt">=</span><span class="string">"application/x-rtp-pt-map,96=(uint)97"</span> <span class="gtkdoc opt">!</span> \ 127 rtpsession<span class="gtkdoc opt">.</span>send_rtp_sink \ 128 rtpsession<span class="gtkdoc opt">.</span>send_rtp_src <span class="gtkdoc opt">!</span> identity drop<span class="gtkdoc opt">-</span>probability<span class="gtkdoc opt">=</span><span class="number">0.01</span> <span class="gtkdoc opt">!</span> \ 129 udpsink host<span class="gtkdoc opt">=</span><span class="string">"127.0.0.1"</span> port<span class="gtkdoc opt">=</span><span class="number">5000</span> \ 130 udpsrc port<span class="gtkdoc opt">=</span><span class="number">5001</span> <span class="gtkdoc opt">!</span> rtpsession<span class="gtkdoc opt">.</span>recv_rtcp_sink \ 131 rtpsession<span class="gtkdoc opt">.</span>send_rtcp_src <span class="gtkdoc opt">!</span> udpsink host<span class="gtkdoc opt">=</span><span class="string">"127.0.0.1"</span> port<span class="gtkdoc opt">=</span><span class="number">5002</span> \ 132 sync<span class="gtkdoc opt">=</span><span class="keyword">false</span> async<span class="gtkdoc opt">=</span><span class="keyword">false</span></pre></td> 133 </tr> 134 </tbody> 135 </table> 136</div> 137 138<p> Send audio stream through port 5000 (5001 and 5002 are just the rtcp 139link with the receiver)</p> 140<div class="informalexample"> 141 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> 142 <tbody> 143 <tr> 144 <td class="listing_lines" align="right"><pre>1 1452 1463 1474 1485 1496 1507 1518 1529 15310</pre></td> 154 <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> rtpsession name<span class="gtkdoc opt">=</span>rtpsession rtp<span class="gtkdoc opt">-</span>profile<span class="gtkdoc opt">=</span>avpf \ 155 udpsrc port<span class="gtkdoc opt">=</span><span class="number">5000</span> caps<span class="gtkdoc opt">=</span><span class="string">"application/x-rtp,media=(string)audio,clock-rate=(int)48000,encoding-name=(string)OPUS,payload=(int)96"</span> <span class="gtkdoc opt">!</span> \ 156 rtpsession<span class="gtkdoc opt">.</span>recv_rtp_sink \ 157 rtpsession<span class="gtkdoc opt">.</span>recv_rtp_src <span class="gtkdoc opt">!</span> \ 158 rtprtxreceive payload<span class="gtkdoc opt">-</span>type<span class="gtkdoc opt">-</span>map<span class="gtkdoc opt">=</span><span class="string">"application/x-rtp-pt-map,96=(uint)97"</span> <span class="gtkdoc opt">!</span> \ 159 rtpssrcdemux <span class="gtkdoc opt">!</span> rtpjitterbuffer <span class="keyword">do</span><span class="gtkdoc opt">-</span>retransmission<span class="gtkdoc opt">=</span><span class="keyword">true</span> <span class="gtkdoc opt">!</span> \ 160 rtpopusdepay <span class="gtkdoc opt">!</span> opusdec <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> audioresample <span class="gtkdoc opt">!</span> autoaudiosink \ 161 rtpsession<span class="gtkdoc opt">.</span>send_rtcp_src <span class="gtkdoc opt">!</span> \ 162 udpsink host<span class="gtkdoc opt">=</span><span class="string">"127.0.0.1"</span> port<span class="gtkdoc opt">=</span><span class="number">5001</span> sync<span class="gtkdoc opt">=</span><span class="keyword">false</span> async<span class="gtkdoc opt">=</span><span class="keyword">false</span> \ 163 udpsrc port<span class="gtkdoc opt">=</span><span class="number">5002</span> <span class="gtkdoc opt">!</span> rtpsession<span class="gtkdoc opt">.</span>recv_rtcp_sink</pre></td> 164 </tr> 165 </tbody> 166 </table> 167</div> 168 169<p> Receive audio stream from port 5000 (5001 and 5002 are just the rtcp 170link with the sender)</p> 171<p>In this example we can see a simple streaming of an OPUS stream with some 172of the packets being artificially dropped by the identity element. 173Thanks to retransmission, you should still hear a clear sound when setting 174drop-probability to something greater than 0.</p> 175<p>Internally, the rtpjitterbuffer will generate a custom upstream event, 176GstRTPRetransmissionRequest, when it detects that one packet is missing. 177Then this request is translated to a FB NACK in the rtcp link by rtpsession. 178Finally the rtpsession of the sender side will re-convert it in a 179GstRTPRetransmissionRequest that will be handled by rtprtxsend. rtprtxsend 180will then re-send the missing packet with a new srrc and a different payload 181type (here, 97), but with the same original sequence number. On the receiver 182side, rtprtxreceive will associate this new stream with the original and 183forward the retransmission packets to rtpjitterbuffer with the original 184ssrc and payload type.</p> 185<div class="informalexample"> 186 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> 187 <tbody> 188 <tr> 189 <td class="listing_lines" align="right"><pre>1 1902 1913 1924 1935 1946 1957 1968 1979 19810 19911 20012 20113</pre></td> 202 <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> rtpsession name<span class="gtkdoc opt">=</span>rtpsession rtp<span class="gtkdoc opt">-</span>profile<span class="gtkdoc opt">=</span>avpf \ 203 audiotestsrc is<span class="gtkdoc opt">-</span>live<span class="gtkdoc opt">=</span><span class="keyword">true</span> <span class="gtkdoc opt">!</span> opusenc <span class="gtkdoc opt">!</span> rtpopuspay pt<span class="gtkdoc opt">=</span><span class="number">97</span> seqnum<span class="gtkdoc opt">-</span>offset<span class="gtkdoc opt">=</span><span class="number">1</span> <span class="gtkdoc opt">!</span> \ 204 rtprtxsend payload<span class="gtkdoc opt">-</span>type<span class="gtkdoc opt">-</span>map<span class="gtkdoc opt">=</span><span class="string">"application/x-rtp-pt-map,97=(uint)99"</span> <span class="gtkdoc opt">!</span> \ 205 funnel name<span class="gtkdoc opt">=</span>f <span class="gtkdoc opt">!</span> rtpsession<span class="gtkdoc opt">.</span>send_rtp_sink \ 206 audiotestsrc freq<span class="gtkdoc opt">=</span><span class="number">660.0</span> is<span class="gtkdoc opt">-</span>live<span class="gtkdoc opt">=</span><span class="keyword">true</span> <span class="gtkdoc opt">!</span> opusenc <span class="gtkdoc opt">!</span> \ 207 rtpopuspay pt<span class="gtkdoc opt">=</span><span class="number">97</span> seqnum<span class="gtkdoc opt">-</span>offset<span class="gtkdoc opt">=</span><span class="number">100</span> <span class="gtkdoc opt">!</span> \ 208 rtprtxsend payload<span class="gtkdoc opt">-</span>type<span class="gtkdoc opt">-</span>map<span class="gtkdoc opt">=</span><span class="string">"application/x-rtp-pt-map,97=(uint)99"</span> <span class="gtkdoc opt">!</span> \ 209 f<span class="gtkdoc opt">.</span> \ 210 rtpsession<span class="gtkdoc opt">.</span>send_rtp_src <span class="gtkdoc opt">!</span> identity drop<span class="gtkdoc opt">-</span>probability<span class="gtkdoc opt">=</span><span class="number">0.01</span> <span class="gtkdoc opt">!</span> \ 211 udpsink host<span class="gtkdoc opt">=</span><span class="string">"127.0.0.1"</span> port<span class="gtkdoc opt">=</span><span class="number">5000</span> \ 212 udpsrc port<span class="gtkdoc opt">=</span><span class="number">5001</span> <span class="gtkdoc opt">!</span> rtpsession<span class="gtkdoc opt">.</span>recv_rtcp_sink \ 213 rtpsession<span class="gtkdoc opt">.</span>send_rtcp_src <span class="gtkdoc opt">!</span> udpsink host<span class="gtkdoc opt">=</span><span class="string">"127.0.0.1"</span> port<span class="gtkdoc opt">=</span><span class="number">5002</span> \ 214 sync<span class="gtkdoc opt">=</span><span class="keyword">false</span> async<span class="gtkdoc opt">=</span><span class="keyword">false</span></pre></td> 215 </tr> 216 </tbody> 217 </table> 218</div> 219 220<p> Send two audio streams to port 5000.</p> 221<div class="informalexample"> 222 <table class="listing_frame" border="0" cellpadding="0" cellspacing="0"> 223 <tbody> 224 <tr> 225 <td class="listing_lines" align="right"><pre>1 2262 2273 2284 2295 2306 2317 2328 2339 23410 23511 23612 23713</pre></td> 238 <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> rtpsession name<span class="gtkdoc opt">=</span>rtpsession rtp<span class="gtkdoc opt">-</span>profile<span class="gtkdoc opt">=</span>avpf \ 239 udpsrc port<span class="gtkdoc opt">=</span><span class="number">5000</span> caps<span class="gtkdoc opt">=</span><span class="string">"application/x-rtp,media=(string)audio,clock-rate=(int)48000,encoding-name=(string)OPUS,payload=(int)97"</span> <span class="gtkdoc opt">!</span> \ 240 rtpsession<span class="gtkdoc opt">.</span>recv_rtp_sink \ 241 rtpsession<span class="gtkdoc opt">.</span>recv_rtp_src <span class="gtkdoc opt">!</span> \ 242 rtprtxreceive payload<span class="gtkdoc opt">-</span>type<span class="gtkdoc opt">-</span>map<span class="gtkdoc opt">=</span><span class="string">"application/x-rtp-pt-map,97=(uint)99"</span> <span class="gtkdoc opt">!</span> \ 243 rtpssrcdemux name<span class="gtkdoc opt">=</span>demux \ 244 demux<span class="gtkdoc opt">. !</span> queue <span class="gtkdoc opt">!</span> rtpjitterbuffer <span class="keyword">do</span><span class="gtkdoc opt">-</span>retransmission<span class="gtkdoc opt">=</span><span class="keyword">true</span> <span class="gtkdoc opt">!</span> rtpopusdepay <span class="gtkdoc opt">!</span> \ 245 opusdec <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> autoaudiosink \ 246 demux<span class="gtkdoc opt">. !</span> queue <span class="gtkdoc opt">!</span> rtpjitterbuffer <span class="keyword">do</span><span class="gtkdoc opt">-</span>retransmission<span class="gtkdoc opt">=</span><span class="keyword">true</span> <span class="gtkdoc opt">!</span> rtpopusdepay <span class="gtkdoc opt">!</span> \ 247 opusdec <span class="gtkdoc opt">!</span> audioconvert <span class="gtkdoc opt">!</span> autoaudiosink \ 248 udpsrc port<span class="gtkdoc opt">=</span><span class="number">5002</span> <span class="gtkdoc opt">!</span> rtpsession<span class="gtkdoc opt">.</span>recv_rtcp_sink \ 249 rtpsession<span class="gtkdoc opt">.</span>send_rtcp_src <span class="gtkdoc opt">!</span> udpsink host<span class="gtkdoc opt">=</span><span class="string">"127.0.0.1"</span> port<span class="gtkdoc opt">=</span><span class="number">5001</span> \ 250 sync<span class="gtkdoc opt">=</span><span class="keyword">false</span> async<span class="gtkdoc opt">=</span><span class="keyword">false</span></pre></td> 251 </tr> 252 </tbody> 253 </table> 254</div> 255 256<p> Receive two audio streams from port 5000.</p> 257<p>In this example we are streaming two streams of the same type through the 258same port. They, however, are using a different SSRC (ssrc is randomly 259generated on each payloader - rtpopuspay in this example), so they can be 260identified and demultiplexed by rtpssrcdemux on the receiver side. This is 261an example of SSRC-multiplexing.</p> 262<p>It is important here to use a different starting sequence number 263(seqnum-offset), since this is the only means of identification that 264rtprtxreceive uses the very first time to identify retransmission streams. 265It is an error, according to RFC4588 to have two retransmission requests for 266packets belonging to two different streams but with the same sequence number. 267Note that the default seqnum-offset value (-1, which means random) would 268work just fine, but it is overriden here for illustration purposes.</p> 269</div> 270<div class="refsynopsisdiv"> 271<h2>Synopsis</h2> 272<div class="refsect2"> 273<a name="id-1.2.211.7.7.1"></a><h3>Element Information</h3> 274<div class="variablelist"><table border="0" class="variablelist"> 275<colgroup> 276<col align="left" valign="top"> 277<col> 278</colgroup> 279<tbody> 280<tr> 281<td><p><span class="term">plugin</span></p></td> 282<td> 283 <a class="link" href="gst-plugins-good-plugins-plugin-rtpmanager.html#plugin-rtpmanager">rtpmanager</a> 284 </td> 285</tr> 286<tr> 287<td><p><span class="term">author</span></p></td> 288<td>Julien Isorce <julien.isorce@collabora.co.uk></td> 289</tr> 290<tr> 291<td><p><span class="term">class</span></p></td> 292<td>Codec</td> 293</tr> 294</tbody> 295</table></div> 296</div> 297<hr> 298<div class="refsect2"> 299<a name="id-1.2.211.7.7.2"></a><h3>Element Pads</h3> 300<div class="variablelist"><table border="0" class="variablelist"> 301<colgroup> 302<col align="left" valign="top"> 303<col> 304</colgroup> 305<tbody> 306<tr> 307<td><p><span class="term">name</span></p></td> 308<td>sink</td> 309</tr> 310<tr> 311<td><p><span class="term">direction</span></p></td> 312<td>sink</td> 313</tr> 314<tr> 315<td><p><span class="term">presence</span></p></td> 316<td>always</td> 317</tr> 318<tr> 319<td><p><span class="term">details</span></p></td> 320<td>application/x-rtp</td> 321</tr> 322</tbody> 323</table></div> 324<div class="variablelist"><table border="0" class="variablelist"> 325<colgroup> 326<col align="left" valign="top"> 327<col> 328</colgroup> 329<tbody> 330<tr> 331<td><p><span class="term">name</span></p></td> 332<td>src</td> 333</tr> 334<tr> 335<td><p><span class="term">direction</span></p></td> 336<td>source</td> 337</tr> 338<tr> 339<td><p><span class="term">presence</span></p></td> 340<td>always</td> 341</tr> 342<tr> 343<td><p><span class="term">details</span></p></td> 344<td>application/x-rtp</td> 345</tr> 346</tbody> 347</table></div> 348</div> 349</div> 350</div> 351<div class="refsect1"> 352<a name="gst-plugins-good-plugins-rtprtxreceive.functions_details"></a><h2>Functions</h2> 353<p></p> 354</div> 355<div class="refsect1"> 356<a name="gst-plugins-good-plugins-rtprtxreceive.other_details"></a><h2>Types and Values</h2> 357<div class="refsect2"> 358<a name="GstRtpRtxReceive-struct"></a><h3>struct GstRtpRtxReceive</h3> 359<pre class="programlisting">struct GstRtpRtxReceive;</pre> 360</div> 361</div> 362<div class="refsect1"> 363<a name="gst-plugins-good-plugins-rtprtxreceive.property-details"></a><h2>Property Details</h2> 364<div class="refsect2"> 365<a name="GstRtpRtxReceive--num-rtx-requests"></a><h3>The <code class="literal">“num-rtx-requests”</code> property</h3> 366<pre class="programlisting"> “num-rtx-requests” <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre> 367<p>Number of retransmission events received.</p> 368<p>Flags: Read</p> 369<p>Default value: 0</p> 370</div> 371<hr> 372<div class="refsect2"> 373<a name="GstRtpRtxReceive--num-rtx-packets"></a><h3>The <code class="literal">“num-rtx-packets”</code> property</h3> 374<pre class="programlisting"> “num-rtx-packets” <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre> 375<p> Number of retransmission packets received.</p> 376<p>Flags: Read</p> 377<p>Default value: 0</p> 378</div> 379<hr> 380<div class="refsect2"> 381<a name="GstRtpRtxReceive--num-rtx-assoc-packets"></a><h3>The <code class="literal">“num-rtx-assoc-packets”</code> property</h3> 382<pre class="programlisting"> “num-rtx-assoc-packets” <a href="/usr/share/gtk-doc/html/glib/glib-Basic-Types.html#guint"><span class="type">guint</span></a></pre> 383<p>Number of retransmission packets correctly associated with retransmission requests.</p> 384<p>Flags: Read</p> 385<p>Default value: 0</p> 386</div> 387<hr> 388<div class="refsect2"> 389<a name="GstRtpRtxReceive--payload-type-map"></a><h3>The <code class="literal">“payload-type-map”</code> property</h3> 390<pre class="programlisting"> “payload-type-map” <a href="/usr/share/gtk-doc/html/gstreamer-1.0/GstStructure.html#GstStructure-struct"><span class="type">GstStructure</span></a> *</pre> 391<p>Map of original payload types to their retransmission payload types.</p> 392<p>Flags: Read / Write</p> 393</div> 394</div> 395<div class="refsect1"> 396<a name="gst-plugins-good-plugins-rtprtxreceive.see-also"></a><h2>See Also</h2> 397<p>rtprtxsend, rtpsession, rtpjitterbuffer</p> 398</div> 399</div> 400<div class="footer"> 401<hr>Generated by GTK-Doc V1.28</div> 402</body> 403</html>