Release 3.0.0

This commit is contained in:
Heikki Tampio 2024-01-30 14:53:35 +02:00
parent 65db7ce9f4
commit 2b82400753
77 changed files with 1710 additions and 1446 deletions

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -78,19 +78,24 @@ $(function() {
<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>uvgrtp</b></td><td class="desc"></td></tr>
<tr id="row_0_0_" class="odd"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span id="arr_0_0_" class="arrow" onclick="toggleFolder('0_0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><b>frame</b></td><td class="desc"></td></tr>
<tr id="row_0_0_0_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html" target="_self">rtcp_app_packet</a></td><td class="desc">See <a href="https://www.rfc-editor.org/rfc/rfc3550#section-6.7" target="_blank">RFC 3550 section 6.7</a> </td></tr>
<tr id="row_0_0_1_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html" target="_self">rtcp_header</a></td><td class="desc">Header of for all RTCP packets defined in <a href="https://www.rfc-editor.org/rfc/rfc3550#section-6" target="_blank">RFC 3550 section 6</a> </td></tr>
<tr id="row_0_0_2_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__receiver__report.html" target="_self">rtcp_receiver_report</a></td><td class="desc">See <a href="https://www.rfc-editor.org/rfc/rfc3550#section-6.4.2" target="_blank">RFC 3550 section 6.4.2</a> </td></tr>
<tr id="row_0_0_3_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__report__block.html" target="_self">rtcp_report_block</a></td><td class="desc">See <a href="https://www.rfc-editor.org/rfc/rfc3550#section-6.4.1" target="_blank">RFC 3550 section 6.4.1</a> </td></tr>
<tr id="row_0_0_4_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__sdes__chunk.html" target="_self">rtcp_sdes_chunk</a></td><td class="desc">See <a href="https://www.rfc-editor.org/rfc/rfc3550#section-6.5" target="_blank">RFC 3550 section 6.5</a> </td></tr>
<tr id="row_0_0_5_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__sdes__item.html" target="_self">rtcp_sdes_item</a></td><td class="desc">See <a href="https://www.rfc-editor.org/rfc/rfc3550#section-6.5" target="_blank">RFC 3550 section 6.5</a> </td></tr>
<tr id="row_0_0_6_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html" target="_self">rtcp_sdes_packet</a></td><td class="desc">See <a href="https://www.rfc-editor.org/rfc/rfc3550#section-6.5" target="_blank">RFC 3550 section 6.5</a> </td></tr>
<tr id="row_0_0_7_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html" target="_self">rtcp_sender_info</a></td><td class="desc">See <a href="https://www.rfc-editor.org/rfc/rfc3550#section-6.4.1" target="_blank">RFC 3550 section 6.4.1</a> </td></tr>
<tr id="row_0_0_8_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__sender__report.html" target="_self">rtcp_sender_report</a></td><td class="desc">See <a href="https://www.rfc-editor.org/rfc/rfc3550#section-6.4.1" target="_blank">RFC 3550 section 6.4.1</a> </td></tr>
<tr id="row_0_0_9_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structuvgrtp_1_1frame_1_1rtp__frame.html" target="_self">rtp_frame</a></td><td class="desc">See <a href="https://www.rfc-editor.org/rfc/rfc3550#section-5" target="_blank">RFC 3550 section 5</a> </td></tr>
<tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classuvgrtp_1_1context.html" target="_self">context</a></td><td class="desc">Provides CNAME isolation and can be used to create <a class="el" href="classuvgrtp_1_1session.html" title="Provides ZRTP synchronization and can be used to create uvgrtp::media_stream objects.">uvgrtp::session</a> objects </td></tr>
<tr id="row_0_2_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classuvgrtp_1_1media__stream.html" target="_self">media_stream</a></td><td class="desc">The <a class="el" href="classuvgrtp_1_1media__stream.html" title="The media_stream is an entity which represents one RTP stream.">media_stream</a> is an entity which represents one RTP stream </td></tr>
<tr id="row_0_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classuvgrtp_1_1rtcp.html" target="_self">rtcp</a></td><td class="desc">RTCP instance handles all incoming and outgoing RTCP traffic, including report generation </td></tr>
<tr id="row_0_4_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classuvgrtp_1_1session.html" target="_self">session</a></td><td class="desc">Provides ZRTP synchronization and can be used to create <a class="el" href="classuvgrtp_1_1media__stream.html" title="The media_stream is an entity which represents one RTP stream.">uvgrtp::media_stream</a> objects </td></tr>
<tr id="row_0_0_1_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__fb__fci.html" target="_self">rtcp_fb_fci</a></td><td class="desc">RTCP Feedback Control Information, See RFC 4585 section 6.1 </td></tr>
<tr id="row_0_0_2_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__fb__packet.html" target="_self">rtcp_fb_packet</a></td><td class="desc">Feedback message. See RFC 4585 section 6.1 </td></tr>
<tr id="row_0_0_3_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__fir.html" target="_self">rtcp_fir</a></td><td class="desc">Full Intra Request, See RFC 5104 section 4.3.1 </td></tr>
<tr id="row_0_0_4_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html" target="_self">rtcp_header</a></td><td class="desc">Header of for all RTCP packets defined in <a href="https://www.rfc-editor.org/rfc/rfc3550#section-6" target="_blank">RFC 3550 section 6</a> </td></tr>
<tr id="row_0_0_5_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__receiver__report.html" target="_self">rtcp_receiver_report</a></td><td class="desc">See <a href="https://www.rfc-editor.org/rfc/rfc3550#section-6.4.2" target="_blank">RFC 3550 section 6.4.2</a> </td></tr>
<tr id="row_0_0_6_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__report__block.html" target="_self">rtcp_report_block</a></td><td class="desc">See <a href="https://www.rfc-editor.org/rfc/rfc3550#section-6.4.1" target="_blank">RFC 3550 section 6.4.1</a> </td></tr>
<tr id="row_0_0_7_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__rpsi.html" target="_self">rtcp_rpsi</a></td><td class="desc">Reference Picture Selection Indication, See RFC 4585 section 6.3.3 </td></tr>
<tr id="row_0_0_8_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__sdes__chunk.html" target="_self">rtcp_sdes_chunk</a></td><td class="desc">See <a href="https://www.rfc-editor.org/rfc/rfc3550#section-6.5" target="_blank">RFC 3550 section 6.5</a> </td></tr>
<tr id="row_0_0_9_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__sdes__item.html" target="_self">rtcp_sdes_item</a></td><td class="desc">See <a href="https://www.rfc-editor.org/rfc/rfc3550#section-6.5" target="_blank">RFC 3550 section 6.5</a> </td></tr>
<tr id="row_0_0_10_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html" target="_self">rtcp_sdes_packet</a></td><td class="desc">See <a href="https://www.rfc-editor.org/rfc/rfc3550#section-6.5" target="_blank">RFC 3550 section 6.5</a> </td></tr>
<tr id="row_0_0_11_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html" target="_self">rtcp_sender_info</a></td><td class="desc">See <a href="https://www.rfc-editor.org/rfc/rfc3550#section-6.4.1" target="_blank">RFC 3550 section 6.4.1</a> </td></tr>
<tr id="row_0_0_12_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__sender__report.html" target="_self">rtcp_sender_report</a></td><td class="desc">See <a href="https://www.rfc-editor.org/rfc/rfc3550#section-6.4.1" target="_blank">RFC 3550 section 6.4.1</a> </td></tr>
<tr id="row_0_0_13_" class="odd"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__sli.html" target="_self">rtcp_sli</a></td><td class="desc">Slice Loss Indication, See RFC 4585 section 6.3.2 </td></tr>
<tr id="row_0_0_14_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="structuvgrtp_1_1frame_1_1rtp__frame.html" target="_self">rtp_frame</a></td><td class="desc">See <a href="https://www.rfc-editor.org/rfc/rfc3550#section-5" target="_blank">RFC 3550 section 5</a> </td></tr>
<tr id="row_0_1_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classuvgrtp_1_1context.html" target="_self">context</a></td><td class="desc">Provides CNAME isolation and can be used to create <a class="el" href="classuvgrtp_1_1session.html" title="Provides ZRTP synchronization and can be used to create uvgrtp::media_stream objects.">uvgrtp::session</a> objects </td></tr>
<tr id="row_0_2_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classuvgrtp_1_1media__stream.html" target="_self">media_stream</a></td><td class="desc">The <a class="el" href="classuvgrtp_1_1media__stream.html" title="The media_stream is an entity which represents one RTP stream.">media_stream</a> is an entity which represents one RTP stream </td></tr>
<tr id="row_0_3_" class="odd"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classuvgrtp_1_1rtcp.html" target="_self">rtcp</a></td><td class="desc">RTCP instance handles all incoming and outgoing RTCP traffic, including report generation </td></tr>
<tr id="row_0_4_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classuvgrtp_1_1session.html" target="_self">session</a></td><td class="desc">Provides ZRTP synchronization and can be used to create <a class="el" href="classuvgrtp_1_1media__stream.html" title="The media_stream is an entity which represents one RTP stream.">uvgrtp::media_stream</a> objects </td></tr>
</table>
</div><!-- directory -->
</div><!-- contents -->

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -83,7 +83,7 @@ $(function() {
<dd><a class="el" href="classuvgrtp_1_1media__stream.html">media_stream</a> (uvgrtp)</dd></dl>
<dl class="classindex even">
<dt class="alphachar"><a id="letter_R" name="letter_R">R</a></dt>
<dd><a class="el" href="classuvgrtp_1_1rtcp.html">rtcp</a> (uvgrtp)</dd><dd><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html">rtcp_app_packet</a> (uvgrtp::frame)</dd><dd><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html">rtcp_header</a> (uvgrtp::frame)</dd><dd><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__receiver__report.html">rtcp_receiver_report</a> (uvgrtp::frame)</dd><dd><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__report__block.html">rtcp_report_block</a> (uvgrtp::frame)</dd><dd><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__sdes__chunk.html">rtcp_sdes_chunk</a> (uvgrtp::frame)</dd><dd><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__sdes__item.html">rtcp_sdes_item</a> (uvgrtp::frame)</dd><dd><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html">rtcp_sdes_packet</a> (uvgrtp::frame)</dd><dd><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html">rtcp_sender_info</a> (uvgrtp::frame)</dd><dd><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__sender__report.html">rtcp_sender_report</a> (uvgrtp::frame)</dd><dd><a class="el" href="structuvgrtp_1_1frame_1_1rtp__frame.html">rtp_frame</a> (uvgrtp::frame)</dd></dl>
<dd><a class="el" href="classuvgrtp_1_1rtcp.html">rtcp</a> (uvgrtp)</dd><dd><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html">rtcp_app_packet</a> (uvgrtp::frame)</dd><dd><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__fb__fci.html">rtcp_fb_fci</a> (uvgrtp::frame)</dd><dd><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__fb__packet.html">rtcp_fb_packet</a> (uvgrtp::frame)</dd><dd><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__fir.html">rtcp_fir</a> (uvgrtp::frame)</dd><dd><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html">rtcp_header</a> (uvgrtp::frame)</dd><dd><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__receiver__report.html">rtcp_receiver_report</a> (uvgrtp::frame)</dd><dd><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__report__block.html">rtcp_report_block</a> (uvgrtp::frame)</dd><dd><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__rpsi.html">rtcp_rpsi</a> (uvgrtp::frame)</dd><dd><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__sdes__chunk.html">rtcp_sdes_chunk</a> (uvgrtp::frame)</dd><dd><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__sdes__item.html">rtcp_sdes_item</a> (uvgrtp::frame)</dd><dd><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html">rtcp_sdes_packet</a> (uvgrtp::frame)</dd><dd><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html">rtcp_sender_info</a> (uvgrtp::frame)</dd><dd><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__sender__report.html">rtcp_sender_report</a> (uvgrtp::frame)</dd><dd><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__sli.html">rtcp_sli</a> (uvgrtp::frame)</dd><dd><a class="el" href="structuvgrtp_1_1frame_1_1rtp__frame.html">rtp_frame</a> (uvgrtp::frame)</dd></dl>
<dl class="classindex odd">
<dt class="alphachar"><a id="letter_S" name="letter_S">S</a></dt>
<dd><a class="el" href="classuvgrtp_1_1session.html">session</a> (uvgrtp)</dd></dl>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -81,8 +81,8 @@ $(function() {
<p>This is the complete list of members for <a class="el" href="classuvgrtp_1_1context.html">uvgrtp::context</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classuvgrtp_1_1context.html#a98be18c2848404549cfadf910ba1573a">context</a>()</td><td class="entry"><a class="el" href="classuvgrtp_1_1context.html">uvgrtp::context</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classuvgrtp_1_1context.html#a81b2dc23ebf64d1153410376503eccb4">create_session</a>(std::string address)</td><td class="entry"><a class="el" href="classuvgrtp_1_1context.html">uvgrtp::context</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classuvgrtp_1_1context.html#a7699c9df53e8e7380d755f374d6fc2ce">create_session</a>(std::string remote_addr, std::string local_addr)</td><td class="entry"><a class="el" href="classuvgrtp_1_1context.html">uvgrtp::context</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classuvgrtp_1_1context.html#ae4417159d9b136b2d696fb7571fc3266">create_session</a>(std::pair&lt; std::string, std::string &gt; addresses)</td><td class="entry"><a class="el" href="classuvgrtp_1_1context.html">uvgrtp::context</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classuvgrtp_1_1context.html#a81b2dc23ebf64d1153410376503eccb4">create_session</a>(std::string address)</td><td class="entry"><a class="el" href="classuvgrtp_1_1context.html">uvgrtp::context</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classuvgrtp_1_1context.html#a0ddad3f0a78b6a4b13f2b8fdd15c9087">crypto_enabled</a>() const</td><td class="entry"><a class="el" href="classuvgrtp_1_1context.html">uvgrtp::context</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classuvgrtp_1_1context.html#a61daf2f3cdcdf2542ee997ab6de5efa9">destroy_session</a>(uvgrtp::session *session)</td><td class="entry"><a class="el" href="classuvgrtp_1_1context.html">uvgrtp::context</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classuvgrtp_1_1context.html#a652a201ae11685961267455ab823eb60">~context</a>()</td><td class="entry"><a class="el" href="classuvgrtp_1_1context.html">uvgrtp::context</a></td><td class="entry"></td></tr>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -94,12 +94,12 @@ Public Member Functions</h2></td></tr>
<tr class="memitem:a652a201ae11685961267455ab823eb60"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuvgrtp_1_1context.html#a652a201ae11685961267455ab823eb60">~context</a> ()</td></tr>
<tr class="memdesc:a652a201ae11685961267455ab823eb60"><td class="mdescLeft">&#160;</td><td class="mdescRight">RTP context destructor. <br /></td></tr>
<tr class="separator:a652a201ae11685961267455ab823eb60"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae4417159d9b136b2d696fb7571fc3266"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classuvgrtp_1_1session.html">uvgrtp::session</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuvgrtp_1_1context.html#ae4417159d9b136b2d696fb7571fc3266">create_session</a> (std::pair&lt; std::string, std::string &gt; addresses)</td></tr>
<tr class="memdesc:ae4417159d9b136b2d696fb7571fc3266"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new RTP session between two IP addresses. <br /></td></tr>
<tr class="separator:ae4417159d9b136b2d696fb7571fc3266"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a81b2dc23ebf64d1153410376503eccb4"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classuvgrtp_1_1session.html">uvgrtp::session</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuvgrtp_1_1context.html#a81b2dc23ebf64d1153410376503eccb4">create_session</a> (std::string address)</td></tr>
<tr class="memdesc:a81b2dc23ebf64d1153410376503eccb4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new RTP session. <br /></td></tr>
<tr class="separator:a81b2dc23ebf64d1153410376503eccb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7699c9df53e8e7380d755f374d6fc2ce"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classuvgrtp_1_1session.html">uvgrtp::session</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuvgrtp_1_1context.html#a7699c9df53e8e7380d755f374d6fc2ce">create_session</a> (std::string remote_addr, std::string local_addr)</td></tr>
<tr class="memdesc:a7699c9df53e8e7380d755f374d6fc2ce"><td class="mdescLeft">&#160;</td><td class="mdescRight">Create a new RTP session. <br /></td></tr>
<tr class="separator:a7699c9df53e8e7380d755f374d6fc2ce"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a61daf2f3cdcdf2542ee997ab6de5efa9"><td class="memItemLeft" align="right" valign="top">rtp_error_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuvgrtp_1_1context.html#a61daf2f3cdcdf2542ee997ab6de5efa9">destroy_session</a> (<a class="el" href="classuvgrtp_1_1session.html">uvgrtp::session</a> *<a class="el" href="classuvgrtp_1_1session.html">session</a>)</td></tr>
<tr class="memdesc:a61daf2f3cdcdf2542ee997ab6de5efa9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destroy RTP session and all of its media streams. <br /></td></tr>
<tr class="separator:a61daf2f3cdcdf2542ee997ab6de5efa9"><td class="memSeparator" colspan="2">&#160;</td></tr>
@ -110,7 +110,7 @@ Public Member Functions</h2></td></tr>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Provides CNAME isolation and can be used to create <a class="el" href="classuvgrtp_1_1session.html" title="Provides ZRTP synchronization and can be used to create uvgrtp::media_stream objects.">uvgrtp::session</a> objects. </p>
<p class="definition">Definition at line <a class="el" href="context_8hh_source.html#l00016">16</a> of file <a class="el" href="context_8hh_source.html">context.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="context_8hh_source.html#l00018">18</a> of file <a class="el" href="context_8hh_source.html">context.hh</a>.</p>
</div><h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a98be18c2848404549cfadf910ba1573a" name="a98be18c2848404549cfadf910ba1573a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a98be18c2848404549cfadf910ba1573a">&#9670;&#160;</a></span>context()</h2>
@ -153,8 +153,42 @@ Public Member Functions</h2></td></tr>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="ae4417159d9b136b2d696fb7571fc3266" name="ae4417159d9b136b2d696fb7571fc3266"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae4417159d9b136b2d696fb7571fc3266">&#9670;&#160;</a></span>create_session() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classuvgrtp_1_1session.html">uvgrtp::session</a> * uvgrtp::context::create_session </td>
<td>(</td>
<td class="paramtype">std::pair&lt; std::string, std::string &gt;&#160;</td>
<td class="paramname"><em>addresses</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a new RTP session between two IP addresses. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">addresses</td><td>Local and remote IP address for session as a pair</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>RTP session object</dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="classuvgrtp_1_1session.html" title="Provides ZRTP synchronization and can be used to create uvgrtp::media_stream objects.">uvgrtp::session</a></td><td>On success </td></tr>
<tr><td class="paramname">nullptr</td><td>If memory allocation failed </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a81b2dc23ebf64d1153410376503eccb4" name="a81b2dc23ebf64d1153410376503eccb4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a81b2dc23ebf64d1153410376503eccb4">&#9670;&#160;</a></span>create_session() <span class="overload">[1/2]</span></h2>
<h2 class="memtitle"><span class="permalink"><a href="#a81b2dc23ebf64d1153410376503eccb4">&#9670;&#160;</a></span>create_session() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
@ -185,52 +219,6 @@ Public Member Functions</h2></td></tr>
</dd>
</dl>
</div>
</div>
<a id="a7699c9df53e8e7380d755f374d6fc2ce" name="a7699c9df53e8e7380d755f374d6fc2ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7699c9df53e8e7380d755f374d6fc2ce">&#9670;&#160;</a></span>create_session() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classuvgrtp_1_1session.html">uvgrtp::session</a> * uvgrtp::context::create_session </td>
<td>(</td>
<td class="paramtype">std::string&#160;</td>
<td class="paramname"><em>remote_addr</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">std::string&#160;</td>
<td class="paramname"><em>local_addr</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Create a new RTP session. </p>
<p>If UDP holepunching should be utilized, in addition to remote IP address, the caller must also provide local IP address where uvgRTP should bind itself to. If you are using uvgRTP for unidirectional streaming, please take a look at <a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa8e66f45819774772a0156647d3788a95">RCE_HOLEPUNCH_KEEPALIVE</a></p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">remote_addr</td><td>IP address of the remote participant </td></tr>
<tr><td class="paramname">local_addr</td><td>IP address of a local interface</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>RTP session object</dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname"><a class="el" href="classuvgrtp_1_1session.html" title="Provides ZRTP synchronization and can be used to create uvgrtp::media_stream objects.">uvgrtp::session</a></td><td>On success </td></tr>
<tr><td class="paramname">nullptr</td><td>If memory allocation failed </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a0ddad3f0a78b6a4b13f2b8fdd15c9087" name="a0ddad3f0a78b6a4b13f2b8fdd15c9087"></a>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -82,7 +82,7 @@ $(function() {
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="classuvgrtp_1_1media__stream.html#a0950a91bd645cbf842d8218ae4171aed">add_srtp_ctx</a>(uint8_t *key, uint8_t *salt)</td><td class="entry"><a class="el" href="classuvgrtp_1_1media__stream.html">uvgrtp::media_stream</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classuvgrtp_1_1media__stream.html#a2cee4fe3bf423ec317b4a3eacc136238">configure_ctx</a>(int rcc_flag, ssize_t value)</td><td class="entry"><a class="el" href="classuvgrtp_1_1media__stream.html">uvgrtp::media_stream</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>get_ipv6</b>() const (defined in <a class="el" href="classuvgrtp_1_1media__stream.html">uvgrtp::media_stream</a>)</td><td class="entry"><a class="el" href="classuvgrtp_1_1media__stream.html">uvgrtp::media_stream</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classuvgrtp_1_1media__stream.html#acee8dd45e8c6ebbb1af52bb54dd7c40d">get_configuration_value</a>(int rcc_flag)</td><td class="entry"><a class="el" href="classuvgrtp_1_1media__stream.html">uvgrtp::media_stream</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classuvgrtp_1_1media__stream.html#ab339f15d5a852beacd901b7b78e887ea">get_rtcp</a>()</td><td class="entry"><a class="el" href="classuvgrtp_1_1media__stream.html">uvgrtp::media_stream</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classuvgrtp_1_1media__stream.html#a8796cb34e0e6c61af8cabd13dd6793b5">get_ssrc</a>() const</td><td class="entry"><a class="el" href="classuvgrtp_1_1media__stream.html">uvgrtp::media_stream</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classuvgrtp_1_1media__stream.html#a74a558b23866976e52c5903996544a27">install_receive_hook</a>(void *arg, void(*hook)(void *, uvgrtp::frame::rtp_frame *))</td><td class="entry"><a class="el" href="classuvgrtp_1_1media__stream.html">uvgrtp::media_stream</a></td><td class="entry"></td></tr>
@ -94,6 +94,7 @@ $(function() {
<tr class="odd"><td class="entry"><a class="el" href="classuvgrtp_1_1media__stream.html#a5577c57f1bdd5b888aa4e8c4f939eba7">push_frame</a>(uint8_t *data, size_t data_len, uint32_t ts, uint64_t ntp_ts, int rtp_flags)</td><td class="entry"><a class="el" href="classuvgrtp_1_1media__stream.html">uvgrtp::media_stream</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classuvgrtp_1_1media__stream.html#abe9099254c6bf16f255f5f50441ec9d2">push_frame</a>(std::unique_ptr&lt; uint8_t[]&gt; data, size_t data_len, uint32_t ts, int rtp_flags)</td><td class="entry"><a class="el" href="classuvgrtp_1_1media__stream.html">uvgrtp::media_stream</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classuvgrtp_1_1media__stream.html#a56d2a209b2647d0f3ee7948e8cf45438">push_frame</a>(std::unique_ptr&lt; uint8_t[]&gt; data, size_t data_len, uint32_t ts, uint64_t ntp_ts, int rtp_flags)</td><td class="entry"><a class="el" href="classuvgrtp_1_1media__stream.html">uvgrtp::media_stream</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classuvgrtp_1_1media__stream.html#a9e22ebbe9f903abe0fcae267f98cafeb">start_zrtp</a>()</td><td class="entry"><a class="el" href="classuvgrtp_1_1media__stream.html">uvgrtp::media_stream</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -88,6 +88,9 @@ $(function() {
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="pub-methods" name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a9e22ebbe9f903abe0fcae267f98cafeb"><td class="memItemLeft" align="right" valign="top">rtp_error_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuvgrtp_1_1media__stream.html#a9e22ebbe9f903abe0fcae267f98cafeb">start_zrtp</a> ()</td></tr>
<tr class="memdesc:a9e22ebbe9f903abe0fcae267f98cafeb"><td class="mdescLeft">&#160;</td><td class="mdescRight">Start the ZRTP negotiation manually. <br /></td></tr>
<tr class="separator:a9e22ebbe9f903abe0fcae267f98cafeb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0950a91bd645cbf842d8218ae4171aed"><td class="memItemLeft" align="right" valign="top">rtp_error_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuvgrtp_1_1media__stream.html#a0950a91bd645cbf842d8218ae4171aed">add_srtp_ctx</a> (uint8_t *key, uint8_t *salt)</td></tr>
<tr class="memdesc:a0950a91bd645cbf842d8218ae4171aed"><td class="mdescLeft">&#160;</td><td class="mdescRight">Add keying information for user-managed SRTP session. <br /></td></tr>
<tr class="separator:a0950a91bd645cbf842d8218ae4171aed"><td class="memSeparator" colspan="2">&#160;</td></tr>
@ -121,15 +124,15 @@ Public Member Functions</h2></td></tr>
<tr class="memitem:a2cee4fe3bf423ec317b4a3eacc136238"><td class="memItemLeft" align="right" valign="top">rtp_error_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuvgrtp_1_1media__stream.html#a2cee4fe3bf423ec317b4a3eacc136238">configure_ctx</a> (int rcc_flag, ssize_t value)</td></tr>
<tr class="memdesc:a2cee4fe3bf423ec317b4a3eacc136238"><td class="mdescLeft">&#160;</td><td class="mdescRight">Configure the media stream, see <a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587f" title="RTP context configuration flags.">RTP_CTX_CONFIGURATION_FLAGS</a> for more details. <br /></td></tr>
<tr class="separator:a2cee4fe3bf423ec317b4a3eacc136238"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acee8dd45e8c6ebbb1af52bb54dd7c40d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuvgrtp_1_1media__stream.html#acee8dd45e8c6ebbb1af52bb54dd7c40d">get_configuration_value</a> (int rcc_flag)</td></tr>
<tr class="memdesc:acee8dd45e8c6ebbb1af52bb54dd7c40d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get the values associated with configuration flags, see <a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587f" title="RTP context configuration flags.">RTP_CTX_CONFIGURATION_FLAGS</a> for more details. <br /></td></tr>
<tr class="separator:acee8dd45e8c6ebbb1af52bb54dd7c40d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab339f15d5a852beacd901b7b78e887ea"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classuvgrtp_1_1rtcp.html">uvgrtp::rtcp</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuvgrtp_1_1media__stream.html#ab339f15d5a852beacd901b7b78e887ea">get_rtcp</a> ()</td></tr>
<tr class="memdesc:ab339f15d5a852beacd901b7b78e887ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get pointer to the RTCP object of the media stream. <br /></td></tr>
<tr class="separator:ab339f15d5a852beacd901b7b78e887ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8796cb34e0e6c61af8cabd13dd6793b5"><td class="memItemLeft" align="right" valign="top">uint32_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuvgrtp_1_1media__stream.html#a8796cb34e0e6c61af8cabd13dd6793b5">get_ssrc</a> () const</td></tr>
<tr class="memdesc:a8796cb34e0e6c61af8cabd13dd6793b5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Get SSRC identifier. You can use the SSRC value for example to find the report block belonging to this <a class="el" href="classuvgrtp_1_1media__stream.html" title="The media_stream is an entity which represents one RTP stream.">media_stream</a> in RTCP sender/receiver report. <br /></td></tr>
<tr class="separator:a8796cb34e0e6c61af8cabd13dd6793b5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a13b543a64861d06fc74c87aa51d1dbe9"><td class="memItemLeft" align="right" valign="top"><a id="a13b543a64861d06fc74c87aa51d1dbe9" name="a13b543a64861d06fc74c87aa51d1dbe9"></a>
bool&#160;</td><td class="memItemRight" valign="bottom"><b>get_ipv6</b> () const</td></tr>
<tr class="separator:a13b543a64861d06fc74c87aa51d1dbe9"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>The <a class="el" href="classuvgrtp_1_1media__stream.html" title="The media_stream is an entity which represents one RTP stream.">media_stream</a> is an entity which represents one RTP stream. </p>
@ -137,7 +140,7 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><b>get_ipv6</b> () const
<p>If RCE_RTCP was given when creating <a class="el" href="classuvgrtp_1_1media__stream.html" title="The media_stream is an entity which represents one RTP stream.">media_stream</a>, you can get the <a class="el" href="classuvgrtp_1_1rtcp.html" title="RTCP instance handles all incoming and outgoing RTCP traffic, including report generation.">uvgrtp::rtcp</a> object with <a class="el" href="classuvgrtp_1_1media__stream.html#ab339f15d5a852beacd901b7b78e887ea" title="Get pointer to the RTCP object of the media stream.">get_rtcp()</a>-function.</p>
<p><a class="el" href="classuvgrtp_1_1media__stream.html" title="The media_stream is an entity which represents one RTP stream.">media_stream</a> corresponds to one RTP session in <a href="https://www.rfc-editor.org/rfc/rfc3550">RFC 3550</a>. </p>
<p class="definition">Definition at line <a class="el" href="media__stream_8hh_source.html#l00050">50</a> of file <a class="el" href="media__stream_8hh_source.html">media_stream.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="media__stream_8hh_source.html#l00053">53</a> of file <a class="el" href="media__stream_8hh_source.html">media_stream.hh</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a0950a91bd645cbf842d8218ae4171aed" name="a0950a91bd645cbf842d8218ae4171aed"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0950a91bd645cbf842d8218ae4171aed">&#9670;&#160;</a></span>add_srtp_ctx()</h2>
@ -223,6 +226,34 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><b>get_ipv6</b> () const
</dd>
</dl>
</div>
</div>
<a id="acee8dd45e8c6ebbb1af52bb54dd7c40d" name="acee8dd45e8c6ebbb1af52bb54dd7c40d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acee8dd45e8c6ebbb1af52bb54dd7c40d">&#9670;&#160;</a></span>get_configuration_value()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int uvgrtp::media_stream::get_configuration_value </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>rcc_flag</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Get the values associated with configuration flags, see <a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587f" title="RTP context configuration flags.">RTP_CTX_CONFIGURATION_FLAGS</a> for more details. </p>
<dl class="section return"><dt>Returns</dt><dd>Value of the configuration flag</dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">int</td><td>value on success </td></tr>
<tr><td class="paramname">-1</td><td>on error </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ab339f15d5a852beacd901b7b78e887ea" name="ab339f15d5a852beacd901b7b78e887ea"></a>
@ -767,6 +798,38 @@ bool&#160;</td><td class="memItemRight" valign="bottom"><b>get_ipv6</b> () const
</dd>
</dl>
</div>
</div>
<a id="a9e22ebbe9f903abe0fcae267f98cafeb" name="a9e22ebbe9f903abe0fcae267f98cafeb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9e22ebbe9f903abe0fcae267f98cafeb">&#9670;&#160;</a></span>start_zrtp()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">rtp_error_t uvgrtp::media_stream::start_zrtp </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Start the ZRTP negotiation manually. </p>
<p>There is two ways to use ZRTP.</p><ol type="1">
<li>Use flags RCE_SRTP + RCE_SRTP_KMNGMNT_ZRTP + (RCE_ZRTP_DIFFIE_HELLMAN_MODE/RCE_ZRTP_MULTISTREAM_MODE) to automatically start ZRTP negotiation when creating a media stream.</li>
<li>Use flags RCE_SRTP + (RCE_ZRTP_DIFFIE_HELLMAN_MODE/RCE_ZRTP_MULTISTREAM_MODE) and after creating the media stream, call <a class="el" href="classuvgrtp_1_1media__stream.html#a9e22ebbe9f903abe0fcae267f98cafeb" title="Start the ZRTP negotiation manually.">start_zrtp()</a> to manually start the ZRTP negotiation</li>
</ol>
<dl class="section return"><dt>Returns</dt><dd>RTP error code</dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">RTP_OK</td><td>On success </td></tr>
<tr><td class="paramname">RTP_TIMEOUT</td><td>if ZRTP timed out </td></tr>
<tr><td class="paramname">RTP_GENERIC_ERROR</td><td>on other errors </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -90,7 +90,7 @@ $(function() {
<tr class="odd"><td class="entry"><a class="el" href="classuvgrtp_1_1rtcp.html#a4a262a814ffa3093ac6829c90b0b3fd1">install_sender_hook</a>(void(*hook)(uvgrtp::frame::rtcp_sender_report *))</td><td class="entry"><a class="el" href="classuvgrtp_1_1rtcp.html">uvgrtp::rtcp</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classuvgrtp_1_1rtcp.html#a79a46d4dff360019a8a089112998b9eb">install_sender_hook</a>(std::function&lt; void(std::unique_ptr&lt; uvgrtp::frame::rtcp_sender_report &gt;)&gt; sr_handler)</td><td class="entry"><a class="el" href="classuvgrtp_1_1rtcp.html">uvgrtp::rtcp</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classuvgrtp_1_1rtcp.html#a81198428cc697c0c7cbb2a4191f294d8">remove_all_hooks</a>()</td><td class="entry"><a class="el" href="classuvgrtp_1_1rtcp.html">uvgrtp::rtcp</a></td><td class="entry"></td></tr>
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>remove_send_app_hook</b>(std::string app_name) (defined in <a class="el" href="classuvgrtp_1_1rtcp.html">uvgrtp::rtcp</a>)</td><td class="entry"><a class="el" href="classuvgrtp_1_1rtcp.html">uvgrtp::rtcp</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classuvgrtp_1_1rtcp.html#a27adb6b5965dab3918bd02a2e7a2dfd2">remove_send_app_hook</a>(std::string app_name)</td><td class="entry"><a class="el" href="classuvgrtp_1_1rtcp.html">uvgrtp::rtcp</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classuvgrtp_1_1rtcp.html#a0c092bca6edda19218a2cb84ed776c34">send_app_packet</a>(const char *name, uint8_t subtype, uint32_t payload_len, const uint8_t *payload)</td><td class="entry"><a class="el" href="classuvgrtp_1_1rtcp.html">uvgrtp::rtcp</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="classuvgrtp_1_1rtcp.html#a2b831698320212e382e3d565e62d31c4">send_bye_packet</a>(std::vector&lt; uint32_t &gt; ssrcs)</td><td class="entry"><a class="el" href="classuvgrtp_1_1rtcp.html">uvgrtp::rtcp</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="classuvgrtp_1_1rtcp.html#a65680d4ba308fc8cb92fd41f0d313c84">send_sdes_packet</a>(const std::vector&lt; uvgrtp::frame::rtcp_sdes_item &gt; &amp;items)</td><td class="entry"><a class="el" href="classuvgrtp_1_1rtcp.html">uvgrtp::rtcp</a></td><td class="entry"></td></tr>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -130,8 +130,8 @@ Public Member Functions</h2></td></tr>
<tr class="memitem:a81198428cc697c0c7cbb2a4191f294d8"><td class="memItemLeft" align="right" valign="top">rtp_error_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuvgrtp_1_1rtcp.html#a81198428cc697c0c7cbb2a4191f294d8">remove_all_hooks</a> ()</td></tr>
<tr class="memdesc:a81198428cc697c0c7cbb2a4191f294d8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove all installed hooks for RTCP. <br /></td></tr>
<tr class="separator:a81198428cc697c0c7cbb2a4191f294d8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a27adb6b5965dab3918bd02a2e7a2dfd2"><td class="memItemLeft" align="right" valign="top"><a id="a27adb6b5965dab3918bd02a2e7a2dfd2" name="a27adb6b5965dab3918bd02a2e7a2dfd2"></a>
rtp_error_t&#160;</td><td class="memItemRight" valign="bottom"><b>remove_send_app_hook</b> (std::string app_name)</td></tr>
<tr class="memitem:a27adb6b5965dab3918bd02a2e7a2dfd2"><td class="memItemLeft" align="right" valign="top">rtp_error_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classuvgrtp_1_1rtcp.html#a27adb6b5965dab3918bd02a2e7a2dfd2">remove_send_app_hook</a> (std::string app_name)</td></tr>
<tr class="memdesc:a27adb6b5965dab3918bd02a2e7a2dfd2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Remove a hook for sending APP packets *. <br /></td></tr>
<tr class="separator:a27adb6b5965dab3918bd02a2e7a2dfd2"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
@ -141,7 +141,7 @@ rtp_error_t&#160;</td><td class="memItemRight" valign="bottom"><b>remove_send_ap
<p>You can use the APP packet to test new RTCP packet types using the <a class="el" href="classuvgrtp_1_1rtcp.html#a0c092bca6edda19218a2cb84ed776c34" title="Send an RTCP APP packet.">send_app_packet()</a>-function. The APP packets are added to these periodically sent compound packets.</p>
<p>See <a href="https://www.rfc-editor.org/rfc/rfc3550#section-6" target="_blank">RFC 3550 section 6</a> for more details. </p>
<p class="definition">Definition at line <a class="el" href="rtcp_8hh_source.html#l00118">118</a> of file <a class="el" href="rtcp_8hh_source.html">rtcp.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="rtcp_8hh_source.html#l00120">120</a> of file <a class="el" href="rtcp_8hh_source.html">rtcp.hh</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a76cb98093acfb54050b50ff82106ca94" name="a76cb98093acfb54050b50ff82106ca94"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a76cb98093acfb54050b50ff82106ca94">&#9670;&#160;</a></span>install_app_hook() <span class="overload">[1/2]</span></h2>
@ -484,6 +484,39 @@ rtp_error_t&#160;</td><td class="memItemRight" valign="bottom"><b>remove_send_ap
</dd>
</dl>
</div>
</div>
<a id="a27adb6b5965dab3918bd02a2e7a2dfd2" name="a27adb6b5965dab3918bd02a2e7a2dfd2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a27adb6b5965dab3918bd02a2e7a2dfd2">&#9670;&#160;</a></span>remove_send_app_hook()</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">rtp_error_t uvgrtp::rtcp::remove_send_app_hook </td>
<td>(</td>
<td class="paramtype">std::string&#160;</td>
<td class="paramname"><em>app_name</em></td><td>)</td>
<td></td>
</tr>
</table>
</div><div class="memdoc">
<p>Remove a hook for sending APP packets *. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">app_name</td><td>name of the APP packet hook. Max 4 chars </td></tr>
</table>
</dd>
</dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">RTP_OK</td><td>on success </td></tr>
<tr><td class="paramname">RTP_INVALID_VALUE</td><td>if hook with given app_name was not found </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a0c092bca6edda19218a2cb84ed776c34" name="a0c092bca6edda19218a2cb84ed776c34"></a>
@ -527,7 +560,7 @@ rtp_error_t&#160;</td><td class="memItemRight" valign="bottom"><b>remove_send_ap
<p>Send an RTCP APP packet. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">name</td><td>Name of the APP item, e.g., EMAIL or PHONE </td></tr>
<tr><td class="paramname">name</td><td>Name of the APP item, e.g., STAT, must have a length of four ASCII characters </td></tr>
<tr><td class="paramname">subtype</td><td>Subtype of the APP item </td></tr>
<tr><td class="paramname">payload_len</td><td>Length of the payload </td></tr>
<tr><td class="paramname">payload</td><td>Payload</td></tr>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -102,7 +102,7 @@ Public Member Functions</h2></td></tr>
<div class="textblock"><p>Provides ZRTP synchronization and can be used to create <a class="el" href="classuvgrtp_1_1media__stream.html" title="The media_stream is an entity which represents one RTP stream.">uvgrtp::media_stream</a> objects. </p>
<p>By itself session does not do anything. The actual RTP streaming is done by <a class="el" href="classuvgrtp_1_1media__stream.html" title="The media_stream is an entity which represents one RTP stream.">media_stream</a> objects, which can be created by session. <a class="el" href="classuvgrtp_1_1media__stream.html" title="The media_stream is an entity which represents one RTP stream.">media_stream</a> corresponds to an RTP session in RFC 3550. </p>
<p class="definition">Definition at line <a class="el" href="session_8hh_source.html#l00026">26</a> of file <a class="el" href="session_8hh_source.html">session.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="session_8hh_source.html#l00027">27</a> of file <a class="el" href="session_8hh_source.html">session.hh</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a07a96e787de86d902d5c4d6bcb3dc416" name="a07a96e787de86d902d5c4d6bcb3dc416"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a07a96e787de86d902d5c4d6bcb3dc416">&#9670;&#160;</a></span>create_stream() <span class="overload">[1/2]</span></h2>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -83,46 +83,52 @@ $(function() {
<div class="line"><a id="l00004" name="l00004"></a><span class="lineno"> 4</span> </div>
<div class="line"><a id="l00005" name="l00005"></a><span class="lineno"> 5</span><span class="preprocessor">#include &lt;map&gt;</span></div>
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span> </div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="preprocessor">#include &lt;memory&gt;</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span> </div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="keyword">namespace </span>uvgrtp {</div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span> </div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span> <span class="keyword">class </span>session;</div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> </div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1context.html"> 16</a></span> <span class="keyword">class </span><a class="code hl_class" href="classuvgrtp_1_1context.html">context</a> {</div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1context.html#a98be18c2848404549cfadf910ba1573a"> 24</a></span> <a class="code hl_function" href="classuvgrtp_1_1context.html#a98be18c2848404549cfadf910ba1573a">context</a>();</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> </div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1context.html#a652a201ae11685961267455ab823eb60"> 32</a></span> <a class="code hl_function" href="classuvgrtp_1_1context.html#a652a201ae11685961267455ab823eb60">~context</a>();</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> </div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1context.html#a81b2dc23ebf64d1153410376503eccb4"> 44</a></span> <a class="code hl_class" href="classuvgrtp_1_1session.html">uvgrtp::session</a> *<a class="code hl_function" href="classuvgrtp_1_1context.html#a81b2dc23ebf64d1153410376503eccb4">create_session</a>(std::string address);</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> </div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1context.html#a7699c9df53e8e7380d755f374d6fc2ce"> 62</a></span> <a class="code hl_class" href="classuvgrtp_1_1session.html">uvgrtp::session</a> *<a class="code hl_function" href="classuvgrtp_1_1context.html#a7699c9df53e8e7380d755f374d6fc2ce">create_session</a>(std::string remote_addr, std::string local_addr);</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> </div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1context.html#a61daf2f3cdcdf2542ee997ab6de5efa9"> 74</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1context.html#a61daf2f3cdcdf2542ee997ab6de5efa9">destroy_session</a>(<a class="code hl_class" href="classuvgrtp_1_1session.html">uvgrtp::session</a> *<a class="code hl_class" href="classuvgrtp_1_1session.html">session</a>);</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> </div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> std::string&amp; get_cname();</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> </div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1context.html#a0ddad3f0a78b6a4b13f2b8fdd15c9087"> 86</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classuvgrtp_1_1context.html#a0ddad3f0a78b6a4b13f2b8fdd15c9087">crypto_enabled</a>() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> </div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="comment">/* Generate CNAME for participant using host and login names */</span></div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> std::string generate_cname() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> </div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> <span class="comment">/* CNAME is the same for all connections */</span></div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> std::string cname_;</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> };</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span>}</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> </div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span><span class="keyword">namespace </span>uvg_rtp = uvgrtp;</div>
<div class="ttc" id="aclassuvgrtp_1_1context_html"><div class="ttname"><a href="classuvgrtp_1_1context.html">uvgrtp::context</a></div><div class="ttdoc">Provides CNAME isolation and can be used to create uvgrtp::session objects.</div><div class="ttdef"><b>Definition:</b> <a href="context_8hh_source.html#l00016">context.hh:16</a></div></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span> </div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="keyword">namespace </span>uvgrtp {</div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span> </div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> <span class="keyword">class </span>session;</div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span> <span class="keyword">class </span>socketfactory;</div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> </div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1context.html"> 18</a></span> <span class="keyword">class </span><a class="code hl_class" href="classuvgrtp_1_1context.html">context</a> {</div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1context.html#a98be18c2848404549cfadf910ba1573a"> 26</a></span> <a class="code hl_function" href="classuvgrtp_1_1context.html#a98be18c2848404549cfadf910ba1573a">context</a>();</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1context.html#a652a201ae11685961267455ab823eb60"> 34</a></span> <a class="code hl_function" href="classuvgrtp_1_1context.html#a652a201ae11685961267455ab823eb60">~context</a>();</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> </div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1context.html#ae4417159d9b136b2d696fb7571fc3266"> 46</a></span> <a class="code hl_class" href="classuvgrtp_1_1session.html">uvgrtp::session</a>* <a class="code hl_function" href="classuvgrtp_1_1context.html#ae4417159d9b136b2d696fb7571fc3266">create_session</a>(std::pair&lt;std::string, std::string&gt; addresses);</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> </div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1context.html#a81b2dc23ebf64d1153410376503eccb4"> 58</a></span> <a class="code hl_class" href="classuvgrtp_1_1session.html">uvgrtp::session</a> *<a class="code hl_function" href="classuvgrtp_1_1context.html#a81b2dc23ebf64d1153410376503eccb4">create_session</a>(std::string address);</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// Obsolete method, replaced by create_session(std::pair&lt;std::string, std::string&gt; addresses);</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <a class="code hl_class" href="classuvgrtp_1_1session.html">uvgrtp::session</a> *<a class="code hl_function" href="classuvgrtp_1_1context.html#ae4417159d9b136b2d696fb7571fc3266">create_session</a>(std::string remote_addr, std::string local_addr);</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> </div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1context.html#a61daf2f3cdcdf2542ee997ab6de5efa9"> 75</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1context.html#a61daf2f3cdcdf2542ee997ab6de5efa9">destroy_session</a>(<a class="code hl_class" href="classuvgrtp_1_1session.html">uvgrtp::session</a> *<a class="code hl_class" href="classuvgrtp_1_1session.html">session</a>);</div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> </div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> std::string&amp; get_cname();</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> </div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1context.html#a0ddad3f0a78b6a4b13f2b8fdd15c9087"> 87</a></span> <span class="keywordtype">bool</span> <a class="code hl_function" href="classuvgrtp_1_1context.html#a0ddad3f0a78b6a4b13f2b8fdd15c9087">crypto_enabled</a>() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> </div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <span class="comment">/* Generate CNAME for participant using host and login names */</span></div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> std::string generate_cname() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> </div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="comment">/* CNAME is the same for all connections */</span></div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> std::string cname_;</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> std::shared_ptr&lt;uvgrtp::socketfactory&gt; sfp_;</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> };</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span>}</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> </div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span><span class="keyword">namespace </span>uvg_rtp = uvgrtp;</div>
<div class="ttc" id="aclassuvgrtp_1_1context_html"><div class="ttname"><a href="classuvgrtp_1_1context.html">uvgrtp::context</a></div><div class="ttdoc">Provides CNAME isolation and can be used to create uvgrtp::session objects.</div><div class="ttdef"><b>Definition:</b> <a href="context_8hh_source.html#l00018">context.hh:18</a></div></div>
<div class="ttc" id="aclassuvgrtp_1_1context_html_a0ddad3f0a78b6a4b13f2b8fdd15c9087"><div class="ttname"><a href="classuvgrtp_1_1context.html#a0ddad3f0a78b6a4b13f2b8fdd15c9087">uvgrtp::context::crypto_enabled</a></div><div class="ttdeci">bool crypto_enabled() const</div><div class="ttdoc">Has Crypto++ been included in uvgRTP library.</div></div>
<div class="ttc" id="aclassuvgrtp_1_1context_html_a61daf2f3cdcdf2542ee997ab6de5efa9"><div class="ttname"><a href="classuvgrtp_1_1context.html#a61daf2f3cdcdf2542ee997ab6de5efa9">uvgrtp::context::destroy_session</a></div><div class="ttdeci">rtp_error_t destroy_session(uvgrtp::session *session)</div><div class="ttdoc">Destroy RTP session and all of its media streams.</div></div>
<div class="ttc" id="aclassuvgrtp_1_1context_html_a652a201ae11685961267455ab823eb60"><div class="ttname"><a href="classuvgrtp_1_1context.html#a652a201ae11685961267455ab823eb60">uvgrtp::context::~context</a></div><div class="ttdeci">~context()</div><div class="ttdoc">RTP context destructor.</div></div>
<div class="ttc" id="aclassuvgrtp_1_1context_html_a7699c9df53e8e7380d755f374d6fc2ce"><div class="ttname"><a href="classuvgrtp_1_1context.html#a7699c9df53e8e7380d755f374d6fc2ce">uvgrtp::context::create_session</a></div><div class="ttdeci">uvgrtp::session * create_session(std::string remote_addr, std::string local_addr)</div><div class="ttdoc">Create a new RTP session.</div></div>
<div class="ttc" id="aclassuvgrtp_1_1context_html_a81b2dc23ebf64d1153410376503eccb4"><div class="ttname"><a href="classuvgrtp_1_1context.html#a81b2dc23ebf64d1153410376503eccb4">uvgrtp::context::create_session</a></div><div class="ttdeci">uvgrtp::session * create_session(std::string address)</div><div class="ttdoc">Create a new RTP session.</div></div>
<div class="ttc" id="aclassuvgrtp_1_1context_html_a98be18c2848404549cfadf910ba1573a"><div class="ttname"><a href="classuvgrtp_1_1context.html#a98be18c2848404549cfadf910ba1573a">uvgrtp::context::context</a></div><div class="ttdeci">context()</div><div class="ttdoc">RTP context constructor.</div></div>
<div class="ttc" id="aclassuvgrtp_1_1session_html"><div class="ttname"><a href="classuvgrtp_1_1session.html">uvgrtp::session</a></div><div class="ttdoc">Provides ZRTP synchronization and can be used to create uvgrtp::media_stream objects.</div><div class="ttdef"><b>Definition:</b> <a href="session_8hh_source.html#l00026">session.hh:26</a></div></div>
<div class="ttc" id="aclassuvgrtp_1_1context_html_ae4417159d9b136b2d696fb7571fc3266"><div class="ttname"><a href="classuvgrtp_1_1context.html#ae4417159d9b136b2d696fb7571fc3266">uvgrtp::context::create_session</a></div><div class="ttdeci">uvgrtp::session * create_session(std::pair&lt; std::string, std::string &gt; addresses)</div><div class="ttdoc">Create a new RTP session between two IP addresses.</div></div>
<div class="ttc" id="aclassuvgrtp_1_1session_html"><div class="ttname"><a href="classuvgrtp_1_1session.html">uvgrtp::session</a></div><div class="ttdoc">Provides ZRTP synchronization and can be used to create uvgrtp::media_stream objects.</div><div class="ttdef"><b>Definition:</b> <a href="session_8hh_source.html#l00027">session.hh:27</a></div></div>
<div class="ttc" id="autil_8hh_html"><div class="ttname"><a href="util_8hh.html">util.hh</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -103,184 +103,240 @@ $(function() {
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">namespace </span>frame {</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> </div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">enum</span> RTCP_FRAME_TYPE {</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> RTCP_FT_SR = 200, <span class="comment">/* Sender report */</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> RTCP_FT_RR = 201, <span class="comment">/* Receiver report */</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> RTCP_FT_SDES = 202, <span class="comment">/* Source description */</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> RTCP_FT_BYE = 203, <span class="comment">/* Goodbye */</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> RTCP_FT_APP = 204 <span class="comment">/* Application-specific message */</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> };</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> PACK(<span class="keyword">struct</span> rtp_header {</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> uint8_t version:2;</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> uint8_t padding:1;</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> uint8_t ext:1;</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> uint8_t cc:4;</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> uint8_t marker:1;</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> uint8_t payload:7;</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> uint16_t seq = 0;</div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> uint32_t timestamp = 0;</div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> uint32_t ssrc = 0;</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> });</div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> </div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> PACK(<span class="keyword">struct</span> ext_header {</div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> uint16_t type = 0;</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> uint16_t len = 0;</div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> uint8_t *data = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> });</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> </div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtp__frame.html"> 53</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtp__frame.html">rtp_frame</a> {</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">struct </span>rtp_header header;</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> uint32_t *csrc = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="keyword">struct </span>ext_header *ext = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> </div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <span class="keywordtype">size_t</span> padding_len = 0; <span class="comment">/* non-zero if frame is padded */</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtp__frame.html#a2d158e0aaf23398a8a3b02c95d06e366"> 64</a></span> <span class="keywordtype">size_t</span> <a class="code hl_variable" href="structuvgrtp_1_1frame_1_1rtp__frame.html#a2d158e0aaf23398a8a3b02c95d06e366">payload_len</a> = 0; </div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> uint8_t* payload = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> RTCP_FT_SR = 200, <span class="comment">/* Sender report */</span></div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> RTCP_FT_RR = 201, <span class="comment">/* Receiver report */</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> RTCP_FT_SDES = 202, <span class="comment">/* Source description */</span></div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> RTCP_FT_BYE = 203, <span class="comment">/* Goodbye */</span></div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> RTCP_FT_APP = 204, <span class="comment">/* Application-specific message */</span></div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> RTCP_FT_RTPFB = 205, <span class="comment">/* Transport layer FB message */</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> RTCP_FT_PSFB = 206 <span class="comment">/* Payload-specific FB message */</span></div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> };</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> </div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">enum</span> RTCP_PSFB_FMT {</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> RTCP_PSFB_PLI = 1, <span class="comment">/* Picture Loss Indication (PLI), defined in RFC 4585 */</span></div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> RTCP_PSFB_SLI = 2, <span class="comment">/* Slice Loss Indication (SLI), defined in RFC 4585 */</span></div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> RTCP_PSFB_RPSI = 3, <span class="comment">/* Reference Picture Selection Indication (RPSI), defined in RFC 4585 */</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> RTCP_PSFB_FIR = 4, <span class="comment">/* Full Intra Request (FIR), defined in RFC 5154 */</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> RTCP_PSFB_TSTR = 5, <span class="comment">/* Temporal-Spatial Trade-off Request (TSTR), defined in RFC 5154 */</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> RTCP_PSFB_AFB = 15 <span class="comment">/* Application Layer FB (AFB), defined in RFC 4585 */</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> };</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> </div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">enum</span> RTCP_RTPFB_FMT {</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> RTCP_RTPFB_NACK = 1 <span class="comment">/* Generic NACK, defined in RFC 4585 section 6.2 */</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> };</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> </div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> PACK(<span class="keyword">struct</span> rtp_header {</div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> uint8_t version:2;</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> uint8_t padding:1;</div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> uint8_t ext:1;</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> uint8_t cc:4;</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> uint8_t marker:1;</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> uint8_t payload:7;</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> uint16_t seq = 0;</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> uint32_t timestamp = 0;</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> uint32_t ssrc = 0;</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> });</div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> </div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> PACK(<span class="keyword">struct</span> ext_header {</div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> uint16_t type = 0;</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> uint16_t len = 0;</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> uint8_t *data = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> });</div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> </div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> uint8_t *dgram = <span class="keyword">nullptr</span>; <span class="comment">/* pointer to the UDP datagram (for internal use only) */</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <span class="keywordtype">size_t</span> dgram_size = 0; <span class="comment">/* size of the UDP datagram */</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> };</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtp__frame.html"> 68</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtp__frame.html">rtp_frame</a> {</div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <span class="keyword">struct </span>rtp_header header;</div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> uint32_t *csrc = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> <span class="keyword">struct </span>ext_header *ext = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> </div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__header.html"> 74</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__header.html">rtcp_header</a> {</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a096fae3005310de937f1dab442c3b9d7"> 77</a></span> uint8_t <a class="code hl_variable" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a096fae3005310de937f1dab442c3b9d7">version</a> = 0;</div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a4309061d7fae17a13db3d5eea71d6639"> 79</a></span> uint8_t <a class="code hl_variable" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a4309061d7fae17a13db3d5eea71d6639">padding</a> = 0;</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <span class="keyword">union </span>{</div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__header.html#af121a4cae797537270add50efd7a4e3d"> 82</a></span> uint8_t <a class="code hl_variable" href="structuvgrtp_1_1frame_1_1rtcp__header.html#af121a4cae797537270add50efd7a4e3d">count</a> = 0; </div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a829dd160ba7f473f3d6c5ff2d2dae5ab"> 84</a></span> uint8_t <a class="code hl_variable" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a829dd160ba7f473f3d6c5ff2d2dae5ab">pkt_subtype</a>; </div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> };</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a08120f0b6526c473c6488803388c7855"> 87</a></span> uint8_t <a class="code hl_variable" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a08120f0b6526c473c6488803388c7855">pkt_type</a> = 0;</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a1ed1871349edce32d60c3b1a33049fd0"> 89</a></span> uint16_t <a class="code hl_variable" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a1ed1871349edce32d60c3b1a33049fd0">length</a> = 0;</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> };</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> </div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html"> 93</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html">rtcp_sender_info</a> {</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#ae22a2bcad293efb1d642762d3eac3143"> 95</a></span> uint32_t <a class="code hl_variable" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#ae22a2bcad293efb1d642762d3eac3143">ntp_msw</a> = 0;</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a7c80f6082983dae0f3a5eea55a7c8ef6"> 97</a></span> uint32_t <a class="code hl_variable" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a7c80f6082983dae0f3a5eea55a7c8ef6">ntp_lsw</a> = 0;</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a2e9c3d1fe1b522a1d4c6fb4bc1fbdbdf"> 99</a></span> uint32_t <a class="code hl_variable" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a2e9c3d1fe1b522a1d4c6fb4bc1fbdbdf">rtp_ts</a> = 0;</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> uint32_t pkt_cnt = 0;</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a41290b62c283bf5d4c8f3a86ac5975ce"> 102</a></span> uint32_t <a class="code hl_variable" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a41290b62c283bf5d4c8f3a86ac5975ce">byte_cnt</a> = 0;</div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> };</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> </div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__report__block.html"> 106</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__report__block.html">rtcp_report_block</a> {</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> uint32_t ssrc = 0;</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> uint8_t fraction = 0;</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> int32_t lost = 0;</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> uint32_t last_seq = 0;</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> uint32_t jitter = 0;</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> uint32_t lsr = 0; <span class="comment">/* last Sender Report */</span></div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> uint32_t dlsr = 0; <span class="comment">/* delay since last Sender Report */</span></div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> };</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> </div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__receiver__report.html"> 117</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__receiver__report.html">rtcp_receiver_report</a> {</div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__header.html">rtcp_header</a> header;</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> uint32_t ssrc = 0;</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> std::vector&lt;rtcp_report_block&gt; report_blocks;</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> };</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> </div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__sender__report.html"> 124</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sender__report.html">rtcp_sender_report</a> {</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__header.html">rtcp_header</a> header;</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> uint32_t ssrc = 0;</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html">rtcp_sender_info</a> sender_info;</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> std::vector&lt;rtcp_report_block&gt; report_blocks;</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> };</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> </div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__sdes__item.html"> 132</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sdes__item.html">rtcp_sdes_item</a> {</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> uint8_t type = 0;</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> uint8_t length = 0;</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> uint8_t *data = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> };</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> </div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__sdes__chunk.html"> 139</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sdes__chunk.html">rtcp_sdes_chunk</a> {</div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> uint32_t ssrc = 0;</div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> std::vector&lt;rtcp_sdes_item&gt; items;</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> };</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> </div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html"> 145</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html">rtcp_sdes_packet</a> {</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__header.html">rtcp_header</a> header;</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> std::vector&lt;rtcp_sdes_chunk&gt; chunks;</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> };</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> </div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html"> 151</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html">rtcp_app_packet</a> {</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__header.html">rtcp_header</a> header;</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> uint32_t ssrc = 0;</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> uint8_t name[4] = {0};</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> uint8_t *payload = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html#acefa08e5025c52c0e4a0ae14255f6d01"> 157</a></span> <span class="keywordtype">size_t</span> <a class="code hl_variable" href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html#acefa08e5025c52c0e4a0ae14255f6d01">payload_len</a> = 0;</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> };</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> </div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> PACK(<span class="keyword">struct</span> zrtp_frame {</div>
<div class="line"><a id="l00161" name="l00161"></a><span class="lineno"> 161</span> uint8_t version:4;</div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"> 162</span> uint16_t unused:12;</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> uint16_t seq = 0;</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> uint32_t magic = 0;</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> uint32_t ssrc = 0;</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> uint8_t payload[1];</div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> });</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> </div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> <span class="comment">/* Allocate an RTP frame</span></div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span><span class="comment"> *</span></div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span><span class="comment"> * First function allocates an empty RTP frame (no payload)</span></div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span><span class="comment"> *</span></div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span><span class="comment"> * Second allocates an RTP frame with payload of size &quot;payload_len&quot;,</span></div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span><span class="comment"> *</span></div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span><span class="comment"> * Third allocate an RTP frame with payload of size &quot;payload_len&quot;</span></div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span><span class="comment"> * + probation zone of size &quot;pz_size&quot; * MAX_PAYLOAD</span></div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span><span class="comment"> *</span></div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span><span class="comment"> * Return pointer to frame on success</span></div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span><span class="comment"> * Return nullptr on error and set rtp_errno to:</span></div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span><span class="comment"> * RTP_MEMORY_ERROR if allocation of memory failed */</span></div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> rtp_frame *alloc_rtp_frame();</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> rtp_frame *alloc_rtp_frame(<span class="keywordtype">size_t</span> payload_len);</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"> 183</span> </div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> </div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> <span class="comment">/* Deallocate RTP frame</span></div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span><span class="comment"> *</span></div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span><span class="comment"> * Return RTP_OK on successs</span></div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span><span class="comment"> * Return RTP_INVALID_VALUE if &quot;frame&quot; is nullptr */</span></div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"> 189</span> rtp_error_t dealloc_frame(<a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtp__frame.html">uvgrtp::frame::rtp_frame</a> *frame);</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> </div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> </div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> <span class="comment">/* Allocate ZRTP frame</span></div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span><span class="comment"> * Parameter &quot;payload_size&quot; defines the length of the frame</span></div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span><span class="comment"> *</span></div>
<div class="line"><a id="l00195" name="l00195"></a><span class="lineno"> 195</span><span class="comment"> * Return pointer to frame on success</span></div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span><span class="comment"> * Return nullptr on error and set rtp_errno to:</span></div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span><span class="comment"> * RTP_MEMORY_ERROR if allocation of memory failed</span></div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span><span class="comment"> * RTP_INVALID_VALUE if &quot;payload_size&quot; is 0 */</span></div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> <span class="keywordtype">void</span>* alloc_zrtp_frame(<span class="keywordtype">size_t</span> payload_size);</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> </div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> </div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> <span class="comment">/* Deallocate ZRTP frame</span></div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span><span class="comment"> *</span></div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span><span class="comment"> * Return RTP_OK on successs</span></div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span><span class="comment"> * Return RTP_INVALID_VALUE if &quot;frame&quot; is nullptr */</span></div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> rtp_error_t dealloc_frame(uvgrtp::frame::zrtp_frame* frame);</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> }</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span>}</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> </div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span><span class="keyword">namespace </span>uvg_rtp = uvgrtp;</div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__app__packet_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html">uvgrtp::frame::rtcp_app_packet</a></div><div class="ttdoc">See RFC 3550 section 6.7</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00151">frame.hh:151</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__app__packet_html_acefa08e5025c52c0e4a0ae14255f6d01"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html#acefa08e5025c52c0e4a0ae14255f6d01">uvgrtp::frame::rtcp_app_packet::payload_len</a></div><div class="ttdeci">size_t payload_len</div><div class="ttdoc">Size of the payload in bytes. Added by uvgRTP to help process the payload.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00157">frame.hh:157</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__header_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a></div><div class="ttdoc">Header of for all RTCP packets defined in RFC 3550 section 6</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00074">frame.hh:74</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__header_html_a08120f0b6526c473c6488803388c7855"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__header.html#a08120f0b6526c473c6488803388c7855">uvgrtp::frame::rtcp_header::pkt_type</a></div><div class="ttdeci">uint8_t pkt_type</div><div class="ttdoc">Identifies the RTCP packet type.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00087">frame.hh:87</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__header_html_a096fae3005310de937f1dab442c3b9d7"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__header.html#a096fae3005310de937f1dab442c3b9d7">uvgrtp::frame::rtcp_header::version</a></div><div class="ttdeci">uint8_t version</div><div class="ttdoc">This field identifies the version of RTP. The version defined by RFC 3550 is two (2).</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00077">frame.hh:77</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__header_html_a1ed1871349edce32d60c3b1a33049fd0"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__header.html#a1ed1871349edce32d60c3b1a33049fd0">uvgrtp::frame::rtcp_header::length</a></div><div class="ttdeci">uint16_t length</div><div class="ttdoc">Length of the whole message measured in 32-bit words.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00089">frame.hh:89</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__header_html_a4309061d7fae17a13db3d5eea71d6639"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__header.html#a4309061d7fae17a13db3d5eea71d6639">uvgrtp::frame::rtcp_header::padding</a></div><div class="ttdeci">uint8_t padding</div><div class="ttdoc">Does this packet contain padding at the end.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00079">frame.hh:79</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__header_html_a829dd160ba7f473f3d6c5ff2d2dae5ab"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__header.html#a829dd160ba7f473f3d6c5ff2d2dae5ab">uvgrtp::frame::rtcp_header::pkt_subtype</a></div><div class="ttdeci">uint8_t pkt_subtype</div><div class="ttdoc">Subtype in APP packets. Alternative to count.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00084">frame.hh:84</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__header_html_af121a4cae797537270add50efd7a4e3d"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__header.html#af121a4cae797537270add50efd7a4e3d">uvgrtp::frame::rtcp_header::count</a></div><div class="ttdeci">uint8_t count</div><div class="ttdoc">Source count or report count. Alternative to pkt_subtype.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00082">frame.hh:82</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__receiver__report_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__receiver__report.html">uvgrtp::frame::rtcp_receiver_report</a></div><div class="ttdoc">See RFC 3550 section 6.4.2</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00117">frame.hh:117</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__report__block_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__report__block.html">uvgrtp::frame::rtcp_report_block</a></div><div class="ttdoc">See RFC 3550 section 6.4.1</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00106">frame.hh:106</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__sdes__chunk_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__sdes__chunk.html">uvgrtp::frame::rtcp_sdes_chunk</a></div><div class="ttdoc">See RFC 3550 section 6.5</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00139">frame.hh:139</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__sdes__item_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__sdes__item.html">uvgrtp::frame::rtcp_sdes_item</a></div><div class="ttdoc">See RFC 3550 section 6.5</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00132">frame.hh:132</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__sdes__packet_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html">uvgrtp::frame::rtcp_sdes_packet</a></div><div class="ttdoc">See RFC 3550 section 6.5</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00145">frame.hh:145</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__sender__info_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html">uvgrtp::frame::rtcp_sender_info</a></div><div class="ttdoc">See RFC 3550 section 6.4.1</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00093">frame.hh:93</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__sender__info_html_a2e9c3d1fe1b522a1d4c6fb4bc1fbdbdf"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a2e9c3d1fe1b522a1d4c6fb4bc1fbdbdf">uvgrtp::frame::rtcp_sender_info::rtp_ts</a></div><div class="ttdeci">uint32_t rtp_ts</div><div class="ttdoc">RTP timestamp corresponding to this NTP timestamp.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00099">frame.hh:99</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__sender__info_html_a41290b62c283bf5d4c8f3a86ac5975ce"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a41290b62c283bf5d4c8f3a86ac5975ce">uvgrtp::frame::rtcp_sender_info::byte_cnt</a></div><div class="ttdeci">uint32_t byte_cnt</div><div class="ttdoc">Also known as octet count.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00102">frame.hh:102</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__sender__info_html_a7c80f6082983dae0f3a5eea55a7c8ef6"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a7c80f6082983dae0f3a5eea55a7c8ef6">uvgrtp::frame::rtcp_sender_info::ntp_lsw</a></div><div class="ttdeci">uint32_t ntp_lsw</div><div class="ttdoc">NTP timestamp, least significant word.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00097">frame.hh:97</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__sender__info_html_ae22a2bcad293efb1d642762d3eac3143"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#ae22a2bcad293efb1d642762d3eac3143">uvgrtp::frame::rtcp_sender_info::ntp_msw</a></div><div class="ttdeci">uint32_t ntp_msw</div><div class="ttdoc">NTP timestamp, most significant word.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00095">frame.hh:95</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__sender__report_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__sender__report.html">uvgrtp::frame::rtcp_sender_report</a></div><div class="ttdoc">See RFC 3550 section 6.4.1</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00124">frame.hh:124</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtp__frame_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtp__frame.html">uvgrtp::frame::rtp_frame</a></div><div class="ttdoc">See RFC 3550 section 5</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00053">frame.hh:53</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtp__frame_html_a2d158e0aaf23398a8a3b02c95d06e366"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtp__frame.html#a2d158e0aaf23398a8a3b02c95d06e366">uvgrtp::frame::rtp_frame::payload_len</a></div><div class="ttdeci">size_t payload_len</div><div class="ttdoc">Length of the packet payload in bytes added by uvgRTP to help process the frame.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00064">frame.hh:64</a></div></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> <span class="keywordtype">size_t</span> padding_len = 0; <span class="comment">/* non-zero if frame is padded */</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> </div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtp__frame.html#a2d158e0aaf23398a8a3b02c95d06e366"> 79</a></span> <span class="keywordtype">size_t</span> <a class="code hl_variable" href="structuvgrtp_1_1frame_1_1rtp__frame.html#a2d158e0aaf23398a8a3b02c95d06e366">payload_len</a> = 0; </div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> uint8_t* payload = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> </div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> uint8_t *dgram = <span class="keyword">nullptr</span>; <span class="comment">/* pointer to the UDP datagram (for internal use only) */</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <span class="keywordtype">size_t</span> dgram_size = 0; <span class="comment">/* size of the UDP datagram */</span></div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> };</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> </div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__header.html"> 89</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__header.html">rtcp_header</a> {</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a096fae3005310de937f1dab442c3b9d7"> 92</a></span> uint8_t <a class="code hl_variable" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a096fae3005310de937f1dab442c3b9d7">version</a> = 0;</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a4309061d7fae17a13db3d5eea71d6639"> 94</a></span> uint8_t <a class="code hl_variable" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a4309061d7fae17a13db3d5eea71d6639">padding</a> = 0;</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="keyword">union </span>{</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__header.html#af121a4cae797537270add50efd7a4e3d"> 97</a></span> uint8_t <a class="code hl_variable" href="structuvgrtp_1_1frame_1_1rtcp__header.html#af121a4cae797537270add50efd7a4e3d">count</a> = 0; </div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a829dd160ba7f473f3d6c5ff2d2dae5ab"> 99</a></span> uint8_t <a class="code hl_variable" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a829dd160ba7f473f3d6c5ff2d2dae5ab">pkt_subtype</a>; </div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a0ca5bbeb0619b824a07189220d27e3de"> 101</a></span> uint8_t <a class="code hl_variable" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a0ca5bbeb0619b824a07189220d27e3de">fmt</a>;</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> };</div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a08120f0b6526c473c6488803388c7855"> 104</a></span> uint8_t <a class="code hl_variable" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a08120f0b6526c473c6488803388c7855">pkt_type</a> = 0;</div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a1ed1871349edce32d60c3b1a33049fd0"> 106</a></span> uint16_t <a class="code hl_variable" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a1ed1871349edce32d60c3b1a33049fd0">length</a> = 0;</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> };</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> </div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html"> 110</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html">rtcp_sender_info</a> {</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#ae22a2bcad293efb1d642762d3eac3143"> 112</a></span> uint32_t <a class="code hl_variable" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#ae22a2bcad293efb1d642762d3eac3143">ntp_msw</a> = 0;</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a7c80f6082983dae0f3a5eea55a7c8ef6"> 114</a></span> uint32_t <a class="code hl_variable" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a7c80f6082983dae0f3a5eea55a7c8ef6">ntp_lsw</a> = 0;</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a2e9c3d1fe1b522a1d4c6fb4bc1fbdbdf"> 116</a></span> uint32_t <a class="code hl_variable" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a2e9c3d1fe1b522a1d4c6fb4bc1fbdbdf">rtp_ts</a> = 0;</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> uint32_t pkt_cnt = 0;</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a41290b62c283bf5d4c8f3a86ac5975ce"> 119</a></span> uint32_t <a class="code hl_variable" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a41290b62c283bf5d4c8f3a86ac5975ce">byte_cnt</a> = 0;</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> };</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> </div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__report__block.html"> 123</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__report__block.html">rtcp_report_block</a> {</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> uint32_t ssrc = 0;</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> uint8_t fraction = 0;</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> int32_t lost = 0;</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> uint32_t last_seq = 0;</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> uint32_t jitter = 0;</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> uint32_t lsr = 0; <span class="comment">/* last Sender Report */</span></div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> uint32_t dlsr = 0; <span class="comment">/* delay since last Sender Report */</span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span> };</div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> </div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__receiver__report.html"> 134</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__receiver__report.html">rtcp_receiver_report</a> {</div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__header.html">rtcp_header</a> header;</div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span> uint32_t ssrc = 0;</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> std::vector&lt;rtcp_report_block&gt; report_blocks;</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> };</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> </div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__sender__report.html"> 141</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sender__report.html">rtcp_sender_report</a> {</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__header.html">rtcp_header</a> header;</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> uint32_t ssrc = 0;</div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html">rtcp_sender_info</a> sender_info;</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> std::vector&lt;rtcp_report_block&gt; report_blocks;</div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> };</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> </div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__sdes__item.html"> 149</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sdes__item.html">rtcp_sdes_item</a> {</div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> uint8_t type = 0;</div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span> uint8_t length = 0;</div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span> uint8_t *data = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> };</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> </div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__sdes__chunk.html"> 156</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sdes__chunk.html">rtcp_sdes_chunk</a> {</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> uint32_t ssrc = 0;</div>
<div class="line"><a id="l00158" name="l00158"></a><span class="lineno"> 158</span> std::vector&lt;rtcp_sdes_item&gt; items;</div>
<div class="line"><a id="l00159" name="l00159"></a><span class="lineno"> 159</span> };</div>
<div class="line"><a id="l00160" name="l00160"></a><span class="lineno"> 160</span> </div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html"> 162</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html">rtcp_sdes_packet</a> {</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__header.html">rtcp_header</a> header;</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> std::vector&lt;rtcp_sdes_chunk&gt; chunks;</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"> 165</span> };</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> </div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html"> 168</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html">rtcp_app_packet</a> {</div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__header.html">rtcp_header</a> header;</div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> uint32_t ssrc = 0;</div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> uint8_t name[4] = {0};</div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> uint8_t *payload = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html#acefa08e5025c52c0e4a0ae14255f6d01"> 174</a></span> <span class="keywordtype">size_t</span> <a class="code hl_variable" href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html#acefa08e5025c52c0e4a0ae14255f6d01">payload_len</a> = 0;</div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> };</div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> </div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__fir.html"> 178</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__fir.html">rtcp_fir</a> {</div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> uint32_t ssrc = 0;</div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> uint8_t seq = 0;</div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> };</div>
<div class="line"><a id="l00183" name="l00183"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__sli.html"> 183</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sli.html">rtcp_sli</a> {</div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> uint16_t first = 0;</div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> uint16_t num = 0;</div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"> 186</span> uint8_t picture_id = 0;</div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"> 187</span> };</div>
<div class="line"><a id="l00189" name="l00189"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__rpsi.html"> 189</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__rpsi.html">rtcp_rpsi</a> {</div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"> 190</span> uint8_t pb = 0;</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> uint8_t pt = 0;</div>
<div class="line"><a id="l00192" name="l00192"></a><span class="lineno"> 192</span> uint8_t* str = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"> 193</span> };</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> </div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__fb__fci.html"> 196</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__fb__fci.html">rtcp_fb_fci</a> {</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span> </div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> <span class="keyword">union </span>{</div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__fir.html">rtcp_fir</a> fir;</div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sli.html">rtcp_sli</a> sli;</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__rpsi.html">rtcp_rpsi</a> rpsi;</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> };</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> };</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> </div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__fb__packet.html"> 206</a></span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__fb__packet.html">rtcp_fb_packet</a> {</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> <span class="keyword">struct </span><a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__header.html">rtcp_header</a> header;</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> uint32_t sender_ssrc = 0;</div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> uint32_t media_ssrc = 0;</div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span> std::vector&lt;rtcp_fb_fci&gt; items;</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"><a class="line" href="structuvgrtp_1_1frame_1_1rtcp__fb__packet.html#a03976200a7d64f842778f2880361f981"> 212</a></span> <span class="keywordtype">size_t</span> <a class="code hl_variable" href="structuvgrtp_1_1frame_1_1rtcp__fb__packet.html#a03976200a7d64f842778f2880361f981">payload_len</a> = 0;</div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> };</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> </div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> </div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> PACK(<span class="keyword">struct</span> zrtp_frame {</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> uint8_t version:4;</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> uint16_t unused:12;</div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> uint16_t seq = 0;</div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> uint32_t magic = 0;</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> uint32_t ssrc = 0;</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> uint8_t payload[1];</div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span> });</div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span> </div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> <span class="comment">/* Allocate an RTP frame</span></div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span><span class="comment"> *</span></div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span><span class="comment"> * First function allocates an empty RTP frame (no payload)</span></div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span><span class="comment"> *</span></div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span><span class="comment"> * Second allocates an RTP frame with payload of size &quot;payload_len&quot;,</span></div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span><span class="comment"> *</span></div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span><span class="comment"> * Third allocate an RTP frame with payload of size &quot;payload_len&quot;</span></div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span><span class="comment"> * + probation zone of size &quot;pz_size&quot; * MAX_PAYLOAD</span></div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span><span class="comment"> *</span></div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span><span class="comment"> * Return pointer to frame on success</span></div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span><span class="comment"> * Return nullptr on error and set rtp_errno to:</span></div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span><span class="comment"> * RTP_MEMORY_ERROR if allocation of memory failed */</span></div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> rtp_frame *alloc_rtp_frame();</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> rtp_frame *alloc_rtp_frame(<span class="keywordtype">size_t</span> payload_len);</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> </div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> </div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> <span class="comment">/* Deallocate RTP frame</span></div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span><span class="comment"> *</span></div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span><span class="comment"> * Return RTP_OK on successs</span></div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span><span class="comment"> * Return RTP_INVALID_VALUE if &quot;frame&quot; is nullptr */</span></div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> rtp_error_t dealloc_frame(<a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtp__frame.html">uvgrtp::frame::rtp_frame</a> *frame);</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> </div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span> </div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span> <span class="comment">/* Allocate ZRTP frame</span></div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span><span class="comment"> * Parameter &quot;payload_size&quot; defines the length of the frame</span></div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span><span class="comment"> *</span></div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span><span class="comment"> * Return pointer to frame on success</span></div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span><span class="comment"> * Return nullptr on error and set rtp_errno to:</span></div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span><span class="comment"> * RTP_MEMORY_ERROR if allocation of memory failed</span></div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span><span class="comment"> * RTP_INVALID_VALUE if &quot;payload_size&quot; is 0 */</span></div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> <span class="keywordtype">void</span>* alloc_zrtp_frame(<span class="keywordtype">size_t</span> payload_size);</div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> </div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> </div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> <span class="comment">/* Deallocate ZRTP frame</span></div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span><span class="comment"> *</span></div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"> 260</span><span class="comment"> * Return RTP_OK on successs</span></div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span><span class="comment"> * Return RTP_INVALID_VALUE if &quot;frame&quot; is nullptr */</span></div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> rtp_error_t dealloc_frame(uvgrtp::frame::zrtp_frame* frame);</div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"> 263</span> }</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span>}</div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> </div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"> 266</span><span class="keyword">namespace </span>uvg_rtp = uvgrtp;</div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__app__packet_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html">uvgrtp::frame::rtcp_app_packet</a></div><div class="ttdoc">See RFC 3550 section 6.7</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00168">frame.hh:168</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__app__packet_html_acefa08e5025c52c0e4a0ae14255f6d01"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html#acefa08e5025c52c0e4a0ae14255f6d01">uvgrtp::frame::rtcp_app_packet::payload_len</a></div><div class="ttdeci">size_t payload_len</div><div class="ttdoc">Size of the payload in bytes. Added by uvgRTP to help process the payload.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00174">frame.hh:174</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__fb__fci_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__fb__fci.html">uvgrtp::frame::rtcp_fb_fci</a></div><div class="ttdoc">RTCP Feedback Control Information, See RFC 4585 section 6.1.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00196">frame.hh:196</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__fb__packet_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__fb__packet.html">uvgrtp::frame::rtcp_fb_packet</a></div><div class="ttdoc">Feedback message. See RFC 4585 section 6.1.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00206">frame.hh:206</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__fb__packet_html_a03976200a7d64f842778f2880361f981"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__fb__packet.html#a03976200a7d64f842778f2880361f981">uvgrtp::frame::rtcp_fb_packet::payload_len</a></div><div class="ttdeci">size_t payload_len</div><div class="ttdoc">Size of the payload in bytes. Added by uvgRTP to help process the payload.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00212">frame.hh:212</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__fir_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__fir.html">uvgrtp::frame::rtcp_fir</a></div><div class="ttdoc">Full Intra Request, See RFC 5104 section 4.3.1.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00178">frame.hh:178</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__header_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a></div><div class="ttdoc">Header of for all RTCP packets defined in RFC 3550 section 6</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00089">frame.hh:89</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__header_html_a08120f0b6526c473c6488803388c7855"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__header.html#a08120f0b6526c473c6488803388c7855">uvgrtp::frame::rtcp_header::pkt_type</a></div><div class="ttdeci">uint8_t pkt_type</div><div class="ttdoc">Identifies the RTCP packet type.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00104">frame.hh:104</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__header_html_a096fae3005310de937f1dab442c3b9d7"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__header.html#a096fae3005310de937f1dab442c3b9d7">uvgrtp::frame::rtcp_header::version</a></div><div class="ttdeci">uint8_t version</div><div class="ttdoc">This field identifies the version of RTP. The version defined by RFC 3550 is two (2).</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00092">frame.hh:92</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__header_html_a0ca5bbeb0619b824a07189220d27e3de"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__header.html#a0ca5bbeb0619b824a07189220d27e3de">uvgrtp::frame::rtcp_header::fmt</a></div><div class="ttdeci">uint8_t fmt</div><div class="ttdoc">Feedback message type (FMT), specified in RFC 5104 section 4.3. Alternative to count and pkt_subtype.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00101">frame.hh:101</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__header_html_a1ed1871349edce32d60c3b1a33049fd0"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__header.html#a1ed1871349edce32d60c3b1a33049fd0">uvgrtp::frame::rtcp_header::length</a></div><div class="ttdeci">uint16_t length</div><div class="ttdoc">Length of the whole message measured in 32-bit words.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00106">frame.hh:106</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__header_html_a4309061d7fae17a13db3d5eea71d6639"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__header.html#a4309061d7fae17a13db3d5eea71d6639">uvgrtp::frame::rtcp_header::padding</a></div><div class="ttdeci">uint8_t padding</div><div class="ttdoc">Does this packet contain padding at the end.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00094">frame.hh:94</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__header_html_a829dd160ba7f473f3d6c5ff2d2dae5ab"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__header.html#a829dd160ba7f473f3d6c5ff2d2dae5ab">uvgrtp::frame::rtcp_header::pkt_subtype</a></div><div class="ttdeci">uint8_t pkt_subtype</div><div class="ttdoc">Subtype in APP packets. Alternative to count.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00099">frame.hh:99</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__header_html_af121a4cae797537270add50efd7a4e3d"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__header.html#af121a4cae797537270add50efd7a4e3d">uvgrtp::frame::rtcp_header::count</a></div><div class="ttdeci">uint8_t count</div><div class="ttdoc">Source count or report count. Alternative to pkt_subtype.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00097">frame.hh:97</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__receiver__report_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__receiver__report.html">uvgrtp::frame::rtcp_receiver_report</a></div><div class="ttdoc">See RFC 3550 section 6.4.2</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00134">frame.hh:134</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__report__block_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__report__block.html">uvgrtp::frame::rtcp_report_block</a></div><div class="ttdoc">See RFC 3550 section 6.4.1</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00123">frame.hh:123</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__rpsi_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__rpsi.html">uvgrtp::frame::rtcp_rpsi</a></div><div class="ttdoc">Reference Picture Selection Indication, See RFC 4585 section 6.3.3.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00189">frame.hh:189</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__sdes__chunk_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__sdes__chunk.html">uvgrtp::frame::rtcp_sdes_chunk</a></div><div class="ttdoc">See RFC 3550 section 6.5</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00156">frame.hh:156</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__sdes__item_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__sdes__item.html">uvgrtp::frame::rtcp_sdes_item</a></div><div class="ttdoc">See RFC 3550 section 6.5</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00149">frame.hh:149</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__sdes__packet_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html">uvgrtp::frame::rtcp_sdes_packet</a></div><div class="ttdoc">See RFC 3550 section 6.5</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00162">frame.hh:162</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__sender__info_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html">uvgrtp::frame::rtcp_sender_info</a></div><div class="ttdoc">See RFC 3550 section 6.4.1</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00110">frame.hh:110</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__sender__info_html_a2e9c3d1fe1b522a1d4c6fb4bc1fbdbdf"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a2e9c3d1fe1b522a1d4c6fb4bc1fbdbdf">uvgrtp::frame::rtcp_sender_info::rtp_ts</a></div><div class="ttdeci">uint32_t rtp_ts</div><div class="ttdoc">RTP timestamp corresponding to this NTP timestamp.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00116">frame.hh:116</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__sender__info_html_a41290b62c283bf5d4c8f3a86ac5975ce"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a41290b62c283bf5d4c8f3a86ac5975ce">uvgrtp::frame::rtcp_sender_info::byte_cnt</a></div><div class="ttdeci">uint32_t byte_cnt</div><div class="ttdoc">Also known as octet count.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00119">frame.hh:119</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__sender__info_html_a7c80f6082983dae0f3a5eea55a7c8ef6"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a7c80f6082983dae0f3a5eea55a7c8ef6">uvgrtp::frame::rtcp_sender_info::ntp_lsw</a></div><div class="ttdeci">uint32_t ntp_lsw</div><div class="ttdoc">NTP timestamp, least significant word.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00114">frame.hh:114</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__sender__info_html_ae22a2bcad293efb1d642762d3eac3143"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#ae22a2bcad293efb1d642762d3eac3143">uvgrtp::frame::rtcp_sender_info::ntp_msw</a></div><div class="ttdeci">uint32_t ntp_msw</div><div class="ttdoc">NTP timestamp, most significant word.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00112">frame.hh:112</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__sender__report_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__sender__report.html">uvgrtp::frame::rtcp_sender_report</a></div><div class="ttdoc">See RFC 3550 section 6.4.1</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00141">frame.hh:141</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__sli_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__sli.html">uvgrtp::frame::rtcp_sli</a></div><div class="ttdoc">Slice Loss Indication, See RFC 4585 section 6.3.2.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00183">frame.hh:183</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtp__frame_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtp__frame.html">uvgrtp::frame::rtp_frame</a></div><div class="ttdoc">See RFC 3550 section 5</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00068">frame.hh:68</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtp__frame_html_a2d158e0aaf23398a8a3b02c95d06e366"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtp__frame.html#a2d158e0aaf23398a8a3b02c95d06e366">uvgrtp::frame::rtp_frame::payload_len</a></div><div class="ttdeci">size_t payload_len</div><div class="ttdoc">Length of the packet payload in bytes added by uvgRTP to help process the frame.</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00079">frame.hh:79</a></div></div>
<div class="ttc" id="autil_8hh_html"><div class="ttname"><a href="util_8hh.html">util.hh</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -86,7 +86,7 @@ $(function() {
<li>configure_ctx()&#160;:&#160;<a class="el" href="classuvgrtp_1_1media__stream.html#a2cee4fe3bf423ec317b4a3eacc136238">uvgrtp::media_stream</a></li>
<li>context()&#160;:&#160;<a class="el" href="classuvgrtp_1_1context.html#a98be18c2848404549cfadf910ba1573a">uvgrtp::context</a></li>
<li>count&#160;:&#160;<a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html#af121a4cae797537270add50efd7a4e3d">uvgrtp::frame::rtcp_header</a></li>
<li>create_session()&#160;:&#160;<a class="el" href="classuvgrtp_1_1context.html#a81b2dc23ebf64d1153410376503eccb4">uvgrtp::context</a></li>
<li>create_session()&#160;:&#160;<a class="el" href="classuvgrtp_1_1context.html#ae4417159d9b136b2d696fb7571fc3266">uvgrtp::context</a></li>
<li>create_stream()&#160;:&#160;<a class="el" href="classuvgrtp_1_1session.html#a0b9fb48e95cbfdb76fd9f61e8cafe8e4">uvgrtp::session</a></li>
<li>crypto_enabled()&#160;:&#160;<a class="el" href="classuvgrtp_1_1context.html#a0ddad3f0a78b6a4b13f2b8fdd15c9087">uvgrtp::context</a></li>
</ul>
@ -98,7 +98,13 @@ $(function() {
</ul>
<h3><a id="index_f" name="index_f"></a>- f -</h3><ul>
<li>fmt&#160;:&#160;<a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a0ca5bbeb0619b824a07189220d27e3de">uvgrtp::frame::rtcp_header</a></li>
</ul>
<h3><a id="index_g" name="index_g"></a>- g -</h3><ul>
<li>get_configuration_value()&#160;:&#160;<a class="el" href="classuvgrtp_1_1media__stream.html#acee8dd45e8c6ebbb1af52bb54dd7c40d">uvgrtp::media_stream</a></li>
<li>get_rtcp()&#160;:&#160;<a class="el" href="classuvgrtp_1_1media__stream.html#ab339f15d5a852beacd901b7b78e887ea">uvgrtp::media_stream</a></li>
<li>get_ssrc()&#160;:&#160;<a class="el" href="classuvgrtp_1_1media__stream.html#a8796cb34e0e6c61af8cabd13dd6793b5">uvgrtp::media_stream</a></li>
</ul>
@ -127,7 +133,7 @@ $(function() {
<h3><a id="index_p" name="index_p"></a>- p -</h3><ul>
<li>padding&#160;:&#160;<a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a4309061d7fae17a13db3d5eea71d6639">uvgrtp::frame::rtcp_header</a></li>
<li>payload_len&#160;:&#160;<a class="el" href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html#acefa08e5025c52c0e4a0ae14255f6d01">uvgrtp::frame::rtcp_app_packet</a>, <a class="el" href="structuvgrtp_1_1frame_1_1rtp__frame.html#a2d158e0aaf23398a8a3b02c95d06e366">uvgrtp::frame::rtp_frame</a></li>
<li>payload_len&#160;:&#160;<a class="el" href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html#acefa08e5025c52c0e4a0ae14255f6d01">uvgrtp::frame::rtcp_app_packet</a>, <a class="el" href="structuvgrtp_1_1frame_1_1rtcp__fb__packet.html#a03976200a7d64f842778f2880361f981">uvgrtp::frame::rtcp_fb_packet</a>, <a class="el" href="structuvgrtp_1_1frame_1_1rtp__frame.html#a2d158e0aaf23398a8a3b02c95d06e366">uvgrtp::frame::rtp_frame</a></li>
<li>pkt_subtype&#160;:&#160;<a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a829dd160ba7f473f3d6c5ff2d2dae5ab">uvgrtp::frame::rtcp_header</a></li>
<li>pkt_type&#160;:&#160;<a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a08120f0b6526c473c6488803388c7855">uvgrtp::frame::rtcp_header</a></li>
<li>pull_frame()&#160;:&#160;<a class="el" href="classuvgrtp_1_1media__stream.html#ab0c854a4c36572f91008a8e1e49e38bb">uvgrtp::media_stream</a></li>
@ -137,6 +143,7 @@ $(function() {
<h3><a id="index_r" name="index_r"></a>- r -</h3><ul>
<li>remove_all_hooks()&#160;:&#160;<a class="el" href="classuvgrtp_1_1rtcp.html#a81198428cc697c0c7cbb2a4191f294d8">uvgrtp::rtcp</a></li>
<li>remove_send_app_hook()&#160;:&#160;<a class="el" href="classuvgrtp_1_1rtcp.html#a27adb6b5965dab3918bd02a2e7a2dfd2">uvgrtp::rtcp</a></li>
<li>rtp_ts&#160;:&#160;<a class="el" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a2e9c3d1fe1b522a1d4c6fb4bc1fbdbdf">uvgrtp::frame::rtcp_sender_info</a></li>
</ul>
@ -146,6 +153,7 @@ $(function() {
<li>send_bye_packet()&#160;:&#160;<a class="el" href="classuvgrtp_1_1rtcp.html#a2b831698320212e382e3d565e62d31c4">uvgrtp::rtcp</a></li>
<li>send_sdes_packet()&#160;:&#160;<a class="el" href="classuvgrtp_1_1rtcp.html#a65680d4ba308fc8cb92fd41f0d313c84">uvgrtp::rtcp</a></li>
<li>set_ts_info()&#160;:&#160;<a class="el" href="classuvgrtp_1_1rtcp.html#a5d0d06f9b4b7779d96d8d60938627316">uvgrtp::rtcp</a></li>
<li>start_zrtp()&#160;:&#160;<a class="el" href="classuvgrtp_1_1media__stream.html#a9e22ebbe9f903abe0fcae267f98cafeb">uvgrtp::media_stream</a></li>
</ul>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -80,7 +80,7 @@ $(function() {
<h3><a id="index_c" name="index_c"></a>- c -</h3><ul>
<li>configure_ctx()&#160;:&#160;<a class="el" href="classuvgrtp_1_1media__stream.html#a2cee4fe3bf423ec317b4a3eacc136238">uvgrtp::media_stream</a></li>
<li>context()&#160;:&#160;<a class="el" href="classuvgrtp_1_1context.html#a98be18c2848404549cfadf910ba1573a">uvgrtp::context</a></li>
<li>create_session()&#160;:&#160;<a class="el" href="classuvgrtp_1_1context.html#a81b2dc23ebf64d1153410376503eccb4">uvgrtp::context</a></li>
<li>create_session()&#160;:&#160;<a class="el" href="classuvgrtp_1_1context.html#ae4417159d9b136b2d696fb7571fc3266">uvgrtp::context</a></li>
<li>create_stream()&#160;:&#160;<a class="el" href="classuvgrtp_1_1session.html#a0b9fb48e95cbfdb76fd9f61e8cafe8e4">uvgrtp::session</a></li>
<li>crypto_enabled()&#160;:&#160;<a class="el" href="classuvgrtp_1_1context.html#a0ddad3f0a78b6a4b13f2b8fdd15c9087">uvgrtp::context</a></li>
</ul>
@ -93,6 +93,7 @@ $(function() {
<h3><a id="index_g" name="index_g"></a>- g -</h3><ul>
<li>get_configuration_value()&#160;:&#160;<a class="el" href="classuvgrtp_1_1media__stream.html#acee8dd45e8c6ebbb1af52bb54dd7c40d">uvgrtp::media_stream</a></li>
<li>get_rtcp()&#160;:&#160;<a class="el" href="classuvgrtp_1_1media__stream.html#ab339f15d5a852beacd901b7b78e887ea">uvgrtp::media_stream</a></li>
<li>get_ssrc()&#160;:&#160;<a class="el" href="classuvgrtp_1_1media__stream.html#a8796cb34e0e6c61af8cabd13dd6793b5">uvgrtp::media_stream</a></li>
</ul>
@ -116,6 +117,7 @@ $(function() {
<h3><a id="index_r" name="index_r"></a>- r -</h3><ul>
<li>remove_all_hooks()&#160;:&#160;<a class="el" href="classuvgrtp_1_1rtcp.html#a81198428cc697c0c7cbb2a4191f294d8">uvgrtp::rtcp</a></li>
<li>remove_send_app_hook()&#160;:&#160;<a class="el" href="classuvgrtp_1_1rtcp.html#a27adb6b5965dab3918bd02a2e7a2dfd2">uvgrtp::rtcp</a></li>
</ul>
@ -124,6 +126,7 @@ $(function() {
<li>send_bye_packet()&#160;:&#160;<a class="el" href="classuvgrtp_1_1rtcp.html#a2b831698320212e382e3d565e62d31c4">uvgrtp::rtcp</a></li>
<li>send_sdes_packet()&#160;:&#160;<a class="el" href="classuvgrtp_1_1rtcp.html#a65680d4ba308fc8cb92fd41f0d313c84">uvgrtp::rtcp</a></li>
<li>set_ts_info()&#160;:&#160;<a class="el" href="classuvgrtp_1_1rtcp.html#a5d0d06f9b4b7779d96d8d60938627316">uvgrtp::rtcp</a></li>
<li>start_zrtp()&#160;:&#160;<a class="el" href="classuvgrtp_1_1media__stream.html#a9e22ebbe9f903abe0fcae267f98cafeb">uvgrtp::media_stream</a></li>
</ul>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -73,11 +73,12 @@ $(function() {
&#160;<ul>
<li>byte_cnt&#160;:&#160;<a class="el" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a41290b62c283bf5d4c8f3a86ac5975ce">uvgrtp::frame::rtcp_sender_info</a></li>
<li>count&#160;:&#160;<a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html#af121a4cae797537270add50efd7a4e3d">uvgrtp::frame::rtcp_header</a></li>
<li>fmt&#160;:&#160;<a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a0ca5bbeb0619b824a07189220d27e3de">uvgrtp::frame::rtcp_header</a></li>
<li>length&#160;:&#160;<a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a1ed1871349edce32d60c3b1a33049fd0">uvgrtp::frame::rtcp_header</a></li>
<li>ntp_lsw&#160;:&#160;<a class="el" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a7c80f6082983dae0f3a5eea55a7c8ef6">uvgrtp::frame::rtcp_sender_info</a></li>
<li>ntp_msw&#160;:&#160;<a class="el" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#ae22a2bcad293efb1d642762d3eac3143">uvgrtp::frame::rtcp_sender_info</a></li>
<li>padding&#160;:&#160;<a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a4309061d7fae17a13db3d5eea71d6639">uvgrtp::frame::rtcp_header</a></li>
<li>payload_len&#160;:&#160;<a class="el" href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html#acefa08e5025c52c0e4a0ae14255f6d01">uvgrtp::frame::rtcp_app_packet</a>, <a class="el" href="structuvgrtp_1_1frame_1_1rtp__frame.html#a2d158e0aaf23398a8a3b02c95d06e366">uvgrtp::frame::rtp_frame</a></li>
<li>payload_len&#160;:&#160;<a class="el" href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html#acefa08e5025c52c0e4a0ae14255f6d01">uvgrtp::frame::rtcp_app_packet</a>, <a class="el" href="structuvgrtp_1_1frame_1_1rtcp__fb__packet.html#a03976200a7d64f842778f2880361f981">uvgrtp::frame::rtcp_fb_packet</a>, <a class="el" href="structuvgrtp_1_1frame_1_1rtp__frame.html#a2d158e0aaf23398a8a3b02c95d06e366">uvgrtp::frame::rtp_frame</a></li>
<li>pkt_subtype&#160;:&#160;<a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a829dd160ba7f473f3d6c5ff2d2dae5ab">uvgrtp::frame::rtcp_header</a></li>
<li>pkt_type&#160;:&#160;<a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a08120f0b6526c473c6488803388c7855">uvgrtp::frame::rtcp_header</a></li>
<li>rtp_ts&#160;:&#160;<a class="el" href="structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a2e9c3d1fe1b522a1d4c6fb4bc1fbdbdf">uvgrtp::frame::rtcp_sender_info</a></li>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -79,6 +79,8 @@ $(function() {
<li>RCC_FPS_NUMERATOR&#160;:&#160;<a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa51034849ac8a4078f0c3b5198b92ab54">util.hh</a></li>
<li>RCC_MTU_SIZE&#160;:&#160;<a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa7667fb72b42a2c11991b4879619f9f83">util.hh</a></li>
<li>RCC_PKT_MAX_DELAY&#160;:&#160;<a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa5ac1245e18a420489083adddfa97b135">util.hh</a></li>
<li>RCC_POLL_TIMEOUT&#160;:&#160;<a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa97b5a85e591372f65274238d0d1a73f8">util.hh</a></li>
<li>RCC_REMOTE_SSRC&#160;:&#160;<a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa15b4ff7295eae57338f4c3864c5146b7">util.hh</a></li>
<li>RCC_RING_BUFFER_SIZE&#160;:&#160;<a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa9be732aa645fc09adde5c84a2d07e0f6">util.hh</a></li>
<li>RCC_SESSION_BANDWIDTH&#160;:&#160;<a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa9a5a95ba2f189fb0350cbc44ba2b95c7">util.hh</a></li>
<li>RCC_SSRC&#160;:&#160;<a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fad93dccbcd813299ea0b976d4dea79937">util.hh</a></li>
@ -93,6 +95,7 @@ $(function() {
<li>RCE_PACE_FRAGMENT_SENDING&#160;:&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa836063a6ef3da262d0805cf1571ab35c">util.hh</a></li>
<li>RCE_RECEIVE_ONLY&#160;:&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf89817eda89d32c43e18ed0645ac4d73">util.hh</a></li>
<li>RCE_RTCP&#160;:&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afab1342138e5af3f03d6eaf1378382bf3d">util.hh</a></li>
<li>RCE_RTCP_MUX&#160;:&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa3dc772b2aab5eae239afae6cef8c68a7">util.hh</a></li>
<li>RCE_SEND_ONLY&#160;:&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa6bb67e1962af60c05c6062fb6f1df374">util.hh</a></li>
<li>RCE_SRTP&#160;:&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf235cba606675b9c38284ee1a491696b">util.hh</a></li>
<li>RCE_SRTP_AUTHENTICATE_RTP&#160;:&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa820625b96886d955bc42e0cbc52cdd1e">util.hh</a></li>
@ -113,6 +116,7 @@ $(function() {
<li>RTP_ERROR&#160;:&#160;<a class="el" href="util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387b">util.hh</a></li>
<li>RTP_FLAGS&#160;:&#160;<a class="el" href="util_8hh.html#af03a75996471fc531742cd640c7caf2d">util.hh</a></li>
<li>RTP_FORMAT&#160;:&#160;<a class="el" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96">util.hh</a></li>
<li>RTP_FORMAT_ATLAS&#160;:&#160;<a class="el" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a81c1df94bbe9478ae6c1ea212c9a20ee">util.hh</a></li>
<li>RTP_FORMAT_DVI4_32&#160;:&#160;<a class="el" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96abf1f20482ba40b0a4161f339978c65c8">util.hh</a></li>
<li>RTP_FORMAT_DVI4_441&#160;:&#160;<a class="el" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96aa4e91d147dcc0696bae592e0de3ae295">util.hh</a></li>
<li>RTP_FORMAT_DVI4_64&#160;:&#160;<a class="el" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ae0cb5522bf562899f9001adeb669f3ef">util.hh</a></li>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -79,6 +79,8 @@ $(function() {
<li>RCC_FPS_NUMERATOR&#160;:&#160;<a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa51034849ac8a4078f0c3b5198b92ab54">util.hh</a></li>
<li>RCC_MTU_SIZE&#160;:&#160;<a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa7667fb72b42a2c11991b4879619f9f83">util.hh</a></li>
<li>RCC_PKT_MAX_DELAY&#160;:&#160;<a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa5ac1245e18a420489083adddfa97b135">util.hh</a></li>
<li>RCC_POLL_TIMEOUT&#160;:&#160;<a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa97b5a85e591372f65274238d0d1a73f8">util.hh</a></li>
<li>RCC_REMOTE_SSRC&#160;:&#160;<a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa15b4ff7295eae57338f4c3864c5146b7">util.hh</a></li>
<li>RCC_RING_BUFFER_SIZE&#160;:&#160;<a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa9be732aa645fc09adde5c84a2d07e0f6">util.hh</a></li>
<li>RCC_SESSION_BANDWIDTH&#160;:&#160;<a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa9a5a95ba2f189fb0350cbc44ba2b95c7">util.hh</a></li>
<li>RCC_SSRC&#160;:&#160;<a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fad93dccbcd813299ea0b976d4dea79937">util.hh</a></li>
@ -93,6 +95,7 @@ $(function() {
<li>RCE_PACE_FRAGMENT_SENDING&#160;:&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa836063a6ef3da262d0805cf1571ab35c">util.hh</a></li>
<li>RCE_RECEIVE_ONLY&#160;:&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf89817eda89d32c43e18ed0645ac4d73">util.hh</a></li>
<li>RCE_RTCP&#160;:&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afab1342138e5af3f03d6eaf1378382bf3d">util.hh</a></li>
<li>RCE_RTCP_MUX&#160;:&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa3dc772b2aab5eae239afae6cef8c68a7">util.hh</a></li>
<li>RCE_SEND_ONLY&#160;:&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa6bb67e1962af60c05c6062fb6f1df374">util.hh</a></li>
<li>RCE_SRTP&#160;:&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf235cba606675b9c38284ee1a491696b">util.hh</a></li>
<li>RCE_SRTP_AUTHENTICATE_RTP&#160;:&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa820625b96886d955bc42e0cbc52cdd1e">util.hh</a></li>
@ -108,6 +111,7 @@ $(function() {
<li>RTP_AUTH_TAG_MISMATCH&#160;:&#160;<a class="el" href="util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba6d62ec0a7250a3db7c0f3a13280ecc65">util.hh</a></li>
<li>RTP_BIND_ERROR&#160;:&#160;<a class="el" href="util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba000c0166a0c38686389fc2eba0ddc458">util.hh</a></li>
<li>RTP_COPY&#160;:&#160;<a class="el" href="util_8hh.html#af03a75996471fc531742cd640c7caf2dab1d5797a23c37a33168046a2ae6aef6a">util.hh</a></li>
<li>RTP_FORMAT_ATLAS&#160;:&#160;<a class="el" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a81c1df94bbe9478ae6c1ea212c9a20ee">util.hh</a></li>
<li>RTP_FORMAT_DVI4_32&#160;:&#160;<a class="el" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96abf1f20482ba40b0a4161f339978c65c8">util.hh</a></li>
<li>RTP_FORMAT_DVI4_441&#160;:&#160;<a class="el" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96aa4e91d147dcc0696bae592e0de3ae295">util.hh</a></li>
<li>RTP_FORMAT_DVI4_64&#160;:&#160;<a class="el" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ae0cb5522bf562899f9001adeb669f3ef">util.hh</a></li>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -73,22 +73,24 @@ $(function() {
<div class="headertitle"><div class="title">uvgRTP </div></div>
</div><!--header-->
<div class="contents">
<div class="textblock"><p><a class="anchor" id="md_html_INDEX"></a> uvgRTP is an <em>Real-Time Transport Protocol (RTP)</em> library written in C++ with a focus on simple to use and high-efficiency media delivery over the Internet. It features an intuitive and easy-to-use <em>Application Programming Interface (API)</em>, built-in support for transporting <em>Versatile Video Coding (VVC)</em>, <em>High Efficiency Video Coding (HEVC)</em>, <em>Advanced Video Coding (AVC)</em> encoded video and Opus encoded audio. uvgRTP also supports <em>End-to-End Encrypted (E2EE)</em> media delivery using the combination of <em>Secure RTP (SRTP)</em> and ZRTP. According to <a href="https://researchportal.tuni.fi/en/publications/open-source-rtp-library-for-high-speed-4k-hevc-video-streaming">our measurements</a> uvgRTP is able to reach a goodput of 600 MB/s (4K at 700fps) for HEVC stream when measured in LAN. The CPU usage is relative to the goodput value, and therefore smaller streams have a very small CPU usage.</p>
<p>uvgRTP is licensed under the permissive BSD 2-Clause License. This cross-platform library can be run on both Linux and Windows operating systems. Mac OS is also supported, but the support relies on community contributions. For SRTP/ZRTP support, uvgRTP uses <a href="https://www.cryptopp.com/">Crypto++ library</a>.</p>
<div class="textblock"><p><a class="anchor" id="md_html_INDEX"></a> uvgRTP is an <em>Real-Time Transport Protocol (RTP)</em> library written in C++ with a focus on simple to use and high-efficiency media delivery over the Internet. It features an intuitive and easy-to-use <em>Application Programming Interface (API)</em>, built-in support for transporting <em>Versatile Video Coding (VVC)</em>, <em>High Efficiency Video Coding (HEVC)</em>, <em>Advanced Video Coding (AVC)</em> encoded video and Opus encoded audio. uvgRTP also supports <em>End-to-End Encrypted (E2EE)</em> media delivery using the combination of <em>Secure RTP (SRTP)</em> and ZRTP. uvgRTP has been designed to minimize memory operations to reduce its CPU usage and latency.</p>
<p>uvgRTP is licensed under the permissive BSD 2-Clause License. This cross-platform library can be run on both Linux and Windows operating systems. Mac OS is also supported, but the support relies on community contributions. For SRTP/ZRTP support, uvgRTP uses the <a href="https://www.cryptopp.com/">Crypto++ library</a>.</p>
<p>Currently supported specifications:</p><ul>
<li><a href="https://tools.ietf.org/html/rfc3550">RFC 3550: RTP: A Transport Protocol for Real-Time Applications</a></li>
<li><a href="https://tools.ietf.org/html/rfc3551">RFC 3551: RTP Profile for Audio and Video Conferences</a></li>
<li><a href="https://tools.ietf.org/html/rfc6184">RFC 6184: RTP Payload Format for H.264 Video</a></li>
<li><a href="https://tools.ietf.org/html/rfc7798">RFC 7798: RTP Payload Format for High Efficiency Video Coding (HEVC)</a></li>
<li><a href="https://tools.ietf.org/html/draft-ietf-avtcore-rtp-vvc-18">Draft: RTP Payload Format for Versatile Video Coding (VVC)</a></li>
<li><a href="https://tools.ietf.org/html/rfc7587">RFC 7587: RTP Payload Format for the Opus Speech and Audio Codec</a></li>
<li><a href="https://tools.ietf.org/html/rfc3711">RFC 3711: The Secure Real-time Transport Protocol (SRTP)</a></li>
<li><a href="https://tools.ietf.org/html/rfc6189">RFC 6189: ZRTP: Media Path Key Agreement for Unicast Secure RTP</a></li>
<li><a href="https://datatracker.ietf.org/doc/html/rfc3550">RFC 3550: RTP: A Transport Protocol for Real-Time Applications</a></li>
<li><a href="https://datatracker.ietf.org/doc/html/rfc3551">RFC 3551: RTP Profile for Audio and Video Conferences</a></li>
<li><a href="https://datatracker.ietf.org/doc/html/rfc6184">RFC 6184: RTP Payload Format for H.264 Video</a></li>
<li><a href="https://datatracker.ietf.org/doc/html/rfc7798">RFC 7798: RTP Payload Format for High Efficiency Video Coding (HEVC)</a></li>
<li><a href="https://datatracker.ietf.org/doc/html/rfc9328">RFC 9328: RTP Payload Format for Versatile Video Coding (VVC)</a></li>
<li><a href="https://datatracker.ietf.org/doc/html/rfc7587">RFC 7587: RTP Payload Format for the Opus Speech and Audio Codec</a></li>
<li><a href="https://datatracker.ietf.org/doc/draft-ietf-avtcore-rtp-v3c/">RFC draft: RTP Payload Format for Visual Volumetric Video-based Coding (V3C)</a></li>
<li><a href="https://datatracker.ietf.org/doc/html/rfc3711">RFC 3711: The Secure Real-time Transport Protocol (SRTP)</a></li>
<li><a href="https://datatracker.ietf.org/doc/html/rfc6189">RFC 6189: ZRTP: Media Path Key Agreement for Unicast Secure RTP</a></li>
</ul>
<h1><a class="anchor" id="autotoc_md1"></a>
Notable features</h1>
<ul>
<li>AVC/HEVC/VVC video streaming, including packetization</li>
<li>V3C Atlas streaming, including packetization</li>
<li>Ready support for many formats which don't need packetization, including Opus</li>
<li>Delivery encryption with SRTP</li>
<li>Encryption key negotiation with ZRTP</li>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -85,164 +85,184 @@ $(function() {
<div class="line"><a id="l00006" name="l00006"></a><span class="lineno"> 6</span><span class="preprocessor">#include &lt;memory&gt;</span></div>
<div class="line"><a id="l00007" name="l00007"></a><span class="lineno"> 7</span><span class="preprocessor">#include &lt;string&gt;</span></div>
<div class="line"><a id="l00008" name="l00008"></a><span class="lineno"> 8</span><span class="preprocessor">#include &lt;atomic&gt;</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span> </div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span><span class="preprocessor">#ifndef _WIN32</span></div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="preprocessor">#include &lt;sys/socket.h&gt;</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="preprocessor">#include &lt;netinet/in.h&gt;</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor">#include &lt;ws2ipdef.h&gt;</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="keyword">namespace </span>uvgrtp {</div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span> </div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> <span class="comment">// forward declarations</span></div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> <span class="keyword">class </span>rtp;</div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> <span class="keyword">class </span>rtcp;</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> </div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> <span class="keyword">class </span>zrtp;</div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span>base_srtp;</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">class </span>srtp;</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> <span class="keyword">class </span>srtcp;</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> </div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">class </span>reception_flow;</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">class </span>holepuncher;</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">class </span>socket;</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> </div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">namespace </span>frame {</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">struct </span>rtp_frame;</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> }</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> </div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">namespace </span>formats {</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> <span class="keyword">class </span>media;</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> }</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> </div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html"> 50</a></span> <span class="keyword">class </span><a class="code hl_class" href="classuvgrtp_1_1media__stream.html">media_stream</a> {</div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> <a class="code hl_class" href="classuvgrtp_1_1media__stream.html">media_stream</a>(std::string cname, std::string remote_addr, std::string local_addr, uint16_t src_port, uint16_t dst_port,</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> rtp_format_t fmt, <span class="keywordtype">int</span> rce_flags);</div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> <a class="code hl_class" href="classuvgrtp_1_1media__stream.html">~media_stream</a>();</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> </div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> <span class="comment">/* Initialize traditional RTP session</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span><span class="comment"> * Allocate Connection/Reader/Writer objects and initialize them</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span><span class="comment"> *</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span><span class="comment"> * Return RTP_OK on success</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="comment"> * Return RTP_MEMORY_ERROR if allocation failed</span></div>
<div class="line"><a id="l00009" name="l00009"></a><span class="lineno"> 9</span><span class="preprocessor">#include &lt;cstdint&gt;</span></div>
<div class="line"><a id="l00010" name="l00010"></a><span class="lineno"> 10</span> </div>
<div class="line"><a id="l00011" name="l00011"></a><span class="lineno"> 11</span><span class="preprocessor">#ifndef _WIN32</span></div>
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span><span class="preprocessor">#include &lt;sys/socket.h&gt;</span></div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span><span class="preprocessor">#include &lt;netinet/in.h&gt;</span></div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span><span class="preprocessor">#else</span></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span><span class="preprocessor">#include &lt;ws2ipdef.h&gt;</span></div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span><span class="preprocessor">#endif</span></div>
<div class="line"><a id="l00017" name="l00017"></a><span class="lineno"> 17</span><span class="keyword">namespace </span>uvgrtp {</div>
<div class="line"><a id="l00018" name="l00018"></a><span class="lineno"> 18</span> </div>
<div class="line"><a id="l00019" name="l00019"></a><span class="lineno"> 19</span> <span class="comment">// forward declarations</span></div>
<div class="line"><a id="l00020" name="l00020"></a><span class="lineno"> 20</span> <span class="keyword">class </span>rtp;</div>
<div class="line"><a id="l00021" name="l00021"></a><span class="lineno"> 21</span> <span class="keyword">class </span>rtcp;</div>
<div class="line"><a id="l00022" name="l00022"></a><span class="lineno"> 22</span> </div>
<div class="line"><a id="l00023" name="l00023"></a><span class="lineno"> 23</span> <span class="keyword">class </span>zrtp;</div>
<div class="line"><a id="l00024" name="l00024"></a><span class="lineno"> 24</span> <span class="keyword">class </span>base_srtp;</div>
<div class="line"><a id="l00025" name="l00025"></a><span class="lineno"> 25</span> <span class="keyword">class </span>srtp;</div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">class </span>srtcp;</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> </div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">class </span>reception_flow;</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">class </span>holepuncher;</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">class </span>socket;</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> <span class="keyword">class </span>socketfactory;</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">class </span>rtcp_reader;</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> </div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> <span class="keyword">namespace </span>frame {</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">struct </span>rtp_frame;</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> }</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">namespace </span>formats {</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="keyword">class </span>media;</div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> }</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> </div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html"> 53</a></span> <span class="keyword">class </span><a class="code hl_class" href="classuvgrtp_1_1media__stream.html">media_stream</a> {</div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <a class="code hl_class" href="classuvgrtp_1_1media__stream.html">media_stream</a>(std::string cname, std::string remote_addr, std::string local_addr, uint16_t src_port, uint16_t dst_port,</div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> rtp_format_t fmt, std::shared_ptr&lt;uvgrtp::socketfactory&gt; sfp, <span class="keywordtype">int</span> rce_flags);</div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <a class="code hl_class" href="classuvgrtp_1_1media__stream.html">~media_stream</a>();</div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <span class="comment">/* Initialize traditional RTP session.</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span><span class="comment"> * Allocate Connection/Reader/Writer objects and initialize them</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span><span class="comment"> *</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="comment"> * Other error return codes are defined in {conn,writer,reader}.hh */</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> rtp_error_t init();</div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> </div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> <span class="comment">/* Initialize Secure RTP session</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span><span class="comment"> * Allocate Connection/Reader/Writer objects and initialize them</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span><span class="comment"> *</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span><span class="comment"> * Return RTP_OK on success</span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="comment"> * Return RTP_MEMORY_ERROR if allocation failed</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span><span class="comment"> * Return RTP_OK on success</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span><span class="comment"> * Return RTP_MEMORY_ERROR if allocation failed</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span><span class="comment"> *</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span><span class="comment"> * Other error return codes are defined in {conn,writer,reader}.hh */</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> rtp_error_t init(std::shared_ptr&lt;uvgrtp::zrtp&gt; zrtp);</div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> </div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> <span class="comment">/* Initialize Secure RTP session with automatic ZRTP negotiation</span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span><span class="comment"> * Allocate Connection/Reader/Writer objects and initialize them</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span><span class="comment"> *</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="comment"> * TODO document all error codes!</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="comment"> *</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="comment"> * Other error return codes are defined in {conn,writer,reader,srtp}.hh */</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> rtp_error_t init(std::shared_ptr&lt;uvgrtp::zrtp&gt; zrtp);</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> </div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a0950a91bd645cbf842d8218ae4171aed"> 94</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1media__stream.html#a0950a91bd645cbf842d8218ae4171aed">add_srtp_ctx</a>(uint8_t *key, uint8_t *salt);</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> </div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a157e9973d92b65e82914d4028690c770"> 118</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1media__stream.html#a157e9973d92b65e82914d4028690c770">push_frame</a>(uint8_t *data, <span class="keywordtype">size_t</span> data_len, <span class="keywordtype">int</span> rtp_flags);</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> </div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a068a0963e06f789b4e4310a45cbe4409"> 142</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1media__stream.html#a068a0963e06f789b4e4310a45cbe4409">push_frame</a>(std::unique_ptr&lt;uint8_t[]&gt; data, <span class="keywordtype">size_t</span> data_len, <span class="keywordtype">int</span> rtp_flags);</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> </div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#ac0cb1cf34b639c9ba71b047b3ba26d22"> 173</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1media__stream.html#ac0cb1cf34b639c9ba71b047b3ba26d22">push_frame</a>(uint8_t *data, <span class="keywordtype">size_t</span> data_len, uint32_t ts, <span class="keywordtype">int</span> rtp_flags);</div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> </div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a5577c57f1bdd5b888aa4e8c4f939eba7"> 207</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1media__stream.html#a5577c57f1bdd5b888aa4e8c4f939eba7">push_frame</a>(uint8_t* data, <span class="keywordtype">size_t</span> data_len, uint32_t ts, uint64_t ntp_ts, <span class="keywordtype">int</span> rtp_flags);</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> </div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#abe9099254c6bf16f255f5f50441ec9d2"> 238</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1media__stream.html#abe9099254c6bf16f255f5f50441ec9d2">push_frame</a>(std::unique_ptr&lt;uint8_t[]&gt; data, <span class="keywordtype">size_t</span> data_len, uint32_t ts, <span class="keywordtype">int</span> rtp_flags);</div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> </div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a56d2a209b2647d0f3ee7948e8cf45438"> 272</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1media__stream.html#a56d2a209b2647d0f3ee7948e8cf45438">push_frame</a>(std::unique_ptr&lt;uint8_t[]&gt; data, <span class="keywordtype">size_t</span> data_len, uint32_t ts, uint64_t ntp_ts, <span class="keywordtype">int</span> rtp_flags);</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> </div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#ab0c854a4c36572f91008a8e1e49e38bb"> 282</a></span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtp__frame.html">uvgrtp::frame::rtp_frame</a> *<a class="code hl_function" href="classuvgrtp_1_1media__stream.html#ab0c854a4c36572f91008a8e1e49e38bb">pull_frame</a>();</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> </div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a466067ad9924a52530c62c53c1b397b4"> 294</a></span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtp__frame.html">uvgrtp::frame::rtp_frame</a> *<a class="code hl_function" href="classuvgrtp_1_1media__stream.html#a466067ad9924a52530c62c53c1b397b4">pull_frame</a>(<span class="keywordtype">size_t</span> timeout_ms);</div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> </div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a74a558b23866976e52c5903996544a27"> 314</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1media__stream.html#a74a558b23866976e52c5903996544a27">install_receive_hook</a>(<span class="keywordtype">void</span> *arg, <span class="keywordtype">void</span> (*hook)(<span class="keywordtype">void</span> *, <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtp__frame.html">uvgrtp::frame::rtp_frame</a> *));</div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> </div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a2cee4fe3bf423ec317b4a3eacc136238"> 325</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1media__stream.html#a2cee4fe3bf423ec317b4a3eacc136238">configure_ctx</a>(<span class="keywordtype">int</span> rcc_flag, ssize_t value);</div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"> 326</span> </div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span> </div>
<div class="line"><a id="l00329" name="l00329"></a><span class="lineno"> 329</span> <span class="comment">/* Get unique key of the media stream</span></div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"> 330</span><span class="comment"> * Used by session to index media streams */</span></div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> uint32_t get_key() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span> </div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#ab339f15d5a852beacd901b7b78e887ea"> 345</a></span> <a class="code hl_class" href="classuvgrtp_1_1rtcp.html">uvgrtp::rtcp</a> *<a class="code hl_function" href="classuvgrtp_1_1media__stream.html#ab339f15d5a852beacd901b7b78e887ea">get_rtcp</a>();</div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span> </div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a8796cb34e0e6c61af8cabd13dd6793b5"> 353</a></span> uint32_t <a class="code hl_function" href="classuvgrtp_1_1media__stream.html#a8796cb34e0e6c61af8cabd13dd6793b5">get_ssrc</a>() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> </div>
<div class="line"><a id="l00355" name="l00355"></a><span class="lineno"> 355</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"> 356</span> <span class="comment">/* Initialize the connection by initializing the socket</span></div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span><span class="comment"> * and binding ourselves to specified interface and creating</span></div>
<div class="line"><a id="l00358" name="l00358"></a><span class="lineno"> 358</span><span class="comment"> * an outgoing address */</span></div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"> 359</span> rtp_error_t init_connection();</div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span><span class="comment"> * Return RTP_OK on success</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span><span class="comment"> * Return RTP_MEMORY_ERROR if allocation failed</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span><span class="comment"> *</span></div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span><span class="comment"> * TODO document all error codes!</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span><span class="comment"> *</span></div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span><span class="comment"> * Other error return codes are defined in {conn,writer,reader,srtp}.hh */</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> rtp_error_t init_auto_zrtp(std::shared_ptr&lt;uvgrtp::zrtp&gt; zrtp);</div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> </div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a9e22ebbe9f903abe0fcae267f98cafeb"> 96</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1media__stream.html#a9e22ebbe9f903abe0fcae267f98cafeb">start_zrtp</a>();</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> </div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a0950a91bd645cbf842d8218ae4171aed"> 114</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1media__stream.html#a0950a91bd645cbf842d8218ae4171aed">add_srtp_ctx</a>(uint8_t *key, uint8_t *salt);</div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> </div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a157e9973d92b65e82914d4028690c770"> 138</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1media__stream.html#a157e9973d92b65e82914d4028690c770">push_frame</a>(uint8_t *data, <span class="keywordtype">size_t</span> data_len, <span class="keywordtype">int</span> rtp_flags);</div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> </div>
<div class="line"><a id="l00162" name="l00162"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a068a0963e06f789b4e4310a45cbe4409"> 162</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1media__stream.html#a068a0963e06f789b4e4310a45cbe4409">push_frame</a>(std::unique_ptr&lt;uint8_t[]&gt; data, <span class="keywordtype">size_t</span> data_len, <span class="keywordtype">int</span> rtp_flags);</div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"> 163</span> </div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#ac0cb1cf34b639c9ba71b047b3ba26d22"> 193</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1media__stream.html#ac0cb1cf34b639c9ba71b047b3ba26d22">push_frame</a>(uint8_t *data, <span class="keywordtype">size_t</span> data_len, uint32_t ts, <span class="keywordtype">int</span> rtp_flags);</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> </div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a5577c57f1bdd5b888aa4e8c4f939eba7"> 227</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1media__stream.html#a5577c57f1bdd5b888aa4e8c4f939eba7">push_frame</a>(uint8_t* data, <span class="keywordtype">size_t</span> data_len, uint32_t ts, uint64_t ntp_ts, <span class="keywordtype">int</span> rtp_flags);</div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> </div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#abe9099254c6bf16f255f5f50441ec9d2"> 258</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1media__stream.html#abe9099254c6bf16f255f5f50441ec9d2">push_frame</a>(std::unique_ptr&lt;uint8_t[]&gt; data, <span class="keywordtype">size_t</span> data_len, uint32_t ts, <span class="keywordtype">int</span> rtp_flags);</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> </div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a56d2a209b2647d0f3ee7948e8cf45438"> 292</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1media__stream.html#a56d2a209b2647d0f3ee7948e8cf45438">push_frame</a>(std::unique_ptr&lt;uint8_t[]&gt; data, <span class="keywordtype">size_t</span> data_len, uint32_t ts, uint64_t ntp_ts, <span class="keywordtype">int</span> rtp_flags);</div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> </div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> <span class="comment">// Disabled for now</span></div>
<div class="line"><a id="l00295" name="l00295"></a><span class="lineno"> 295</span> <span class="comment">//rtp_error_t push_user_packet(uint8_t* data, uint32_t len);</span></div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> <span class="comment">//rtp_error_t install_user_receive_hook(void* arg, void (*hook)(void*, uint8_t* data, uint32_t len));</span></div>
<div class="line"><a id="l00297" name="l00297"></a><span class="lineno"> 297</span> </div>
<div class="line"><a id="l00306" name="l00306"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#ab0c854a4c36572f91008a8e1e49e38bb"> 306</a></span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtp__frame.html">uvgrtp::frame::rtp_frame</a> *<a class="code hl_function" href="classuvgrtp_1_1media__stream.html#ab0c854a4c36572f91008a8e1e49e38bb">pull_frame</a>();</div>
<div class="line"><a id="l00307" name="l00307"></a><span class="lineno"> 307</span> </div>
<div class="line"><a id="l00318" name="l00318"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a466067ad9924a52530c62c53c1b397b4"> 318</a></span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtp__frame.html">uvgrtp::frame::rtp_frame</a> *<a class="code hl_function" href="classuvgrtp_1_1media__stream.html#a466067ad9924a52530c62c53c1b397b4">pull_frame</a>(<span class="keywordtype">size_t</span> timeout_ms);</div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"> 319</span> </div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a74a558b23866976e52c5903996544a27"> 338</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1media__stream.html#a74a558b23866976e52c5903996544a27">install_receive_hook</a>(<span class="keywordtype">void</span> *arg, <span class="keywordtype">void</span> (*hook)(<span class="keywordtype">void</span> *, <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtp__frame.html">uvgrtp::frame::rtp_frame</a> *));</div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> </div>
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a2cee4fe3bf423ec317b4a3eacc136238"> 349</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1media__stream.html#a2cee4fe3bf423ec317b4a3eacc136238">configure_ctx</a>(<span class="keywordtype">int</span> rcc_flag, ssize_t value);</div>
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"> 350</span> </div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#acee8dd45e8c6ebbb1af52bb54dd7c40d"> 359</a></span> <span class="keywordtype">int</span> <a class="code hl_function" href="classuvgrtp_1_1media__stream.html#acee8dd45e8c6ebbb1af52bb54dd7c40d">get_configuration_value</a>(<span class="keywordtype">int</span> rcc_flag);</div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> </div>
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span> <span class="comment">/* Create the media object for the stream */</span></div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span> rtp_error_t create_media(rtp_format_t fmt);</div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> </div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span> <span class="comment">/* free all allocated resources */</span></div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> rtp_error_t free_resources(rtp_error_t ret);</div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"> 362</span> </div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> <span class="comment">/* Get unique key of the media stream</span></div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"> 364</span><span class="comment"> * Used by session to index media streams */</span></div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> uint32_t get_key() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span> </div>
<div class="line"><a id="l00367" name="l00367"></a><span class="lineno"> 367</span> rtp_error_t init_srtp_with_zrtp(<span class="keywordtype">int</span> rce_flags, <span class="keywordtype">int</span> type, std::shared_ptr&lt;uvgrtp::base_srtp&gt; srtp,</div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span> std::shared_ptr&lt;uvgrtp::zrtp&gt; zrtp);</div>
<div class="line"><a id="l00369" name="l00369"></a><span class="lineno"> 369</span> </div>
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"> 370</span> rtp_error_t start_components();</div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span> </div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"> 372</span> uint32_t get_default_bandwidth_kbps(rtp_format_t fmt);</div>
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span> </div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"> 374</span> <span class="keywordtype">bool</span> check_pull_preconditions();</div>
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span> rtp_error_t check_push_preconditions(<span class="keywordtype">int</span> rtp_flags, <span class="keywordtype">bool</span> smart_pointer);</div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span> </div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span> <span class="keyword">inline</span> uint8_t* copy_frame(uint8_t* original, <span class="keywordtype">size_t</span> data_len);</div>
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span> </div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> uint32_t key_;</div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span> </div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> std::shared_ptr&lt;uvgrtp::srtp&gt; srtp_;</div>
<div class="line"><a id="l00382" name="l00382"></a><span class="lineno"> 382</span> std::shared_ptr&lt;uvgrtp::srtcp&gt; srtcp_;</div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> std::shared_ptr&lt;uvgrtp::socket&gt; socket_;</div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"> 384</span> std::shared_ptr&lt;uvgrtp::rtp&gt; rtp_;</div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span> std::shared_ptr&lt;uvgrtp::rtcp&gt; rtcp_;</div>
<div class="line"><a id="l00386" name="l00386"></a><span class="lineno"> 386</span> </div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span> sockaddr_in remote_sockaddr_;</div>
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"> 388</span> sockaddr_in6 remote_sockaddr_ip6_;</div>
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span> std::string remote_address_;</div>
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span> std::string local_address_;</div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span> uint16_t src_port_;</div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span> uint16_t dst_port_;</div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span> <span class="keywordtype">bool</span> ipv6_;</div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> rtp_format_t fmt_;</div>
<div class="line"><a id="l00368" name="l00368"></a><span class="lineno"> 368</span> </div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#ab339f15d5a852beacd901b7b78e887ea"> 380</a></span> <a class="code hl_class" href="classuvgrtp_1_1rtcp.html">uvgrtp::rtcp</a> *<a class="code hl_function" href="classuvgrtp_1_1media__stream.html#ab339f15d5a852beacd901b7b78e887ea">get_rtcp</a>();</div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> </div>
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a8796cb34e0e6c61af8cabd13dd6793b5"> 388</a></span> uint32_t <a class="code hl_function" href="classuvgrtp_1_1media__stream.html#a8796cb34e0e6c61af8cabd13dd6793b5">get_ssrc</a>() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span> </div>
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span> <span class="comment">/* Initialize the connection by initializing the socket</span></div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span><span class="comment"> * and binding ourselves to specified interface and creating</span></div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span><span class="comment"> * an outgoing address */</span></div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span> rtp_error_t init_connection();</div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> </div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span> <span class="comment">/* Media context config */</span></div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> <span class="keywordtype">int</span> rce_flags_ = 0;</div>
<div class="line"><a id="l00396" name="l00396"></a><span class="lineno"> 396</span> <span class="comment">/* Create the media object for the stream */</span></div>
<div class="line"><a id="l00397" name="l00397"></a><span class="lineno"> 397</span> rtp_error_t create_media(rtp_format_t fmt);</div>
<div class="line"><a id="l00398" name="l00398"></a><span class="lineno"> 398</span> </div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span> <span class="comment">/* Has the media stream been initialized */</span></div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span> <span class="keywordtype">bool</span> initialized_;</div>
<div class="line"><a id="l00399" name="l00399"></a><span class="lineno"> 399</span> <span class="comment">/* free all allocated resources */</span></div>
<div class="line"><a id="l00400" name="l00400"></a><span class="lineno"> 400</span> rtp_error_t free_resources(rtp_error_t ret);</div>
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"> 401</span> </div>
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span> <span class="comment">/* Primary handler keys for the RTP reception flow */</span></div>
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"> 403</span> uint32_t rtp_handler_key_;</div>
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span> uint32_t zrtp_handler_key_;</div>
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span> </div>
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"> 406</span> <span class="comment">/* RTP packet reception flow. Dispatches packets to other components */</span></div>
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span> std::unique_ptr&lt;uvgrtp::reception_flow&gt; reception_flow_;</div>
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span> rtp_error_t init_srtp_with_zrtp(<span class="keywordtype">int</span> rce_flags, <span class="keywordtype">int</span> type, std::shared_ptr&lt;uvgrtp::base_srtp&gt; srtp,</div>
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"> 403</span> std::shared_ptr&lt;uvgrtp::zrtp&gt; zrtp);</div>
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span> </div>
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span> rtp_error_t start_components();</div>
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"> 406</span> </div>
<div class="line"><a id="l00407" name="l00407"></a><span class="lineno"> 407</span> rtp_error_t install_packet_handlers();</div>
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span> </div>
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span> <span class="comment">/* Media object associated with this media stream. */</span></div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span> std::unique_ptr&lt;uvgrtp::formats::media&gt; media_;</div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span> </div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span> <span class="comment">/* Thread that keeps the holepunched connection open for unidirectional streams */</span></div>
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span> std::unique_ptr&lt;uvgrtp::holepuncher&gt; holepuncher_;</div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span> </div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> std::string cname_;</div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span> </div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span> ssize_t fps_numerator_ = 30;</div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> ssize_t fps_denominator_ = 1;</div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span> uint32_t bandwidth_ = 0;</div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> std::shared_ptr&lt;std::atomic&lt;std::uint32_t&gt;&gt; ssrc_;</div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span> };</div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span>}</div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> </div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span><span class="keyword">namespace </span>uvg_rtp = uvgrtp;</div>
<div class="ttc" id="aclassuvgrtp_1_1media__stream_html"><div class="ttname"><a href="classuvgrtp_1_1media__stream.html">uvgrtp::media_stream</a></div><div class="ttdoc">The media_stream is an entity which represents one RTP stream.</div><div class="ttdef"><b>Definition:</b> <a href="media__stream_8hh_source.html#l00050">media_stream.hh:50</a></div></div>
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span> uint32_t get_default_bandwidth_kbps(rtp_format_t fmt);</div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span> </div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span> <span class="keywordtype">bool</span> check_pull_preconditions();</div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span> rtp_error_t check_push_preconditions(<span class="keywordtype">int</span> rtp_flags, <span class="keywordtype">bool</span> smart_pointer);</div>
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span> </div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span> <span class="keyword">inline</span> uint8_t* copy_frame(uint8_t* original, <span class="keywordtype">size_t</span> data_len);</div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> </div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span> uint32_t key_;</div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span> </div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> std::shared_ptr&lt;uvgrtp::srtp&gt; srtp_;</div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span> std::shared_ptr&lt;uvgrtp::srtcp&gt; srtcp_;</div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> std::shared_ptr&lt;uvgrtp::socket&gt; socket_;</div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span> std::shared_ptr&lt;uvgrtp::rtp&gt; rtp_;</div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span> std::shared_ptr&lt;uvgrtp::rtcp&gt; rtcp_;</div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> std::shared_ptr&lt;uvgrtp::zrtp&gt; zrtp_;</div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span> </div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span> std::shared_ptr&lt;uvgrtp::socketfactory&gt; sfp_;</div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span> </div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> sockaddr_in remote_sockaddr_;</div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span> sockaddr_in6 remote_sockaddr_ip6_;</div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span> std::string remote_address_;</div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span> std::string local_address_;</div>
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span> uint16_t src_port_;</div>
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span> uint16_t dst_port_;</div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span> <span class="keywordtype">bool</span> ipv6_;</div>
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span> rtp_format_t fmt_;</div>
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> <span class="keywordtype">bool</span> new_socket_;</div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> </div>
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span> <span class="comment">/* Media context config */</span></div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> <span class="keywordtype">int</span> rce_flags_ = 0;</div>
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span> </div>
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> <span class="comment">/* Has the media stream been initialized */</span></div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> <span class="keywordtype">bool</span> initialized_;</div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> </div>
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span> <span class="comment">/* RTP packet reception flow. Dispatches packets to other components */</span></div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> std::shared_ptr&lt;uvgrtp::reception_flow&gt; reception_flow_;</div>
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span> </div>
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span> <span class="comment">/* Media object associated with this media stream. */</span></div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span> std::unique_ptr&lt;uvgrtp::formats::media&gt; media_;</div>
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span> </div>
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span> <span class="comment">/* Thread that keeps the holepunched connection open for unidirectional streams */</span></div>
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span> std::unique_ptr&lt;uvgrtp::holepuncher&gt; holepuncher_;</div>
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span> </div>
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span> std::string cname_;</div>
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"> 453</span> </div>
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span> ssize_t fps_numerator_ = 30;</div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> ssize_t fps_denominator_ = 1;</div>
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span> uint32_t bandwidth_ = 0;</div>
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span> std::shared_ptr&lt;std::atomic&lt;std::uint32_t&gt;&gt; ssrc_;</div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span> std::shared_ptr&lt;std::atomic&lt;std::uint32_t&gt;&gt; remote_ssrc_;</div>
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> </div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> <span class="comment">// Save values associated with context flags, to be returned with get_configuration_value</span></div>
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span> <span class="comment">// Values are initialized to -2, which means value not set</span></div>
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span> <span class="keywordtype">int</span> snd_buf_size_;</div>
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span> <span class="keywordtype">int</span> rcv_buf_size_;</div>
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span> };</div>
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span>}</div>
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span> </div>
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span><span class="keyword">namespace </span>uvg_rtp = uvgrtp;</div>
<div class="ttc" id="aclassuvgrtp_1_1media__stream_html"><div class="ttname"><a href="classuvgrtp_1_1media__stream.html">uvgrtp::media_stream</a></div><div class="ttdoc">The media_stream is an entity which represents one RTP stream.</div><div class="ttdef"><b>Definition:</b> <a href="media__stream_8hh_source.html#l00053">media_stream.hh:53</a></div></div>
<div class="ttc" id="aclassuvgrtp_1_1media__stream_html_a068a0963e06f789b4e4310a45cbe4409"><div class="ttname"><a href="classuvgrtp_1_1media__stream.html#a068a0963e06f789b4e4310a45cbe4409">uvgrtp::media_stream::push_frame</a></div><div class="ttdeci">rtp_error_t push_frame(std::unique_ptr&lt; uint8_t[]&gt; data, size_t data_len, int rtp_flags)</div><div class="ttdoc">Send data to remote participant with a custom timestamp.</div></div>
<div class="ttc" id="aclassuvgrtp_1_1media__stream_html_a0950a91bd645cbf842d8218ae4171aed"><div class="ttname"><a href="classuvgrtp_1_1media__stream.html#a0950a91bd645cbf842d8218ae4171aed">uvgrtp::media_stream::add_srtp_ctx</a></div><div class="ttdeci">rtp_error_t add_srtp_ctx(uint8_t *key, uint8_t *salt)</div><div class="ttdoc">Add keying information for user-managed SRTP session.</div></div>
<div class="ttc" id="aclassuvgrtp_1_1media__stream_html_a157e9973d92b65e82914d4028690c770"><div class="ttname"><a href="classuvgrtp_1_1media__stream.html#a157e9973d92b65e82914d4028690c770">uvgrtp::media_stream::push_frame</a></div><div class="ttdeci">rtp_error_t push_frame(uint8_t *data, size_t data_len, int rtp_flags)</div><div class="ttdoc">Send data to remote participant with a custom timestamp.</div></div>
@ -252,12 +272,14 @@ $(function() {
<div class="ttc" id="aclassuvgrtp_1_1media__stream_html_a56d2a209b2647d0f3ee7948e8cf45438"><div class="ttname"><a href="classuvgrtp_1_1media__stream.html#a56d2a209b2647d0f3ee7948e8cf45438">uvgrtp::media_stream::push_frame</a></div><div class="ttdeci">rtp_error_t push_frame(std::unique_ptr&lt; uint8_t[]&gt; data, size_t data_len, uint32_t ts, uint64_t ntp_ts, int rtp_flags)</div><div class="ttdoc">Send data to remote participant with custom RTP and NTP timestamps.</div></div>
<div class="ttc" id="aclassuvgrtp_1_1media__stream_html_a74a558b23866976e52c5903996544a27"><div class="ttname"><a href="classuvgrtp_1_1media__stream.html#a74a558b23866976e52c5903996544a27">uvgrtp::media_stream::install_receive_hook</a></div><div class="ttdeci">rtp_error_t install_receive_hook(void *arg, void(*hook)(void *, uvgrtp::frame::rtp_frame *))</div><div class="ttdoc">Asynchronous way of getting frames.</div></div>
<div class="ttc" id="aclassuvgrtp_1_1media__stream_html_a8796cb34e0e6c61af8cabd13dd6793b5"><div class="ttname"><a href="classuvgrtp_1_1media__stream.html#a8796cb34e0e6c61af8cabd13dd6793b5">uvgrtp::media_stream::get_ssrc</a></div><div class="ttdeci">uint32_t get_ssrc() const</div><div class="ttdoc">Get SSRC identifier. You can use the SSRC value for example to find the report block belonging to thi...</div></div>
<div class="ttc" id="aclassuvgrtp_1_1media__stream_html_a9e22ebbe9f903abe0fcae267f98cafeb"><div class="ttname"><a href="classuvgrtp_1_1media__stream.html#a9e22ebbe9f903abe0fcae267f98cafeb">uvgrtp::media_stream::start_zrtp</a></div><div class="ttdeci">rtp_error_t start_zrtp()</div><div class="ttdoc">Start the ZRTP negotiation manually.</div></div>
<div class="ttc" id="aclassuvgrtp_1_1media__stream_html_ab0c854a4c36572f91008a8e1e49e38bb"><div class="ttname"><a href="classuvgrtp_1_1media__stream.html#ab0c854a4c36572f91008a8e1e49e38bb">uvgrtp::media_stream::pull_frame</a></div><div class="ttdeci">uvgrtp::frame::rtp_frame * pull_frame()</div><div class="ttdoc">Poll a frame indefinitely from the media stream object.</div></div>
<div class="ttc" id="aclassuvgrtp_1_1media__stream_html_ab339f15d5a852beacd901b7b78e887ea"><div class="ttname"><a href="classuvgrtp_1_1media__stream.html#ab339f15d5a852beacd901b7b78e887ea">uvgrtp::media_stream::get_rtcp</a></div><div class="ttdeci">uvgrtp::rtcp * get_rtcp()</div><div class="ttdoc">Get pointer to the RTCP object of the media stream.</div></div>
<div class="ttc" id="aclassuvgrtp_1_1media__stream_html_abe9099254c6bf16f255f5f50441ec9d2"><div class="ttname"><a href="classuvgrtp_1_1media__stream.html#abe9099254c6bf16f255f5f50441ec9d2">uvgrtp::media_stream::push_frame</a></div><div class="ttdeci">rtp_error_t push_frame(std::unique_ptr&lt; uint8_t[]&gt; data, size_t data_len, uint32_t ts, int rtp_flags)</div><div class="ttdoc">Send data to remote participant with a custom timestamp.</div></div>
<div class="ttc" id="aclassuvgrtp_1_1media__stream_html_ac0cb1cf34b639c9ba71b047b3ba26d22"><div class="ttname"><a href="classuvgrtp_1_1media__stream.html#ac0cb1cf34b639c9ba71b047b3ba26d22">uvgrtp::media_stream::push_frame</a></div><div class="ttdeci">rtp_error_t push_frame(uint8_t *data, size_t data_len, uint32_t ts, int rtp_flags)</div><div class="ttdoc">Send data to remote participant with a custom timestamp.</div></div>
<div class="ttc" id="aclassuvgrtp_1_1rtcp_html"><div class="ttname"><a href="classuvgrtp_1_1rtcp.html">uvgrtp::rtcp</a></div><div class="ttdoc">RTCP instance handles all incoming and outgoing RTCP traffic, including report generation.</div><div class="ttdef"><b>Definition:</b> <a href="rtcp_8hh_source.html#l00118">rtcp.hh:118</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtp__frame_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtp__frame.html">uvgrtp::frame::rtp_frame</a></div><div class="ttdoc">See RFC 3550 section 5</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00053">frame.hh:53</a></div></div>
<div class="ttc" id="aclassuvgrtp_1_1media__stream_html_acee8dd45e8c6ebbb1af52bb54dd7c40d"><div class="ttname"><a href="classuvgrtp_1_1media__stream.html#acee8dd45e8c6ebbb1af52bb54dd7c40d">uvgrtp::media_stream::get_configuration_value</a></div><div class="ttdeci">int get_configuration_value(int rcc_flag)</div><div class="ttdoc">Get the values associated with configuration flags, see RTP_CTX_CONFIGURATION_FLAGS for more details.</div></div>
<div class="ttc" id="aclassuvgrtp_1_1rtcp_html"><div class="ttname"><a href="classuvgrtp_1_1rtcp.html">uvgrtp::rtcp</a></div><div class="ttdoc">RTCP instance handles all incoming and outgoing RTCP traffic, including report generation.</div><div class="ttdef"><b>Definition:</b> <a href="rtcp_8hh_source.html#l00120">rtcp.hh:120</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtp__frame_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtp__frame.html">uvgrtp::frame::rtp_frame</a></div><div class="ttdoc">See RFC 3550 section 5</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00068">frame.hh:68</a></div></div>
<div class="ttc" id="autil_8hh_html"><div class="ttname"><a href="util_8hh.html">util.hh</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->

View File

@ -33,6 +33,7 @@ var menudata={children:[
{text:"b",url:"functions.html#index_b"},
{text:"c",url:"functions.html#index_c"},
{text:"d",url:"functions.html#index_d"},
{text:"f",url:"functions.html#index_f"},
{text:"g",url:"functions.html#index_g"},
{text:"i",url:"functions.html#index_i"},
{text:"l",url:"functions.html#index_l"},

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -105,493 +105,498 @@ $(function() {
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"> 26</span> <span class="keyword">class </span>rtp;</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">class </span>srtcp;</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">class </span>socket;</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> </div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">typedef</span> std::vector&lt;std::pair&lt;size_t, uint8_t*&gt;&gt; buf_vec; <span class="comment">// also defined in socket.hh</span></div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> <span class="keyword">class </span>socketfactory;</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> <span class="keyword">class </span>rtcp_reader;</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> </div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> <span class="keyword">enum</span> RTCP_ROLE {</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> RECEIVER,</div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> SENDER</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> };</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> </div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> <span class="keyword">struct </span>sender_statistics {</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> <span class="comment">/* sender stats */</span></div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> uint32_t sent_pkts = 0; <span class="comment">/* Number of sent RTP packets */</span></div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> uint32_t sent_bytes = 0; <span class="comment">/* Number of sent bytes excluding RTP Header */</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> <span class="keywordtype">bool</span> sent_rtp_packet = <span class="keyword">false</span>; <span class="comment">// since last report</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> };</div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> </div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> <span class="keyword">struct </span>receiver_statistics {</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> <span class="comment">/* receiver stats */</span></div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> uint32_t received_pkts = 0; <span class="comment">/* Number of packets received */</span></div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> uint32_t lost_pkts = 0; <span class="comment">/* Number of dropped RTP packets */</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> uint32_t received_bytes = 0; <span class="comment">/* Number of bytes received excluding RTP Header */</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> <span class="keywordtype">bool</span> received_rtp_packet = <span class="keyword">false</span>; <span class="comment">// since last report</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> </div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> uint32_t expected_pkts = 0; <span class="comment">/* Number of expected packets */</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> uint32_t received_prior = 0; <span class="comment">/* Number of received packets in last report */</span></div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> uint32_t expected_prior = 0; <span class="comment">/* Number of expected packets in last report */</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> </div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> <span class="keywordtype">double</span> jitter = 0; <span class="comment">/* The estimation of jitter (see RFC 3550 A.8) */</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> uint32_t transit = 0; <span class="comment">/* TODO: */</span></div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> </div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> </div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> <span class="comment">/* Receiver clock related stuff */</span></div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> uint64_t initial_ntp = 0; <span class="comment">/* Wallclock reading when the first RTP packet was received */</span></div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> uint32_t initial_rtp = 0; <span class="comment">/* RTP timestamp of the first RTP packet received */</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> uint32_t clock_rate = 0; <span class="comment">/* Rate of the clock (used for jitter calculations) */</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> </div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> uint32_t lsr = 0; <span class="comment">/* Middle 32 bits of the 64-bit NTP timestamp of previous SR */</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> uvgrtp::clock::hrc::hrc_t sr_ts; <span class="comment">/* When the last SR was received (used to calculate delay) */</span></div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> </div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> uint16_t max_seq = 0; <span class="comment">/* Highest sequence number received */</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> uint32_t base_seq = 0; <span class="comment">/* First sequence number received */</span></div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> uint32_t bad_seq = 0; <span class="comment">/* TODO: */</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> uint16_t cycles = 0; <span class="comment">/* Number of sequence cycles */</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> };</div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> </div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> <span class="keyword">struct </span>rtcp_participant {</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> <span class="keyword">struct </span>receiver_statistics stats; <span class="comment">/* RTCP session statistics of the participant */</span></div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> </div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> uint32_t probation = 0; <span class="comment">/* has the participant been fully accepted to the session */</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> <span class="keywordtype">int</span> role = 0; <span class="comment">/* is the participant a sender or a receiver */</span></div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> </div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <span class="comment">/* Save the latest RTCP packets received from this participant</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span><span class="comment"> * Users can query these packets using the SSRC of participant */</span></div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sender__report.html">uvgrtp::frame::rtcp_sender_report</a> *sr_frame = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__receiver__report.html">uvgrtp::frame::rtcp_receiver_report</a> *rr_frame = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html">uvgrtp::frame::rtcp_sdes_packet</a> *sdes_frame = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html">uvgrtp::frame::rtcp_app_packet</a> *app_frame = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> };</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> </div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> <span class="keyword">struct </span>rtcp_app_packet {</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> rtcp_app_packet(<span class="keyword">const</span> rtcp_app_packet&amp; orig_packet) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> rtcp_app_packet(<span class="keyword">const</span> <span class="keywordtype">char</span>* name, uint8_t subtype, uint32_t payload_len, std::unique_ptr&lt;uint8_t[]&gt; payload);</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> ~rtcp_app_packet();</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> </div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* name;</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> uint8_t subtype;</div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> </div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> uint32_t payload_len;</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> std::unique_ptr&lt;uint8_t[]&gt; payload;</div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> };</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> </div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html"> 118</a></span> <span class="keyword">class </span><a class="code hl_class" href="classuvgrtp_1_1rtcp.html">rtcp</a> {</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <a class="code hl_class" href="classuvgrtp_1_1rtcp.html">rtcp</a>(std::shared_ptr&lt;uvgrtp::rtp&gt; rtp, std::shared_ptr&lt;std::atomic&lt;std::uint32_t&gt;&gt; ssrc, std::string cname, <span class="keywordtype">int</span> rce_flags);</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> <a class="code hl_class" href="classuvgrtp_1_1rtcp.html">rtcp</a>(std::shared_ptr&lt;uvgrtp::rtp&gt; rtp, std::shared_ptr&lt;std::atomic&lt;std::uint32_t&gt;&gt; ssrc, std::string cname, std::shared_ptr&lt;uvgrtp::srtcp&gt; srtcp, <span class="keywordtype">int</span> rce_flags);</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> <a class="code hl_class" href="classuvgrtp_1_1rtcp.html">~rtcp</a>();</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> </div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <span class="comment">/* start the RTCP runner thread</span></div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span><span class="comment"> *</span></div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span><span class="comment"> * return RTP_OK on success and RTP_MEMORY_ERROR if the allocation fails */</span></div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> rtp_error_t start();</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> </div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> <span class="comment">/* End the RTCP session and send RTCP BYE to all participants</span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span><span class="comment"> *</span></div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span><span class="comment"> * return RTP_OK on success */</span></div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> rtp_error_t stop();</div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> </div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span> <span class="comment">/* Generate either RTCP Sender or Receiver report and sent it to all participants</span></div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span><span class="comment"> * Return RTP_OK on success and RTP_ERROR on error */</span></div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> rtp_error_t generate_report();</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> <span class="keyword">typedef</span> std::vector&lt;std::pair&lt;size_t, uint8_t*&gt;&gt; buf_vec; <span class="comment">// also defined in socket.hh</span></div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> </div>
<div class="line"><a id="l00035" name="l00035"></a><span class="lineno"> 35</span> <span class="keyword">enum</span> RTCP_ROLE {</div>
<div class="line"><a id="l00036" name="l00036"></a><span class="lineno"> 36</span> RECEIVER,</div>
<div class="line"><a id="l00037" name="l00037"></a><span class="lineno"> 37</span> SENDER</div>
<div class="line"><a id="l00038" name="l00038"></a><span class="lineno"> 38</span> };</div>
<div class="line"><a id="l00039" name="l00039"></a><span class="lineno"> 39</span> </div>
<div class="line"><a id="l00040" name="l00040"></a><span class="lineno"> 40</span> <span class="keyword">struct </span>sender_statistics {</div>
<div class="line"><a id="l00041" name="l00041"></a><span class="lineno"> 41</span> <span class="comment">/* sender stats */</span></div>
<div class="line"><a id="l00042" name="l00042"></a><span class="lineno"> 42</span> uint32_t sent_pkts = 0; <span class="comment">/* Number of sent RTP packets */</span></div>
<div class="line"><a id="l00043" name="l00043"></a><span class="lineno"> 43</span> uint32_t sent_bytes = 0; <span class="comment">/* Number of sent bytes excluding RTP Header */</span></div>
<div class="line"><a id="l00044" name="l00044"></a><span class="lineno"> 44</span> <span class="keywordtype">bool</span> sent_rtp_packet = <span class="keyword">false</span>; <span class="comment">// since last report</span></div>
<div class="line"><a id="l00045" name="l00045"></a><span class="lineno"> 45</span> };</div>
<div class="line"><a id="l00046" name="l00046"></a><span class="lineno"> 46</span> </div>
<div class="line"><a id="l00047" name="l00047"></a><span class="lineno"> 47</span> <span class="keyword">struct </span>receiver_statistics {</div>
<div class="line"><a id="l00048" name="l00048"></a><span class="lineno"> 48</span> <span class="comment">/* receiver stats */</span></div>
<div class="line"><a id="l00049" name="l00049"></a><span class="lineno"> 49</span> uint32_t received_pkts = 0; <span class="comment">/* Number of packets received */</span></div>
<div class="line"><a id="l00050" name="l00050"></a><span class="lineno"> 50</span> uint32_t lost_pkts = 0; <span class="comment">/* Number of dropped RTP packets */</span></div>
<div class="line"><a id="l00051" name="l00051"></a><span class="lineno"> 51</span> uint32_t received_bytes = 0; <span class="comment">/* Number of bytes received excluding RTP Header */</span></div>
<div class="line"><a id="l00052" name="l00052"></a><span class="lineno"> 52</span> <span class="keywordtype">bool</span> received_rtp_packet = <span class="keyword">false</span>; <span class="comment">// since last report</span></div>
<div class="line"><a id="l00053" name="l00053"></a><span class="lineno"> 53</span> </div>
<div class="line"><a id="l00054" name="l00054"></a><span class="lineno"> 54</span> uint32_t expected_pkts = 0; <span class="comment">/* Number of expected packets */</span></div>
<div class="line"><a id="l00055" name="l00055"></a><span class="lineno"> 55</span> uint32_t received_prior = 0; <span class="comment">/* Number of received packets in last report */</span></div>
<div class="line"><a id="l00056" name="l00056"></a><span class="lineno"> 56</span> uint32_t expected_prior = 0; <span class="comment">/* Number of expected packets in last report */</span></div>
<div class="line"><a id="l00057" name="l00057"></a><span class="lineno"> 57</span> </div>
<div class="line"><a id="l00058" name="l00058"></a><span class="lineno"> 58</span> <span class="keywordtype">double</span> jitter = 0; <span class="comment">/* The estimation of jitter (see RFC 3550 A.8) */</span></div>
<div class="line"><a id="l00059" name="l00059"></a><span class="lineno"> 59</span> uint32_t transit = 0; <span class="comment">/* TODO: */</span></div>
<div class="line"><a id="l00060" name="l00060"></a><span class="lineno"> 60</span> </div>
<div class="line"><a id="l00061" name="l00061"></a><span class="lineno"> 61</span> </div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"> 62</span> <span class="comment">/* Receiver clock related stuff */</span></div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> uint64_t initial_ntp = 0; <span class="comment">/* Wallclock reading when the first RTP packet was received */</span></div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> uint32_t initial_rtp = 0; <span class="comment">/* RTP timestamp of the first RTP packet received */</span></div>
<div class="line"><a id="l00065" name="l00065"></a><span class="lineno"> 65</span> uint32_t clock_rate = 0; <span class="comment">/* Rate of the clock (used for jitter calculations) */</span></div>
<div class="line"><a id="l00066" name="l00066"></a><span class="lineno"> 66</span> </div>
<div class="line"><a id="l00067" name="l00067"></a><span class="lineno"> 67</span> uint32_t lsr = 0; <span class="comment">/* Middle 32 bits of the 64-bit NTP timestamp of previous SR */</span></div>
<div class="line"><a id="l00068" name="l00068"></a><span class="lineno"> 68</span> uvgrtp::clock::hrc::hrc_t sr_ts; <span class="comment">/* When the last SR was received (used to calculate delay) */</span></div>
<div class="line"><a id="l00069" name="l00069"></a><span class="lineno"> 69</span> </div>
<div class="line"><a id="l00070" name="l00070"></a><span class="lineno"> 70</span> uint16_t max_seq = 0; <span class="comment">/* Highest sequence number received */</span></div>
<div class="line"><a id="l00071" name="l00071"></a><span class="lineno"> 71</span> uint32_t base_seq = 0; <span class="comment">/* First sequence number received */</span></div>
<div class="line"><a id="l00072" name="l00072"></a><span class="lineno"> 72</span> uint32_t bad_seq = 0; <span class="comment">/* TODO: */</span></div>
<div class="line"><a id="l00073" name="l00073"></a><span class="lineno"> 73</span> uint16_t cycles = 0; <span class="comment">/* Number of sequence cycles */</span></div>
<div class="line"><a id="l00074" name="l00074"></a><span class="lineno"> 74</span> };</div>
<div class="line"><a id="l00075" name="l00075"></a><span class="lineno"> 75</span> </div>
<div class="line"><a id="l00076" name="l00076"></a><span class="lineno"> 76</span> <span class="keyword">struct </span>rtcp_participant {</div>
<div class="line"><a id="l00077" name="l00077"></a><span class="lineno"> 77</span> <span class="keyword">struct </span>receiver_statistics stats; <span class="comment">/* RTCP session statistics of the participant */</span></div>
<div class="line"><a id="l00078" name="l00078"></a><span class="lineno"> 78</span> </div>
<div class="line"><a id="l00079" name="l00079"></a><span class="lineno"> 79</span> uint32_t probation = 0; <span class="comment">/* has the participant been fully accepted to the session */</span></div>
<div class="line"><a id="l00080" name="l00080"></a><span class="lineno"> 80</span> <span class="keywordtype">int</span> role = 0; <span class="comment">/* is the participant a sender or a receiver */</span></div>
<div class="line"><a id="l00081" name="l00081"></a><span class="lineno"> 81</span> </div>
<div class="line"><a id="l00082" name="l00082"></a><span class="lineno"> 82</span> <span class="comment">/* Save the latest RTCP packets received from this participant</span></div>
<div class="line"><a id="l00083" name="l00083"></a><span class="lineno"> 83</span><span class="comment"> * Users can query these packets using the SSRC of participant */</span></div>
<div class="line"><a id="l00084" name="l00084"></a><span class="lineno"> 84</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sender__report.html">uvgrtp::frame::rtcp_sender_report</a> *sr_frame = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00085" name="l00085"></a><span class="lineno"> 85</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__receiver__report.html">uvgrtp::frame::rtcp_receiver_report</a> *rr_frame = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00086" name="l00086"></a><span class="lineno"> 86</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html">uvgrtp::frame::rtcp_sdes_packet</a> *sdes_frame = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"> 87</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html">uvgrtp::frame::rtcp_app_packet</a> *app_frame = <span class="keyword">nullptr</span>;</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> };</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> </div>
<div class="line"><a id="l00090" name="l00090"></a><span class="lineno"> 90</span> <span class="keyword">struct </span>rtcp_app_packet {</div>
<div class="line"><a id="l00091" name="l00091"></a><span class="lineno"> 91</span> rtcp_app_packet(<span class="keyword">const</span> rtcp_app_packet&amp; orig_packet) = <span class="keyword">delete</span>;</div>
<div class="line"><a id="l00092" name="l00092"></a><span class="lineno"> 92</span> rtcp_app_packet(<span class="keyword">const</span> <span class="keywordtype">char</span>* name, uint8_t subtype, uint32_t payload_len, std::unique_ptr&lt;uint8_t[]&gt; payload);</div>
<div class="line"><a id="l00093" name="l00093"></a><span class="lineno"> 93</span> ~rtcp_app_packet();</div>
<div class="line"><a id="l00094" name="l00094"></a><span class="lineno"> 94</span> </div>
<div class="line"><a id="l00095" name="l00095"></a><span class="lineno"> 95</span> <span class="keyword">const</span> <span class="keywordtype">char</span>* name;</div>
<div class="line"><a id="l00096" name="l00096"></a><span class="lineno"> 96</span> uint8_t subtype;</div>
<div class="line"><a id="l00097" name="l00097"></a><span class="lineno"> 97</span> </div>
<div class="line"><a id="l00098" name="l00098"></a><span class="lineno"> 98</span> uint32_t payload_len;</div>
<div class="line"><a id="l00099" name="l00099"></a><span class="lineno"> 99</span> std::unique_ptr&lt;uint8_t[]&gt; payload;</div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"> 100</span> };</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> </div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html"> 120</a></span> <span class="keyword">class </span><a class="code hl_class" href="classuvgrtp_1_1rtcp.html">rtcp</a> {</div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> <a class="code hl_class" href="classuvgrtp_1_1rtcp.html">rtcp</a>(std::shared_ptr&lt;uvgrtp::rtp&gt; rtp, std::shared_ptr&lt;std::atomic&lt;std::uint32_t&gt;&gt; ssrc, std::shared_ptr&lt;std::atomic&lt;uint32_t&gt;&gt; remote_ssrc,</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> std::string cname, std::shared_ptr&lt;uvgrtp::socketfactory&gt; sfp, <span class="keywordtype">int</span> rce_flags);</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> <a class="code hl_class" href="classuvgrtp_1_1rtcp.html">rtcp</a>(std::shared_ptr&lt;uvgrtp::rtp&gt; rtp, std::shared_ptr&lt;std::atomic&lt;std::uint32_t&gt;&gt; ssrc, std::shared_ptr&lt;std::atomic&lt;uint32_t&gt;&gt; remote_ssrc,</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> std::string cname, std::shared_ptr&lt;uvgrtp::socketfactory&gt; sfp, std::shared_ptr&lt;uvgrtp::srtcp&gt; srtcp, <span class="keywordtype">int</span> rce_flags);</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> <a class="code hl_class" href="classuvgrtp_1_1rtcp.html">~rtcp</a>();</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> </div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> <span class="comment">/* start the RTCP runner thread</span></div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span><span class="comment"> *</span></div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span><span class="comment"> * return RTP_OK on success and RTP_MEMORY_ERROR if the allocation fails */</span></div>
<div class="line"><a id="l00132" name="l00132"></a><span class="lineno"> 132</span> rtp_error_t start();</div>
<div class="line"><a id="l00133" name="l00133"></a><span class="lineno"> 133</span> </div>
<div class="line"><a id="l00134" name="l00134"></a><span class="lineno"> 134</span> <span class="comment">/* End the RTCP session and send RTCP BYE to all participants</span></div>
<div class="line"><a id="l00135" name="l00135"></a><span class="lineno"> 135</span><span class="comment"> *</span></div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"> 136</span><span class="comment"> * return RTP_OK on success */</span></div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"> 137</span> rtp_error_t stop();</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> </div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="comment">/* Handle incoming RTCP packet (first make sure it&#39;s a valid RTCP packet)</span></div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span><span class="comment"> * This function will call one of the above functions internally</span></div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span><span class="comment"> *</span></div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span><span class="comment"> * Return RTP_OK on success and RTP_ERROR on error */</span></div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> rtp_error_t handle_incoming_packet(uint8_t *buffer, <span class="keywordtype">size_t</span> size);</div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span> </div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span> <span class="comment">/* Send &quot;frame&quot; to all participants</span></div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span><span class="comment"> *</span></div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span><span class="comment"> * These routines will convert all necessary fields to network byte order</span></div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span><span class="comment"> *</span></div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span><span class="comment"> * Return RTP_OK on success</span></div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span><span class="comment"> * Return RTP_INVALID_VALUE if &quot;frame&quot; is in some way invalid</span></div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span><span class="comment"> * Return RTP_SEND_ERROR if sending &quot;frame&quot; did not succeed (see socket.hh for details) */</span></div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> </div>
<div class="line"><a id="l00163" name="l00163"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#a65680d4ba308fc8cb92fd41f0d313c84"> 163</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a65680d4ba308fc8cb92fd41f0d313c84">send_sdes_packet</a>(<span class="keyword">const</span> std::vector&lt;uvgrtp::frame::rtcp_sdes_item&gt;&amp; items);</div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"> 164</span> </div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#a0c092bca6edda19218a2cb84ed776c34"> 177</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a0c092bca6edda19218a2cb84ed776c34">send_app_packet</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, uint8_t subtype, uint32_t payload_len, <span class="keyword">const</span> uint8_t *payload);</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> </div>
<div class="line"><a id="l00193" name="l00193"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#a2b831698320212e382e3d565e62d31c4"> 193</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a2b831698320212e382e3d565e62d31c4">send_bye_packet</a>(std::vector&lt;uint32_t&gt; ssrcs);</div>
<div class="line"><a id="l00194" name="l00194"></a><span class="lineno"> 194</span> </div>
<div class="line"><a id="l00196" name="l00196"></a><span class="lineno"> 196</span> <span class="comment">/* Return the latest RTCP packet received from participant of &quot;ssrc&quot;</span></div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"> 197</span><span class="comment"> * Return nullptr if we haven&#39;t received this kind of packet or if &quot;ssrc&quot; doesn&#39;t exist</span></div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span><span class="comment"> *</span></div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span><span class="comment"> * NOTE: Caller is responsible for deallocating the memory */</span></div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sender__report.html">uvgrtp::frame::rtcp_sender_report</a> *get_sender_packet(uint32_t ssrc);</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__receiver__report.html">uvgrtp::frame::rtcp_receiver_report</a> *get_receiver_packet(uint32_t ssrc);</div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html">uvgrtp::frame::rtcp_sdes_packet</a> *get_sdes_packet(uint32_t ssrc);</div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html">uvgrtp::frame::rtcp_app_packet</a> *get_app_packet(uint32_t ssrc);</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> </div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> <span class="comment">/* Somebody joined the multicast group the owner of this RTCP instance is part of</span></div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span><span class="comment"> * Add it to RTCP participant list so we can start listening for reports</span></div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span><span class="comment"> *</span></div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span><span class="comment"> * &quot;clock_rate&quot; tells how much the RTP timestamp advances, this information is needed</span></div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span><span class="comment"> * to calculate the interarrival jitter correctly. It has nothing do with our clock rate,</span></div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span><span class="comment"> * (or whether we&#39;re even sending anything)</span></div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> <span class="comment">/* Generate either RTCP Sender or Receiver report and sent it to all participants</span></div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span><span class="comment"> * Return RTP_OK on success and RTP_ERROR on error */</span></div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> rtp_error_t generate_report();</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> </div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> <span class="comment">/* Handle incoming RTCP packet (first make sure it&#39;s a valid RTCP packet)</span></div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span><span class="comment"> * This function will call one of the above functions internally</span></div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span><span class="comment"> *</span></div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"> 146</span><span class="comment"> * Return RTP_OK on success and RTP_ERROR on error */</span></div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> rtp_error_t handle_incoming_packet(<span class="keywordtype">void</span>* args, <span class="keywordtype">int</span> rce_flags, uint8_t* buffer, <span class="keywordtype">size_t</span> size, <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtp__frame.html">frame::rtp_frame</a>** out);</div>
<div class="line"><a id="l00149" name="l00149"></a><span class="lineno"> 149</span> </div>
<div class="line"><a id="l00150" name="l00150"></a><span class="lineno"> 150</span> <span class="comment">/* Send &quot;frame&quot; to all participants</span></div>
<div class="line"><a id="l00151" name="l00151"></a><span class="lineno"> 151</span><span class="comment"> *</span></div>
<div class="line"><a id="l00152" name="l00152"></a><span class="lineno"> 152</span><span class="comment"> * These routines will convert all necessary fields to network byte order</span></div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span><span class="comment"> *</span></div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span><span class="comment"> * Return RTP_OK on success</span></div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span><span class="comment"> * Return RTP_INVALID_VALUE if &quot;frame&quot; is in some way invalid</span></div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span><span class="comment"> * Return RTP_SEND_ERROR if sending &quot;frame&quot; did not succeed (see socket.hh for details) */</span></div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> </div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#a65680d4ba308fc8cb92fd41f0d313c84"> 167</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a65680d4ba308fc8cb92fd41f0d313c84">send_sdes_packet</a>(<span class="keyword">const</span> std::vector&lt;uvgrtp::frame::rtcp_sdes_item&gt;&amp; items);</div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> </div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#a0c092bca6edda19218a2cb84ed776c34"> 181</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a0c092bca6edda19218a2cb84ed776c34">send_app_packet</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *name, uint8_t subtype, uint32_t payload_len, <span class="keyword">const</span> uint8_t *payload);</div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> </div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#a2b831698320212e382e3d565e62d31c4"> 197</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a2b831698320212e382e3d565e62d31c4">send_bye_packet</a>(std::vector&lt;uint32_t&gt; ssrcs);</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> </div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"> 200</span> <span class="comment">/* Return the latest RTCP packet received from participant of &quot;ssrc&quot;</span></div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span><span class="comment"> * Return nullptr if we haven&#39;t received this kind of packet or if &quot;ssrc&quot; doesn&#39;t exist</span></div>
<div class="line"><a id="l00202" name="l00202"></a><span class="lineno"> 202</span><span class="comment"> *</span></div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"> 203</span><span class="comment"> * NOTE: Caller is responsible for deallocating the memory */</span></div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sender__report.html">uvgrtp::frame::rtcp_sender_report</a> *get_sender_packet(uint32_t ssrc);</div>
<div class="line"><a id="l00205" name="l00205"></a><span class="lineno"> 205</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__receiver__report.html">uvgrtp::frame::rtcp_receiver_report</a> *get_receiver_packet(uint32_t ssrc);</div>
<div class="line"><a id="l00206" name="l00206"></a><span class="lineno"> 206</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html">uvgrtp::frame::rtcp_sdes_packet</a> *get_sdes_packet(uint32_t ssrc);</div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"> 207</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html">uvgrtp::frame::rtcp_app_packet</a> *get_app_packet(uint32_t ssrc);</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> </div>
<div class="line"><a id="l00209" name="l00209"></a><span class="lineno"> 209</span> <span class="comment">/* Somebody joined the multicast group the owner of this RTCP instance is part of</span></div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"> 210</span><span class="comment"> * Add it to RTCP participant list so we can start listening for reports</span></div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span><span class="comment"> *</span></div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span><span class="comment"> * Return RTP_OK on success and RTP_ERROR on error */</span></div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span> rtp_error_t add_initial_participant(uint32_t clock_rate);</div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span> </div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span> <span class="comment">/* Functions for updating various RTP sender statistics */</span></div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> <span class="keywordtype">void</span> sender_update_stats(<span class="keyword">const</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtp__frame.html">uvgrtp::frame::rtp_frame</a> *frame);</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> </div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> <span class="comment">/* If we&#39;ve detected that our SSRC has collided with someone else&#39;s SSRC, we need to</span></div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span><span class="comment"> * generate new random SSRC and reinitialize our own RTCP state.</span></div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span><span class="comment"> * RTCP object still has the participants of &quot;last session&quot;, we can use their SSRCs</span></div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span><span class="comment"> * to detected new collision</span></div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span><span class="comment"> *</span></div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span><span class="comment"> * Return RTP_OK if reinitialization succeeded</span></div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span><span class="comment"> * Return RTP_SSRC_COLLISION if our new SSRC has collided and we need to generate new SSRC */</span></div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> rtp_error_t reset_rtcp_state(uint32_t ssrc);</div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span> </div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span> <span class="comment">/* Update various session statistics */</span></div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span> <span class="keywordtype">void</span> update_session_statistics(<span class="keyword">const</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtp__frame.html">uvgrtp::frame::rtp_frame</a> *frame);</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> </div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> <span class="comment">/* Getter for interval_ms_, which is calculated by set_session_bandwidth */</span></div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> uint32_t get_rtcp_interval_ms() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> </div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> <span class="comment">/* Set RTCP packet transmission interval in milliseconds</span></div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span><span class="comment"> *</span></div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span><span class="comment"> * Return RTP_OK if interval was set successfully</span></div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span><span class="comment"> * Return RTP_INVALID_VALUE if new interval is invalid */</span></div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> rtp_error_t set_rtcp_interval_ms(int32_t new_interval);</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> </div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span> <span class="comment">/* Set total bandwidth for this session, called at the start </span></div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span><span class="comment"> * If you want to set the interval manually later, use</span></div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span><span class="comment"> * set_rtcp_interval_ms() function */</span></div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> <span class="keywordtype">void</span> set_session_bandwidth(uint32_t kbps);</div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span><span class="comment"> * &quot;clock_rate&quot; tells how much the RTP timestamp advances, this information is needed</span></div>
<div class="line"><a id="l00213" name="l00213"></a><span class="lineno"> 213</span><span class="comment"> * to calculate the interarrival jitter correctly. It has nothing do with our clock rate,</span></div>
<div class="line"><a id="l00214" name="l00214"></a><span class="lineno"> 214</span><span class="comment"> * (or whether we&#39;re even sending anything)</span></div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"> 215</span><span class="comment"> *</span></div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span><span class="comment"> * Return RTP_OK on success and RTP_ERROR on error */</span></div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> rtp_error_t add_initial_participant(uint32_t clock_rate);</div>
<div class="line"><a id="l00218" name="l00218"></a><span class="lineno"> 218</span> </div>
<div class="line"><a id="l00219" name="l00219"></a><span class="lineno"> 219</span> <span class="comment">/* Functions for updating various RTP sender statistics */</span></div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"> 220</span> <span class="keywordtype">void</span> sender_update_stats(<span class="keyword">const</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtp__frame.html">uvgrtp::frame::rtp_frame</a> *frame);</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> </div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> <span class="comment">/* If we&#39;ve detected that our SSRC has collided with someone else&#39;s SSRC, we need to</span></div>
<div class="line"><a id="l00223" name="l00223"></a><span class="lineno"> 223</span><span class="comment"> * generate new random SSRC and reinitialize our own RTCP state.</span></div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"> 224</span><span class="comment"> * RTCP object still has the participants of &quot;last session&quot;, we can use their SSRCs</span></div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span><span class="comment"> * to detected new collision</span></div>
<div class="line"><a id="l00226" name="l00226"></a><span class="lineno"> 226</span><span class="comment"> *</span></div>
<div class="line"><a id="l00227" name="l00227"></a><span class="lineno"> 227</span><span class="comment"> * Return RTP_OK if reinitialization succeeded</span></div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"> 228</span><span class="comment"> * Return RTP_SSRC_COLLISION if our new SSRC has collided and we need to generate new SSRC */</span></div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> rtp_error_t reset_rtcp_state(uint32_t ssrc);</div>
<div class="line"><a id="l00230" name="l00230"></a><span class="lineno"> 230</span> </div>
<div class="line"><a id="l00231" name="l00231"></a><span class="lineno"> 231</span> <span class="comment">/* Update various session statistics */</span></div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"> 232</span> <span class="keywordtype">void</span> update_session_statistics(<span class="keyword">const</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtp__frame.html">uvgrtp::frame::rtp_frame</a> *frame);</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> </div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"> 234</span> <span class="comment">/* Getter for interval_ms_, which is calculated by set_session_bandwidth</span></div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span><span class="comment"> * Be aware that this interval is frequently re-calculated in rtcp_runner() */</span></div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> uint32_t get_rtcp_interval_ms() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"> 237</span> </div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> <span class="comment">/* Set total bandwidth for this session, called at the start </span></div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"> 239</span><span class="comment"> * This affects the RTCP packet transmission interval */</span></div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> <span class="keywordtype">void</span> set_session_bandwidth(uint32_t kbps);</div>
<div class="line"><a id="l00241" name="l00241"></a><span class="lineno"> 241</span> </div>
<div class="line"><a id="l00242" name="l00242"></a><span class="lineno"> 242</span> std::shared_ptr&lt;uvgrtp::socket&gt; get_socket() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00243" name="l00243"></a><span class="lineno"> 243</span> </div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> std::shared_ptr&lt;uvgrtp::socket&gt; get_socket() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span> </div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> <span class="comment">/* Store the following info in RTCP</span></div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span><span class="comment"> * Local IP address</span></div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span><span class="comment"> * Remote IP address</span></div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span><span class="comment"> * Local port number for RTCP</span></div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span><span class="comment"> * Destination port number for RTCP</span></div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span><span class="comment"> * These are used when adding new participants and creating sockets for them */</span></div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> </div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> rtp_error_t set_network_addresses(std::string local_addr, std::string remote_addr,</div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> uint16_t local_port, uint16_t dst_port, <span class="keywordtype">bool</span> ipv6);</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> </div>
<div class="line"><a id="l00256" name="l00256"></a><span class="lineno"> 256</span> <span class="comment">/* Return SSRCs of all participants */</span></div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> std::vector&lt;uint32_t&gt; get_participants() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> </div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#a5d0d06f9b4b7779d96d8d60938627316"> 274</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a5d0d06f9b4b7779d96d8d60938627316">set_ts_info</a>(uint64_t clock_start, uint32_t clock_rate, uint32_t rtp_ts_start);</div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span> </div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span> <span class="comment">/* Alternate way to get RTCP packets is to install a hook for them. So instead of</span></div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span><span class="comment"> * polling an RTCP packet, user can install a function that is called when</span></div>
<div class="line"><a id="l00278" name="l00278"></a><span class="lineno"> 278</span><span class="comment"> * a specific RTCP packet is received. */</span></div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> </div>
<div class="line"><a id="l00290" name="l00290"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#a4a262a814ffa3093ac6829c90b0b3fd1"> 290</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a4a262a814ffa3093ac6829c90b0b3fd1">install_sender_hook</a>(<span class="keywordtype">void</span> (*hook)(<a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sender__report.html">uvgrtp::frame::rtcp_sender_report</a> *));</div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"> 291</span> </div>
<div class="line"><a id="l00302" name="l00302"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#a79a46d4dff360019a8a089112998b9eb"> 302</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a79a46d4dff360019a8a089112998b9eb">install_sender_hook</a>(std::function&lt;<span class="keywordtype">void</span>(std::unique_ptr&lt;uvgrtp::frame::rtcp_sender_report&gt;)&gt; sr_handler);</div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"> 303</span> </div>
<div class="line"><a id="l00314" name="l00314"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#a04c887fe95173d55294f57d639a1f602"> 314</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a04c887fe95173d55294f57d639a1f602">install_receiver_hook</a>(<span class="keywordtype">void</span> (*hook)(<a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__receiver__report.html">uvgrtp::frame::rtcp_receiver_report</a> *));</div>
<div class="line"><a id="l00315" name="l00315"></a><span class="lineno"> 315</span> </div>
<div class="line"><a id="l00326" name="l00326"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#a2140c6bc5160b4b2bfdf54a91af45422"> 326</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a2140c6bc5160b4b2bfdf54a91af45422">install_receiver_hook</a>(std::function&lt;<span class="keywordtype">void</span>(std::unique_ptr&lt;uvgrtp::frame::rtcp_receiver_report&gt;)&gt; rr_handler);</div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"> 327</span> </div>
<div class="line"><a id="l00338" name="l00338"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#ad694a3a869b1c28309e1f2db6d7c2e50"> 338</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#ad694a3a869b1c28309e1f2db6d7c2e50">install_sdes_hook</a>(<span class="keywordtype">void</span> (*hook)(<a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html">uvgrtp::frame::rtcp_sdes_packet</a> *));</div>
<div class="line"><a id="l00339" name="l00339"></a><span class="lineno"> 339</span> </div>
<div class="line"><a id="l00350" name="l00350"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#a35daabdb93e3bdd40b1ea51e6079bd40"> 350</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a35daabdb93e3bdd40b1ea51e6079bd40">install_sdes_hook</a>(std::function&lt;<span class="keywordtype">void</span>(std::unique_ptr&lt;uvgrtp::frame::rtcp_sdes_packet&gt;)&gt; sdes_handler);</div>
<div class="line"><a id="l00351" name="l00351"></a><span class="lineno"> 351</span> </div>
<div class="line"><a id="l00362" name="l00362"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#a977c99cfaa1442553ab12d4c140bbb0f"> 362</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a977c99cfaa1442553ab12d4c140bbb0f">install_app_hook</a>(<span class="keywordtype">void</span> (*hook)(<a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html">uvgrtp::frame::rtcp_app_packet</a> *));</div>
<div class="line"><a id="l00363" name="l00363"></a><span class="lineno"> 363</span> </div>
<div class="line"><a id="l00374" name="l00374"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#a76cb98093acfb54050b50ff82106ca94"> 374</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a76cb98093acfb54050b50ff82106ca94">install_app_hook</a>(std::function&lt;<span class="keywordtype">void</span>(std::unique_ptr&lt;uvgrtp::frame::rtcp_app_packet&gt;)&gt; app_handler);</div>
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span> </div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span> <span class="comment">// These have been replaced by functions with unique_ptr in them</span></div>
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a4a262a814ffa3093ac6829c90b0b3fd1">install_sender_hook</a>(std::function&lt;<span class="keywordtype">void</span>(std::shared_ptr&lt;uvgrtp::frame::rtcp_sender_report&gt;)&gt; sr_handler);</div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a04c887fe95173d55294f57d639a1f602">install_receiver_hook</a>(std::function&lt;<span class="keywordtype">void</span>(std::shared_ptr&lt;uvgrtp::frame::rtcp_receiver_report&gt;)&gt; rr_handler);</div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#ad694a3a869b1c28309e1f2db6d7c2e50">install_sdes_hook</a>(std::function&lt;<span class="keywordtype">void</span>(std::shared_ptr&lt;uvgrtp::frame::rtcp_sdes_packet&gt;)&gt; sdes_handler);</div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a977c99cfaa1442553ab12d4c140bbb0f">install_app_hook</a>(std::function&lt;<span class="keywordtype">void</span>(std::shared_ptr&lt;uvgrtp::frame::rtcp_app_packet&gt;)&gt; app_handler);</div>
<div class="line"><a id="l00383" name="l00383"></a><span class="lineno"> 383</span> </div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#ad62ad1cc01e3d0808ac8254ce30756a1"> 394</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#ad62ad1cc01e3d0808ac8254ce30756a1">install_send_app_hook</a>(std::string app_name, std::function&lt;std::unique_ptr&lt;uint8_t[]&gt;(uint8_t&amp; subtype, uint32_t&amp; payload_len)&gt; app_sending_func);</div>
<div class="line"><a id="l00395" name="l00395"></a><span class="lineno"> 395</span> </div>
<div class="line"><a id="l00403" name="l00403"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#a81198428cc697c0c7cbb2a4191f294d8"> 403</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a81198428cc697c0c7cbb2a4191f294d8">remove_all_hooks</a>();</div>
<div class="line"><a id="l00404" name="l00404"></a><span class="lineno"> 404</span> </div>
<div class="line"><a id="l00405" name="l00405"></a><span class="lineno"> 405</span> rtp_error_t remove_send_app_hook(std::string app_name);</div>
<div class="line"><a id="l00406" name="l00406"></a><span class="lineno"> 406</span> </div>
<div class="line"><a id="l00408" name="l00408"></a><span class="lineno"> 408</span> <span class="comment">/* Update RTCP-related sender statistics */</span></div>
<div class="line"><a id="l00409" name="l00409"></a><span class="lineno"> 409</span> rtp_error_t update_sender_stats(<span class="keywordtype">size_t</span> pkt_size);</div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"> 410</span> </div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span> <span class="comment">/* Update RTCP-related receiver statistics */</span></div>
<div class="line"><a id="l00412" name="l00412"></a><span class="lineno"> 412</span> <span class="keyword">static</span> rtp_error_t recv_packet_handler(<span class="keywordtype">void</span> *arg, <span class="keywordtype">int</span> rce_flags, <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtp__frame.html">frame::rtp_frame</a> **out);</div>
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span> </div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span> <span class="comment">/* Update RTCP-related sender statistics */</span></div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> <span class="keyword">static</span> rtp_error_t send_packet_handler_vec(<span class="keywordtype">void</span> *arg, uvgrtp::buf_vec&amp; buffers);</div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span> </div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span> <span class="comment">// the length field is the rtcp packet size measured in 32-bit words - 1</span></div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> <span class="keywordtype">size_t</span> rtcp_length_in_bytes(uint16_t length);</div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span> </div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> <span class="keywordtype">void</span> set_payload_size(<span class="keywordtype">size_t</span> mtu_size);</div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span> </div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span> </div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span> rtp_error_t set_sdes_items(<span class="keyword">const</span> std::vector&lt;uvgrtp::frame::rtcp_sdes_item&gt;&amp; items);</div>
<div class="line"><a id="l00244" name="l00244"></a><span class="lineno"> 244</span> <span class="comment">/* Store the following info in RTCP</span></div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"> 245</span><span class="comment"> * Local IP address</span></div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span><span class="comment"> * Remote IP address</span></div>
<div class="line"><a id="l00247" name="l00247"></a><span class="lineno"> 247</span><span class="comment"> * Local port number for RTCP</span></div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"> 248</span><span class="comment"> * Destination port number for RTCP</span></div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span><span class="comment"> * These are used when adding new participants and creating sockets for them */</span></div>
<div class="line"><a id="l00250" name="l00250"></a><span class="lineno"> 250</span> </div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"> 251</span> rtp_error_t set_network_addresses(std::string local_addr, std::string remote_addr,</div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> uint16_t local_port, uint16_t dst_port, <span class="keywordtype">bool</span> ipv6);</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> </div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"> 254</span> <span class="comment">/* Return SSRCs of all participants */</span></div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> std::vector&lt;uint32_t&gt; get_participants() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"> 257</span> </div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#a5d0d06f9b4b7779d96d8d60938627316"> 272</a></span> <span class="keywordtype">void</span> <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a5d0d06f9b4b7779d96d8d60938627316">set_ts_info</a>(uint64_t clock_start, uint32_t clock_rate, uint32_t rtp_ts_start);</div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> </div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> <span class="comment">/* Alternate way to get RTCP packets is to install a hook for them. So instead of</span></div>
<div class="line"><a id="l00275" name="l00275"></a><span class="lineno"> 275</span><span class="comment"> * polling an RTCP packet, user can install a function that is called when</span></div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"> 276</span><span class="comment"> * a specific RTCP packet is received. */</span></div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> </div>
<div class="line"><a id="l00288" name="l00288"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#a4a262a814ffa3093ac6829c90b0b3fd1"> 288</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a4a262a814ffa3093ac6829c90b0b3fd1">install_sender_hook</a>(<span class="keywordtype">void</span> (*hook)(<a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sender__report.html">uvgrtp::frame::rtcp_sender_report</a> *));</div>
<div class="line"><a id="l00289" name="l00289"></a><span class="lineno"> 289</span> </div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#a79a46d4dff360019a8a089112998b9eb"> 300</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a79a46d4dff360019a8a089112998b9eb">install_sender_hook</a>(std::function&lt;<span class="keywordtype">void</span>(std::unique_ptr&lt;uvgrtp::frame::rtcp_sender_report&gt;)&gt; sr_handler);</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> </div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#a04c887fe95173d55294f57d639a1f602"> 312</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a04c887fe95173d55294f57d639a1f602">install_receiver_hook</a>(<span class="keywordtype">void</span> (*hook)(<a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__receiver__report.html">uvgrtp::frame::rtcp_receiver_report</a> *));</div>
<div class="line"><a id="l00313" name="l00313"></a><span class="lineno"> 313</span> </div>
<div class="line"><a id="l00324" name="l00324"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#a2140c6bc5160b4b2bfdf54a91af45422"> 324</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a2140c6bc5160b4b2bfdf54a91af45422">install_receiver_hook</a>(std::function&lt;<span class="keywordtype">void</span>(std::unique_ptr&lt;uvgrtp::frame::rtcp_receiver_report&gt;)&gt; rr_handler);</div>
<div class="line"><a id="l00325" name="l00325"></a><span class="lineno"> 325</span> </div>
<div class="line"><a id="l00336" name="l00336"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#ad694a3a869b1c28309e1f2db6d7c2e50"> 336</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#ad694a3a869b1c28309e1f2db6d7c2e50">install_sdes_hook</a>(<span class="keywordtype">void</span> (*hook)(<a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html">uvgrtp::frame::rtcp_sdes_packet</a> *));</div>
<div class="line"><a id="l00337" name="l00337"></a><span class="lineno"> 337</span> </div>
<div class="line"><a id="l00348" name="l00348"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#a35daabdb93e3bdd40b1ea51e6079bd40"> 348</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a35daabdb93e3bdd40b1ea51e6079bd40">install_sdes_hook</a>(std::function&lt;<span class="keywordtype">void</span>(std::unique_ptr&lt;uvgrtp::frame::rtcp_sdes_packet&gt;)&gt; sdes_handler);</div>
<div class="line"><a id="l00349" name="l00349"></a><span class="lineno"> 349</span> </div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#a977c99cfaa1442553ab12d4c140bbb0f"> 360</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a977c99cfaa1442553ab12d4c140bbb0f">install_app_hook</a>(<span class="keywordtype">void</span> (*hook)(<a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html">uvgrtp::frame::rtcp_app_packet</a> *));</div>
<div class="line"><a id="l00361" name="l00361"></a><span class="lineno"> 361</span> </div>
<div class="line"><a id="l00372" name="l00372"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#a76cb98093acfb54050b50ff82106ca94"> 372</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a76cb98093acfb54050b50ff82106ca94">install_app_hook</a>(std::function&lt;<span class="keywordtype">void</span>(std::unique_ptr&lt;uvgrtp::frame::rtcp_app_packet&gt;)&gt; app_handler);</div>
<div class="line"><a id="l00373" name="l00373"></a><span class="lineno"> 373</span> </div>
<div class="line"><a id="l00375" name="l00375"></a><span class="lineno"> 375</span> <span class="comment">// These have been replaced by functions with unique_ptr in them</span></div>
<div class="line"><a id="l00376" name="l00376"></a><span class="lineno"> 376</span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a4a262a814ffa3093ac6829c90b0b3fd1">install_sender_hook</a>(std::function&lt;<span class="keywordtype">void</span>(std::shared_ptr&lt;uvgrtp::frame::rtcp_sender_report&gt;)&gt; sr_handler);</div>
<div class="line"><a id="l00377" name="l00377"></a><span class="lineno"> 377</span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a04c887fe95173d55294f57d639a1f602">install_receiver_hook</a>(std::function&lt;<span class="keywordtype">void</span>(std::shared_ptr&lt;uvgrtp::frame::rtcp_receiver_report&gt;)&gt; rr_handler);</div>
<div class="line"><a id="l00378" name="l00378"></a><span class="lineno"> 378</span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#ad694a3a869b1c28309e1f2db6d7c2e50">install_sdes_hook</a>(std::function&lt;<span class="keywordtype">void</span>(std::shared_ptr&lt;uvgrtp::frame::rtcp_sdes_packet&gt;)&gt; sdes_handler);</div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"> 379</span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a977c99cfaa1442553ab12d4c140bbb0f">install_app_hook</a>(std::function&lt;<span class="keywordtype">void</span>(std::shared_ptr&lt;uvgrtp::frame::rtcp_app_packet&gt;)&gt; app_handler);</div>
<div class="line"><a id="l00381" name="l00381"></a><span class="lineno"> 381</span> </div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#ad62ad1cc01e3d0808ac8254ce30756a1"> 392</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#ad62ad1cc01e3d0808ac8254ce30756a1">install_send_app_hook</a>(std::string app_name, std::function&lt;std::unique_ptr&lt;uint8_t[]&gt;(uint8_t&amp; subtype, uint32_t&amp; payload_len)&gt; app_sending_func);</div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span> </div>
<div class="line"><a id="l00401" name="l00401"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#a81198428cc697c0c7cbb2a4191f294d8"> 401</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a81198428cc697c0c7cbb2a4191f294d8">remove_all_hooks</a>();</div>
<div class="line"><a id="l00402" name="l00402"></a><span class="lineno"> 402</span> </div>
<div class="line"><a id="l00410" name="l00410"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#a27adb6b5965dab3918bd02a2e7a2dfd2"> 410</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1rtcp.html#a27adb6b5965dab3918bd02a2e7a2dfd2">remove_send_app_hook</a>(std::string app_name);</div>
<div class="line"><a id="l00411" name="l00411"></a><span class="lineno"> 411</span> </div>
<div class="line"><a id="l00413" name="l00413"></a><span class="lineno"> 413</span> <span class="comment">/* Update RTCP-related sender statistics */</span></div>
<div class="line"><a id="l00414" name="l00414"></a><span class="lineno"> 414</span> rtp_error_t update_sender_stats(<span class="keywordtype">size_t</span> pkt_size);</div>
<div class="line"><a id="l00415" name="l00415"></a><span class="lineno"> 415</span> </div>
<div class="line"><a id="l00416" name="l00416"></a><span class="lineno"> 416</span> <span class="keywordtype">void</span> set_socket(std::shared_ptr&lt;uvgrtp::socket&gt; socket);</div>
<div class="line"><a id="l00417" name="l00417"></a><span class="lineno"> 417</span> </div>
<div class="line"><a id="l00418" name="l00418"></a><span class="lineno"> 418</span> <span class="comment">/* Update RTCP-related receiver statistics from RTP packets */</span></div>
<div class="line"><a id="l00419" name="l00419"></a><span class="lineno"> 419</span> rtp_error_t recv_packet_handler_common(<span class="keywordtype">void</span> *arg, <span class="keywordtype">int</span> rce_flags, uint8_t* read_ptr, <span class="keywordtype">size_t</span> size, <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtp__frame.html">frame::rtp_frame</a> **out);</div>
<div class="line"><a id="l00420" name="l00420"></a><span class="lineno"> 420</span> </div>
<div class="line"><a id="l00421" name="l00421"></a><span class="lineno"> 421</span> <span class="comment">/* Update RTCP-related sender statistics */</span></div>
<div class="line"><a id="l00422" name="l00422"></a><span class="lineno"> 422</span> <span class="keyword">static</span> rtp_error_t send_packet_handler_vec(<span class="keywordtype">void</span> *arg, uvgrtp::buf_vec&amp; buffers);</div>
<div class="line"><a id="l00423" name="l00423"></a><span class="lineno"> 423</span> </div>
<div class="line"><a id="l00424" name="l00424"></a><span class="lineno"> 424</span> <span class="comment">// the length field is the rtcp packet size measured in 32-bit words - 1</span></div>
<div class="line"><a id="l00425" name="l00425"></a><span class="lineno"> 425</span> <span class="keywordtype">size_t</span> rtcp_length_in_bytes(uint16_t length);</div>
<div class="line"><a id="l00426" name="l00426"></a><span class="lineno"> 426</span> </div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> uint32_t size_of_ready_app_packets() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00428" name="l00428"></a><span class="lineno"> 428</span> uint32_t size_of_apps_from_hook(std::vector&lt; std::shared_ptr&lt;rtcp_app_packet&gt;&gt; packets) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00427" name="l00427"></a><span class="lineno"> 427</span> <span class="keywordtype">void</span> set_payload_size(<span class="keywordtype">size_t</span> mtu_size);</div>
<div class="line"><a id="l00429" name="l00429"></a><span class="lineno"> 429</span> </div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span> uint32_t size_of_compound_packet(uint16_t reports,</div>
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span> <span class="keywordtype">bool</span> sr_packet, <span class="keywordtype">bool</span> rr_packet, <span class="keywordtype">bool</span> sdes_packet, uint32_t app_size, <span class="keywordtype">bool</span> bye_packet) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span> </div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span> <span class="comment">/* read the header values from rtcp packet */</span></div>
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span> <span class="keywordtype">void</span> read_rtcp_header(<span class="keyword">const</span> uint8_t* buffer, <span class="keywordtype">size_t</span>&amp; read_ptr, </div>
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a>&amp; header);</div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> <span class="keywordtype">void</span> read_reports(<span class="keyword">const</span> uint8_t* buffer, <span class="keywordtype">size_t</span>&amp; read_ptr, <span class="keywordtype">size_t</span> packet_end, uint8_t count,</div>
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span> std::vector&lt;uvgrtp::frame::rtcp_report_block&gt;&amp; reports);</div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> </div>
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span> <span class="keywordtype">void</span> read_ssrc(<span class="keyword">const</span> uint8_t* buffer, <span class="keywordtype">size_t</span>&amp; read_ptr, uint32_t&amp; out_ssrc);</div>
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> </div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> <span class="comment">/* Handle different kinds of incoming rtcp packets. The read header is passed to functions</span></div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span><span class="comment"> which read rest of the frame type specific data.</span></div>
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span><span class="comment"> * Return RTP_OK on success and RTP_ERROR on error */</span></div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> rtp_error_t handle_sender_report_packet(uint8_t* buffer, <span class="keywordtype">size_t</span>&amp; read_ptr, <span class="keywordtype">size_t</span> packet_end,</div>
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a>&amp; header);</div>
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span> rtp_error_t handle_receiver_report_packet(uint8_t* buffer, <span class="keywordtype">size_t</span>&amp; read_ptr, <span class="keywordtype">size_t</span> packet_end,</div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a>&amp; header);</div>
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span> rtp_error_t handle_sdes_packet(uint8_t* buffer, <span class="keywordtype">size_t</span>&amp; read_ptr, <span class="keywordtype">size_t</span> packet_end,</div>
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a>&amp; header, uint32_t sender_ssrc);</div>
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span> rtp_error_t handle_bye_packet(uint8_t* buffer, <span class="keywordtype">size_t</span>&amp; read_ptr,</div>
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a>&amp; header);</div>
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span> rtp_error_t handle_app_packet(uint8_t* buffer, <span class="keywordtype">size_t</span>&amp; read_ptr, <span class="keywordtype">size_t</span> packet_end,</div>
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"> 453</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a>&amp; header);</div>
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span> </div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> <span class="keyword">static</span> <span class="keywordtype">void</span> rtcp_runner(<a class="code hl_class" href="classuvgrtp_1_1rtcp.html">rtcp</a> *<a class="code hl_class" href="classuvgrtp_1_1rtcp.html">rtcp</a>);</div>
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span> </div>
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span> <span class="keyword">static</span> <span class="keywordtype">void</span> rtcp_report_reader(<a class="code hl_class" href="classuvgrtp_1_1rtcp.html">rtcp</a> *<a class="code hl_class" href="classuvgrtp_1_1rtcp.html">rtcp</a>);</div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span> </div>
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> <span class="comment">/* when we start the RTCP instance, we don&#39;t know what the SSRC of the remote is</span></div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span><span class="comment"> * when an RTP packet is received, we must check if we&#39;ve already received a packet</span></div>
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span><span class="comment"> * from this sender and if not, create new entry to receiver_stats_ map */</span></div>
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span> <span class="keywordtype">bool</span> is_participant(uint32_t ssrc) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00430" name="l00430"></a><span class="lineno"> 430</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00431" name="l00431"></a><span class="lineno"> 431</span> </div>
<div class="line"><a id="l00432" name="l00432"></a><span class="lineno"> 432</span> rtp_error_t set_sdes_items(<span class="keyword">const</span> std::vector&lt;uvgrtp::frame::rtcp_sdes_item&gt;&amp; items);</div>
<div class="line"><a id="l00433" name="l00433"></a><span class="lineno"> 433</span> </div>
<div class="line"><a id="l00434" name="l00434"></a><span class="lineno"> 434</span> uint32_t size_of_ready_app_packets() <span class="keyword">const</span>;</div>
<div class="line"><a id="l00435" name="l00435"></a><span class="lineno"> 435</span> uint32_t size_of_apps_from_hook(std::vector&lt; std::shared_ptr&lt;rtcp_app_packet&gt;&gt; packets) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00436" name="l00436"></a><span class="lineno"> 436</span> </div>
<div class="line"><a id="l00437" name="l00437"></a><span class="lineno"> 437</span> uint32_t size_of_compound_packet(uint16_t reports,</div>
<div class="line"><a id="l00438" name="l00438"></a><span class="lineno"> 438</span> <span class="keywordtype">bool</span> sr_packet, <span class="keywordtype">bool</span> rr_packet, <span class="keywordtype">bool</span> sdes_packet, uint32_t app_size, <span class="keywordtype">bool</span> bye_packet) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00439" name="l00439"></a><span class="lineno"> 439</span> </div>
<div class="line"><a id="l00440" name="l00440"></a><span class="lineno"> 440</span> <span class="comment">/* read the header values from rtcp packet */</span></div>
<div class="line"><a id="l00441" name="l00441"></a><span class="lineno"> 441</span> <span class="keywordtype">void</span> read_rtcp_header(<span class="keyword">const</span> uint8_t* buffer, <span class="keywordtype">size_t</span>&amp; read_ptr, </div>
<div class="line"><a id="l00442" name="l00442"></a><span class="lineno"> 442</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a>&amp; header);</div>
<div class="line"><a id="l00443" name="l00443"></a><span class="lineno"> 443</span> <span class="keywordtype">void</span> read_reports(<span class="keyword">const</span> uint8_t* buffer, <span class="keywordtype">size_t</span>&amp; read_ptr, <span class="keywordtype">size_t</span> packet_end, uint8_t count,</div>
<div class="line"><a id="l00444" name="l00444"></a><span class="lineno"> 444</span> std::vector&lt;uvgrtp::frame::rtcp_report_block&gt;&amp; reports);</div>
<div class="line"><a id="l00445" name="l00445"></a><span class="lineno"> 445</span> </div>
<div class="line"><a id="l00446" name="l00446"></a><span class="lineno"> 446</span> <span class="keywordtype">void</span> read_ssrc(<span class="keyword">const</span> uint8_t* buffer, <span class="keywordtype">size_t</span>&amp; read_ptr, uint32_t&amp; out_ssrc);</div>
<div class="line"><a id="l00447" name="l00447"></a><span class="lineno"> 447</span> </div>
<div class="line"><a id="l00448" name="l00448"></a><span class="lineno"> 448</span> <span class="comment">/* Handle different kinds of incoming rtcp packets. The read header is passed to functions</span></div>
<div class="line"><a id="l00449" name="l00449"></a><span class="lineno"> 449</span><span class="comment"> which read rest of the frame type specific data.</span></div>
<div class="line"><a id="l00450" name="l00450"></a><span class="lineno"> 450</span><span class="comment"> * Return RTP_OK on success and RTP_ERROR on error */</span></div>
<div class="line"><a id="l00451" name="l00451"></a><span class="lineno"> 451</span> rtp_error_t handle_sender_report_packet(uint8_t* buffer, <span class="keywordtype">size_t</span>&amp; read_ptr, <span class="keywordtype">size_t</span> packet_end,</div>
<div class="line"><a id="l00452" name="l00452"></a><span class="lineno"> 452</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a>&amp; header);</div>
<div class="line"><a id="l00453" name="l00453"></a><span class="lineno"> 453</span> rtp_error_t handle_receiver_report_packet(uint8_t* buffer, <span class="keywordtype">size_t</span>&amp; read_ptr, <span class="keywordtype">size_t</span> packet_end,</div>
<div class="line"><a id="l00454" name="l00454"></a><span class="lineno"> 454</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a>&amp; header);</div>
<div class="line"><a id="l00455" name="l00455"></a><span class="lineno"> 455</span> rtp_error_t handle_sdes_packet(uint8_t* buffer, <span class="keywordtype">size_t</span>&amp; read_ptr, <span class="keywordtype">size_t</span> packet_end,</div>
<div class="line"><a id="l00456" name="l00456"></a><span class="lineno"> 456</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a>&amp; header, uint32_t sender_ssrc);</div>
<div class="line"><a id="l00457" name="l00457"></a><span class="lineno"> 457</span> rtp_error_t handle_bye_packet(uint8_t* buffer, <span class="keywordtype">size_t</span>&amp; read_ptr,</div>
<div class="line"><a id="l00458" name="l00458"></a><span class="lineno"> 458</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a>&amp; header);</div>
<div class="line"><a id="l00459" name="l00459"></a><span class="lineno"> 459</span> rtp_error_t handle_app_packet(uint8_t* buffer, <span class="keywordtype">size_t</span>&amp; read_ptr, <span class="keywordtype">size_t</span> packet_end,</div>
<div class="line"><a id="l00460" name="l00460"></a><span class="lineno"> 460</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a>&amp; header);</div>
<div class="line"><a id="l00461" name="l00461"></a><span class="lineno"> 461</span> rtp_error_t handle_fb_packet(uint8_t* buffer, <span class="keywordtype">size_t</span>&amp; read_ptr, <span class="keywordtype">size_t</span> packet_end,</div>
<div class="line"><a id="l00462" name="l00462"></a><span class="lineno"> 462</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a>&amp; header);</div>
<div class="line"><a id="l00463" name="l00463"></a><span class="lineno"> 463</span> </div>
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span> <span class="comment">//TODO: Resolve collision??</span></div>
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span> <span class="comment">/* When we receive an RTP or RTCP packet, we need to check the source address and see if it&#39;s</span></div>
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span><span class="comment"> * the same address where we&#39;ve received packets before.</span></div>
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span><span class="comment"> *</span></div>
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span><span class="comment"> * If the address is new, it means we have detected an SSRC collision and the paket should</span></div>
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span><span class="comment"> * be dropped We also need to check whether this SSRC matches with our own SSRC and if it does</span></div>
<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"> 470</span><span class="comment"> * we need to send RTCP BYE and rejoin to the session */</span></div>
<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"> 471</span> <span class="keywordtype">bool</span> collision_detected(uint32_t ssrc) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"> 472</span> </div>
<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"> 473</span> <span class="comment">/* Move participant from initial_peers_ to participants_ */</span></div>
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"> 474</span> rtp_error_t add_participant(uint32_t ssrc);</div>
<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"> 475</span> </div>
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span> <span class="comment">/* We&#39;ve got a message from new source (the SSRC of the frame is not known to us)</span></div>
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span><span class="comment"> * Initialize statistics for the peer and move it to participants_ */</span></div>
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"> 478</span> rtp_error_t init_new_participant(<span class="keyword">const</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtp__frame.html">uvgrtp::frame::rtp_frame</a> *frame);</div>
<div class="line"><a id="l00464" name="l00464"></a><span class="lineno"> 464</span> <span class="keyword">static</span> <span class="keywordtype">void</span> rtcp_runner(<a class="code hl_class" href="classuvgrtp_1_1rtcp.html">rtcp</a> *<a class="code hl_class" href="classuvgrtp_1_1rtcp.html">rtcp</a>);</div>
<div class="line"><a id="l00465" name="l00465"></a><span class="lineno"> 465</span> </div>
<div class="line"><a id="l00466" name="l00466"></a><span class="lineno"> 466</span> <span class="comment">/* when we start the RTCP instance, we don&#39;t know what the SSRC of the remote is</span></div>
<div class="line"><a id="l00467" name="l00467"></a><span class="lineno"> 467</span><span class="comment"> * when an RTP packet is received, we must check if we&#39;ve already received a packet</span></div>
<div class="line"><a id="l00468" name="l00468"></a><span class="lineno"> 468</span><span class="comment"> * from this sender and if not, create new entry to receiver_stats_ map */</span></div>
<div class="line"><a id="l00469" name="l00469"></a><span class="lineno"> 469</span> <span class="keywordtype">bool</span> is_participant(uint32_t ssrc) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00470" name="l00470"></a><span class="lineno"> 470</span> </div>
<div class="line"><a id="l00471" name="l00471"></a><span class="lineno"> 471</span> <span class="comment">//TODO: Resolve collision??</span></div>
<div class="line"><a id="l00472" name="l00472"></a><span class="lineno"> 472</span> <span class="comment">/* When we receive an RTP or RTCP packet, we need to check the source address and see if it&#39;s</span></div>
<div class="line"><a id="l00473" name="l00473"></a><span class="lineno"> 473</span><span class="comment"> * the same address where we&#39;ve received packets before.</span></div>
<div class="line"><a id="l00474" name="l00474"></a><span class="lineno"> 474</span><span class="comment"> *</span></div>
<div class="line"><a id="l00475" name="l00475"></a><span class="lineno"> 475</span><span class="comment"> * If the address is new, it means we have detected an SSRC collision and the paket should</span></div>
<div class="line"><a id="l00476" name="l00476"></a><span class="lineno"> 476</span><span class="comment"> * be dropped We also need to check whether this SSRC matches with our own SSRC and if it does</span></div>
<div class="line"><a id="l00477" name="l00477"></a><span class="lineno"> 477</span><span class="comment"> * we need to send RTCP BYE and rejoin to the session */</span></div>
<div class="line"><a id="l00478" name="l00478"></a><span class="lineno"> 478</span> <span class="keywordtype">bool</span> collision_detected(uint32_t ssrc) <span class="keyword">const</span>;</div>
<div class="line"><a id="l00479" name="l00479"></a><span class="lineno"> 479</span> </div>
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"> 480</span> <span class="comment">/* Initialize the RTP Sequence related stuff of peer</span></div>
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"> 481</span><span class="comment"> * This function assumes that the peer already exists in the participants_ map */</span></div>
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"> 482</span> rtp_error_t init_participant_seq(uint32_t ssrc, uint16_t base_seq);</div>
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span> </div>
<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"> 484</span> <span class="comment">/* Update the SSRC&#39;s sequence related data in participants_ map</span></div>
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"> 485</span><span class="comment"> *</span></div>
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"> 486</span><span class="comment"> * Return RTP_OK if the received packet was OK</span></div>
<div class="line"><a id="l00487" name="l00487"></a><span class="lineno"> 487</span><span class="comment"> * Return RTP_GENERIC_ERROR if it wasn&#39;t and</span></div>
<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"> 488</span><span class="comment"> * packet-related statistics should not be updated */</span></div>
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"> 489</span> rtp_error_t update_participant_seq(uint32_t ssrc, uint16_t seq);</div>
<div class="line"><a id="l00480" name="l00480"></a><span class="lineno"> 480</span> <span class="comment">/* Move participant from initial_peers_ to participants_ */</span></div>
<div class="line"><a id="l00481" name="l00481"></a><span class="lineno"> 481</span> rtp_error_t add_participant(uint32_t ssrc);</div>
<div class="line"><a id="l00482" name="l00482"></a><span class="lineno"> 482</span> </div>
<div class="line"><a id="l00483" name="l00483"></a><span class="lineno"> 483</span> <span class="comment">/* We&#39;ve got a message from new source (the SSRC of the frame is not known to us)</span></div>
<div class="line"><a id="l00484" name="l00484"></a><span class="lineno"> 484</span><span class="comment"> * Initialize statistics for the peer and move it to participants_ */</span></div>
<div class="line"><a id="l00485" name="l00485"></a><span class="lineno"> 485</span> rtp_error_t init_new_participant(<span class="keyword">const</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtp__frame.html">uvgrtp::frame::rtp_frame</a> *frame);</div>
<div class="line"><a id="l00486" name="l00486"></a><span class="lineno"> 486</span> </div>
<div class="line"><a id="l00487" name="l00487"></a><span class="lineno"> 487</span> <span class="comment">/* Initialize the RTP Sequence related stuff of peer</span></div>
<div class="line"><a id="l00488" name="l00488"></a><span class="lineno"> 488</span><span class="comment"> * This function assumes that the peer already exists in the participants_ map */</span></div>
<div class="line"><a id="l00489" name="l00489"></a><span class="lineno"> 489</span> rtp_error_t init_participant_seq(uint32_t ssrc, uint16_t base_seq);</div>
<div class="line"><a id="l00490" name="l00490"></a><span class="lineno"> 490</span> </div>
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"> 491</span> <span class="comment">/* Update the RTCP bandwidth variables</span></div>
<div class="line"><a id="l00491" name="l00491"></a><span class="lineno"> 491</span> <span class="comment">/* Update the SSRC&#39;s sequence related data in participants_ map</span></div>
<div class="line"><a id="l00492" name="l00492"></a><span class="lineno"> 492</span><span class="comment"> *</span></div>
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"> 493</span><span class="comment"> * &quot;pkt_size&quot; tells how much rtcp_byte_count_</span></div>
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"> 494</span><span class="comment"> * should be increased before calculating the new average */</span></div>
<div class="line"><a id="l00495" name="l00495"></a><span class="lineno"> 495</span> <span class="keywordtype">void</span> update_rtcp_bandwidth(<span class="keywordtype">size_t</span> pkt_size);</div>
<div class="line"><a id="l00496" name="l00496"></a><span class="lineno"> 496</span> </div>
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno"> 497</span> <span class="comment">/* Update average RTCP packet size variable</span></div>
<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"> 498</span><span class="comment"> * packet_size is the size of received RTCP packet in octets */</span></div>
<div class="line"><a id="l00499" name="l00499"></a><span class="lineno"> 499</span> <span class="keywordtype">void</span> update_avg_rtcp_size(uint64_t packet_size);</div>
<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"> 500</span> </div>
<div class="line"><a id="l00501" name="l00501"></a><span class="lineno"> 501</span> <span class="comment">/* Calculate the RTCP report interval in seconds</span></div>
<div class="line"><a id="l00502" name="l00502"></a><span class="lineno"> 502</span><span class="comment"> * rtcp_bw is given in kbps</span></div>
<div class="line"><a id="l00503" name="l00503"></a><span class="lineno"> 503</span><span class="comment"> * Defined in RFC3550 Appendix A.7 */</span></div>
<div class="line"><a id="l00504" name="l00504"></a><span class="lineno"> 504</span> <span class="keywordtype">double</span> rtcp_interval(<span class="keywordtype">int</span> members, <span class="keywordtype">int</span> senders,</div>
<div class="line"><a id="l00505" name="l00505"></a><span class="lineno"> 505</span> <span class="keywordtype">double</span> rtcp_bw, <span class="keywordtype">bool</span> we_sent, <span class="keywordtype">double</span> avg_rtcp_size, <span class="keywordtype">bool</span> red_min, <span class="keywordtype">bool</span> randomisation);</div>
<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"> 506</span> </div>
<div class="line"><a id="l00507" name="l00507"></a><span class="lineno"> 507</span> <span class="comment">/* RTCP runner keeps track of ssrcs and how long they have been silent.</span></div>
<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"> 508</span><span class="comment"> * By default a source get timed out if it has been silent for 25 seconds</span></div>
<div class="line"><a id="l00509" name="l00509"></a><span class="lineno"> 509</span><span class="comment"> * If an ssrc is timed out, this function removes it from participants_ map and</span></div>
<div class="line"><a id="l00510" name="l00510"></a><span class="lineno"> 510</span><span class="comment"> * updates any other infos */</span></div>
<div class="line"><a id="l00511" name="l00511"></a><span class="lineno"> 511</span> rtp_error_t remove_timeout_ssrc(uint32_t ssrc);</div>
<div class="line"><a id="l00512" name="l00512"></a><span class="lineno"> 512</span> </div>
<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"> 513</span> <span class="comment">/* Because struct statistics contains uvgRTP clock object we cannot</span></div>
<div class="line"><a id="l00514" name="l00514"></a><span class="lineno"> 514</span><span class="comment"> * zero it out without compiler complaining about it so all the fields</span></div>
<div class="line"><a id="l00515" name="l00515"></a><span class="lineno"> 515</span><span class="comment"> * must be set to zero manually */</span></div>
<div class="line"><a id="l00516" name="l00516"></a><span class="lineno"> 516</span> <span class="keywordtype">void</span> zero_stats(uvgrtp::sender_statistics *stats);</div>
<div class="line"><a id="l00517" name="l00517"></a><span class="lineno"> 517</span> </div>
<div class="line"><a id="l00518" name="l00518"></a><span class="lineno"> 518</span> <span class="keywordtype">void</span> zero_stats(uvgrtp::receiver_statistics *stats);</div>
<div class="line"><a id="l00493" name="l00493"></a><span class="lineno"> 493</span><span class="comment"> * Return RTP_OK if the received packet was OK</span></div>
<div class="line"><a id="l00494" name="l00494"></a><span class="lineno"> 494</span><span class="comment"> * Return RTP_GENERIC_ERROR if it wasn&#39;t and</span></div>
<div class="line"><a id="l00495" name="l00495"></a><span class="lineno"> 495</span><span class="comment"> * packet-related statistics should not be updated */</span></div>
<div class="line"><a id="l00496" name="l00496"></a><span class="lineno"> 496</span> rtp_error_t update_participant_seq(uint32_t ssrc, uint16_t seq);</div>
<div class="line"><a id="l00497" name="l00497"></a><span class="lineno"> 497</span> </div>
<div class="line"><a id="l00498" name="l00498"></a><span class="lineno"> 498</span> <span class="comment">/* Update the RTCP bandwidth variables</span></div>
<div class="line"><a id="l00499" name="l00499"></a><span class="lineno"> 499</span><span class="comment"> *</span></div>
<div class="line"><a id="l00500" name="l00500"></a><span class="lineno"> 500</span><span class="comment"> * &quot;pkt_size&quot; tells how much rtcp_byte_count_</span></div>
<div class="line"><a id="l00501" name="l00501"></a><span class="lineno"> 501</span><span class="comment"> * should be increased before calculating the new average */</span></div>
<div class="line"><a id="l00502" name="l00502"></a><span class="lineno"> 502</span> <span class="keywordtype">void</span> update_rtcp_bandwidth(<span class="keywordtype">size_t</span> pkt_size);</div>
<div class="line"><a id="l00503" name="l00503"></a><span class="lineno"> 503</span> </div>
<div class="line"><a id="l00504" name="l00504"></a><span class="lineno"> 504</span> <span class="comment">/* Update average RTCP packet size variable</span></div>
<div class="line"><a id="l00505" name="l00505"></a><span class="lineno"> 505</span><span class="comment"> * packet_size is the size of received RTCP packet in octets */</span></div>
<div class="line"><a id="l00506" name="l00506"></a><span class="lineno"> 506</span> <span class="keywordtype">void</span> update_avg_rtcp_size(uint64_t packet_size);</div>
<div class="line"><a id="l00507" name="l00507"></a><span class="lineno"> 507</span> </div>
<div class="line"><a id="l00508" name="l00508"></a><span class="lineno"> 508</span> <span class="comment">/* Calculate the RTCP report interval in seconds</span></div>
<div class="line"><a id="l00509" name="l00509"></a><span class="lineno"> 509</span><span class="comment"> * rtcp_bw is given in kbps</span></div>
<div class="line"><a id="l00510" name="l00510"></a><span class="lineno"> 510</span><span class="comment"> * Defined in RFC3550 Appendix A.7 */</span></div>
<div class="line"><a id="l00511" name="l00511"></a><span class="lineno"> 511</span> <span class="keywordtype">double</span> rtcp_interval(<span class="keywordtype">int</span> members, <span class="keywordtype">int</span> senders,</div>
<div class="line"><a id="l00512" name="l00512"></a><span class="lineno"> 512</span> <span class="keywordtype">double</span> rtcp_bw, <span class="keywordtype">bool</span> we_sent, <span class="keywordtype">double</span> avg_rtcp_size, <span class="keywordtype">bool</span> red_min, <span class="keywordtype">bool</span> randomisation);</div>
<div class="line"><a id="l00513" name="l00513"></a><span class="lineno"> 513</span> </div>
<div class="line"><a id="l00514" name="l00514"></a><span class="lineno"> 514</span> <span class="comment">/* RTCP runner keeps track of ssrcs and how long they have been silent.</span></div>
<div class="line"><a id="l00515" name="l00515"></a><span class="lineno"> 515</span><span class="comment"> * By default a source get timed out if it has been silent for 25 seconds</span></div>
<div class="line"><a id="l00516" name="l00516"></a><span class="lineno"> 516</span><span class="comment"> * If an ssrc is timed out, this function removes it from participants_ map and</span></div>
<div class="line"><a id="l00517" name="l00517"></a><span class="lineno"> 517</span><span class="comment"> * updates any other infos */</span></div>
<div class="line"><a id="l00518" name="l00518"></a><span class="lineno"> 518</span> rtp_error_t remove_timeout_ssrc(uint32_t ssrc);</div>
<div class="line"><a id="l00519" name="l00519"></a><span class="lineno"> 519</span> </div>
<div class="line"><a id="l00520" name="l00520"></a><span class="lineno"> 520</span> <span class="comment">/* Takes ownership of the frame */</span></div>
<div class="line"><a id="l00521" name="l00521"></a><span class="lineno"> 521</span> rtp_error_t send_rtcp_packet_to_participants(uint8_t* frame, uint32_t frame_size, <span class="keywordtype">bool</span> encrypt);</div>
<div class="line"><a id="l00522" name="l00522"></a><span class="lineno"> 522</span> </div>
<div class="line"><a id="l00523" name="l00523"></a><span class="lineno"> 523</span> <span class="keywordtype">void</span> free_participant(std::unique_ptr&lt;rtcp_participant&gt; participant);</div>
<div class="line"><a id="l00520" name="l00520"></a><span class="lineno"> 520</span> <span class="comment">/* Because struct statistics contains uvgRTP clock object we cannot</span></div>
<div class="line"><a id="l00521" name="l00521"></a><span class="lineno"> 521</span><span class="comment"> * zero it out without compiler complaining about it so all the fields</span></div>
<div class="line"><a id="l00522" name="l00522"></a><span class="lineno"> 522</span><span class="comment"> * must be set to zero manually */</span></div>
<div class="line"><a id="l00523" name="l00523"></a><span class="lineno"> 523</span> <span class="keywordtype">void</span> zero_stats(uvgrtp::sender_statistics *stats);</div>
<div class="line"><a id="l00524" name="l00524"></a><span class="lineno"> 524</span> </div>
<div class="line"><a id="l00525" name="l00525"></a><span class="lineno"> 525</span> <span class="keywordtype">void</span> cleanup_participants();</div>
<div class="line"><a id="l00525" name="l00525"></a><span class="lineno"> 525</span> <span class="keywordtype">void</span> zero_stats(uvgrtp::receiver_statistics *stats);</div>
<div class="line"><a id="l00526" name="l00526"></a><span class="lineno"> 526</span> </div>
<div class="line"><a id="l00527" name="l00527"></a><span class="lineno"> 527</span> <span class="comment">/* Secure RTCP context */</span></div>
<div class="line"><a id="l00528" name="l00528"></a><span class="lineno"> 528</span> std::shared_ptr&lt;uvgrtp::srtcp&gt; srtcp_;</div>
<div class="line"><a id="l00527" name="l00527"></a><span class="lineno"> 527</span> <span class="comment">/* Takes ownership of the frame */</span></div>
<div class="line"><a id="l00528" name="l00528"></a><span class="lineno"> 528</span> rtp_error_t send_rtcp_packet_to_participants(uint8_t* frame, uint32_t frame_size, <span class="keywordtype">bool</span> encrypt);</div>
<div class="line"><a id="l00529" name="l00529"></a><span class="lineno"> 529</span> </div>
<div class="line"><a id="l00530" name="l00530"></a><span class="lineno"> 530</span> <span class="comment">/* RTP context flags */</span></div>
<div class="line"><a id="l00531" name="l00531"></a><span class="lineno"> 531</span> <span class="keywordtype">int</span> rce_flags_;</div>
<div class="line"><a id="l00532" name="l00532"></a><span class="lineno"> 532</span> </div>
<div class="line"><a id="l00533" name="l00533"></a><span class="lineno"> 533</span> <span class="comment">/* are we a sender (and possible a receiver) or just a receiver */</span></div>
<div class="line"><a id="l00534" name="l00534"></a><span class="lineno"> 534</span> <span class="keywordtype">int</span> our_role_;</div>
<div class="line"><a id="l00535" name="l00535"></a><span class="lineno"> 535</span> </div>
<div class="line"><a id="l00536" name="l00536"></a><span class="lineno"> 536</span> <span class="comment">/* TODO: time_t?? */</span></div>
<div class="line"><a id="l00537" name="l00537"></a><span class="lineno"> 537</span> <span class="comment">// TODO: Check these, they don&#39;t seem to be used</span></div>
<div class="line"><a id="l00538" name="l00538"></a><span class="lineno"> 538</span> <span class="keywordtype">size_t</span> tp_; <span class="comment">/* the last time an RTCP packet was transmitted */</span></div>
<div class="line"><a id="l00539" name="l00539"></a><span class="lineno"> 539</span> <span class="keywordtype">size_t</span> tc_; <span class="comment">/* the current time */</span></div>
<div class="line"><a id="l00540" name="l00540"></a><span class="lineno"> 540</span> <span class="keywordtype">size_t</span> tn_; <span class="comment">/* the next scheduled transmission time of an RTCP packet */</span></div>
<div class="line"><a id="l00541" name="l00541"></a><span class="lineno"> 541</span> <span class="keywordtype">size_t</span> pmembers_; <span class="comment">/* the estimated number of session members at the time tn was last recomputed */</span></div>
<div class="line"><a id="l00542" name="l00542"></a><span class="lineno"> 542</span> <span class="keywordtype">size_t</span> members_; <span class="comment">/* the most current estimate for the number of session members */</span></div>
<div class="line"><a id="l00543" name="l00543"></a><span class="lineno"> 543</span> <span class="keywordtype">size_t</span> senders_; <span class="comment">/* the most current estimate for the number of senders in the session */</span></div>
<div class="line"><a id="l00544" name="l00544"></a><span class="lineno"> 544</span> </div>
<div class="line"><a id="l00545" name="l00545"></a><span class="lineno"> 545</span> <span class="comment">/* Total session bandwidth. RTCP bandwidth will be set to 5 % of this */</span></div>
<div class="line"><a id="l00546" name="l00546"></a><span class="lineno"> 546</span> uint32_t total_bandwidth_;</div>
<div class="line"><a id="l00547" name="l00547"></a><span class="lineno"> 547</span> </div>
<div class="line"><a id="l00548" name="l00548"></a><span class="lineno"> 548</span> <span class="comment">/* The target RTCP bandwidth, i.e., the total bandwidth</span></div>
<div class="line"><a id="l00549" name="l00549"></a><span class="lineno"> 549</span><span class="comment"> * that will be used for RTCP packets by all members of this session,</span></div>
<div class="line"><a id="l00550" name="l00550"></a><span class="lineno"> 550</span><span class="comment"> * in octets per second. This will be a specified fraction of the</span></div>
<div class="line"><a id="l00551" name="l00551"></a><span class="lineno"> 551</span><span class="comment"> * &quot;session bandwidth&quot; parameter supplied to the application at startup. */</span></div>
<div class="line"><a id="l00552" name="l00552"></a><span class="lineno"> 552</span> <span class="keywordtype">double</span> rtcp_bandwidth_;</div>
<div class="line"><a id="l00553" name="l00553"></a><span class="lineno"> 553</span> </div>
<div class="line"><a id="l00554" name="l00554"></a><span class="lineno"> 554</span> <span class="comment">/* &quot;Minimum&quot; value for RTCP transmission interval, depends on the session bandwidth</span></div>
<div class="line"><a id="l00555" name="l00555"></a><span class="lineno"> 555</span><span class="comment"> * Actual interval can be 50 % smaller due to randomisation */</span></div>
<div class="line"><a id="l00556" name="l00556"></a><span class="lineno"> 556</span> uint32_t reduced_minimum_;</div>
<div class="line"><a id="l00557" name="l00557"></a><span class="lineno"> 557</span> </div>
<div class="line"><a id="l00558" name="l00558"></a><span class="lineno"> 558</span> <span class="comment">/* Flag that is true if the application has sent data since</span></div>
<div class="line"><a id="l00559" name="l00559"></a><span class="lineno"> 559</span><span class="comment"> * the 2nd previous RTCP report was transmitted. */</span></div>
<div class="line"><a id="l00560" name="l00560"></a><span class="lineno"> 560</span> <span class="comment">// TODO: Only set, never read</span></div>
<div class="line"><a id="l00561" name="l00561"></a><span class="lineno"> 561</span> <span class="keywordtype">bool</span> we_sent_;</div>
<div class="line"><a id="l00562" name="l00562"></a><span class="lineno"> 562</span> </div>
<div class="line"><a id="l00563" name="l00563"></a><span class="lineno"> 563</span> <span class="comment">/* Store sender and receiver info, this is needed when calling </span></div>
<div class="line"><a id="l00564" name="l00564"></a><span class="lineno"> 564</span><span class="comment"> * add_participant dynamically (i.e. after initializing the stream) */</span></div>
<div class="line"><a id="l00565" name="l00565"></a><span class="lineno"> 565</span> std::string local_addr_;</div>
<div class="line"><a id="l00566" name="l00566"></a><span class="lineno"> 566</span> std::string remote_addr_;</div>
<div class="line"><a id="l00567" name="l00567"></a><span class="lineno"> 567</span> uint16_t local_port_;</div>
<div class="line"><a id="l00568" name="l00568"></a><span class="lineno"> 568</span> uint16_t dst_port_;</div>
<div class="line"><a id="l00530" name="l00530"></a><span class="lineno"> 530</span> <span class="keywordtype">void</span> free_participant(std::unique_ptr&lt;rtcp_participant&gt; participant);</div>
<div class="line"><a id="l00531" name="l00531"></a><span class="lineno"> 531</span> </div>
<div class="line"><a id="l00532" name="l00532"></a><span class="lineno"> 532</span> <span class="keywordtype">void</span> cleanup_participants();</div>
<div class="line"><a id="l00533" name="l00533"></a><span class="lineno"> 533</span> </div>
<div class="line"><a id="l00534" name="l00534"></a><span class="lineno"> 534</span> <span class="comment">/* Secure RTCP context */</span></div>
<div class="line"><a id="l00535" name="l00535"></a><span class="lineno"> 535</span> std::shared_ptr&lt;uvgrtp::srtcp&gt; srtcp_;</div>
<div class="line"><a id="l00536" name="l00536"></a><span class="lineno"> 536</span> </div>
<div class="line"><a id="l00537" name="l00537"></a><span class="lineno"> 537</span> <span class="comment">/* RTP context flags */</span></div>
<div class="line"><a id="l00538" name="l00538"></a><span class="lineno"> 538</span> <span class="keywordtype">int</span> rce_flags_;</div>
<div class="line"><a id="l00539" name="l00539"></a><span class="lineno"> 539</span> </div>
<div class="line"><a id="l00540" name="l00540"></a><span class="lineno"> 540</span> <span class="comment">/* are we a sender (and possible a receiver) or just a receiver */</span></div>
<div class="line"><a id="l00541" name="l00541"></a><span class="lineno"> 541</span> <span class="keywordtype">int</span> our_role_;</div>
<div class="line"><a id="l00542" name="l00542"></a><span class="lineno"> 542</span> </div>
<div class="line"><a id="l00543" name="l00543"></a><span class="lineno"> 543</span> <span class="comment">/* TODO: time_t?? */</span></div>
<div class="line"><a id="l00544" name="l00544"></a><span class="lineno"> 544</span> <span class="comment">// TODO: Check these, they don&#39;t seem to be used</span></div>
<div class="line"><a id="l00545" name="l00545"></a><span class="lineno"> 545</span> <span class="keywordtype">size_t</span> tp_; <span class="comment">/* the last time an RTCP packet was transmitted */</span></div>
<div class="line"><a id="l00546" name="l00546"></a><span class="lineno"> 546</span> <span class="keywordtype">size_t</span> tc_; <span class="comment">/* the current time */</span></div>
<div class="line"><a id="l00547" name="l00547"></a><span class="lineno"> 547</span> <span class="keywordtype">size_t</span> tn_; <span class="comment">/* the next scheduled transmission time of an RTCP packet */</span></div>
<div class="line"><a id="l00548" name="l00548"></a><span class="lineno"> 548</span> <span class="keywordtype">size_t</span> pmembers_; <span class="comment">/* the estimated number of session members at the time tn was last recomputed */</span></div>
<div class="line"><a id="l00549" name="l00549"></a><span class="lineno"> 549</span> <span class="keywordtype">size_t</span> members_; <span class="comment">/* the most current estimate for the number of session members */</span></div>
<div class="line"><a id="l00550" name="l00550"></a><span class="lineno"> 550</span> <span class="keywordtype">size_t</span> senders_; <span class="comment">/* the most current estimate for the number of senders in the session */</span></div>
<div class="line"><a id="l00551" name="l00551"></a><span class="lineno"> 551</span> </div>
<div class="line"><a id="l00552" name="l00552"></a><span class="lineno"> 552</span> <span class="comment">/* Total session bandwidth. RTCP bandwidth will be set to 5 % of this */</span></div>
<div class="line"><a id="l00553" name="l00553"></a><span class="lineno"> 553</span> uint32_t total_bandwidth_;</div>
<div class="line"><a id="l00554" name="l00554"></a><span class="lineno"> 554</span> </div>
<div class="line"><a id="l00555" name="l00555"></a><span class="lineno"> 555</span> <span class="comment">/* The target RTCP bandwidth, i.e., the total bandwidth</span></div>
<div class="line"><a id="l00556" name="l00556"></a><span class="lineno"> 556</span><span class="comment"> * that will be used for RTCP packets by all members of this session,</span></div>
<div class="line"><a id="l00557" name="l00557"></a><span class="lineno"> 557</span><span class="comment"> * in octets per second. This will be a specified fraction of the</span></div>
<div class="line"><a id="l00558" name="l00558"></a><span class="lineno"> 558</span><span class="comment"> * &quot;session bandwidth&quot; parameter supplied to the application at startup. */</span></div>
<div class="line"><a id="l00559" name="l00559"></a><span class="lineno"> 559</span> <span class="keywordtype">double</span> rtcp_bandwidth_;</div>
<div class="line"><a id="l00560" name="l00560"></a><span class="lineno"> 560</span> </div>
<div class="line"><a id="l00561" name="l00561"></a><span class="lineno"> 561</span> <span class="comment">/* &quot;Minimum&quot; value for RTCP transmission interval, depends on the session bandwidth</span></div>
<div class="line"><a id="l00562" name="l00562"></a><span class="lineno"> 562</span><span class="comment"> * Actual interval can be 50 % smaller due to randomisation */</span></div>
<div class="line"><a id="l00563" name="l00563"></a><span class="lineno"> 563</span> uint32_t reduced_minimum_;</div>
<div class="line"><a id="l00564" name="l00564"></a><span class="lineno"> 564</span> </div>
<div class="line"><a id="l00565" name="l00565"></a><span class="lineno"> 565</span> <span class="comment">/* Flag that is true if the application has sent data since</span></div>
<div class="line"><a id="l00566" name="l00566"></a><span class="lineno"> 566</span><span class="comment"> * the 2nd previous RTCP report was transmitted. */</span></div>
<div class="line"><a id="l00567" name="l00567"></a><span class="lineno"> 567</span> <span class="comment">// TODO: Only set, never read</span></div>
<div class="line"><a id="l00568" name="l00568"></a><span class="lineno"> 568</span> <span class="keywordtype">bool</span> we_sent_;</div>
<div class="line"><a id="l00569" name="l00569"></a><span class="lineno"> 569</span> </div>
<div class="line"><a id="l00570" name="l00570"></a><span class="lineno"> 570</span> <span class="comment">/* The average compound RTCP packet size, in octets,</span></div>
<div class="line"><a id="l00571" name="l00571"></a><span class="lineno"> 571</span><span class="comment"> * over all RTCP packets sent and received by this participant. The</span></div>
<div class="line"><a id="l00572" name="l00572"></a><span class="lineno"> 572</span><span class="comment"> * size includes lower-layer transport and network protocol headers</span></div>
<div class="line"><a id="l00573" name="l00573"></a><span class="lineno"> 573</span><span class="comment"> * (e.g., UDP and IP) as explained in Section 6.2 */</span></div>
<div class="line"><a id="l00574" name="l00574"></a><span class="lineno"> 574</span> <span class="comment">// TODO: Only set, never read</span></div>
<div class="line"><a id="l00575" name="l00575"></a><span class="lineno"> 575</span> <span class="keywordtype">size_t</span> avg_rtcp_pkt_pize_;</div>
<div class="line"><a id="l00570" name="l00570"></a><span class="lineno"> 570</span> <span class="comment">/* Store sender and receiver info, this is needed when calling </span></div>
<div class="line"><a id="l00571" name="l00571"></a><span class="lineno"> 571</span><span class="comment"> * add_participant dynamically (i.e. after initializing the stream) */</span></div>
<div class="line"><a id="l00572" name="l00572"></a><span class="lineno"> 572</span> std::string local_addr_;</div>
<div class="line"><a id="l00573" name="l00573"></a><span class="lineno"> 573</span> std::string remote_addr_;</div>
<div class="line"><a id="l00574" name="l00574"></a><span class="lineno"> 574</span> uint16_t local_port_;</div>
<div class="line"><a id="l00575" name="l00575"></a><span class="lineno"> 575</span> uint16_t dst_port_;</div>
<div class="line"><a id="l00576" name="l00576"></a><span class="lineno"> 576</span> </div>
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno"> 577</span> <span class="comment">/* Average RTCP packet size in octets.</span></div>
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno"> 578</span><span class="comment"> * Initialized to 64 */</span></div>
<div class="line"><a id="l00579" name="l00579"></a><span class="lineno"> 579</span> uint64_t avg_rtcp_size_;</div>
<div class="line"><a id="l00580" name="l00580"></a><span class="lineno"> 580</span> </div>
<div class="line"><a id="l00581" name="l00581"></a><span class="lineno"> 581</span> <span class="comment">/* Number of RTCP packets and bytes sent and received by this participant */</span></div>
<div class="line"><a id="l00582" name="l00582"></a><span class="lineno"> 582</span> <span class="comment">// TODO: Only set, never read</span></div>
<div class="line"><a id="l00583" name="l00583"></a><span class="lineno"> 583</span> <span class="keywordtype">size_t</span> rtcp_pkt_count_;</div>
<div class="line"><a id="l00584" name="l00584"></a><span class="lineno"> 584</span> <span class="keywordtype">size_t</span> rtcp_byte_count_;</div>
<div class="line"><a id="l00585" name="l00585"></a><span class="lineno"> 585</span> </div>
<div class="line"><a id="l00586" name="l00586"></a><span class="lineno"> 586</span> <span class="comment">/* Number of RTCP packets sent */</span></div>
<div class="line"><a id="l00587" name="l00587"></a><span class="lineno"> 587</span> uint32_t rtcp_pkt_sent_count_;</div>
<div class="line"><a id="l00588" name="l00588"></a><span class="lineno"> 588</span> </div>
<div class="line"><a id="l00589" name="l00589"></a><span class="lineno"> 589</span> <span class="comment">/* Flag that is true if the application has not yet sent an RTCP packet. */</span></div>
<div class="line"><a id="l00590" name="l00590"></a><span class="lineno"> 590</span> <span class="comment">// TODO: Only set, never read</span></div>
<div class="line"><a id="l00591" name="l00591"></a><span class="lineno"> 591</span> <span class="keywordtype">bool</span> initial_;</div>
<div class="line"><a id="l00577" name="l00577"></a><span class="lineno"> 577</span> <span class="comment">/* The average compound RTCP packet size, in octets,</span></div>
<div class="line"><a id="l00578" name="l00578"></a><span class="lineno"> 578</span><span class="comment"> * over all RTCP packets sent and received by this participant. The</span></div>
<div class="line"><a id="l00579" name="l00579"></a><span class="lineno"> 579</span><span class="comment"> * size includes lower-layer transport and network protocol headers</span></div>
<div class="line"><a id="l00580" name="l00580"></a><span class="lineno"> 580</span><span class="comment"> * (e.g., UDP and IP) as explained in Section 6.2 */</span></div>
<div class="line"><a id="l00581" name="l00581"></a><span class="lineno"> 581</span> <span class="comment">// TODO: Only set, never read</span></div>
<div class="line"><a id="l00582" name="l00582"></a><span class="lineno"> 582</span> <span class="keywordtype">size_t</span> avg_rtcp_pkt_pize_;</div>
<div class="line"><a id="l00583" name="l00583"></a><span class="lineno"> 583</span> </div>
<div class="line"><a id="l00584" name="l00584"></a><span class="lineno"> 584</span> <span class="comment">/* Average RTCP packet size in octets.</span></div>
<div class="line"><a id="l00585" name="l00585"></a><span class="lineno"> 585</span><span class="comment"> * Initialized to 64 */</span></div>
<div class="line"><a id="l00586" name="l00586"></a><span class="lineno"> 586</span> uint64_t avg_rtcp_size_;</div>
<div class="line"><a id="l00587" name="l00587"></a><span class="lineno"> 587</span> </div>
<div class="line"><a id="l00588" name="l00588"></a><span class="lineno"> 588</span> <span class="comment">/* Number of RTCP packets and bytes sent and received by this participant */</span></div>
<div class="line"><a id="l00589" name="l00589"></a><span class="lineno"> 589</span> <span class="comment">// TODO: Only set, never read</span></div>
<div class="line"><a id="l00590" name="l00590"></a><span class="lineno"> 590</span> <span class="keywordtype">size_t</span> rtcp_pkt_count_;</div>
<div class="line"><a id="l00591" name="l00591"></a><span class="lineno"> 591</span> <span class="keywordtype">size_t</span> rtcp_byte_count_;</div>
<div class="line"><a id="l00592" name="l00592"></a><span class="lineno"> 592</span> </div>
<div class="line"><a id="l00593" name="l00593"></a><span class="lineno"> 593</span> <span class="comment">/* Copy of our own current SSRC */</span></div>
<div class="line"><a id="l00594" name="l00594"></a><span class="lineno"> 594</span> std::shared_ptr&lt;std::atomic_uint&gt; ssrc_;</div>
<div class="line"><a id="l00593" name="l00593"></a><span class="lineno"> 593</span> <span class="comment">/* Number of RTCP packets sent */</span></div>
<div class="line"><a id="l00594" name="l00594"></a><span class="lineno"> 594</span> uint32_t rtcp_pkt_sent_count_;</div>
<div class="line"><a id="l00595" name="l00595"></a><span class="lineno"> 595</span> </div>
<div class="line"><a id="l00596" name="l00596"></a><span class="lineno"> 596</span> <span class="comment">/* NTP timestamp associated with initial RTP timestamp (aka t = 0) */</span></div>
<div class="line"><a id="l00597" name="l00597"></a><span class="lineno"> 597</span> uint64_t clock_start_;</div>
<div class="line"><a id="l00598" name="l00598"></a><span class="lineno"> 598</span> </div>
<div class="line"><a id="l00599" name="l00599"></a><span class="lineno"> 599</span> <span class="comment">/* Clock rate of the media ie. how fast does the time increase */</span></div>
<div class="line"><a id="l00600" name="l00600"></a><span class="lineno"> 600</span> uint32_t clock_rate_;</div>
<div class="line"><a id="l00601" name="l00601"></a><span class="lineno"> 601</span> </div>
<div class="line"><a id="l00602" name="l00602"></a><span class="lineno"> 602</span> <span class="comment">/* The first value of RTP timestamp (aka t = 0) */</span></div>
<div class="line"><a id="l00603" name="l00603"></a><span class="lineno"> 603</span> uint32_t rtp_ts_start_;</div>
<div class="line"><a id="l00604" name="l00604"></a><span class="lineno"> 604</span> </div>
<div class="line"><a id="l00605" name="l00605"></a><span class="lineno"> 605</span> std::map&lt;uint32_t, std::unique_ptr&lt;rtcp_participant&gt;&gt; participants_;</div>
<div class="line"><a id="l00606" name="l00606"></a><span class="lineno"> 606</span> uint8_t num_receivers_; <span class="comment">// maximum is 32 at the moment (5 bits)</span></div>
<div class="line"><a id="l00607" name="l00607"></a><span class="lineno"> 607</span> <span class="keywordtype">bool</span> ipv6_;</div>
<div class="line"><a id="l00596" name="l00596"></a><span class="lineno"> 596</span> <span class="comment">/* Flag that is true if the application has not yet sent an RTCP packet. */</span></div>
<div class="line"><a id="l00597" name="l00597"></a><span class="lineno"> 597</span> <span class="comment">// TODO: Only set, never read</span></div>
<div class="line"><a id="l00598" name="l00598"></a><span class="lineno"> 598</span> <span class="keywordtype">bool</span> initial_;</div>
<div class="line"><a id="l00599" name="l00599"></a><span class="lineno"> 599</span> </div>
<div class="line"><a id="l00600" name="l00600"></a><span class="lineno"> 600</span> <span class="comment">/* Copy of our own current SSRC */</span></div>
<div class="line"><a id="l00601" name="l00601"></a><span class="lineno"> 601</span> std::shared_ptr&lt;std::atomic_uint&gt; ssrc_;</div>
<div class="line"><a id="l00602" name="l00602"></a><span class="lineno"> 602</span> </div>
<div class="line"><a id="l00603" name="l00603"></a><span class="lineno"> 603</span> <span class="comment">/* Copy of the remote streams SSRC */</span></div>
<div class="line"><a id="l00604" name="l00604"></a><span class="lineno"> 604</span> std::shared_ptr&lt;std::atomic&lt;uint32_t&gt;&gt; remote_ssrc_;</div>
<div class="line"><a id="l00605" name="l00605"></a><span class="lineno"> 605</span> </div>
<div class="line"><a id="l00606" name="l00606"></a><span class="lineno"> 606</span> <span class="comment">/* NTP timestamp associated with initial RTP timestamp (aka t = 0) */</span></div>
<div class="line"><a id="l00607" name="l00607"></a><span class="lineno"> 607</span> uint64_t clock_start_;</div>
<div class="line"><a id="l00608" name="l00608"></a><span class="lineno"> 608</span> </div>
<div class="line"><a id="l00609" name="l00609"></a><span class="lineno"> 609</span> <span class="comment">/* Address of the socket that we are sending data to */</span></div>
<div class="line"><a id="l00610" name="l00610"></a><span class="lineno"> 610</span> sockaddr_in socket_address_;</div>
<div class="line"><a id="l00611" name="l00611"></a><span class="lineno"> 611</span> sockaddr_in6 socket_address_ipv6_;</div>
<div class="line"><a id="l00612" name="l00612"></a><span class="lineno"> 612</span> </div>
<div class="line"><a id="l00613" name="l00613"></a><span class="lineno"> 613</span> </div>
<div class="line"><a id="l00614" name="l00614"></a><span class="lineno"> 614</span> <span class="comment">/* Map for keeping track of sources for timeouts</span></div>
<div class="line"><a id="l00615" name="l00615"></a><span class="lineno"> 615</span><span class="comment"> * First number is the sources ssrc</span></div>
<div class="line"><a id="l00616" name="l00616"></a><span class="lineno"> 616</span><span class="comment"> * Second number is how many milliseconds it has been silent*/</span></div>
<div class="line"><a id="l00617" name="l00617"></a><span class="lineno"> 617</span> std::map&lt;uint32_t, uint32_t&gt; ms_since_last_rep_;</div>
<div class="line"><a id="l00609" name="l00609"></a><span class="lineno"> 609</span> <span class="comment">/* Clock rate of the media ie. how fast does the time increase */</span></div>
<div class="line"><a id="l00610" name="l00610"></a><span class="lineno"> 610</span> uint32_t clock_rate_;</div>
<div class="line"><a id="l00611" name="l00611"></a><span class="lineno"> 611</span> </div>
<div class="line"><a id="l00612" name="l00612"></a><span class="lineno"> 612</span> <span class="comment">/* The first value of RTP timestamp (aka t = 0) */</span></div>
<div class="line"><a id="l00613" name="l00613"></a><span class="lineno"> 613</span> uint32_t rtp_ts_start_;</div>
<div class="line"><a id="l00614" name="l00614"></a><span class="lineno"> 614</span> </div>
<div class="line"><a id="l00615" name="l00615"></a><span class="lineno"> 615</span> std::map&lt;uint32_t, std::unique_ptr&lt;rtcp_participant&gt;&gt; participants_;</div>
<div class="line"><a id="l00616" name="l00616"></a><span class="lineno"> 616</span> uint8_t num_receivers_; <span class="comment">// maximum is 32 at the moment (5 bits)</span></div>
<div class="line"><a id="l00617" name="l00617"></a><span class="lineno"> 617</span> <span class="keywordtype">bool</span> ipv6_;</div>
<div class="line"><a id="l00618" name="l00618"></a><span class="lineno"> 618</span> </div>
<div class="line"><a id="l00619" name="l00619"></a><span class="lineno"> 619</span> <span class="comment">/* statistics for RTCP Sender and Receiver Reports */</span></div>
<div class="line"><a id="l00620" name="l00620"></a><span class="lineno"> 620</span> <span class="keyword">struct </span>sender_statistics our_stats;</div>
<div class="line"><a id="l00621" name="l00621"></a><span class="lineno"> 621</span> </div>
<div class="line"><a id="l00622" name="l00622"></a><span class="lineno"> 622</span> <span class="comment">/* If we expect frames from remote but haven&#39;t received anything from remote yet,</span></div>
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno"> 623</span><span class="comment"> * the participant resides in this vector until he&#39;s moved to participants_ */</span></div>
<div class="line"><a id="l00624" name="l00624"></a><span class="lineno"> 624</span> std::vector&lt;std::unique_ptr&lt;rtcp_participant&gt;&gt; initial_participants_;</div>
<div class="line"><a id="l00625" name="l00625"></a><span class="lineno"> 625</span> </div>
<div class="line"><a id="l00626" name="l00626"></a><span class="lineno"> 626</span> </div>
<div class="line"><a id="l00627" name="l00627"></a><span class="lineno"> 627</span> </div>
<div class="line"><a id="l00628" name="l00628"></a><span class="lineno"> 628</span> void (*sender_hook_)(<a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sender__report.html">uvgrtp::frame::rtcp_sender_report</a> *);</div>
<div class="line"><a id="l00629" name="l00629"></a><span class="lineno"> 629</span> void (*receiver_hook_)(<a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__receiver__report.html">uvgrtp::frame::rtcp_receiver_report</a> *);</div>
<div class="line"><a id="l00630" name="l00630"></a><span class="lineno"> 630</span> void (*sdes_hook_)(<a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html">uvgrtp::frame::rtcp_sdes_packet</a> *);</div>
<div class="line"><a id="l00631" name="l00631"></a><span class="lineno"> 631</span> void (*app_hook_)(<a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html">uvgrtp::frame::rtcp_app_packet</a> *);</div>
<div class="line"><a id="l00632" name="l00632"></a><span class="lineno"> 632</span> </div>
<div class="line"><a id="l00633" name="l00633"></a><span class="lineno"> 633</span> std::function&lt;void(std::shared_ptr&lt;uvgrtp::frame::rtcp_sender_report&gt;)&gt; sr_hook_f_;</div>
<div class="line"><a id="l00634" name="l00634"></a><span class="lineno"> 634</span> std::function&lt;void(std::unique_ptr&lt;uvgrtp::frame::rtcp_sender_report&gt;)&gt; sr_hook_u_;</div>
<div class="line"><a id="l00635" name="l00635"></a><span class="lineno"> 635</span> std::function&lt;void(std::shared_ptr&lt;uvgrtp::frame::rtcp_receiver_report&gt;)&gt; rr_hook_f_;</div>
<div class="line"><a id="l00636" name="l00636"></a><span class="lineno"> 636</span> std::function&lt;void(std::unique_ptr&lt;uvgrtp::frame::rtcp_receiver_report&gt;)&gt; rr_hook_u_;</div>
<div class="line"><a id="l00637" name="l00637"></a><span class="lineno"> 637</span> std::function&lt;void(std::shared_ptr&lt;uvgrtp::frame::rtcp_sdes_packet&gt;)&gt; sdes_hook_f_;</div>
<div class="line"><a id="l00638" name="l00638"></a><span class="lineno"> 638</span> std::function&lt;void(std::unique_ptr&lt;uvgrtp::frame::rtcp_sdes_packet&gt;)&gt; sdes_hook_u_;</div>
<div class="line"><a id="l00639" name="l00639"></a><span class="lineno"> 639</span> std::function&lt;void(std::shared_ptr&lt;uvgrtp::frame::rtcp_app_packet&gt;)&gt; app_hook_f_;</div>
<div class="line"><a id="l00640" name="l00640"></a><span class="lineno"> 640</span> std::function&lt;void(std::unique_ptr&lt;uvgrtp::frame::rtcp_app_packet&gt;)&gt; app_hook_u_;</div>
<div class="line"><a id="l00641" name="l00641"></a><span class="lineno"> 641</span> </div>
<div class="line"><a id="l00642" name="l00642"></a><span class="lineno"> 642</span> std::mutex sr_mutex_;</div>
<div class="line"><a id="l00643" name="l00643"></a><span class="lineno"> 643</span> std::mutex rr_mutex_;</div>
<div class="line"><a id="l00644" name="l00644"></a><span class="lineno"> 644</span> std::mutex sdes_mutex_;</div>
<div class="line"><a id="l00645" name="l00645"></a><span class="lineno"> 645</span> std::mutex app_mutex_;</div>
<div class="line"><a id="l00646" name="l00646"></a><span class="lineno"> 646</span> <span class="keyword">mutable</span> std::mutex participants_mutex_;</div>
<div class="line"><a id="l00647" name="l00647"></a><span class="lineno"> 647</span> std::mutex send_app_mutex_;</div>
<div class="line"><a id="l00648" name="l00648"></a><span class="lineno"> 648</span> </div>
<div class="line"><a id="l00649" name="l00649"></a><span class="lineno"> 649</span> std::unique_ptr&lt;std::thread&gt; report_generator_;</div>
<div class="line"><a id="l00650" name="l00650"></a><span class="lineno"> 650</span> std::unique_ptr&lt;std::thread&gt; report_reader_;</div>
<div class="line"><a id="l00651" name="l00651"></a><span class="lineno"> 651</span> std::shared_ptr&lt;uvgrtp::socket&gt; rtcp_socket_;</div>
<div class="line"><a id="l00619" name="l00619"></a><span class="lineno"> 619</span> <span class="comment">/* Address of the socket that we are sending data to */</span></div>
<div class="line"><a id="l00620" name="l00620"></a><span class="lineno"> 620</span> sockaddr_in socket_address_;</div>
<div class="line"><a id="l00621" name="l00621"></a><span class="lineno"> 621</span> sockaddr_in6 socket_address_ipv6_;</div>
<div class="line"><a id="l00622" name="l00622"></a><span class="lineno"> 622</span> </div>
<div class="line"><a id="l00623" name="l00623"></a><span class="lineno"> 623</span> </div>
<div class="line"><a id="l00624" name="l00624"></a><span class="lineno"> 624</span> <span class="comment">/* Map for keeping track of sources for timeouts</span></div>
<div class="line"><a id="l00625" name="l00625"></a><span class="lineno"> 625</span><span class="comment"> * First number is the sources ssrc</span></div>
<div class="line"><a id="l00626" name="l00626"></a><span class="lineno"> 626</span><span class="comment"> * Second number is how many milliseconds it has been silent*/</span></div>
<div class="line"><a id="l00627" name="l00627"></a><span class="lineno"> 627</span> std::map&lt;uint32_t, uint32_t&gt; ms_since_last_rep_;</div>
<div class="line"><a id="l00628" name="l00628"></a><span class="lineno"> 628</span> </div>
<div class="line"><a id="l00629" name="l00629"></a><span class="lineno"> 629</span> <span class="comment">/* statistics for RTCP Sender and Receiver Reports */</span></div>
<div class="line"><a id="l00630" name="l00630"></a><span class="lineno"> 630</span> <span class="keyword">struct </span>sender_statistics our_stats;</div>
<div class="line"><a id="l00631" name="l00631"></a><span class="lineno"> 631</span> </div>
<div class="line"><a id="l00632" name="l00632"></a><span class="lineno"> 632</span> <span class="comment">/* If we expect frames from remote but haven&#39;t received anything from remote yet,</span></div>
<div class="line"><a id="l00633" name="l00633"></a><span class="lineno"> 633</span><span class="comment"> * the participant resides in this vector until he&#39;s moved to participants_ */</span></div>
<div class="line"><a id="l00634" name="l00634"></a><span class="lineno"> 634</span> std::vector&lt;std::unique_ptr&lt;rtcp_participant&gt;&gt; initial_participants_;</div>
<div class="line"><a id="l00635" name="l00635"></a><span class="lineno"> 635</span> </div>
<div class="line"><a id="l00636" name="l00636"></a><span class="lineno"> 636</span> </div>
<div class="line"><a id="l00637" name="l00637"></a><span class="lineno"> 637</span> </div>
<div class="line"><a id="l00638" name="l00638"></a><span class="lineno"> 638</span> void (*sender_hook_)(<a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sender__report.html">uvgrtp::frame::rtcp_sender_report</a> *);</div>
<div class="line"><a id="l00639" name="l00639"></a><span class="lineno"> 639</span> void (*receiver_hook_)(<a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__receiver__report.html">uvgrtp::frame::rtcp_receiver_report</a> *);</div>
<div class="line"><a id="l00640" name="l00640"></a><span class="lineno"> 640</span> void (*sdes_hook_)(<a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html">uvgrtp::frame::rtcp_sdes_packet</a> *);</div>
<div class="line"><a id="l00641" name="l00641"></a><span class="lineno"> 641</span> void (*app_hook_)(<a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html">uvgrtp::frame::rtcp_app_packet</a> *);</div>
<div class="line"><a id="l00642" name="l00642"></a><span class="lineno"> 642</span> </div>
<div class="line"><a id="l00643" name="l00643"></a><span class="lineno"> 643</span> std::function&lt;void(std::shared_ptr&lt;uvgrtp::frame::rtcp_sender_report&gt;)&gt; sr_hook_f_;</div>
<div class="line"><a id="l00644" name="l00644"></a><span class="lineno"> 644</span> std::function&lt;void(std::unique_ptr&lt;uvgrtp::frame::rtcp_sender_report&gt;)&gt; sr_hook_u_;</div>
<div class="line"><a id="l00645" name="l00645"></a><span class="lineno"> 645</span> std::function&lt;void(std::shared_ptr&lt;uvgrtp::frame::rtcp_receiver_report&gt;)&gt; rr_hook_f_;</div>
<div class="line"><a id="l00646" name="l00646"></a><span class="lineno"> 646</span> std::function&lt;void(std::unique_ptr&lt;uvgrtp::frame::rtcp_receiver_report&gt;)&gt; rr_hook_u_;</div>
<div class="line"><a id="l00647" name="l00647"></a><span class="lineno"> 647</span> std::function&lt;void(std::shared_ptr&lt;uvgrtp::frame::rtcp_sdes_packet&gt;)&gt; sdes_hook_f_;</div>
<div class="line"><a id="l00648" name="l00648"></a><span class="lineno"> 648</span> std::function&lt;void(std::unique_ptr&lt;uvgrtp::frame::rtcp_sdes_packet&gt;)&gt; sdes_hook_u_;</div>
<div class="line"><a id="l00649" name="l00649"></a><span class="lineno"> 649</span> std::function&lt;void(std::shared_ptr&lt;uvgrtp::frame::rtcp_app_packet&gt;)&gt; app_hook_f_;</div>
<div class="line"><a id="l00650" name="l00650"></a><span class="lineno"> 650</span> std::function&lt;void(std::unique_ptr&lt;uvgrtp::frame::rtcp_app_packet&gt;)&gt; app_hook_u_;</div>
<div class="line"><a id="l00651" name="l00651"></a><span class="lineno"> 651</span> std::function&lt;void(std::unique_ptr&lt;uvgrtp::frame::rtcp_fb_packet&gt;)&gt; fb_hook_u_;</div>
<div class="line"><a id="l00652" name="l00652"></a><span class="lineno"> 652</span> </div>
<div class="line"><a id="l00653" name="l00653"></a><span class="lineno"> 653</span> <span class="keywordtype">bool</span> is_active()<span class="keyword"> const</span></div>
<div class="line"><a id="l00654" name="l00654"></a><span class="lineno"> 654</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00655" name="l00655"></a><span class="lineno"> 655</span> <span class="keywordflow">return</span> active_;</div>
<div class="line"><a id="l00656" name="l00656"></a><span class="lineno"> 656</span> }</div>
<div class="line"><a id="l00657" name="l00657"></a><span class="lineno"> 657</span> </div>
<div class="line"><a id="l00658" name="l00658"></a><span class="lineno"> 658</span> <span class="keywordtype">bool</span> active_;</div>
<div class="line"><a id="l00659" name="l00659"></a><span class="lineno"> 659</span> </div>
<div class="line"><a id="l00660" name="l00660"></a><span class="lineno"> 660</span> std::atomic&lt;uint32_t&gt; interval_ms_;</div>
<div class="line"><a id="l00661" name="l00661"></a><span class="lineno"> 661</span> </div>
<div class="line"><a id="l00662" name="l00662"></a><span class="lineno"> 662</span> std::shared_ptr&lt;uvgrtp::rtp&gt; rtp_ptr_;</div>
<div class="line"><a id="l00663" name="l00663"></a><span class="lineno"> 663</span> </div>
<div class="line"><a id="l00664" name="l00664"></a><span class="lineno"> 664</span> std::mutex packet_mutex_;</div>
<div class="line"><a id="l00653" name="l00653"></a><span class="lineno"> 653</span> std::mutex sr_mutex_;</div>
<div class="line"><a id="l00654" name="l00654"></a><span class="lineno"> 654</span> std::mutex rr_mutex_;</div>
<div class="line"><a id="l00655" name="l00655"></a><span class="lineno"> 655</span> std::mutex sdes_mutex_;</div>
<div class="line"><a id="l00656" name="l00656"></a><span class="lineno"> 656</span> std::mutex app_mutex_;</div>
<div class="line"><a id="l00657" name="l00657"></a><span class="lineno"> 657</span> std::mutex fb_mutex_;</div>
<div class="line"><a id="l00658" name="l00658"></a><span class="lineno"> 658</span> <span class="keyword">mutable</span> std::mutex participants_mutex_;</div>
<div class="line"><a id="l00659" name="l00659"></a><span class="lineno"> 659</span> std::mutex send_app_mutex_;</div>
<div class="line"><a id="l00660" name="l00660"></a><span class="lineno"> 660</span> </div>
<div class="line"><a id="l00661" name="l00661"></a><span class="lineno"> 661</span> std::unique_ptr&lt;std::thread&gt; report_generator_;</div>
<div class="line"><a id="l00662" name="l00662"></a><span class="lineno"> 662</span> std::shared_ptr&lt;uvgrtp::socket&gt; rtcp_socket_;</div>
<div class="line"><a id="l00663" name="l00663"></a><span class="lineno"> 663</span> std::shared_ptr&lt;uvgrtp::socketfactory&gt; sfp_;</div>
<div class="line"><a id="l00664" name="l00664"></a><span class="lineno"> 664</span> std::shared_ptr&lt;uvgrtp::rtcp_reader&gt; rtcp_reader_;</div>
<div class="line"><a id="l00665" name="l00665"></a><span class="lineno"> 665</span> </div>
<div class="line"><a id="l00666" name="l00666"></a><span class="lineno"> 666</span> <span class="comment">// messages waiting to be sent</span></div>
<div class="line"><a id="l00667" name="l00667"></a><span class="lineno"> 667</span> std::vector&lt;uvgrtp::frame::rtcp_sdes_item&gt; ourItems_; <span class="comment">// always sent</span></div>
<div class="line"><a id="l00668" name="l00668"></a><span class="lineno"> 668</span> std::vector&lt;uint32_t&gt; bye_ssrcs_; <span class="comment">// sent once</span></div>
<div class="line"><a id="l00669" name="l00669"></a><span class="lineno"> 669</span> </div>
<div class="line"><a id="l00670" name="l00670"></a><span class="lineno"> 670</span> std::map&lt;std::string, std::deque&lt;rtcp_app_packet&gt;&gt; app_packets_; <span class="comment">// sent one at a time per name</span></div>
<div class="line"><a id="l00671" name="l00671"></a><span class="lineno"> 671</span> <span class="comment">// APPs for hook</span></div>
<div class="line"><a id="l00672" name="l00672"></a><span class="lineno"> 672</span> std::multimap&lt;std::string, std::function &lt;std::unique_ptr&lt;uint8_t[]&gt;(uint8_t&amp; subtype, uint32_t&amp; payload_len)&gt;&gt; outgoing_app_hooks_;</div>
<div class="line"><a id="l00673" name="l00673"></a><span class="lineno"> 673</span> </div>
<div class="line"><a id="l00674" name="l00674"></a><span class="lineno"> 674</span> <span class="keywordtype">bool</span> hooked_app_;</div>
<div class="line"><a id="l00675" name="l00675"></a><span class="lineno"> 675</span> </div>
<div class="line"><a id="l00666" name="l00666"></a><span class="lineno"> 666</span> <span class="keywordtype">bool</span> is_active()<span class="keyword"> const</span></div>
<div class="line"><a id="l00667" name="l00667"></a><span class="lineno"> 667</span><span class="keyword"> </span>{</div>
<div class="line"><a id="l00668" name="l00668"></a><span class="lineno"> 668</span> <span class="keywordflow">return</span> active_;</div>
<div class="line"><a id="l00669" name="l00669"></a><span class="lineno"> 669</span> }</div>
<div class="line"><a id="l00670" name="l00670"></a><span class="lineno"> 670</span> </div>
<div class="line"><a id="l00671" name="l00671"></a><span class="lineno"> 671</span> <span class="keywordtype">bool</span> active_;</div>
<div class="line"><a id="l00672" name="l00672"></a><span class="lineno"> 672</span> </div>
<div class="line"><a id="l00673" name="l00673"></a><span class="lineno"> 673</span> std::atomic&lt;uint32_t&gt; interval_ms_;</div>
<div class="line"><a id="l00674" name="l00674"></a><span class="lineno"> 674</span> </div>
<div class="line"><a id="l00675" name="l00675"></a><span class="lineno"> 675</span> std::shared_ptr&lt;uvgrtp::rtp&gt; rtp_ptr_;</div>
<div class="line"><a id="l00676" name="l00676"></a><span class="lineno"> 676</span> </div>
<div class="line"><a id="l00677" name="l00677"></a><span class="lineno"> 677</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sdes__item.html">uvgrtp::frame::rtcp_sdes_item</a> cnameItem_;</div>
<div class="line"><a id="l00678" name="l00678"></a><span class="lineno"> 678</span> <span class="keywordtype">char</span> cname_[255];</div>
<div class="line"><a id="l00679" name="l00679"></a><span class="lineno"> 679</span> </div>
<div class="line"><a id="l00680" name="l00680"></a><span class="lineno"> 680</span> <span class="keywordtype">size_t</span> mtu_size_;</div>
<div class="line"><a id="l00681" name="l00681"></a><span class="lineno"> 681</span> };</div>
<div class="line"><a id="l00682" name="l00682"></a><span class="lineno"> 682</span>}</div>
<div class="line"><a id="l00683" name="l00683"></a><span class="lineno"> 683</span> </div>
<div class="line"><a id="l00684" name="l00684"></a><span class="lineno"> 684</span><span class="keyword">namespace </span>uvg_rtp = uvgrtp;</div>
<div class="ttc" id="aclassuvgrtp_1_1rtcp_html"><div class="ttname"><a href="classuvgrtp_1_1rtcp.html">uvgrtp::rtcp</a></div><div class="ttdoc">RTCP instance handles all incoming and outgoing RTCP traffic, including report generation.</div><div class="ttdef"><b>Definition:</b> <a href="rtcp_8hh_source.html#l00118">rtcp.hh:118</a></div></div>
<div class="line"><a id="l00677" name="l00677"></a><span class="lineno"> 677</span> std::mutex packet_mutex_;</div>
<div class="line"><a id="l00678" name="l00678"></a><span class="lineno"> 678</span> </div>
<div class="line"><a id="l00679" name="l00679"></a><span class="lineno"> 679</span> <span class="comment">// messages waiting to be sent</span></div>
<div class="line"><a id="l00680" name="l00680"></a><span class="lineno"> 680</span> std::vector&lt;uvgrtp::frame::rtcp_sdes_item&gt; ourItems_; <span class="comment">// always sent</span></div>
<div class="line"><a id="l00681" name="l00681"></a><span class="lineno"> 681</span> std::vector&lt;uint32_t&gt; bye_ssrcs_; <span class="comment">// sent once</span></div>
<div class="line"><a id="l00682" name="l00682"></a><span class="lineno"> 682</span> </div>
<div class="line"><a id="l00683" name="l00683"></a><span class="lineno"> 683</span> std::map&lt;std::string, std::deque&lt;rtcp_app_packet&gt;&gt; app_packets_; <span class="comment">// sent one at a time per name</span></div>
<div class="line"><a id="l00684" name="l00684"></a><span class="lineno"> 684</span> <span class="comment">// APPs for hook</span></div>
<div class="line"><a id="l00685" name="l00685"></a><span class="lineno"> 685</span> std::multimap&lt;std::string, std::function &lt;std::unique_ptr&lt;uint8_t[]&gt;(uint8_t&amp; subtype, uint32_t&amp; payload_len)&gt;&gt; outgoing_app_hooks_;</div>
<div class="line"><a id="l00686" name="l00686"></a><span class="lineno"> 686</span> <span class="keywordtype">bool</span> hooked_app_;</div>
<div class="line"><a id="l00687" name="l00687"></a><span class="lineno"> 687</span> </div>
<div class="line"><a id="l00688" name="l00688"></a><span class="lineno"> 688</span> <a class="code hl_struct" href="structuvgrtp_1_1frame_1_1rtcp__sdes__item.html">uvgrtp::frame::rtcp_sdes_item</a> cnameItem_;</div>
<div class="line"><a id="l00689" name="l00689"></a><span class="lineno"> 689</span> <span class="keywordtype">char</span> cname_[255];</div>
<div class="line"><a id="l00690" name="l00690"></a><span class="lineno"> 690</span> </div>
<div class="line"><a id="l00691" name="l00691"></a><span class="lineno"> 691</span> <span class="keywordtype">size_t</span> mtu_size_;</div>
<div class="line"><a id="l00692" name="l00692"></a><span class="lineno"> 692</span> };</div>
<div class="line"><a id="l00693" name="l00693"></a><span class="lineno"> 693</span>}</div>
<div class="line"><a id="l00694" name="l00694"></a><span class="lineno"> 694</span> </div>
<div class="line"><a id="l00695" name="l00695"></a><span class="lineno"> 695</span><span class="keyword">namespace </span>uvg_rtp = uvgrtp;</div>
<div class="ttc" id="aclassuvgrtp_1_1rtcp_html"><div class="ttname"><a href="classuvgrtp_1_1rtcp.html">uvgrtp::rtcp</a></div><div class="ttdoc">RTCP instance handles all incoming and outgoing RTCP traffic, including report generation.</div><div class="ttdef"><b>Definition:</b> <a href="rtcp_8hh_source.html#l00120">rtcp.hh:120</a></div></div>
<div class="ttc" id="aclassuvgrtp_1_1rtcp_html_a04c887fe95173d55294f57d639a1f602"><div class="ttname"><a href="classuvgrtp_1_1rtcp.html#a04c887fe95173d55294f57d639a1f602">uvgrtp::rtcp::install_receiver_hook</a></div><div class="ttdeci">rtp_error_t install_receiver_hook(void(*hook)(uvgrtp::frame::rtcp_receiver_report *))</div><div class="ttdoc">Install an RTCP Receiver Report hook.</div></div>
<div class="ttc" id="aclassuvgrtp_1_1rtcp_html_a0c092bca6edda19218a2cb84ed776c34"><div class="ttname"><a href="classuvgrtp_1_1rtcp.html#a0c092bca6edda19218a2cb84ed776c34">uvgrtp::rtcp::send_app_packet</a></div><div class="ttdeci">rtp_error_t send_app_packet(const char *name, uint8_t subtype, uint32_t payload_len, const uint8_t *payload)</div><div class="ttdoc">Send an RTCP APP packet.</div></div>
<div class="ttc" id="aclassuvgrtp_1_1rtcp_html_a2140c6bc5160b4b2bfdf54a91af45422"><div class="ttname"><a href="classuvgrtp_1_1rtcp.html#a2140c6bc5160b4b2bfdf54a91af45422">uvgrtp::rtcp::install_receiver_hook</a></div><div class="ttdeci">rtp_error_t install_receiver_hook(std::function&lt; void(std::unique_ptr&lt; uvgrtp::frame::rtcp_receiver_report &gt;)&gt; rr_handler)</div><div class="ttdoc">Install an RTCP Receiver Report hook.</div></div>
<div class="ttc" id="aclassuvgrtp_1_1rtcp_html_a27adb6b5965dab3918bd02a2e7a2dfd2"><div class="ttname"><a href="classuvgrtp_1_1rtcp.html#a27adb6b5965dab3918bd02a2e7a2dfd2">uvgrtp::rtcp::remove_send_app_hook</a></div><div class="ttdeci">rtp_error_t remove_send_app_hook(std::string app_name)</div><div class="ttdoc">Remove a hook for sending APP packets *.</div></div>
<div class="ttc" id="aclassuvgrtp_1_1rtcp_html_a2b831698320212e382e3d565e62d31c4"><div class="ttname"><a href="classuvgrtp_1_1rtcp.html#a2b831698320212e382e3d565e62d31c4">uvgrtp::rtcp::send_bye_packet</a></div><div class="ttdeci">rtp_error_t send_bye_packet(std::vector&lt; uint32_t &gt; ssrcs)</div><div class="ttdoc">Send an RTCP BYE packet.</div></div>
<div class="ttc" id="aclassuvgrtp_1_1rtcp_html_a35daabdb93e3bdd40b1ea51e6079bd40"><div class="ttname"><a href="classuvgrtp_1_1rtcp.html#a35daabdb93e3bdd40b1ea51e6079bd40">uvgrtp::rtcp::install_sdes_hook</a></div><div class="ttdeci">rtp_error_t install_sdes_hook(std::function&lt; void(std::unique_ptr&lt; uvgrtp::frame::rtcp_sdes_packet &gt;)&gt; sdes_handler)</div><div class="ttdoc">Install an RTCP SDES packet hook.</div></div>
<div class="ttc" id="aclassuvgrtp_1_1rtcp_html_a4a262a814ffa3093ac6829c90b0b3fd1"><div class="ttname"><a href="classuvgrtp_1_1rtcp.html#a4a262a814ffa3093ac6829c90b0b3fd1">uvgrtp::rtcp::install_sender_hook</a></div><div class="ttdeci">rtp_error_t install_sender_hook(void(*hook)(uvgrtp::frame::rtcp_sender_report *))</div><div class="ttdoc">Install an RTCP Sender Report hook.</div></div>
@ -603,13 +608,13 @@ $(function() {
<div class="ttc" id="aclassuvgrtp_1_1rtcp_html_a977c99cfaa1442553ab12d4c140bbb0f"><div class="ttname"><a href="classuvgrtp_1_1rtcp.html#a977c99cfaa1442553ab12d4c140bbb0f">uvgrtp::rtcp::install_app_hook</a></div><div class="ttdeci">rtp_error_t install_app_hook(void(*hook)(uvgrtp::frame::rtcp_app_packet *))</div><div class="ttdoc">Install an RTCP APP packet hook.</div></div>
<div class="ttc" id="aclassuvgrtp_1_1rtcp_html_ad62ad1cc01e3d0808ac8254ce30756a1"><div class="ttname"><a href="classuvgrtp_1_1rtcp.html#ad62ad1cc01e3d0808ac8254ce30756a1">uvgrtp::rtcp::install_send_app_hook</a></div><div class="ttdeci">rtp_error_t install_send_app_hook(std::string app_name, std::function&lt; std::unique_ptr&lt; uint8_t[]&gt;(uint8_t &amp;subtype, uint32_t &amp;payload_len)&gt; app_sending_func)</div><div class="ttdoc">Install hook for one type of APP packets.</div></div>
<div class="ttc" id="aclassuvgrtp_1_1rtcp_html_ad694a3a869b1c28309e1f2db6d7c2e50"><div class="ttname"><a href="classuvgrtp_1_1rtcp.html#ad694a3a869b1c28309e1f2db6d7c2e50">uvgrtp::rtcp::install_sdes_hook</a></div><div class="ttdeci">rtp_error_t install_sdes_hook(void(*hook)(uvgrtp::frame::rtcp_sdes_packet *))</div><div class="ttdoc">Install an RTCP SDES packet hook.</div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__app__packet_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html">uvgrtp::frame::rtcp_app_packet</a></div><div class="ttdoc">See RFC 3550 section 6.7</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00151">frame.hh:151</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__header_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a></div><div class="ttdoc">Header of for all RTCP packets defined in RFC 3550 section 6</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00074">frame.hh:74</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__receiver__report_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__receiver__report.html">uvgrtp::frame::rtcp_receiver_report</a></div><div class="ttdoc">See RFC 3550 section 6.4.2</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00117">frame.hh:117</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__sdes__item_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__sdes__item.html">uvgrtp::frame::rtcp_sdes_item</a></div><div class="ttdoc">See RFC 3550 section 6.5</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00132">frame.hh:132</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__sdes__packet_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html">uvgrtp::frame::rtcp_sdes_packet</a></div><div class="ttdoc">See RFC 3550 section 6.5</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00145">frame.hh:145</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__sender__report_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__sender__report.html">uvgrtp::frame::rtcp_sender_report</a></div><div class="ttdoc">See RFC 3550 section 6.4.1</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00124">frame.hh:124</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtp__frame_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtp__frame.html">uvgrtp::frame::rtp_frame</a></div><div class="ttdoc">See RFC 3550 section 5</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00053">frame.hh:53</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__app__packet_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__app__packet.html">uvgrtp::frame::rtcp_app_packet</a></div><div class="ttdoc">See RFC 3550 section 6.7</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00168">frame.hh:168</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__header_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a></div><div class="ttdoc">Header of for all RTCP packets defined in RFC 3550 section 6</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00089">frame.hh:89</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__receiver__report_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__receiver__report.html">uvgrtp::frame::rtcp_receiver_report</a></div><div class="ttdoc">See RFC 3550 section 6.4.2</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00134">frame.hh:134</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__sdes__item_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__sdes__item.html">uvgrtp::frame::rtcp_sdes_item</a></div><div class="ttdoc">See RFC 3550 section 6.5</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00149">frame.hh:149</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__sdes__packet_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html">uvgrtp::frame::rtcp_sdes_packet</a></div><div class="ttdoc">See RFC 3550 section 6.5</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00162">frame.hh:162</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtcp__sender__report_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtcp__sender__report.html">uvgrtp::frame::rtcp_sender_report</a></div><div class="ttdoc">See RFC 3550 section 6.4.1</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00141">frame.hh:141</a></div></div>
<div class="ttc" id="astructuvgrtp_1_1frame_1_1rtp__frame_html"><div class="ttname"><a href="structuvgrtp_1_1frame_1_1rtp__frame.html">uvgrtp::frame::rtp_frame</a></div><div class="ttdoc">See RFC 3550 section 5</div><div class="ttdef"><b>Definition:</b> <a href="frame_8hh_source.html#l00068">frame.hh:68</a></div></div>
<div class="ttc" id="autil_8hh_html"><div class="ttname"><a href="util_8hh.html">util.hh</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->

View File

@ -3,7 +3,7 @@ var searchData=
['configure_5fctx_0',['configure_ctx',['../classuvgrtp_1_1media__stream.html#a2cee4fe3bf423ec317b4a3eacc136238',1,'uvgrtp::media_stream']]],
['context_1',['context',['../classuvgrtp_1_1context.html#a98be18c2848404549cfadf910ba1573a',1,'uvgrtp::context::context()'],['../classuvgrtp_1_1context.html',1,'uvgrtp::context']]],
['count_2',['count',['../structuvgrtp_1_1frame_1_1rtcp__header.html#af121a4cae797537270add50efd7a4e3d',1,'uvgrtp::frame::rtcp_header']]],
['create_5fsession_3',['create_session',['../classuvgrtp_1_1context.html#a81b2dc23ebf64d1153410376503eccb4',1,'uvgrtp::context::create_session(std::string address)'],['../classuvgrtp_1_1context.html#a7699c9df53e8e7380d755f374d6fc2ce',1,'uvgrtp::context::create_session(std::string remote_addr, std::string local_addr)']]],
['create_5fsession_3',['create_session',['../classuvgrtp_1_1context.html#ae4417159d9b136b2d696fb7571fc3266',1,'uvgrtp::context::create_session(std::pair&lt; std::string, std::string &gt; addresses)'],['../classuvgrtp_1_1context.html#a81b2dc23ebf64d1153410376503eccb4',1,'uvgrtp::context::create_session(std::string address)']]],
['create_5fstream_4',['create_stream',['../classuvgrtp_1_1session.html#a0b9fb48e95cbfdb76fd9f61e8cafe8e4',1,'uvgrtp::session::create_stream(uint16_t src_port, uint16_t dst_port, rtp_format_t fmt, int rce_flags)'],['../classuvgrtp_1_1session.html#a07a96e787de86d902d5c4d6bcb3dc416',1,'uvgrtp::session::create_stream(uint16_t port, rtp_format_t fmt, int rce_flags)']]],
['crypto_5fenabled_5',['crypto_enabled',['../classuvgrtp_1_1context.html#a0ddad3f0a78b6a4b13f2b8fdd15c9087',1,'uvgrtp::context']]]
];

View File

@ -1,5 +1,4 @@
var searchData=
[
['get_5frtcp_0',['get_rtcp',['../classuvgrtp_1_1media__stream.html#ab339f15d5a852beacd901b7b78e887ea',1,'uvgrtp::media_stream']]],
['get_5fssrc_1',['get_ssrc',['../classuvgrtp_1_1media__stream.html#a8796cb34e0e6c61af8cabd13dd6793b5',1,'uvgrtp::media_stream']]]
['fmt_0',['fmt',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a0ca5bbeb0619b824a07189220d27e3de',1,'uvgrtp::frame::rtcp_header']]]
];

View File

@ -1,9 +1,6 @@
var searchData=
[
['install_5fapp_5fhook_0',['install_app_hook',['../classuvgrtp_1_1rtcp.html#a977c99cfaa1442553ab12d4c140bbb0f',1,'uvgrtp::rtcp::install_app_hook(void(*hook)(uvgrtp::frame::rtcp_app_packet *))'],['../classuvgrtp_1_1rtcp.html#a76cb98093acfb54050b50ff82106ca94',1,'uvgrtp::rtcp::install_app_hook(std::function&lt; void(std::unique_ptr&lt; uvgrtp::frame::rtcp_app_packet &gt;)&gt; app_handler)']]],
['install_5freceive_5fhook_1',['install_receive_hook',['../classuvgrtp_1_1media__stream.html#a74a558b23866976e52c5903996544a27',1,'uvgrtp::media_stream']]],
['install_5freceiver_5fhook_2',['install_receiver_hook',['../classuvgrtp_1_1rtcp.html#a04c887fe95173d55294f57d639a1f602',1,'uvgrtp::rtcp::install_receiver_hook(void(*hook)(uvgrtp::frame::rtcp_receiver_report *))'],['../classuvgrtp_1_1rtcp.html#a2140c6bc5160b4b2bfdf54a91af45422',1,'uvgrtp::rtcp::install_receiver_hook(std::function&lt; void(std::unique_ptr&lt; uvgrtp::frame::rtcp_receiver_report &gt;)&gt; rr_handler)']]],
['install_5fsdes_5fhook_3',['install_sdes_hook',['../classuvgrtp_1_1rtcp.html#ad694a3a869b1c28309e1f2db6d7c2e50',1,'uvgrtp::rtcp::install_sdes_hook(void(*hook)(uvgrtp::frame::rtcp_sdes_packet *))'],['../classuvgrtp_1_1rtcp.html#a35daabdb93e3bdd40b1ea51e6079bd40',1,'uvgrtp::rtcp::install_sdes_hook(std::function&lt; void(std::unique_ptr&lt; uvgrtp::frame::rtcp_sdes_packet &gt;)&gt; sdes_handler)']]],
['install_5fsend_5fapp_5fhook_4',['install_send_app_hook',['../classuvgrtp_1_1rtcp.html#ad62ad1cc01e3d0808ac8254ce30756a1',1,'uvgrtp::rtcp']]],
['install_5fsender_5fhook_5',['install_sender_hook',['../classuvgrtp_1_1rtcp.html#a4a262a814ffa3093ac6829c90b0b3fd1',1,'uvgrtp::rtcp::install_sender_hook(void(*hook)(uvgrtp::frame::rtcp_sender_report *))'],['../classuvgrtp_1_1rtcp.html#a79a46d4dff360019a8a089112998b9eb',1,'uvgrtp::rtcp::install_sender_hook(std::function&lt; void(std::unique_ptr&lt; uvgrtp::frame::rtcp_sender_report &gt;)&gt; sr_handler)']]]
['get_5fconfiguration_5fvalue_0',['get_configuration_value',['../classuvgrtp_1_1media__stream.html#acee8dd45e8c6ebbb1af52bb54dd7c40d',1,'uvgrtp::media_stream']]],
['get_5frtcp_1',['get_rtcp',['../classuvgrtp_1_1media__stream.html#ab339f15d5a852beacd901b7b78e887ea',1,'uvgrtp::media_stream']]],
['get_5fssrc_2',['get_ssrc',['../classuvgrtp_1_1media__stream.html#a8796cb34e0e6c61af8cabd13dd6793b5',1,'uvgrtp::media_stream']]]
];

View File

@ -1,4 +1,9 @@
var searchData=
[
['length_0',['length',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a1ed1871349edce32d60c3b1a33049fd0',1,'uvgrtp::frame::rtcp_header']]]
['install_5fapp_5fhook_0',['install_app_hook',['../classuvgrtp_1_1rtcp.html#a977c99cfaa1442553ab12d4c140bbb0f',1,'uvgrtp::rtcp::install_app_hook(void(*hook)(uvgrtp::frame::rtcp_app_packet *))'],['../classuvgrtp_1_1rtcp.html#a76cb98093acfb54050b50ff82106ca94',1,'uvgrtp::rtcp::install_app_hook(std::function&lt; void(std::unique_ptr&lt; uvgrtp::frame::rtcp_app_packet &gt;)&gt; app_handler)']]],
['install_5freceive_5fhook_1',['install_receive_hook',['../classuvgrtp_1_1media__stream.html#a74a558b23866976e52c5903996544a27',1,'uvgrtp::media_stream']]],
['install_5freceiver_5fhook_2',['install_receiver_hook',['../classuvgrtp_1_1rtcp.html#a04c887fe95173d55294f57d639a1f602',1,'uvgrtp::rtcp::install_receiver_hook(void(*hook)(uvgrtp::frame::rtcp_receiver_report *))'],['../classuvgrtp_1_1rtcp.html#a2140c6bc5160b4b2bfdf54a91af45422',1,'uvgrtp::rtcp::install_receiver_hook(std::function&lt; void(std::unique_ptr&lt; uvgrtp::frame::rtcp_receiver_report &gt;)&gt; rr_handler)']]],
['install_5fsdes_5fhook_3',['install_sdes_hook',['../classuvgrtp_1_1rtcp.html#ad694a3a869b1c28309e1f2db6d7c2e50',1,'uvgrtp::rtcp::install_sdes_hook(void(*hook)(uvgrtp::frame::rtcp_sdes_packet *))'],['../classuvgrtp_1_1rtcp.html#a35daabdb93e3bdd40b1ea51e6079bd40',1,'uvgrtp::rtcp::install_sdes_hook(std::function&lt; void(std::unique_ptr&lt; uvgrtp::frame::rtcp_sdes_packet &gt;)&gt; sdes_handler)']]],
['install_5fsend_5fapp_5fhook_4',['install_send_app_hook',['../classuvgrtp_1_1rtcp.html#ad62ad1cc01e3d0808ac8254ce30756a1',1,'uvgrtp::rtcp']]],
['install_5fsender_5fhook_5',['install_sender_hook',['../classuvgrtp_1_1rtcp.html#a4a262a814ffa3093ac6829c90b0b3fd1',1,'uvgrtp::rtcp::install_sender_hook(void(*hook)(uvgrtp::frame::rtcp_sender_report *))'],['../classuvgrtp_1_1rtcp.html#a79a46d4dff360019a8a089112998b9eb',1,'uvgrtp::rtcp::install_sender_hook(std::function&lt; void(std::unique_ptr&lt; uvgrtp::frame::rtcp_sender_report &gt;)&gt; sr_handler)']]]
];

View File

@ -1,4 +1,4 @@
var searchData=
[
['media_5fstream_0',['media_stream',['../classuvgrtp_1_1media__stream.html',1,'uvgrtp']]]
['length_0',['length',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a1ed1871349edce32d60c3b1a33049fd0',1,'uvgrtp::frame::rtcp_header']]]
];

View File

@ -1,5 +1,4 @@
var searchData=
[
['ntp_5flsw_0',['ntp_lsw',['../structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a7c80f6082983dae0f3a5eea55a7c8ef6',1,'uvgrtp::frame::rtcp_sender_info']]],
['ntp_5fmsw_1',['ntp_msw',['../structuvgrtp_1_1frame_1_1rtcp__sender__info.html#ae22a2bcad293efb1d642762d3eac3143',1,'uvgrtp::frame::rtcp_sender_info']]]
['media_5fstream_0',['media_stream',['../classuvgrtp_1_1media__stream.html',1,'uvgrtp']]]
];

View File

@ -1,9 +1,5 @@
var searchData=
[
['padding_0',['padding',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a4309061d7fae17a13db3d5eea71d6639',1,'uvgrtp::frame::rtcp_header']]],
['payload_5flen_1',['payload_len',['../structuvgrtp_1_1frame_1_1rtp__frame.html#a2d158e0aaf23398a8a3b02c95d06e366',1,'uvgrtp::frame::rtp_frame::payload_len()'],['../structuvgrtp_1_1frame_1_1rtcp__app__packet.html#acefa08e5025c52c0e4a0ae14255f6d01',1,'uvgrtp::frame::rtcp_app_packet::payload_len()']]],
['pkt_5fsubtype_2',['pkt_subtype',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a829dd160ba7f473f3d6c5ff2d2dae5ab',1,'uvgrtp::frame::rtcp_header']]],
['pkt_5ftype_3',['pkt_type',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a08120f0b6526c473c6488803388c7855',1,'uvgrtp::frame::rtcp_header']]],
['pull_5fframe_4',['pull_frame',['../classuvgrtp_1_1media__stream.html#ab0c854a4c36572f91008a8e1e49e38bb',1,'uvgrtp::media_stream::pull_frame()'],['../classuvgrtp_1_1media__stream.html#a466067ad9924a52530c62c53c1b397b4',1,'uvgrtp::media_stream::pull_frame(size_t timeout_ms)']]],
['push_5fframe_5',['push_frame',['../classuvgrtp_1_1media__stream.html#a157e9973d92b65e82914d4028690c770',1,'uvgrtp::media_stream::push_frame(uint8_t *data, size_t data_len, int rtp_flags)'],['../classuvgrtp_1_1media__stream.html#a068a0963e06f789b4e4310a45cbe4409',1,'uvgrtp::media_stream::push_frame(std::unique_ptr&lt; uint8_t[]&gt; data, size_t data_len, int rtp_flags)'],['../classuvgrtp_1_1media__stream.html#ac0cb1cf34b639c9ba71b047b3ba26d22',1,'uvgrtp::media_stream::push_frame(uint8_t *data, size_t data_len, uint32_t ts, int rtp_flags)'],['../classuvgrtp_1_1media__stream.html#a5577c57f1bdd5b888aa4e8c4f939eba7',1,'uvgrtp::media_stream::push_frame(uint8_t *data, size_t data_len, uint32_t ts, uint64_t ntp_ts, int rtp_flags)'],['../classuvgrtp_1_1media__stream.html#abe9099254c6bf16f255f5f50441ec9d2',1,'uvgrtp::media_stream::push_frame(std::unique_ptr&lt; uint8_t[]&gt; data, size_t data_len, uint32_t ts, int rtp_flags)'],['../classuvgrtp_1_1media__stream.html#a56d2a209b2647d0f3ee7948e8cf45438',1,'uvgrtp::media_stream::push_frame(std::unique_ptr&lt; uint8_t[]&gt; data, size_t data_len, uint32_t ts, uint64_t ntp_ts, int rtp_flags)']]]
['ntp_5flsw_0',['ntp_lsw',['../structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a7c80f6082983dae0f3a5eea55a7c8ef6',1,'uvgrtp::frame::rtcp_sender_info']]],
['ntp_5fmsw_1',['ntp_msw',['../structuvgrtp_1_1frame_1_1rtcp__sender__info.html#ae22a2bcad293efb1d642762d3eac3143',1,'uvgrtp::frame::rtcp_sender_info']]]
];

View File

@ -1,99 +1,9 @@
var searchData=
[
['rcc_5fclock_5frate_0',['RCC_CLOCK_RATE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587faece26b6edb4fc1fe6733b8fec0504b99',1,'util.hh']]],
['rcc_5fdyn_5fpayload_5ftype_1',['RCC_DYN_PAYLOAD_TYPE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fac758a522806ada30386b262660f30617',1,'util.hh']]],
['rcc_5ffps_5fdenominator_2',['RCC_FPS_DENOMINATOR',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa9e60e576f72eafe6219cd9f0a9615ce9',1,'util.hh']]],
['rcc_5ffps_5fnumerator_3',['RCC_FPS_NUMERATOR',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa51034849ac8a4078f0c3b5198b92ab54',1,'util.hh']]],
['rcc_5fmtu_5fsize_4',['RCC_MTU_SIZE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa7667fb72b42a2c11991b4879619f9f83',1,'util.hh']]],
['rcc_5fpkt_5fmax_5fdelay_5',['RCC_PKT_MAX_DELAY',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa5ac1245e18a420489083adddfa97b135',1,'util.hh']]],
['rcc_5fring_5fbuffer_5fsize_6',['RCC_RING_BUFFER_SIZE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa9be732aa645fc09adde5c84a2d07e0f6',1,'util.hh']]],
['rcc_5fsession_5fbandwidth_7',['RCC_SESSION_BANDWIDTH',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa9a5a95ba2f189fb0350cbc44ba2b95c7',1,'util.hh']]],
['rcc_5fssrc_8',['RCC_SSRC',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fad93dccbcd813299ea0b976d4dea79937',1,'util.hh']]],
['rcc_5fudp_5frcv_5fbuf_5fsize_9',['RCC_UDP_RCV_BUF_SIZE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fac52afca9d1a8c24b1a788bc5b8524663',1,'util.hh']]],
['rcc_5fudp_5fsnd_5fbuf_5fsize_10',['RCC_UDP_SND_BUF_SIZE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fad4eba6c62183db35dd4bd0e09ddd107b',1,'util.hh']]],
['rce_5ffragment_5fgeneric_11',['RCE_FRAGMENT_GENERIC',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa5b0a8dbb22c20ebe8c0711541fb68a79',1,'util.hh']]],
['rce_5fframe_5frate_12',['RCE_FRAME_RATE',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afae175f37ce4fdc6e7d9e01d200b8d9abc',1,'util.hh']]],
['rce_5fh26x_5fdependency_5fenforcement_13',['RCE_H26X_DEPENDENCY_ENFORCEMENT',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa121da451fe2a4008cec78ac4642399b2',1,'util.hh']]],
['rce_5fholepunch_5fkeepalive_14',['RCE_HOLEPUNCH_KEEPALIVE',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa8e66f45819774772a0156647d3788a95',1,'util.hh']]],
['rce_5fno_5fflags_15',['RCE_NO_FLAGS',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4952226c012292c16fe04477f76e5bcb',1,'util.hh']]],
['rce_5fno_5fh26x_5fprepend_5fsc_16',['RCE_NO_H26X_PREPEND_SC',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa877835beb990d36f59f4d9c1d61d2c35',1,'util.hh']]],
['rce_5fpace_5ffragment_5fsending_17',['RCE_PACE_FRAGMENT_SENDING',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa836063a6ef3da262d0805cf1571ab35c',1,'util.hh']]],
['rce_5freceive_5fonly_18',['RCE_RECEIVE_ONLY',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf89817eda89d32c43e18ed0645ac4d73',1,'util.hh']]],
['rce_5frtcp_19',['RCE_RTCP',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afab1342138e5af3f03d6eaf1378382bf3d',1,'util.hh']]],
['rce_5fsend_5fonly_20',['RCE_SEND_ONLY',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa6bb67e1962af60c05c6062fb6f1df374',1,'util.hh']]],
['rce_5fsrtp_21',['RCE_SRTP',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf235cba606675b9c38284ee1a491696b',1,'util.hh']]],
['rce_5fsrtp_5fauthenticate_5frtp_22',['RCE_SRTP_AUTHENTICATE_RTP',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa820625b96886d955bc42e0cbc52cdd1e',1,'util.hh']]],
['rce_5fsrtp_5fkeysize_5f192_23',['RCE_SRTP_KEYSIZE_192',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaedeac11cc80833b61b51ae32f787db73',1,'util.hh']]],
['rce_5fsrtp_5fkeysize_5f256_24',['RCE_SRTP_KEYSIZE_256',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa163744fe7c054b8396a4a07ae82a80c0',1,'util.hh']]],
['rce_5fsrtp_5fkmngmnt_5fuser_25',['RCE_SRTP_KMNGMNT_USER',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4722105b4fd34467a56b8aca8fc03773',1,'util.hh']]],
['rce_5fsrtp_5fkmngmnt_5fzrtp_26',['RCE_SRTP_KMNGMNT_ZRTP',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa40a3deab3893524daf7e057c6dfdaa75',1,'util.hh']]],
['rce_5fsrtp_5fnull_5fcipher_27',['RCE_SRTP_NULL_CIPHER',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4ddec7d182cec161d6b582589bc9baba',1,'util.hh']]],
['rce_5fsrtp_5freplay_5fprotection_28',['RCE_SRTP_REPLAY_PROTECTION',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaddd5fdb170d7cc194e4165d3f9e9a1c1',1,'util.hh']]],
['rce_5fsystem_5fcall_5fclustering_29',['RCE_SYSTEM_CALL_CLUSTERING',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa9e41141dacd18def5ab83e9f671f4263',1,'util.hh']]],
['rce_5fzrtp_5fdiffie_5fhellman_5fmode_30',['RCE_ZRTP_DIFFIE_HELLMAN_MODE',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4fdf2b1f3f934315158b4204e71f9171',1,'util.hh']]],
['rce_5fzrtp_5fmultistream_5fmode_31',['RCE_ZRTP_MULTISTREAM_MODE',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa9127265f0b1a1a45bac8e6fa7270a98a',1,'util.hh']]],
['remove_5fall_5fhooks_32',['remove_all_hooks',['../classuvgrtp_1_1rtcp.html#a81198428cc697c0c7cbb2a4191f294d8',1,'uvgrtp::rtcp']]],
['rtcp_33',['rtcp',['../classuvgrtp_1_1rtcp.html',1,'uvgrtp']]],
['rtcp_5fapp_5fpacket_34',['rtcp_app_packet',['../structuvgrtp_1_1frame_1_1rtcp__app__packet.html',1,'uvgrtp::frame']]],
['rtcp_5fheader_35',['rtcp_header',['../structuvgrtp_1_1frame_1_1rtcp__header.html',1,'uvgrtp::frame']]],
['rtcp_5freceiver_5freport_36',['rtcp_receiver_report',['../structuvgrtp_1_1frame_1_1rtcp__receiver__report.html',1,'uvgrtp::frame']]],
['rtcp_5freport_5fblock_37',['rtcp_report_block',['../structuvgrtp_1_1frame_1_1rtcp__report__block.html',1,'uvgrtp::frame']]],
['rtcp_5fsdes_5fchunk_38',['rtcp_sdes_chunk',['../structuvgrtp_1_1frame_1_1rtcp__sdes__chunk.html',1,'uvgrtp::frame']]],
['rtcp_5fsdes_5fitem_39',['rtcp_sdes_item',['../structuvgrtp_1_1frame_1_1rtcp__sdes__item.html',1,'uvgrtp::frame']]],
['rtcp_5fsdes_5fpacket_40',['rtcp_sdes_packet',['../structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html',1,'uvgrtp::frame']]],
['rtcp_5fsender_5finfo_41',['rtcp_sender_info',['../structuvgrtp_1_1frame_1_1rtcp__sender__info.html',1,'uvgrtp::frame']]],
['rtcp_5fsender_5freport_42',['rtcp_sender_report',['../structuvgrtp_1_1frame_1_1rtcp__sender__report.html',1,'uvgrtp::frame']]],
['rtp_5fauth_5ftag_5fmismatch_43',['RTP_AUTH_TAG_MISMATCH',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba6d62ec0a7250a3db7c0f3a13280ecc65',1,'util.hh']]],
['rtp_5fbind_5ferror_44',['RTP_BIND_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba000c0166a0c38686389fc2eba0ddc458',1,'util.hh']]],
['rtp_5fcopy_45',['RTP_COPY',['../util_8hh.html#af03a75996471fc531742cd640c7caf2dab1d5797a23c37a33168046a2ae6aef6a',1,'util.hh']]],
['rtp_5fctx_5fconfiguration_5fflags_46',['RTP_CTX_CONFIGURATION_FLAGS',['../util_8hh.html#aa98d9238629e33567e73af0d239e587f',1,'util.hh']]],
['rtp_5fctx_5fenable_5fflags_47',['RTP_CTX_ENABLE_FLAGS',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2af',1,'util.hh']]],
['rtp_5ferror_48',['RTP_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387b',1,'util.hh']]],
['rtp_5fflags_49',['RTP_FLAGS',['../util_8hh.html#af03a75996471fc531742cd640c7caf2d',1,'util.hh']]],
['rtp_5fformat_50',['RTP_FORMAT',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96',1,'util.hh']]],
['rtp_5fformat_5fdvi4_5f32_51',['RTP_FORMAT_DVI4_32',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96abf1f20482ba40b0a4161f339978c65c8',1,'util.hh']]],
['rtp_5fformat_5fdvi4_5f441_52',['RTP_FORMAT_DVI4_441',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96aa4e91d147dcc0696bae592e0de3ae295',1,'util.hh']]],
['rtp_5fformat_5fdvi4_5f64_53',['RTP_FORMAT_DVI4_64',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ae0cb5522bf562899f9001adeb669f3ef',1,'util.hh']]],
['rtp_5fformat_5fdvi4_5f882_54',['RTP_FORMAT_DVI4_882',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96abb0d59c256c7ed6b0f78aff67f89ac18',1,'util.hh']]],
['rtp_5fformat_5fg722_55',['RTP_FORMAT_G722',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a2240ad1204186f7c34aacfb27673e692',1,'util.hh']]],
['rtp_5fformat_5fg723_56',['RTP_FORMAT_G723',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96aa97d1880bfcfba08dfef863dc82426d1',1,'util.hh']]],
['rtp_5fformat_5fg726_5f16_57',['RTP_FORMAT_G726_16',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ae118651d66f3af54be3094e7e71336c7',1,'util.hh']]],
['rtp_5fformat_5fg726_5f24_58',['RTP_FORMAT_G726_24',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a8635bcd6f336c19271e7ea20eb9111cf',1,'util.hh']]],
['rtp_5fformat_5fg726_5f32_59',['RTP_FORMAT_G726_32',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a266862cd2289619b5c4de4c259a32785',1,'util.hh']]],
['rtp_5fformat_5fg726_5f40_60',['RTP_FORMAT_G726_40',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96af260843177efa05d95f98d30499db683',1,'util.hh']]],
['rtp_5fformat_5fg728_61',['RTP_FORMAT_G728',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a0f194f13a6b06211c1411caf0a454313',1,'util.hh']]],
['rtp_5fformat_5fg729_62',['RTP_FORMAT_G729',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a78da373e5b8fb9a83e28f5b8b715ca19',1,'util.hh']]],
['rtp_5fformat_5fg729d_63',['RTP_FORMAT_G729D',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96af2981123dc924d80ed50371625927f58',1,'util.hh']]],
['rtp_5fformat_5fg729e_64',['RTP_FORMAT_G729E',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96adba054e696e9d57d316c598618580a63',1,'util.hh']]],
['rtp_5fformat_5fgeneric_65',['RTP_FORMAT_GENERIC',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ad4b1be929d880baa2c2ca85c614f61b9',1,'util.hh']]],
['rtp_5fformat_5fgsm_66',['RTP_FORMAT_GSM',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96aa6d4ba4fb63005fac69fa371fdf18a68',1,'util.hh']]],
['rtp_5fformat_5fgsm_5fefr_67',['RTP_FORMAT_GSM_EFR',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4e41697a659bea307ca6387330d5b9ed',1,'util.hh']]],
['rtp_5fformat_5fh264_68',['RTP_FORMAT_H264',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ad785025a8de9a53f17dc84ec3eed85bd',1,'util.hh']]],
['rtp_5fformat_5fh265_69',['RTP_FORMAT_H265',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4ee0ab7d51bf50f8f5a5cb995ecc407b',1,'util.hh']]],
['rtp_5fformat_5fh266_70',['RTP_FORMAT_H266',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a0e3d0414b29804783324399c8a42c85d',1,'util.hh']]],
['rtp_5fformat_5fl16_5fmono_71',['RTP_FORMAT_L16_MONO',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4c34cf9ef36a41ba3565b0e3f6ea534a',1,'util.hh']]],
['rtp_5fformat_5fl16_5fstereo_72',['RTP_FORMAT_L16_STEREO',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a1de81aee545949cf4609fe3cca3ab1b8',1,'util.hh']]],
['rtp_5fformat_5fl8_73',['RTP_FORMAT_L8',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96abee7466b11e455f2f2362dc39e61c6a8',1,'util.hh']]],
['rtp_5fformat_5flpc_74',['RTP_FORMAT_LPC',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a61c2e69b79b0fd2a8fd0bb24fb359ecd',1,'util.hh']]],
['rtp_5fformat_5fopus_75',['RTP_FORMAT_OPUS',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4e6ef095b4645cdc8aef241aad1f974b',1,'util.hh']]],
['rtp_5fformat_5fpcma_76',['RTP_FORMAT_PCMA',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a518313e0a5342ff1b5b79ead46791b2e',1,'util.hh']]],
['rtp_5fformat_5fpcmu_77',['RTP_FORMAT_PCMU',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a12448ad5b424a2f6d5028a7fd06019b7',1,'util.hh']]],
['rtp_5fformat_5fvdvi_78',['RTP_FORMAT_VDVI',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a91525c8b53f821a6644803967be0e3ed',1,'util.hh']]],
['rtp_5fframe_79',['rtp_frame',['../structuvgrtp_1_1frame_1_1rtp__frame.html',1,'uvgrtp::frame']]],
['rtp_5fgeneric_5ferror_80',['RTP_GENERIC_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bafde486de26be732acf472480e3693b19',1,'util.hh']]],
['rtp_5finitialized_81',['RTP_INITIALIZED',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba0759e9bb74c7a15ef09513547ed5cc2a',1,'util.hh']]],
['rtp_5finvalid_5fvalue_82',['RTP_INVALID_VALUE',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba4cdd3c5db294a4f05294b264afbf678b',1,'util.hh']]],
['rtp_5fmemory_5ferror_83',['RTP_MEMORY_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bac54e582250aec15bf2aea189ccbb0348',1,'util.hh']]],
['rtp_5fno_5fflags_84',['RTP_NO_FLAGS',['../util_8hh.html#af03a75996471fc531742cd640c7caf2da084c095dae54bbbc6d9509568c58f9a6',1,'util.hh']]],
['rtp_5fno_5fh26x_5fscl_85',['RTP_NO_H26X_SCL',['../util_8hh.html#af03a75996471fc531742cd640c7caf2dafd917713b62c18d5fa4106e42f3fbde8',1,'util.hh']]],
['rtp_5fnot_5ffound_86',['RTP_NOT_FOUND',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba0a18f9856d2dd5890bb6ec25e4acf631',1,'util.hh']]],
['rtp_5fnot_5finitialized_87',['RTP_NOT_INITIALIZED',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba32d67254c4da35568e7007ec3825f98a',1,'util.hh']]],
['rtp_5fnot_5fsupported_88',['RTP_NOT_SUPPORTED',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba756d5cd372b045f069a493ed2f2cfa22',1,'util.hh']]],
['rtp_5fok_89',['RTP_OK',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba0d701531b2bb1c027f5e5bcc64ed29e1',1,'util.hh']]],
['rtp_5frecv_5ferror_90',['RTP_RECV_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387baa499befa487c22503360adffc590f33b',1,'util.hh']]],
['rtp_5fsend_5ferror_91',['RTP_SEND_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba6c47e86944dbed4d33531236a6e28079',1,'util.hh']]],
['rtp_5fsocket_5ferror_92',['RTP_SOCKET_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bab392a7774c551eed903855248760ad06',1,'util.hh']]],
['rtp_5fssrc_5fcollision_93',['RTP_SSRC_COLLISION',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba80aa5b74c1e252c2ef49e0796d4183d3',1,'util.hh']]],
['rtp_5ftimeout_94',['RTP_TIMEOUT',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bacb40716d1ab0663c0cce56f6d03f0902',1,'util.hh']]],
['rtp_5fts_95',['rtp_ts',['../structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a2e9c3d1fe1b522a1d4c6fb4bc1fbdbdf',1,'uvgrtp::frame::rtcp_sender_info']]]
['padding_0',['padding',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a4309061d7fae17a13db3d5eea71d6639',1,'uvgrtp::frame::rtcp_header']]],
['payload_5flen_1',['payload_len',['../structuvgrtp_1_1frame_1_1rtp__frame.html#a2d158e0aaf23398a8a3b02c95d06e366',1,'uvgrtp::frame::rtp_frame::payload_len()'],['../structuvgrtp_1_1frame_1_1rtcp__app__packet.html#acefa08e5025c52c0e4a0ae14255f6d01',1,'uvgrtp::frame::rtcp_app_packet::payload_len()'],['../structuvgrtp_1_1frame_1_1rtcp__fb__packet.html#a03976200a7d64f842778f2880361f981',1,'uvgrtp::frame::rtcp_fb_packet::payload_len()']]],
['pkt_5fsubtype_2',['pkt_subtype',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a829dd160ba7f473f3d6c5ff2d2dae5ab',1,'uvgrtp::frame::rtcp_header']]],
['pkt_5ftype_3',['pkt_type',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a08120f0b6526c473c6488803388c7855',1,'uvgrtp::frame::rtcp_header']]],
['pull_5fframe_4',['pull_frame',['../classuvgrtp_1_1media__stream.html#ab0c854a4c36572f91008a8e1e49e38bb',1,'uvgrtp::media_stream::pull_frame()'],['../classuvgrtp_1_1media__stream.html#a466067ad9924a52530c62c53c1b397b4',1,'uvgrtp::media_stream::pull_frame(size_t timeout_ms)']]],
['push_5fframe_5',['push_frame',['../classuvgrtp_1_1media__stream.html#a157e9973d92b65e82914d4028690c770',1,'uvgrtp::media_stream::push_frame(uint8_t *data, size_t data_len, int rtp_flags)'],['../classuvgrtp_1_1media__stream.html#a068a0963e06f789b4e4310a45cbe4409',1,'uvgrtp::media_stream::push_frame(std::unique_ptr&lt; uint8_t[]&gt; data, size_t data_len, int rtp_flags)'],['../classuvgrtp_1_1media__stream.html#ac0cb1cf34b639c9ba71b047b3ba26d22',1,'uvgrtp::media_stream::push_frame(uint8_t *data, size_t data_len, uint32_t ts, int rtp_flags)'],['../classuvgrtp_1_1media__stream.html#a5577c57f1bdd5b888aa4e8c4f939eba7',1,'uvgrtp::media_stream::push_frame(uint8_t *data, size_t data_len, uint32_t ts, uint64_t ntp_ts, int rtp_flags)'],['../classuvgrtp_1_1media__stream.html#abe9099254c6bf16f255f5f50441ec9d2',1,'uvgrtp::media_stream::push_frame(std::unique_ptr&lt; uint8_t[]&gt; data, size_t data_len, uint32_t ts, int rtp_flags)'],['../classuvgrtp_1_1media__stream.html#a56d2a209b2647d0f3ee7948e8cf45438',1,'uvgrtp::media_stream::push_frame(std::unique_ptr&lt; uint8_t[]&gt; data, size_t data_len, uint32_t ts, uint64_t ntp_ts, int rtp_flags)']]]
];

View File

@ -1,8 +1,109 @@
var searchData=
[
['send_5fapp_5fpacket_0',['send_app_packet',['../classuvgrtp_1_1rtcp.html#a0c092bca6edda19218a2cb84ed776c34',1,'uvgrtp::rtcp']]],
['send_5fbye_5fpacket_1',['send_bye_packet',['../classuvgrtp_1_1rtcp.html#a2b831698320212e382e3d565e62d31c4',1,'uvgrtp::rtcp']]],
['send_5fsdes_5fpacket_2',['send_sdes_packet',['../classuvgrtp_1_1rtcp.html#a65680d4ba308fc8cb92fd41f0d313c84',1,'uvgrtp::rtcp']]],
['session_3',['session',['../classuvgrtp_1_1session.html',1,'uvgrtp']]],
['set_5fts_5finfo_4',['set_ts_info',['../classuvgrtp_1_1rtcp.html#a5d0d06f9b4b7779d96d8d60938627316',1,'uvgrtp::rtcp']]]
['rcc_5fclock_5frate_0',['RCC_CLOCK_RATE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587faece26b6edb4fc1fe6733b8fec0504b99',1,'util.hh']]],
['rcc_5fdyn_5fpayload_5ftype_1',['RCC_DYN_PAYLOAD_TYPE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fac758a522806ada30386b262660f30617',1,'util.hh']]],
['rcc_5ffps_5fdenominator_2',['RCC_FPS_DENOMINATOR',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa9e60e576f72eafe6219cd9f0a9615ce9',1,'util.hh']]],
['rcc_5ffps_5fnumerator_3',['RCC_FPS_NUMERATOR',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa51034849ac8a4078f0c3b5198b92ab54',1,'util.hh']]],
['rcc_5fmtu_5fsize_4',['RCC_MTU_SIZE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa7667fb72b42a2c11991b4879619f9f83',1,'util.hh']]],
['rcc_5fpkt_5fmax_5fdelay_5',['RCC_PKT_MAX_DELAY',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa5ac1245e18a420489083adddfa97b135',1,'util.hh']]],
['rcc_5fpoll_5ftimeout_6',['RCC_POLL_TIMEOUT',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa97b5a85e591372f65274238d0d1a73f8',1,'util.hh']]],
['rcc_5fremote_5fssrc_7',['RCC_REMOTE_SSRC',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa15b4ff7295eae57338f4c3864c5146b7',1,'util.hh']]],
['rcc_5fring_5fbuffer_5fsize_8',['RCC_RING_BUFFER_SIZE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa9be732aa645fc09adde5c84a2d07e0f6',1,'util.hh']]],
['rcc_5fsession_5fbandwidth_9',['RCC_SESSION_BANDWIDTH',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa9a5a95ba2f189fb0350cbc44ba2b95c7',1,'util.hh']]],
['rcc_5fssrc_10',['RCC_SSRC',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fad93dccbcd813299ea0b976d4dea79937',1,'util.hh']]],
['rcc_5fudp_5frcv_5fbuf_5fsize_11',['RCC_UDP_RCV_BUF_SIZE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fac52afca9d1a8c24b1a788bc5b8524663',1,'util.hh']]],
['rcc_5fudp_5fsnd_5fbuf_5fsize_12',['RCC_UDP_SND_BUF_SIZE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fad4eba6c62183db35dd4bd0e09ddd107b',1,'util.hh']]],
['rce_5ffragment_5fgeneric_13',['RCE_FRAGMENT_GENERIC',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa5b0a8dbb22c20ebe8c0711541fb68a79',1,'util.hh']]],
['rce_5fframe_5frate_14',['RCE_FRAME_RATE',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afae175f37ce4fdc6e7d9e01d200b8d9abc',1,'util.hh']]],
['rce_5fh26x_5fdependency_5fenforcement_15',['RCE_H26X_DEPENDENCY_ENFORCEMENT',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa121da451fe2a4008cec78ac4642399b2',1,'util.hh']]],
['rce_5fholepunch_5fkeepalive_16',['RCE_HOLEPUNCH_KEEPALIVE',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa8e66f45819774772a0156647d3788a95',1,'util.hh']]],
['rce_5fno_5fflags_17',['RCE_NO_FLAGS',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4952226c012292c16fe04477f76e5bcb',1,'util.hh']]],
['rce_5fno_5fh26x_5fprepend_5fsc_18',['RCE_NO_H26X_PREPEND_SC',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa877835beb990d36f59f4d9c1d61d2c35',1,'util.hh']]],
['rce_5fpace_5ffragment_5fsending_19',['RCE_PACE_FRAGMENT_SENDING',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa836063a6ef3da262d0805cf1571ab35c',1,'util.hh']]],
['rce_5freceive_5fonly_20',['RCE_RECEIVE_ONLY',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf89817eda89d32c43e18ed0645ac4d73',1,'util.hh']]],
['rce_5frtcp_21',['RCE_RTCP',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afab1342138e5af3f03d6eaf1378382bf3d',1,'util.hh']]],
['rce_5frtcp_5fmux_22',['RCE_RTCP_MUX',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa3dc772b2aab5eae239afae6cef8c68a7',1,'util.hh']]],
['rce_5fsend_5fonly_23',['RCE_SEND_ONLY',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa6bb67e1962af60c05c6062fb6f1df374',1,'util.hh']]],
['rce_5fsrtp_24',['RCE_SRTP',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf235cba606675b9c38284ee1a491696b',1,'util.hh']]],
['rce_5fsrtp_5fauthenticate_5frtp_25',['RCE_SRTP_AUTHENTICATE_RTP',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa820625b96886d955bc42e0cbc52cdd1e',1,'util.hh']]],
['rce_5fsrtp_5fkeysize_5f192_26',['RCE_SRTP_KEYSIZE_192',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaedeac11cc80833b61b51ae32f787db73',1,'util.hh']]],
['rce_5fsrtp_5fkeysize_5f256_27',['RCE_SRTP_KEYSIZE_256',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa163744fe7c054b8396a4a07ae82a80c0',1,'util.hh']]],
['rce_5fsrtp_5fkmngmnt_5fuser_28',['RCE_SRTP_KMNGMNT_USER',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4722105b4fd34467a56b8aca8fc03773',1,'util.hh']]],
['rce_5fsrtp_5fkmngmnt_5fzrtp_29',['RCE_SRTP_KMNGMNT_ZRTP',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa40a3deab3893524daf7e057c6dfdaa75',1,'util.hh']]],
['rce_5fsrtp_5fnull_5fcipher_30',['RCE_SRTP_NULL_CIPHER',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4ddec7d182cec161d6b582589bc9baba',1,'util.hh']]],
['rce_5fsrtp_5freplay_5fprotection_31',['RCE_SRTP_REPLAY_PROTECTION',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaddd5fdb170d7cc194e4165d3f9e9a1c1',1,'util.hh']]],
['rce_5fsystem_5fcall_5fclustering_32',['RCE_SYSTEM_CALL_CLUSTERING',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa9e41141dacd18def5ab83e9f671f4263',1,'util.hh']]],
['rce_5fzrtp_5fdiffie_5fhellman_5fmode_33',['RCE_ZRTP_DIFFIE_HELLMAN_MODE',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4fdf2b1f3f934315158b4204e71f9171',1,'util.hh']]],
['rce_5fzrtp_5fmultistream_5fmode_34',['RCE_ZRTP_MULTISTREAM_MODE',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa9127265f0b1a1a45bac8e6fa7270a98a',1,'util.hh']]],
['remove_5fall_5fhooks_35',['remove_all_hooks',['../classuvgrtp_1_1rtcp.html#a81198428cc697c0c7cbb2a4191f294d8',1,'uvgrtp::rtcp']]],
['remove_5fsend_5fapp_5fhook_36',['remove_send_app_hook',['../classuvgrtp_1_1rtcp.html#a27adb6b5965dab3918bd02a2e7a2dfd2',1,'uvgrtp::rtcp']]],
['rtcp_37',['rtcp',['../classuvgrtp_1_1rtcp.html',1,'uvgrtp']]],
['rtcp_5fapp_5fpacket_38',['rtcp_app_packet',['../structuvgrtp_1_1frame_1_1rtcp__app__packet.html',1,'uvgrtp::frame']]],
['rtcp_5ffb_5ffci_39',['rtcp_fb_fci',['../structuvgrtp_1_1frame_1_1rtcp__fb__fci.html',1,'uvgrtp::frame']]],
['rtcp_5ffb_5fpacket_40',['rtcp_fb_packet',['../structuvgrtp_1_1frame_1_1rtcp__fb__packet.html',1,'uvgrtp::frame']]],
['rtcp_5ffir_41',['rtcp_fir',['../structuvgrtp_1_1frame_1_1rtcp__fir.html',1,'uvgrtp::frame']]],
['rtcp_5fheader_42',['rtcp_header',['../structuvgrtp_1_1frame_1_1rtcp__header.html',1,'uvgrtp::frame']]],
['rtcp_5freceiver_5freport_43',['rtcp_receiver_report',['../structuvgrtp_1_1frame_1_1rtcp__receiver__report.html',1,'uvgrtp::frame']]],
['rtcp_5freport_5fblock_44',['rtcp_report_block',['../structuvgrtp_1_1frame_1_1rtcp__report__block.html',1,'uvgrtp::frame']]],
['rtcp_5frpsi_45',['rtcp_rpsi',['../structuvgrtp_1_1frame_1_1rtcp__rpsi.html',1,'uvgrtp::frame']]],
['rtcp_5fsdes_5fchunk_46',['rtcp_sdes_chunk',['../structuvgrtp_1_1frame_1_1rtcp__sdes__chunk.html',1,'uvgrtp::frame']]],
['rtcp_5fsdes_5fitem_47',['rtcp_sdes_item',['../structuvgrtp_1_1frame_1_1rtcp__sdes__item.html',1,'uvgrtp::frame']]],
['rtcp_5fsdes_5fpacket_48',['rtcp_sdes_packet',['../structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html',1,'uvgrtp::frame']]],
['rtcp_5fsender_5finfo_49',['rtcp_sender_info',['../structuvgrtp_1_1frame_1_1rtcp__sender__info.html',1,'uvgrtp::frame']]],
['rtcp_5fsender_5freport_50',['rtcp_sender_report',['../structuvgrtp_1_1frame_1_1rtcp__sender__report.html',1,'uvgrtp::frame']]],
['rtcp_5fsli_51',['rtcp_sli',['../structuvgrtp_1_1frame_1_1rtcp__sli.html',1,'uvgrtp::frame']]],
['rtp_5fauth_5ftag_5fmismatch_52',['RTP_AUTH_TAG_MISMATCH',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba6d62ec0a7250a3db7c0f3a13280ecc65',1,'util.hh']]],
['rtp_5fbind_5ferror_53',['RTP_BIND_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba000c0166a0c38686389fc2eba0ddc458',1,'util.hh']]],
['rtp_5fcopy_54',['RTP_COPY',['../util_8hh.html#af03a75996471fc531742cd640c7caf2dab1d5797a23c37a33168046a2ae6aef6a',1,'util.hh']]],
['rtp_5fctx_5fconfiguration_5fflags_55',['RTP_CTX_CONFIGURATION_FLAGS',['../util_8hh.html#aa98d9238629e33567e73af0d239e587f',1,'util.hh']]],
['rtp_5fctx_5fenable_5fflags_56',['RTP_CTX_ENABLE_FLAGS',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2af',1,'util.hh']]],
['rtp_5ferror_57',['RTP_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387b',1,'util.hh']]],
['rtp_5fflags_58',['RTP_FLAGS',['../util_8hh.html#af03a75996471fc531742cd640c7caf2d',1,'util.hh']]],
['rtp_5fformat_59',['RTP_FORMAT',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96',1,'util.hh']]],
['rtp_5fformat_5fatlas_60',['RTP_FORMAT_ATLAS',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a81c1df94bbe9478ae6c1ea212c9a20ee',1,'util.hh']]],
['rtp_5fformat_5fdvi4_5f32_61',['RTP_FORMAT_DVI4_32',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96abf1f20482ba40b0a4161f339978c65c8',1,'util.hh']]],
['rtp_5fformat_5fdvi4_5f441_62',['RTP_FORMAT_DVI4_441',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96aa4e91d147dcc0696bae592e0de3ae295',1,'util.hh']]],
['rtp_5fformat_5fdvi4_5f64_63',['RTP_FORMAT_DVI4_64',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ae0cb5522bf562899f9001adeb669f3ef',1,'util.hh']]],
['rtp_5fformat_5fdvi4_5f882_64',['RTP_FORMAT_DVI4_882',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96abb0d59c256c7ed6b0f78aff67f89ac18',1,'util.hh']]],
['rtp_5fformat_5fg722_65',['RTP_FORMAT_G722',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a2240ad1204186f7c34aacfb27673e692',1,'util.hh']]],
['rtp_5fformat_5fg723_66',['RTP_FORMAT_G723',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96aa97d1880bfcfba08dfef863dc82426d1',1,'util.hh']]],
['rtp_5fformat_5fg726_5f16_67',['RTP_FORMAT_G726_16',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ae118651d66f3af54be3094e7e71336c7',1,'util.hh']]],
['rtp_5fformat_5fg726_5f24_68',['RTP_FORMAT_G726_24',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a8635bcd6f336c19271e7ea20eb9111cf',1,'util.hh']]],
['rtp_5fformat_5fg726_5f32_69',['RTP_FORMAT_G726_32',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a266862cd2289619b5c4de4c259a32785',1,'util.hh']]],
['rtp_5fformat_5fg726_5f40_70',['RTP_FORMAT_G726_40',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96af260843177efa05d95f98d30499db683',1,'util.hh']]],
['rtp_5fformat_5fg728_71',['RTP_FORMAT_G728',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a0f194f13a6b06211c1411caf0a454313',1,'util.hh']]],
['rtp_5fformat_5fg729_72',['RTP_FORMAT_G729',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a78da373e5b8fb9a83e28f5b8b715ca19',1,'util.hh']]],
['rtp_5fformat_5fg729d_73',['RTP_FORMAT_G729D',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96af2981123dc924d80ed50371625927f58',1,'util.hh']]],
['rtp_5fformat_5fg729e_74',['RTP_FORMAT_G729E',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96adba054e696e9d57d316c598618580a63',1,'util.hh']]],
['rtp_5fformat_5fgeneric_75',['RTP_FORMAT_GENERIC',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ad4b1be929d880baa2c2ca85c614f61b9',1,'util.hh']]],
['rtp_5fformat_5fgsm_76',['RTP_FORMAT_GSM',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96aa6d4ba4fb63005fac69fa371fdf18a68',1,'util.hh']]],
['rtp_5fformat_5fgsm_5fefr_77',['RTP_FORMAT_GSM_EFR',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4e41697a659bea307ca6387330d5b9ed',1,'util.hh']]],
['rtp_5fformat_5fh264_78',['RTP_FORMAT_H264',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ad785025a8de9a53f17dc84ec3eed85bd',1,'util.hh']]],
['rtp_5fformat_5fh265_79',['RTP_FORMAT_H265',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4ee0ab7d51bf50f8f5a5cb995ecc407b',1,'util.hh']]],
['rtp_5fformat_5fh266_80',['RTP_FORMAT_H266',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a0e3d0414b29804783324399c8a42c85d',1,'util.hh']]],
['rtp_5fformat_5fl16_5fmono_81',['RTP_FORMAT_L16_MONO',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4c34cf9ef36a41ba3565b0e3f6ea534a',1,'util.hh']]],
['rtp_5fformat_5fl16_5fstereo_82',['RTP_FORMAT_L16_STEREO',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a1de81aee545949cf4609fe3cca3ab1b8',1,'util.hh']]],
['rtp_5fformat_5fl8_83',['RTP_FORMAT_L8',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96abee7466b11e455f2f2362dc39e61c6a8',1,'util.hh']]],
['rtp_5fformat_5flpc_84',['RTP_FORMAT_LPC',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a61c2e69b79b0fd2a8fd0bb24fb359ecd',1,'util.hh']]],
['rtp_5fformat_5fopus_85',['RTP_FORMAT_OPUS',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4e6ef095b4645cdc8aef241aad1f974b',1,'util.hh']]],
['rtp_5fformat_5fpcma_86',['RTP_FORMAT_PCMA',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a518313e0a5342ff1b5b79ead46791b2e',1,'util.hh']]],
['rtp_5fformat_5fpcmu_87',['RTP_FORMAT_PCMU',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a12448ad5b424a2f6d5028a7fd06019b7',1,'util.hh']]],
['rtp_5fformat_5fvdvi_88',['RTP_FORMAT_VDVI',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a91525c8b53f821a6644803967be0e3ed',1,'util.hh']]],
['rtp_5fframe_89',['rtp_frame',['../structuvgrtp_1_1frame_1_1rtp__frame.html',1,'uvgrtp::frame']]],
['rtp_5fgeneric_5ferror_90',['RTP_GENERIC_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bafde486de26be732acf472480e3693b19',1,'util.hh']]],
['rtp_5finitialized_91',['RTP_INITIALIZED',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba0759e9bb74c7a15ef09513547ed5cc2a',1,'util.hh']]],
['rtp_5finvalid_5fvalue_92',['RTP_INVALID_VALUE',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba4cdd3c5db294a4f05294b264afbf678b',1,'util.hh']]],
['rtp_5fmemory_5ferror_93',['RTP_MEMORY_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bac54e582250aec15bf2aea189ccbb0348',1,'util.hh']]],
['rtp_5fno_5fflags_94',['RTP_NO_FLAGS',['../util_8hh.html#af03a75996471fc531742cd640c7caf2da084c095dae54bbbc6d9509568c58f9a6',1,'util.hh']]],
['rtp_5fno_5fh26x_5fscl_95',['RTP_NO_H26X_SCL',['../util_8hh.html#af03a75996471fc531742cd640c7caf2dafd917713b62c18d5fa4106e42f3fbde8',1,'util.hh']]],
['rtp_5fnot_5ffound_96',['RTP_NOT_FOUND',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba0a18f9856d2dd5890bb6ec25e4acf631',1,'util.hh']]],
['rtp_5fnot_5finitialized_97',['RTP_NOT_INITIALIZED',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba32d67254c4da35568e7007ec3825f98a',1,'util.hh']]],
['rtp_5fnot_5fsupported_98',['RTP_NOT_SUPPORTED',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba756d5cd372b045f069a493ed2f2cfa22',1,'util.hh']]],
['rtp_5fok_99',['RTP_OK',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba0d701531b2bb1c027f5e5bcc64ed29e1',1,'util.hh']]],
['rtp_5frecv_5ferror_100',['RTP_RECV_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387baa499befa487c22503360adffc590f33b',1,'util.hh']]],
['rtp_5fsend_5ferror_101',['RTP_SEND_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba6c47e86944dbed4d33531236a6e28079',1,'util.hh']]],
['rtp_5fsocket_5ferror_102',['RTP_SOCKET_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bab392a7774c551eed903855248760ad06',1,'util.hh']]],
['rtp_5fssrc_5fcollision_103',['RTP_SSRC_COLLISION',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba80aa5b74c1e252c2ef49e0796d4183d3',1,'util.hh']]],
['rtp_5ftimeout_104',['RTP_TIMEOUT',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bacb40716d1ab0663c0cce56f6d03f0902',1,'util.hh']]],
['rtp_5fts_105',['rtp_ts',['../structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a2e9c3d1fe1b522a1d4c6fb4bc1fbdbdf',1,'uvgrtp::frame::rtcp_sender_info']]]
];

View File

@ -1,5 +1,9 @@
var searchData=
[
['util_2ehh_0',['util.hh',['../util_8hh.html',1,'']]],
['uvgrtp_1',['uvgRTP',['../index.html',1,'']]]
['send_5fapp_5fpacket_0',['send_app_packet',['../classuvgrtp_1_1rtcp.html#a0c092bca6edda19218a2cb84ed776c34',1,'uvgrtp::rtcp']]],
['send_5fbye_5fpacket_1',['send_bye_packet',['../classuvgrtp_1_1rtcp.html#a2b831698320212e382e3d565e62d31c4',1,'uvgrtp::rtcp']]],
['send_5fsdes_5fpacket_2',['send_sdes_packet',['../classuvgrtp_1_1rtcp.html#a65680d4ba308fc8cb92fd41f0d313c84',1,'uvgrtp::rtcp']]],
['session_3',['session',['../classuvgrtp_1_1session.html',1,'uvgrtp']]],
['set_5fts_5finfo_4',['set_ts_info',['../classuvgrtp_1_1rtcp.html#a5d0d06f9b4b7779d96d8d60938627316',1,'uvgrtp::rtcp']]],
['start_5fzrtp_5',['start_zrtp',['../classuvgrtp_1_1media__stream.html#a9e22ebbe9f903abe0fcae267f98cafeb',1,'uvgrtp::media_stream']]]
];

View File

@ -1,4 +1,5 @@
var searchData=
[
['version_0',['version',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a096fae3005310de937f1dab442c3b9d7',1,'uvgrtp::frame::rtcp_header']]]
['util_2ehh_0',['util.hh',['../util_8hh.html',1,'']]],
['uvgrtp_1',['uvgRTP',['../index.html',1,'']]]
];

View File

@ -1,4 +1,4 @@
var searchData=
[
['_7econtext_0',['~context',['../classuvgrtp_1_1context.html#a652a201ae11685961267455ab823eb60',1,'uvgrtp::context']]]
['version_0',['version',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a096fae3005310de937f1dab442c3b9d7',1,'uvgrtp::frame::rtcp_header']]]
];

View File

@ -2,13 +2,18 @@ var searchData=
[
['rtcp_0',['rtcp',['../classuvgrtp_1_1rtcp.html',1,'uvgrtp']]],
['rtcp_5fapp_5fpacket_1',['rtcp_app_packet',['../structuvgrtp_1_1frame_1_1rtcp__app__packet.html',1,'uvgrtp::frame']]],
['rtcp_5fheader_2',['rtcp_header',['../structuvgrtp_1_1frame_1_1rtcp__header.html',1,'uvgrtp::frame']]],
['rtcp_5freceiver_5freport_3',['rtcp_receiver_report',['../structuvgrtp_1_1frame_1_1rtcp__receiver__report.html',1,'uvgrtp::frame']]],
['rtcp_5freport_5fblock_4',['rtcp_report_block',['../structuvgrtp_1_1frame_1_1rtcp__report__block.html',1,'uvgrtp::frame']]],
['rtcp_5fsdes_5fchunk_5',['rtcp_sdes_chunk',['../structuvgrtp_1_1frame_1_1rtcp__sdes__chunk.html',1,'uvgrtp::frame']]],
['rtcp_5fsdes_5fitem_6',['rtcp_sdes_item',['../structuvgrtp_1_1frame_1_1rtcp__sdes__item.html',1,'uvgrtp::frame']]],
['rtcp_5fsdes_5fpacket_7',['rtcp_sdes_packet',['../structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html',1,'uvgrtp::frame']]],
['rtcp_5fsender_5finfo_8',['rtcp_sender_info',['../structuvgrtp_1_1frame_1_1rtcp__sender__info.html',1,'uvgrtp::frame']]],
['rtcp_5fsender_5freport_9',['rtcp_sender_report',['../structuvgrtp_1_1frame_1_1rtcp__sender__report.html',1,'uvgrtp::frame']]],
['rtp_5fframe_10',['rtp_frame',['../structuvgrtp_1_1frame_1_1rtp__frame.html',1,'uvgrtp::frame']]]
['rtcp_5ffb_5ffci_2',['rtcp_fb_fci',['../structuvgrtp_1_1frame_1_1rtcp__fb__fci.html',1,'uvgrtp::frame']]],
['rtcp_5ffb_5fpacket_3',['rtcp_fb_packet',['../structuvgrtp_1_1frame_1_1rtcp__fb__packet.html',1,'uvgrtp::frame']]],
['rtcp_5ffir_4',['rtcp_fir',['../structuvgrtp_1_1frame_1_1rtcp__fir.html',1,'uvgrtp::frame']]],
['rtcp_5fheader_5',['rtcp_header',['../structuvgrtp_1_1frame_1_1rtcp__header.html',1,'uvgrtp::frame']]],
['rtcp_5freceiver_5freport_6',['rtcp_receiver_report',['../structuvgrtp_1_1frame_1_1rtcp__receiver__report.html',1,'uvgrtp::frame']]],
['rtcp_5freport_5fblock_7',['rtcp_report_block',['../structuvgrtp_1_1frame_1_1rtcp__report__block.html',1,'uvgrtp::frame']]],
['rtcp_5frpsi_8',['rtcp_rpsi',['../structuvgrtp_1_1frame_1_1rtcp__rpsi.html',1,'uvgrtp::frame']]],
['rtcp_5fsdes_5fchunk_9',['rtcp_sdes_chunk',['../structuvgrtp_1_1frame_1_1rtcp__sdes__chunk.html',1,'uvgrtp::frame']]],
['rtcp_5fsdes_5fitem_10',['rtcp_sdes_item',['../structuvgrtp_1_1frame_1_1rtcp__sdes__item.html',1,'uvgrtp::frame']]],
['rtcp_5fsdes_5fpacket_11',['rtcp_sdes_packet',['../structuvgrtp_1_1frame_1_1rtcp__sdes__packet.html',1,'uvgrtp::frame']]],
['rtcp_5fsender_5finfo_12',['rtcp_sender_info',['../structuvgrtp_1_1frame_1_1rtcp__sender__info.html',1,'uvgrtp::frame']]],
['rtcp_5fsender_5freport_13',['rtcp_sender_report',['../structuvgrtp_1_1frame_1_1rtcp__sender__report.html',1,'uvgrtp::frame']]],
['rtcp_5fsli_14',['rtcp_sli',['../structuvgrtp_1_1frame_1_1rtcp__sli.html',1,'uvgrtp::frame']]],
['rtp_5fframe_15',['rtp_frame',['../structuvgrtp_1_1frame_1_1rtp__frame.html',1,'uvgrtp::frame']]]
];

View File

@ -6,76 +6,80 @@ var searchData=
['rcc_5ffps_5fnumerator_3',['RCC_FPS_NUMERATOR',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa51034849ac8a4078f0c3b5198b92ab54',1,'util.hh']]],
['rcc_5fmtu_5fsize_4',['RCC_MTU_SIZE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa7667fb72b42a2c11991b4879619f9f83',1,'util.hh']]],
['rcc_5fpkt_5fmax_5fdelay_5',['RCC_PKT_MAX_DELAY',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa5ac1245e18a420489083adddfa97b135',1,'util.hh']]],
['rcc_5fring_5fbuffer_5fsize_6',['RCC_RING_BUFFER_SIZE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa9be732aa645fc09adde5c84a2d07e0f6',1,'util.hh']]],
['rcc_5fsession_5fbandwidth_7',['RCC_SESSION_BANDWIDTH',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa9a5a95ba2f189fb0350cbc44ba2b95c7',1,'util.hh']]],
['rcc_5fssrc_8',['RCC_SSRC',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fad93dccbcd813299ea0b976d4dea79937',1,'util.hh']]],
['rcc_5fudp_5frcv_5fbuf_5fsize_9',['RCC_UDP_RCV_BUF_SIZE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fac52afca9d1a8c24b1a788bc5b8524663',1,'util.hh']]],
['rcc_5fudp_5fsnd_5fbuf_5fsize_10',['RCC_UDP_SND_BUF_SIZE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fad4eba6c62183db35dd4bd0e09ddd107b',1,'util.hh']]],
['rce_5ffragment_5fgeneric_11',['RCE_FRAGMENT_GENERIC',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa5b0a8dbb22c20ebe8c0711541fb68a79',1,'util.hh']]],
['rce_5fframe_5frate_12',['RCE_FRAME_RATE',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afae175f37ce4fdc6e7d9e01d200b8d9abc',1,'util.hh']]],
['rce_5fh26x_5fdependency_5fenforcement_13',['RCE_H26X_DEPENDENCY_ENFORCEMENT',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa121da451fe2a4008cec78ac4642399b2',1,'util.hh']]],
['rce_5fholepunch_5fkeepalive_14',['RCE_HOLEPUNCH_KEEPALIVE',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa8e66f45819774772a0156647d3788a95',1,'util.hh']]],
['rce_5fno_5fflags_15',['RCE_NO_FLAGS',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4952226c012292c16fe04477f76e5bcb',1,'util.hh']]],
['rce_5fno_5fh26x_5fprepend_5fsc_16',['RCE_NO_H26X_PREPEND_SC',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa877835beb990d36f59f4d9c1d61d2c35',1,'util.hh']]],
['rce_5fpace_5ffragment_5fsending_17',['RCE_PACE_FRAGMENT_SENDING',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa836063a6ef3da262d0805cf1571ab35c',1,'util.hh']]],
['rce_5freceive_5fonly_18',['RCE_RECEIVE_ONLY',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf89817eda89d32c43e18ed0645ac4d73',1,'util.hh']]],
['rce_5frtcp_19',['RCE_RTCP',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afab1342138e5af3f03d6eaf1378382bf3d',1,'util.hh']]],
['rce_5fsend_5fonly_20',['RCE_SEND_ONLY',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa6bb67e1962af60c05c6062fb6f1df374',1,'util.hh']]],
['rce_5fsrtp_21',['RCE_SRTP',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf235cba606675b9c38284ee1a491696b',1,'util.hh']]],
['rce_5fsrtp_5fauthenticate_5frtp_22',['RCE_SRTP_AUTHENTICATE_RTP',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa820625b96886d955bc42e0cbc52cdd1e',1,'util.hh']]],
['rce_5fsrtp_5fkeysize_5f192_23',['RCE_SRTP_KEYSIZE_192',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaedeac11cc80833b61b51ae32f787db73',1,'util.hh']]],
['rce_5fsrtp_5fkeysize_5f256_24',['RCE_SRTP_KEYSIZE_256',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa163744fe7c054b8396a4a07ae82a80c0',1,'util.hh']]],
['rce_5fsrtp_5fkmngmnt_5fuser_25',['RCE_SRTP_KMNGMNT_USER',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4722105b4fd34467a56b8aca8fc03773',1,'util.hh']]],
['rce_5fsrtp_5fkmngmnt_5fzrtp_26',['RCE_SRTP_KMNGMNT_ZRTP',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa40a3deab3893524daf7e057c6dfdaa75',1,'util.hh']]],
['rce_5fsrtp_5fnull_5fcipher_27',['RCE_SRTP_NULL_CIPHER',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4ddec7d182cec161d6b582589bc9baba',1,'util.hh']]],
['rce_5fsrtp_5freplay_5fprotection_28',['RCE_SRTP_REPLAY_PROTECTION',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaddd5fdb170d7cc194e4165d3f9e9a1c1',1,'util.hh']]],
['rce_5fsystem_5fcall_5fclustering_29',['RCE_SYSTEM_CALL_CLUSTERING',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa9e41141dacd18def5ab83e9f671f4263',1,'util.hh']]],
['rce_5fzrtp_5fdiffie_5fhellman_5fmode_30',['RCE_ZRTP_DIFFIE_HELLMAN_MODE',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4fdf2b1f3f934315158b4204e71f9171',1,'util.hh']]],
['rce_5fzrtp_5fmultistream_5fmode_31',['RCE_ZRTP_MULTISTREAM_MODE',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa9127265f0b1a1a45bac8e6fa7270a98a',1,'util.hh']]],
['rtp_5fauth_5ftag_5fmismatch_32',['RTP_AUTH_TAG_MISMATCH',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba6d62ec0a7250a3db7c0f3a13280ecc65',1,'util.hh']]],
['rtp_5fbind_5ferror_33',['RTP_BIND_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba000c0166a0c38686389fc2eba0ddc458',1,'util.hh']]],
['rtp_5fcopy_34',['RTP_COPY',['../util_8hh.html#af03a75996471fc531742cd640c7caf2dab1d5797a23c37a33168046a2ae6aef6a',1,'util.hh']]],
['rtp_5fformat_5fdvi4_5f32_35',['RTP_FORMAT_DVI4_32',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96abf1f20482ba40b0a4161f339978c65c8',1,'util.hh']]],
['rtp_5fformat_5fdvi4_5f441_36',['RTP_FORMAT_DVI4_441',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96aa4e91d147dcc0696bae592e0de3ae295',1,'util.hh']]],
['rtp_5fformat_5fdvi4_5f64_37',['RTP_FORMAT_DVI4_64',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ae0cb5522bf562899f9001adeb669f3ef',1,'util.hh']]],
['rtp_5fformat_5fdvi4_5f882_38',['RTP_FORMAT_DVI4_882',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96abb0d59c256c7ed6b0f78aff67f89ac18',1,'util.hh']]],
['rtp_5fformat_5fg722_39',['RTP_FORMAT_G722',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a2240ad1204186f7c34aacfb27673e692',1,'util.hh']]],
['rtp_5fformat_5fg723_40',['RTP_FORMAT_G723',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96aa97d1880bfcfba08dfef863dc82426d1',1,'util.hh']]],
['rtp_5fformat_5fg726_5f16_41',['RTP_FORMAT_G726_16',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ae118651d66f3af54be3094e7e71336c7',1,'util.hh']]],
['rtp_5fformat_5fg726_5f24_42',['RTP_FORMAT_G726_24',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a8635bcd6f336c19271e7ea20eb9111cf',1,'util.hh']]],
['rtp_5fformat_5fg726_5f32_43',['RTP_FORMAT_G726_32',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a266862cd2289619b5c4de4c259a32785',1,'util.hh']]],
['rtp_5fformat_5fg726_5f40_44',['RTP_FORMAT_G726_40',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96af260843177efa05d95f98d30499db683',1,'util.hh']]],
['rtp_5fformat_5fg728_45',['RTP_FORMAT_G728',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a0f194f13a6b06211c1411caf0a454313',1,'util.hh']]],
['rtp_5fformat_5fg729_46',['RTP_FORMAT_G729',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a78da373e5b8fb9a83e28f5b8b715ca19',1,'util.hh']]],
['rtp_5fformat_5fg729d_47',['RTP_FORMAT_G729D',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96af2981123dc924d80ed50371625927f58',1,'util.hh']]],
['rtp_5fformat_5fg729e_48',['RTP_FORMAT_G729E',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96adba054e696e9d57d316c598618580a63',1,'util.hh']]],
['rtp_5fformat_5fgeneric_49',['RTP_FORMAT_GENERIC',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ad4b1be929d880baa2c2ca85c614f61b9',1,'util.hh']]],
['rtp_5fformat_5fgsm_50',['RTP_FORMAT_GSM',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96aa6d4ba4fb63005fac69fa371fdf18a68',1,'util.hh']]],
['rtp_5fformat_5fgsm_5fefr_51',['RTP_FORMAT_GSM_EFR',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4e41697a659bea307ca6387330d5b9ed',1,'util.hh']]],
['rtp_5fformat_5fh264_52',['RTP_FORMAT_H264',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ad785025a8de9a53f17dc84ec3eed85bd',1,'util.hh']]],
['rtp_5fformat_5fh265_53',['RTP_FORMAT_H265',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4ee0ab7d51bf50f8f5a5cb995ecc407b',1,'util.hh']]],
['rtp_5fformat_5fh266_54',['RTP_FORMAT_H266',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a0e3d0414b29804783324399c8a42c85d',1,'util.hh']]],
['rtp_5fformat_5fl16_5fmono_55',['RTP_FORMAT_L16_MONO',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4c34cf9ef36a41ba3565b0e3f6ea534a',1,'util.hh']]],
['rtp_5fformat_5fl16_5fstereo_56',['RTP_FORMAT_L16_STEREO',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a1de81aee545949cf4609fe3cca3ab1b8',1,'util.hh']]],
['rtp_5fformat_5fl8_57',['RTP_FORMAT_L8',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96abee7466b11e455f2f2362dc39e61c6a8',1,'util.hh']]],
['rtp_5fformat_5flpc_58',['RTP_FORMAT_LPC',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a61c2e69b79b0fd2a8fd0bb24fb359ecd',1,'util.hh']]],
['rtp_5fformat_5fopus_59',['RTP_FORMAT_OPUS',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4e6ef095b4645cdc8aef241aad1f974b',1,'util.hh']]],
['rtp_5fformat_5fpcma_60',['RTP_FORMAT_PCMA',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a518313e0a5342ff1b5b79ead46791b2e',1,'util.hh']]],
['rtp_5fformat_5fpcmu_61',['RTP_FORMAT_PCMU',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a12448ad5b424a2f6d5028a7fd06019b7',1,'util.hh']]],
['rtp_5fformat_5fvdvi_62',['RTP_FORMAT_VDVI',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a91525c8b53f821a6644803967be0e3ed',1,'util.hh']]],
['rtp_5fgeneric_5ferror_63',['RTP_GENERIC_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bafde486de26be732acf472480e3693b19',1,'util.hh']]],
['rtp_5finitialized_64',['RTP_INITIALIZED',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba0759e9bb74c7a15ef09513547ed5cc2a',1,'util.hh']]],
['rtp_5finvalid_5fvalue_65',['RTP_INVALID_VALUE',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba4cdd3c5db294a4f05294b264afbf678b',1,'util.hh']]],
['rtp_5fmemory_5ferror_66',['RTP_MEMORY_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bac54e582250aec15bf2aea189ccbb0348',1,'util.hh']]],
['rtp_5fno_5fflags_67',['RTP_NO_FLAGS',['../util_8hh.html#af03a75996471fc531742cd640c7caf2da084c095dae54bbbc6d9509568c58f9a6',1,'util.hh']]],
['rtp_5fno_5fh26x_5fscl_68',['RTP_NO_H26X_SCL',['../util_8hh.html#af03a75996471fc531742cd640c7caf2dafd917713b62c18d5fa4106e42f3fbde8',1,'util.hh']]],
['rtp_5fnot_5ffound_69',['RTP_NOT_FOUND',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba0a18f9856d2dd5890bb6ec25e4acf631',1,'util.hh']]],
['rtp_5fnot_5finitialized_70',['RTP_NOT_INITIALIZED',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba32d67254c4da35568e7007ec3825f98a',1,'util.hh']]],
['rtp_5fnot_5fsupported_71',['RTP_NOT_SUPPORTED',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba756d5cd372b045f069a493ed2f2cfa22',1,'util.hh']]],
['rtp_5fok_72',['RTP_OK',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba0d701531b2bb1c027f5e5bcc64ed29e1',1,'util.hh']]],
['rtp_5frecv_5ferror_73',['RTP_RECV_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387baa499befa487c22503360adffc590f33b',1,'util.hh']]],
['rtp_5fsend_5ferror_74',['RTP_SEND_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba6c47e86944dbed4d33531236a6e28079',1,'util.hh']]],
['rtp_5fsocket_5ferror_75',['RTP_SOCKET_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bab392a7774c551eed903855248760ad06',1,'util.hh']]],
['rtp_5fssrc_5fcollision_76',['RTP_SSRC_COLLISION',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba80aa5b74c1e252c2ef49e0796d4183d3',1,'util.hh']]],
['rtp_5ftimeout_77',['RTP_TIMEOUT',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bacb40716d1ab0663c0cce56f6d03f0902',1,'util.hh']]]
['rcc_5fpoll_5ftimeout_6',['RCC_POLL_TIMEOUT',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa97b5a85e591372f65274238d0d1a73f8',1,'util.hh']]],
['rcc_5fremote_5fssrc_7',['RCC_REMOTE_SSRC',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa15b4ff7295eae57338f4c3864c5146b7',1,'util.hh']]],
['rcc_5fring_5fbuffer_5fsize_8',['RCC_RING_BUFFER_SIZE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa9be732aa645fc09adde5c84a2d07e0f6',1,'util.hh']]],
['rcc_5fsession_5fbandwidth_9',['RCC_SESSION_BANDWIDTH',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa9a5a95ba2f189fb0350cbc44ba2b95c7',1,'util.hh']]],
['rcc_5fssrc_10',['RCC_SSRC',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fad93dccbcd813299ea0b976d4dea79937',1,'util.hh']]],
['rcc_5fudp_5frcv_5fbuf_5fsize_11',['RCC_UDP_RCV_BUF_SIZE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fac52afca9d1a8c24b1a788bc5b8524663',1,'util.hh']]],
['rcc_5fudp_5fsnd_5fbuf_5fsize_12',['RCC_UDP_SND_BUF_SIZE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fad4eba6c62183db35dd4bd0e09ddd107b',1,'util.hh']]],
['rce_5ffragment_5fgeneric_13',['RCE_FRAGMENT_GENERIC',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa5b0a8dbb22c20ebe8c0711541fb68a79',1,'util.hh']]],
['rce_5fframe_5frate_14',['RCE_FRAME_RATE',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afae175f37ce4fdc6e7d9e01d200b8d9abc',1,'util.hh']]],
['rce_5fh26x_5fdependency_5fenforcement_15',['RCE_H26X_DEPENDENCY_ENFORCEMENT',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa121da451fe2a4008cec78ac4642399b2',1,'util.hh']]],
['rce_5fholepunch_5fkeepalive_16',['RCE_HOLEPUNCH_KEEPALIVE',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa8e66f45819774772a0156647d3788a95',1,'util.hh']]],
['rce_5fno_5fflags_17',['RCE_NO_FLAGS',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4952226c012292c16fe04477f76e5bcb',1,'util.hh']]],
['rce_5fno_5fh26x_5fprepend_5fsc_18',['RCE_NO_H26X_PREPEND_SC',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa877835beb990d36f59f4d9c1d61d2c35',1,'util.hh']]],
['rce_5fpace_5ffragment_5fsending_19',['RCE_PACE_FRAGMENT_SENDING',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa836063a6ef3da262d0805cf1571ab35c',1,'util.hh']]],
['rce_5freceive_5fonly_20',['RCE_RECEIVE_ONLY',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf89817eda89d32c43e18ed0645ac4d73',1,'util.hh']]],
['rce_5frtcp_21',['RCE_RTCP',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afab1342138e5af3f03d6eaf1378382bf3d',1,'util.hh']]],
['rce_5frtcp_5fmux_22',['RCE_RTCP_MUX',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa3dc772b2aab5eae239afae6cef8c68a7',1,'util.hh']]],
['rce_5fsend_5fonly_23',['RCE_SEND_ONLY',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa6bb67e1962af60c05c6062fb6f1df374',1,'util.hh']]],
['rce_5fsrtp_24',['RCE_SRTP',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf235cba606675b9c38284ee1a491696b',1,'util.hh']]],
['rce_5fsrtp_5fauthenticate_5frtp_25',['RCE_SRTP_AUTHENTICATE_RTP',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa820625b96886d955bc42e0cbc52cdd1e',1,'util.hh']]],
['rce_5fsrtp_5fkeysize_5f192_26',['RCE_SRTP_KEYSIZE_192',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaedeac11cc80833b61b51ae32f787db73',1,'util.hh']]],
['rce_5fsrtp_5fkeysize_5f256_27',['RCE_SRTP_KEYSIZE_256',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa163744fe7c054b8396a4a07ae82a80c0',1,'util.hh']]],
['rce_5fsrtp_5fkmngmnt_5fuser_28',['RCE_SRTP_KMNGMNT_USER',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4722105b4fd34467a56b8aca8fc03773',1,'util.hh']]],
['rce_5fsrtp_5fkmngmnt_5fzrtp_29',['RCE_SRTP_KMNGMNT_ZRTP',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa40a3deab3893524daf7e057c6dfdaa75',1,'util.hh']]],
['rce_5fsrtp_5fnull_5fcipher_30',['RCE_SRTP_NULL_CIPHER',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4ddec7d182cec161d6b582589bc9baba',1,'util.hh']]],
['rce_5fsrtp_5freplay_5fprotection_31',['RCE_SRTP_REPLAY_PROTECTION',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaddd5fdb170d7cc194e4165d3f9e9a1c1',1,'util.hh']]],
['rce_5fsystem_5fcall_5fclustering_32',['RCE_SYSTEM_CALL_CLUSTERING',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa9e41141dacd18def5ab83e9f671f4263',1,'util.hh']]],
['rce_5fzrtp_5fdiffie_5fhellman_5fmode_33',['RCE_ZRTP_DIFFIE_HELLMAN_MODE',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4fdf2b1f3f934315158b4204e71f9171',1,'util.hh']]],
['rce_5fzrtp_5fmultistream_5fmode_34',['RCE_ZRTP_MULTISTREAM_MODE',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa9127265f0b1a1a45bac8e6fa7270a98a',1,'util.hh']]],
['rtp_5fauth_5ftag_5fmismatch_35',['RTP_AUTH_TAG_MISMATCH',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba6d62ec0a7250a3db7c0f3a13280ecc65',1,'util.hh']]],
['rtp_5fbind_5ferror_36',['RTP_BIND_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba000c0166a0c38686389fc2eba0ddc458',1,'util.hh']]],
['rtp_5fcopy_37',['RTP_COPY',['../util_8hh.html#af03a75996471fc531742cd640c7caf2dab1d5797a23c37a33168046a2ae6aef6a',1,'util.hh']]],
['rtp_5fformat_5fatlas_38',['RTP_FORMAT_ATLAS',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a81c1df94bbe9478ae6c1ea212c9a20ee',1,'util.hh']]],
['rtp_5fformat_5fdvi4_5f32_39',['RTP_FORMAT_DVI4_32',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96abf1f20482ba40b0a4161f339978c65c8',1,'util.hh']]],
['rtp_5fformat_5fdvi4_5f441_40',['RTP_FORMAT_DVI4_441',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96aa4e91d147dcc0696bae592e0de3ae295',1,'util.hh']]],
['rtp_5fformat_5fdvi4_5f64_41',['RTP_FORMAT_DVI4_64',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ae0cb5522bf562899f9001adeb669f3ef',1,'util.hh']]],
['rtp_5fformat_5fdvi4_5f882_42',['RTP_FORMAT_DVI4_882',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96abb0d59c256c7ed6b0f78aff67f89ac18',1,'util.hh']]],
['rtp_5fformat_5fg722_43',['RTP_FORMAT_G722',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a2240ad1204186f7c34aacfb27673e692',1,'util.hh']]],
['rtp_5fformat_5fg723_44',['RTP_FORMAT_G723',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96aa97d1880bfcfba08dfef863dc82426d1',1,'util.hh']]],
['rtp_5fformat_5fg726_5f16_45',['RTP_FORMAT_G726_16',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ae118651d66f3af54be3094e7e71336c7',1,'util.hh']]],
['rtp_5fformat_5fg726_5f24_46',['RTP_FORMAT_G726_24',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a8635bcd6f336c19271e7ea20eb9111cf',1,'util.hh']]],
['rtp_5fformat_5fg726_5f32_47',['RTP_FORMAT_G726_32',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a266862cd2289619b5c4de4c259a32785',1,'util.hh']]],
['rtp_5fformat_5fg726_5f40_48',['RTP_FORMAT_G726_40',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96af260843177efa05d95f98d30499db683',1,'util.hh']]],
['rtp_5fformat_5fg728_49',['RTP_FORMAT_G728',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a0f194f13a6b06211c1411caf0a454313',1,'util.hh']]],
['rtp_5fformat_5fg729_50',['RTP_FORMAT_G729',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a78da373e5b8fb9a83e28f5b8b715ca19',1,'util.hh']]],
['rtp_5fformat_5fg729d_51',['RTP_FORMAT_G729D',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96af2981123dc924d80ed50371625927f58',1,'util.hh']]],
['rtp_5fformat_5fg729e_52',['RTP_FORMAT_G729E',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96adba054e696e9d57d316c598618580a63',1,'util.hh']]],
['rtp_5fformat_5fgeneric_53',['RTP_FORMAT_GENERIC',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ad4b1be929d880baa2c2ca85c614f61b9',1,'util.hh']]],
['rtp_5fformat_5fgsm_54',['RTP_FORMAT_GSM',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96aa6d4ba4fb63005fac69fa371fdf18a68',1,'util.hh']]],
['rtp_5fformat_5fgsm_5fefr_55',['RTP_FORMAT_GSM_EFR',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4e41697a659bea307ca6387330d5b9ed',1,'util.hh']]],
['rtp_5fformat_5fh264_56',['RTP_FORMAT_H264',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ad785025a8de9a53f17dc84ec3eed85bd',1,'util.hh']]],
['rtp_5fformat_5fh265_57',['RTP_FORMAT_H265',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4ee0ab7d51bf50f8f5a5cb995ecc407b',1,'util.hh']]],
['rtp_5fformat_5fh266_58',['RTP_FORMAT_H266',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a0e3d0414b29804783324399c8a42c85d',1,'util.hh']]],
['rtp_5fformat_5fl16_5fmono_59',['RTP_FORMAT_L16_MONO',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4c34cf9ef36a41ba3565b0e3f6ea534a',1,'util.hh']]],
['rtp_5fformat_5fl16_5fstereo_60',['RTP_FORMAT_L16_STEREO',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a1de81aee545949cf4609fe3cca3ab1b8',1,'util.hh']]],
['rtp_5fformat_5fl8_61',['RTP_FORMAT_L8',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96abee7466b11e455f2f2362dc39e61c6a8',1,'util.hh']]],
['rtp_5fformat_5flpc_62',['RTP_FORMAT_LPC',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a61c2e69b79b0fd2a8fd0bb24fb359ecd',1,'util.hh']]],
['rtp_5fformat_5fopus_63',['RTP_FORMAT_OPUS',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4e6ef095b4645cdc8aef241aad1f974b',1,'util.hh']]],
['rtp_5fformat_5fpcma_64',['RTP_FORMAT_PCMA',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a518313e0a5342ff1b5b79ead46791b2e',1,'util.hh']]],
['rtp_5fformat_5fpcmu_65',['RTP_FORMAT_PCMU',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a12448ad5b424a2f6d5028a7fd06019b7',1,'util.hh']]],
['rtp_5fformat_5fvdvi_66',['RTP_FORMAT_VDVI',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a91525c8b53f821a6644803967be0e3ed',1,'util.hh']]],
['rtp_5fgeneric_5ferror_67',['RTP_GENERIC_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bafde486de26be732acf472480e3693b19',1,'util.hh']]],
['rtp_5finitialized_68',['RTP_INITIALIZED',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba0759e9bb74c7a15ef09513547ed5cc2a',1,'util.hh']]],
['rtp_5finvalid_5fvalue_69',['RTP_INVALID_VALUE',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba4cdd3c5db294a4f05294b264afbf678b',1,'util.hh']]],
['rtp_5fmemory_5ferror_70',['RTP_MEMORY_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bac54e582250aec15bf2aea189ccbb0348',1,'util.hh']]],
['rtp_5fno_5fflags_71',['RTP_NO_FLAGS',['../util_8hh.html#af03a75996471fc531742cd640c7caf2da084c095dae54bbbc6d9509568c58f9a6',1,'util.hh']]],
['rtp_5fno_5fh26x_5fscl_72',['RTP_NO_H26X_SCL',['../util_8hh.html#af03a75996471fc531742cd640c7caf2dafd917713b62c18d5fa4106e42f3fbde8',1,'util.hh']]],
['rtp_5fnot_5ffound_73',['RTP_NOT_FOUND',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba0a18f9856d2dd5890bb6ec25e4acf631',1,'util.hh']]],
['rtp_5fnot_5finitialized_74',['RTP_NOT_INITIALIZED',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba32d67254c4da35568e7007ec3825f98a',1,'util.hh']]],
['rtp_5fnot_5fsupported_75',['RTP_NOT_SUPPORTED',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba756d5cd372b045f069a493ed2f2cfa22',1,'util.hh']]],
['rtp_5fok_76',['RTP_OK',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba0d701531b2bb1c027f5e5bcc64ed29e1',1,'util.hh']]],
['rtp_5frecv_5ferror_77',['RTP_RECV_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387baa499befa487c22503360adffc590f33b',1,'util.hh']]],
['rtp_5fsend_5ferror_78',['RTP_SEND_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba6c47e86944dbed4d33531236a6e28079',1,'util.hh']]],
['rtp_5fsocket_5ferror_79',['RTP_SOCKET_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bab392a7774c551eed903855248760ad06',1,'util.hh']]],
['rtp_5fssrc_5fcollision_80',['RTP_SSRC_COLLISION',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba80aa5b74c1e252c2ef49e0796d4183d3',1,'util.hh']]],
['rtp_5ftimeout_81',['RTP_TIMEOUT',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bacb40716d1ab0663c0cce56f6d03f0902',1,'util.hh']]]
];

View File

@ -2,7 +2,7 @@ var searchData=
[
['configure_5fctx_0',['configure_ctx',['../classuvgrtp_1_1media__stream.html#a2cee4fe3bf423ec317b4a3eacc136238',1,'uvgrtp::media_stream']]],
['context_1',['context',['../classuvgrtp_1_1context.html#a98be18c2848404549cfadf910ba1573a',1,'uvgrtp::context']]],
['create_5fsession_2',['create_session',['../classuvgrtp_1_1context.html#a81b2dc23ebf64d1153410376503eccb4',1,'uvgrtp::context::create_session(std::string address)'],['../classuvgrtp_1_1context.html#a7699c9df53e8e7380d755f374d6fc2ce',1,'uvgrtp::context::create_session(std::string remote_addr, std::string local_addr)']]],
['create_5fsession_2',['create_session',['../classuvgrtp_1_1context.html#ae4417159d9b136b2d696fb7571fc3266',1,'uvgrtp::context::create_session(std::pair&lt; std::string, std::string &gt; addresses)'],['../classuvgrtp_1_1context.html#a81b2dc23ebf64d1153410376503eccb4',1,'uvgrtp::context::create_session(std::string address)']]],
['create_5fstream_3',['create_stream',['../classuvgrtp_1_1session.html#a0b9fb48e95cbfdb76fd9f61e8cafe8e4',1,'uvgrtp::session::create_stream(uint16_t src_port, uint16_t dst_port, rtp_format_t fmt, int rce_flags)'],['../classuvgrtp_1_1session.html#a07a96e787de86d902d5c4d6bcb3dc416',1,'uvgrtp::session::create_stream(uint16_t port, rtp_format_t fmt, int rce_flags)']]],
['crypto_5fenabled_4',['crypto_enabled',['../classuvgrtp_1_1context.html#a0ddad3f0a78b6a4b13f2b8fdd15c9087',1,'uvgrtp::context']]]
];

View File

@ -1,5 +1,6 @@
var searchData=
[
['get_5frtcp_0',['get_rtcp',['../classuvgrtp_1_1media__stream.html#ab339f15d5a852beacd901b7b78e887ea',1,'uvgrtp::media_stream']]],
['get_5fssrc_1',['get_ssrc',['../classuvgrtp_1_1media__stream.html#a8796cb34e0e6c61af8cabd13dd6793b5',1,'uvgrtp::media_stream']]]
['get_5fconfiguration_5fvalue_0',['get_configuration_value',['../classuvgrtp_1_1media__stream.html#acee8dd45e8c6ebbb1af52bb54dd7c40d',1,'uvgrtp::media_stream']]],
['get_5frtcp_1',['get_rtcp',['../classuvgrtp_1_1media__stream.html#ab339f15d5a852beacd901b7b78e887ea',1,'uvgrtp::media_stream']]],
['get_5fssrc_2',['get_ssrc',['../classuvgrtp_1_1media__stream.html#a8796cb34e0e6c61af8cabd13dd6793b5',1,'uvgrtp::media_stream']]]
];

View File

@ -1,4 +1,5 @@
var searchData=
[
['remove_5fall_5fhooks_0',['remove_all_hooks',['../classuvgrtp_1_1rtcp.html#a81198428cc697c0c7cbb2a4191f294d8',1,'uvgrtp::rtcp']]]
['remove_5fall_5fhooks_0',['remove_all_hooks',['../classuvgrtp_1_1rtcp.html#a81198428cc697c0c7cbb2a4191f294d8',1,'uvgrtp::rtcp']]],
['remove_5fsend_5fapp_5fhook_1',['remove_send_app_hook',['../classuvgrtp_1_1rtcp.html#a27adb6b5965dab3918bd02a2e7a2dfd2',1,'uvgrtp::rtcp']]]
];

View File

@ -3,5 +3,6 @@ var searchData=
['send_5fapp_5fpacket_0',['send_app_packet',['../classuvgrtp_1_1rtcp.html#a0c092bca6edda19218a2cb84ed776c34',1,'uvgrtp::rtcp']]],
['send_5fbye_5fpacket_1',['send_bye_packet',['../classuvgrtp_1_1rtcp.html#a2b831698320212e382e3d565e62d31c4',1,'uvgrtp::rtcp']]],
['send_5fsdes_5fpacket_2',['send_sdes_packet',['../classuvgrtp_1_1rtcp.html#a65680d4ba308fc8cb92fd41f0d313c84',1,'uvgrtp::rtcp']]],
['set_5fts_5finfo_3',['set_ts_info',['../classuvgrtp_1_1rtcp.html#a5d0d06f9b4b7779d96d8d60938627316',1,'uvgrtp::rtcp']]]
['set_5fts_5finfo_3',['set_ts_info',['../classuvgrtp_1_1rtcp.html#a5d0d06f9b4b7779d96d8d60938627316',1,'uvgrtp::rtcp']]],
['start_5fzrtp_4',['start_zrtp',['../classuvgrtp_1_1media__stream.html#a9e22ebbe9f903abe0fcae267f98cafeb',1,'uvgrtp::media_stream']]]
];

View File

@ -1,10 +1,10 @@
var indexSectionsWithContent =
{
0: "abcdgilmnprsuv~",
0: "abcdfgilmnprsuv~",
1: "cmrs",
2: "u",
3: "acdgiprs~",
4: "bclnprv",
4: "bcflnprv",
5: "r",
6: "r",
7: "u"

View File

@ -1,4 +1,4 @@
var searchData=
[
['length_0',['length',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a1ed1871349edce32d60c3b1a33049fd0',1,'uvgrtp::frame::rtcp_header']]]
['fmt_0',['fmt',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a0ca5bbeb0619b824a07189220d27e3de',1,'uvgrtp::frame::rtcp_header']]]
];

View File

@ -1,5 +1,4 @@
var searchData=
[
['ntp_5flsw_0',['ntp_lsw',['../structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a7c80f6082983dae0f3a5eea55a7c8ef6',1,'uvgrtp::frame::rtcp_sender_info']]],
['ntp_5fmsw_1',['ntp_msw',['../structuvgrtp_1_1frame_1_1rtcp__sender__info.html#ae22a2bcad293efb1d642762d3eac3143',1,'uvgrtp::frame::rtcp_sender_info']]]
['length_0',['length',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a1ed1871349edce32d60c3b1a33049fd0',1,'uvgrtp::frame::rtcp_header']]]
];

View File

@ -1,7 +1,5 @@
var searchData=
[
['padding_0',['padding',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a4309061d7fae17a13db3d5eea71d6639',1,'uvgrtp::frame::rtcp_header']]],
['payload_5flen_1',['payload_len',['../structuvgrtp_1_1frame_1_1rtp__frame.html#a2d158e0aaf23398a8a3b02c95d06e366',1,'uvgrtp::frame::rtp_frame::payload_len()'],['../structuvgrtp_1_1frame_1_1rtcp__app__packet.html#acefa08e5025c52c0e4a0ae14255f6d01',1,'uvgrtp::frame::rtcp_app_packet::payload_len()']]],
['pkt_5fsubtype_2',['pkt_subtype',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a829dd160ba7f473f3d6c5ff2d2dae5ab',1,'uvgrtp::frame::rtcp_header']]],
['pkt_5ftype_3',['pkt_type',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a08120f0b6526c473c6488803388c7855',1,'uvgrtp::frame::rtcp_header']]]
['ntp_5flsw_0',['ntp_lsw',['../structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a7c80f6082983dae0f3a5eea55a7c8ef6',1,'uvgrtp::frame::rtcp_sender_info']]],
['ntp_5fmsw_1',['ntp_msw',['../structuvgrtp_1_1frame_1_1rtcp__sender__info.html#ae22a2bcad293efb1d642762d3eac3143',1,'uvgrtp::frame::rtcp_sender_info']]]
];

View File

@ -1,4 +1,7 @@
var searchData=
[
['rtp_5fts_0',['rtp_ts',['../structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a2e9c3d1fe1b522a1d4c6fb4bc1fbdbdf',1,'uvgrtp::frame::rtcp_sender_info']]]
['padding_0',['padding',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a4309061d7fae17a13db3d5eea71d6639',1,'uvgrtp::frame::rtcp_header']]],
['payload_5flen_1',['payload_len',['../structuvgrtp_1_1frame_1_1rtp__frame.html#a2d158e0aaf23398a8a3b02c95d06e366',1,'uvgrtp::frame::rtp_frame::payload_len()'],['../structuvgrtp_1_1frame_1_1rtcp__app__packet.html#acefa08e5025c52c0e4a0ae14255f6d01',1,'uvgrtp::frame::rtcp_app_packet::payload_len()'],['../structuvgrtp_1_1frame_1_1rtcp__fb__packet.html#a03976200a7d64f842778f2880361f981',1,'uvgrtp::frame::rtcp_fb_packet::payload_len()']]],
['pkt_5fsubtype_2',['pkt_subtype',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a829dd160ba7f473f3d6c5ff2d2dae5ab',1,'uvgrtp::frame::rtcp_header']]],
['pkt_5ftype_3',['pkt_type',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a08120f0b6526c473c6488803388c7855',1,'uvgrtp::frame::rtcp_header']]]
];

View File

@ -1,4 +1,4 @@
var searchData=
[
['version_0',['version',['../structuvgrtp_1_1frame_1_1rtcp__header.html#a096fae3005310de937f1dab442c3b9d7',1,'uvgrtp::frame::rtcp_header']]]
['rtp_5fts_0',['rtp_ts',['../structuvgrtp_1_1frame_1_1rtcp__sender__info.html#a2e9c3d1fe1b522a1d4c6fb4bc1fbdbdf',1,'uvgrtp::frame::rtcp_sender_info']]]
];

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -91,47 +91,49 @@ $(function() {
<div class="line"><a id="l00012" name="l00012"></a><span class="lineno"> 12</span> </div>
<div class="line"><a id="l00013" name="l00013"></a><span class="lineno"> 13</span> <span class="keyword">class </span>media_stream;</div>
<div class="line"><a id="l00014" name="l00014"></a><span class="lineno"> 14</span> <span class="keyword">class </span>zrtp;</div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> </div>
<div class="line"><a id="l00026" name="l00026"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1session.html"> 26</a></span> <span class="keyword">class </span><a class="code hl_class" href="classuvgrtp_1_1session.html">session</a> {</div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"> 27</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00029" name="l00029"></a><span class="lineno"> 29</span> <a class="code hl_class" href="classuvgrtp_1_1session.html">session</a>(std::string cname, std::string addr);</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> <a class="code hl_class" href="classuvgrtp_1_1session.html">session</a>(std::string cname, std::string remote_addr, std::string local_addr);</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> <a class="code hl_class" href="classuvgrtp_1_1session.html">~session</a>();</div>
<div class="line"><a id="l00033" name="l00033"></a><span class="lineno"> 33</span> </div>
<div class="line"><a id="l00062" name="l00062"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1session.html#a0b9fb48e95cbfdb76fd9f61e8cafe8e4"> 62</a></span> <a class="code hl_class" href="classuvgrtp_1_1media__stream.html">uvgrtp::media_stream</a> *<a class="code hl_function" href="classuvgrtp_1_1session.html#a0b9fb48e95cbfdb76fd9f61e8cafe8e4">create_stream</a>(uint16_t src_port, uint16_t dst_port, rtp_format_t fmt, <span class="keywordtype">int</span> rce_flags);</div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"> 63</span> </div>
<div class="line"><a id="l00087" name="l00087"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1session.html#a07a96e787de86d902d5c4d6bcb3dc416"> 87</a></span> <a class="code hl_class" href="classuvgrtp_1_1media__stream.html">uvgrtp::media_stream</a> *<a class="code hl_function" href="classuvgrtp_1_1session.html#a07a96e787de86d902d5c4d6bcb3dc416">create_stream</a>(uint16_t port, rtp_format_t fmt, <span class="keywordtype">int</span> rce_flags);</div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"> 88</span> </div>
<div class="line"><a id="l00100" name="l00100"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1session.html#a291629a3bfb910463b88d8edb3984149"> 100</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1session.html#a291629a3bfb910463b88d8edb3984149">destroy_stream</a>(<a class="code hl_class" href="classuvgrtp_1_1media__stream.html">uvgrtp::media_stream</a> *stream);</div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"> 101</span> </div>
<div class="line"><a id="l00103" name="l00103"></a><span class="lineno"> 103</span> <span class="comment">/* Get unique key of the session</span></div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span><span class="comment"> * Used by context to index sessions */</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span> std::string&amp; get_key();</div>
<div class="line"><a id="l00107" name="l00107"></a><span class="lineno"> 107</span> </div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="comment">/* Each RTP multimedia session shall have one ZRTP session from which all session are derived */</span></div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> std::shared_ptr&lt;uvgrtp::zrtp&gt; zrtp_;</div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> </div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> std::string generic_address_;</div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> </div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> <span class="comment">/* Each RTP multimedia session is always IP-specific */</span></div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> std::string remote_address_;</div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> </div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> <span class="comment">/* If user so wishes, the session can be bound to a certain interface */</span></div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> std::string local_address_;</div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> </div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> <span class="comment">/* All media streams of this session */</span></div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> std::unordered_map&lt;uint32_t, uvgrtp::media_stream *&gt; streams_;</div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> </div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> std::mutex session_mtx_;</div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> </div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> std::string cname_;</div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> };</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span>}</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> </div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span><span class="keyword">namespace </span>uvg_rtp = uvgrtp;</div>
<div class="ttc" id="aclassuvgrtp_1_1media__stream_html"><div class="ttname"><a href="classuvgrtp_1_1media__stream.html">uvgrtp::media_stream</a></div><div class="ttdoc">The media_stream is an entity which represents one RTP stream.</div><div class="ttdef"><b>Definition:</b> <a href="media__stream_8hh_source.html#l00050">media_stream.hh:50</a></div></div>
<div class="ttc" id="aclassuvgrtp_1_1session_html"><div class="ttname"><a href="classuvgrtp_1_1session.html">uvgrtp::session</a></div><div class="ttdoc">Provides ZRTP synchronization and can be used to create uvgrtp::media_stream objects.</div><div class="ttdef"><b>Definition:</b> <a href="session_8hh_source.html#l00026">session.hh:26</a></div></div>
<div class="line"><a id="l00015" name="l00015"></a><span class="lineno"> 15</span> <span class="keyword">class </span>socketfactory;</div>
<div class="line"><a id="l00016" name="l00016"></a><span class="lineno"> 16</span> </div>
<div class="line"><a id="l00027" name="l00027"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1session.html"> 27</a></span> <span class="keyword">class </span><a class="code hl_class" href="classuvgrtp_1_1session.html">session</a> {</div>
<div class="line"><a id="l00028" name="l00028"></a><span class="lineno"> 28</span> <span class="keyword">public</span>:</div>
<div class="line"><a id="l00030" name="l00030"></a><span class="lineno"> 30</span> <a class="code hl_class" href="classuvgrtp_1_1session.html">session</a>(std::string cname, std::string addr, std::shared_ptr&lt;uvgrtp::socketfactory&gt; sfp);</div>
<div class="line"><a id="l00031" name="l00031"></a><span class="lineno"> 31</span> <a class="code hl_class" href="classuvgrtp_1_1session.html">session</a>(std::string cname, std::string remote_addr, std::string local_addr, std::shared_ptr&lt;uvgrtp::socketfactory&gt; sfp);</div>
<div class="line"><a id="l00032" name="l00032"></a><span class="lineno"> 32</span> <a class="code hl_class" href="classuvgrtp_1_1session.html">~session</a>();</div>
<div class="line"><a id="l00034" name="l00034"></a><span class="lineno"> 34</span> </div>
<div class="line"><a id="l00063" name="l00063"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1session.html#a0b9fb48e95cbfdb76fd9f61e8cafe8e4"> 63</a></span> <a class="code hl_class" href="classuvgrtp_1_1media__stream.html">uvgrtp::media_stream</a> *<a class="code hl_function" href="classuvgrtp_1_1session.html#a0b9fb48e95cbfdb76fd9f61e8cafe8e4">create_stream</a>(uint16_t src_port, uint16_t dst_port, rtp_format_t fmt, <span class="keywordtype">int</span> rce_flags);</div>
<div class="line"><a id="l00064" name="l00064"></a><span class="lineno"> 64</span> </div>
<div class="line"><a id="l00088" name="l00088"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1session.html#a07a96e787de86d902d5c4d6bcb3dc416"> 88</a></span> <a class="code hl_class" href="classuvgrtp_1_1media__stream.html">uvgrtp::media_stream</a> *<a class="code hl_function" href="classuvgrtp_1_1session.html#a07a96e787de86d902d5c4d6bcb3dc416">create_stream</a>(uint16_t port, rtp_format_t fmt, <span class="keywordtype">int</span> rce_flags);</div>
<div class="line"><a id="l00089" name="l00089"></a><span class="lineno"> 89</span> </div>
<div class="line"><a id="l00101" name="l00101"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1session.html#a291629a3bfb910463b88d8edb3984149"> 101</a></span> rtp_error_t <a class="code hl_function" href="classuvgrtp_1_1session.html#a291629a3bfb910463b88d8edb3984149">destroy_stream</a>(<a class="code hl_class" href="classuvgrtp_1_1media__stream.html">uvgrtp::media_stream</a> *stream);</div>
<div class="line"><a id="l00102" name="l00102"></a><span class="lineno"> 102</span> </div>
<div class="line"><a id="l00104" name="l00104"></a><span class="lineno"> 104</span> <span class="comment">/* Get unique key of the session</span></div>
<div class="line"><a id="l00105" name="l00105"></a><span class="lineno"> 105</span><span class="comment"> * Used by context to index sessions */</span></div>
<div class="line"><a id="l00106" name="l00106"></a><span class="lineno"> 106</span> std::string&amp; get_key();</div>
<div class="line"><a id="l00108" name="l00108"></a><span class="lineno"> 108</span> </div>
<div class="line"><a id="l00109" name="l00109"></a><span class="lineno"> 109</span> <span class="keyword">private</span>:</div>
<div class="line"><a id="l00110" name="l00110"></a><span class="lineno"> 110</span> <span class="comment">/* Each RTP multimedia session shall have one ZRTP session from which all session are derived */</span></div>
<div class="line"><a id="l00111" name="l00111"></a><span class="lineno"> 111</span> std::shared_ptr&lt;uvgrtp::zrtp&gt; zrtp_;</div>
<div class="line"><a id="l00112" name="l00112"></a><span class="lineno"> 112</span> </div>
<div class="line"><a id="l00113" name="l00113"></a><span class="lineno"> 113</span> std::string generic_address_;</div>
<div class="line"><a id="l00114" name="l00114"></a><span class="lineno"> 114</span> </div>
<div class="line"><a id="l00115" name="l00115"></a><span class="lineno"> 115</span> <span class="comment">/* Each RTP multimedia session is always IP-specific */</span></div>
<div class="line"><a id="l00116" name="l00116"></a><span class="lineno"> 116</span> std::string remote_address_;</div>
<div class="line"><a id="l00117" name="l00117"></a><span class="lineno"> 117</span> </div>
<div class="line"><a id="l00118" name="l00118"></a><span class="lineno"> 118</span> <span class="comment">/* If user so wishes, the session can be bound to a certain interface */</span></div>
<div class="line"><a id="l00119" name="l00119"></a><span class="lineno"> 119</span> std::string local_address_;</div>
<div class="line"><a id="l00120" name="l00120"></a><span class="lineno"> 120</span> </div>
<div class="line"><a id="l00121" name="l00121"></a><span class="lineno"> 121</span> <span class="comment">/* All media streams of this session */</span></div>
<div class="line"><a id="l00122" name="l00122"></a><span class="lineno"> 122</span> std::unordered_map&lt;uint32_t, uvgrtp::media_stream *&gt; streams_;</div>
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> </div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"> 124</span> std::mutex session_mtx_;</div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"> 125</span> </div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> std::string cname_;</div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> std::shared_ptr&lt;uvgrtp::socketfactory&gt; sf_;</div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> };</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span>}</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> </div>
<div class="line"><a id="l00131" name="l00131"></a><span class="lineno"> 131</span><span class="keyword">namespace </span>uvg_rtp = uvgrtp;</div>
<div class="ttc" id="aclassuvgrtp_1_1media__stream_html"><div class="ttname"><a href="classuvgrtp_1_1media__stream.html">uvgrtp::media_stream</a></div><div class="ttdoc">The media_stream is an entity which represents one RTP stream.</div><div class="ttdef"><b>Definition:</b> <a href="media__stream_8hh_source.html#l00053">media_stream.hh:53</a></div></div>
<div class="ttc" id="aclassuvgrtp_1_1session_html"><div class="ttname"><a href="classuvgrtp_1_1session.html">uvgrtp::session</a></div><div class="ttdoc">Provides ZRTP synchronization and can be used to create uvgrtp::media_stream objects.</div><div class="ttdef"><b>Definition:</b> <a href="session_8hh_source.html#l00027">session.hh:27</a></div></div>
<div class="ttc" id="aclassuvgrtp_1_1session_html_a07a96e787de86d902d5c4d6bcb3dc416"><div class="ttname"><a href="classuvgrtp_1_1session.html#a07a96e787de86d902d5c4d6bcb3dc416">uvgrtp::session::create_stream</a></div><div class="ttdeci">uvgrtp::media_stream * create_stream(uint16_t port, rtp_format_t fmt, int rce_flags)</div><div class="ttdoc">Create a unidirectional media_stream for an RTP session.</div></div>
<div class="ttc" id="aclassuvgrtp_1_1session_html_a0b9fb48e95cbfdb76fd9f61e8cafe8e4"><div class="ttname"><a href="classuvgrtp_1_1session.html#a0b9fb48e95cbfdb76fd9f61e8cafe8e4">uvgrtp::session::create_stream</a></div><div class="ttdeci">uvgrtp::media_stream * create_stream(uint16_t src_port, uint16_t dst_port, rtp_format_t fmt, int rce_flags)</div><div class="ttdoc">Create a uni- or bidirectional media stream.</div></div>
<div class="ttc" id="aclassuvgrtp_1_1session_html_a291629a3bfb910463b88d8edb3984149"><div class="ttname"><a href="classuvgrtp_1_1session.html#a291629a3bfb910463b88d8edb3984149">uvgrtp::session::destroy_stream</a></div><div class="ttdeci">rtp_error_t destroy_stream(uvgrtp::media_stream *stream)</div><div class="ttdoc">Destroy a media stream.</div></div>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -103,7 +103,7 @@ Public Attributes</h2></td></tr>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>See <a href="https://www.rfc-editor.org/rfc/rfc3550#section-6.7" target="_blank">RFC 3550 section 6.7</a> </p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00151">151</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00168">168</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div><h2 class="groupheader">Member Data Documentation</h2>
<a id="afdd188a4c573b7f06d2c9cd409559c51" name="afdd188a4c573b7f06d2c9cd409559c51"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afdd188a4c573b7f06d2c9cd409559c51">&#9670;&#160;</a></span>header</h2>
@ -117,7 +117,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00152">152</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00169">169</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -133,7 +133,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00154">154</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00171">171</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -149,7 +149,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00155">155</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00172">172</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -167,7 +167,7 @@ Public Attributes</h2></td></tr>
<p>Size of the payload in bytes. Added by uvgRTP to help process the payload. </p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00157">157</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00174">174</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -183,7 +183,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00153">153</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00170">170</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -81,11 +81,12 @@ $(function() {
<p>This is the complete list of members for <a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a>, including all inherited members.</p>
<table class="directory">
<tr class="even"><td class="entry"><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html#af121a4cae797537270add50efd7a4e3d">count</a></td><td class="entry"><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a1ed1871349edce32d60c3b1a33049fd0">length</a></td><td class="entry"><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a4309061d7fae17a13db3d5eea71d6639">padding</a></td><td class="entry"><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a829dd160ba7f473f3d6c5ff2d2dae5ab">pkt_subtype</a></td><td class="entry"><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a08120f0b6526c473c6488803388c7855">pkt_type</a></td><td class="entry"><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a096fae3005310de937f1dab442c3b9d7">version</a></td><td class="entry"><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a0ca5bbeb0619b824a07189220d27e3de">fmt</a></td><td class="entry"><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a1ed1871349edce32d60c3b1a33049fd0">length</a></td><td class="entry"><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a4309061d7fae17a13db3d5eea71d6639">padding</a></td><td class="entry"><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a829dd160ba7f473f3d6c5ff2d2dae5ab">pkt_subtype</a></td><td class="entry"><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a></td><td class="entry"></td></tr>
<tr class="odd"><td class="entry"><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a08120f0b6526c473c6488803388c7855">pkt_type</a></td><td class="entry"><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a></td><td class="entry"></td></tr>
<tr class="even"><td class="entry"><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a096fae3005310de937f1dab442c3b9d7">version</a></td><td class="entry"><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html">uvgrtp::frame::rtcp_header</a></td><td class="entry"></td></tr>
</table></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -103,6 +103,9 @@ union {</td></tr>
<tr class="memitem:a1dd88baeebef894d71f3fb98aa1e0274"><td class="memItemLeft" >&#160;&#160;&#160;uint8_t&#160;&#160;&#160;<a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a829dd160ba7f473f3d6c5ff2d2dae5ab">pkt_subtype</a></td></tr>
<tr class="memdesc:a1dd88baeebef894d71f3fb98aa1e0274"><td class="mdescLeft">&#160;</td><td class="mdescRight">Subtype in APP packets. Alternative to count. <a href="structuvgrtp_1_1frame_1_1rtcp__header.html#a829dd160ba7f473f3d6c5ff2d2dae5ab">More...</a><br /></td></tr>
<tr class="separator:a1dd88baeebef894d71f3fb98aa1e0274"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a30686f811f7015d6a0b33e5975c4a1f4"><td class="memItemLeft" >&#160;&#160;&#160;uint8_t&#160;&#160;&#160;<a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a0ca5bbeb0619b824a07189220d27e3de">fmt</a></td></tr>
<tr class="memdesc:a30686f811f7015d6a0b33e5975c4a1f4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Feedback message type (FMT), specified in RFC 5104 section 4.3. Alternative to count and pkt_subtype. <a href="structuvgrtp_1_1frame_1_1rtcp__header.html#a0ca5bbeb0619b824a07189220d27e3de">More...</a><br /></td></tr>
<tr class="separator:a30686f811f7015d6a0b33e5975c4a1f4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4140c844c64980a15620d41aebba6e94"><td class="memItemLeft" valign="top">};&#160;</td><td class="memItemRight" valign="bottom"></td></tr>
<tr class="separator:a4140c844c64980a15620d41aebba6e94"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a08120f0b6526c473c6488803388c7855"><td class="memItemLeft" align="right" valign="top">uint8_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structuvgrtp_1_1frame_1_1rtcp__header.html#a08120f0b6526c473c6488803388c7855">pkt_type</a> = 0</td></tr>
@ -115,7 +118,7 @@ union {</td></tr>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Header of for all RTCP packets defined in <a href="https://www.rfc-editor.org/rfc/rfc3550#section-6" target="_blank">RFC 3550 section 6</a> </p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00074">74</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00089">89</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div><h2 class="groupheader">Member Data Documentation</h2>
<a id="af121a4cae797537270add50efd7a4e3d" name="af121a4cae797537270add50efd7a4e3d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af121a4cae797537270add50efd7a4e3d">&#9670;&#160;</a></span>count</h2>
@ -131,7 +134,25 @@ union {</td></tr>
<p>Source count or report count. Alternative to pkt_subtype. </p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00082">82</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00097">97</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
<a id="a0ca5bbeb0619b824a07189220d27e3de" name="a0ca5bbeb0619b824a07189220d27e3de"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0ca5bbeb0619b824a07189220d27e3de">&#9670;&#160;</a></span>fmt</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">uint8_t uvgrtp::frame::rtcp_header::fmt</td>
</tr>
</table>
</div><div class="memdoc">
<p>Feedback message type (FMT), specified in RFC 5104 section 4.3. Alternative to count and pkt_subtype. </p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00101">101</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -149,7 +170,7 @@ union {</td></tr>
<p>Length of the whole message measured in 32-bit words. </p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00089">89</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00106">106</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -167,7 +188,7 @@ union {</td></tr>
<p>Does this packet contain padding at the end. </p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00079">79</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00094">94</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -185,7 +206,7 @@ union {</td></tr>
<p>Subtype in APP packets. Alternative to count. </p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00084">84</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00099">99</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -203,7 +224,7 @@ union {</td></tr>
<p>Identifies the RTCP packet type. </p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00087">87</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00104">104</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -222,7 +243,7 @@ union {</td></tr>
<p>This field identifies the version of RTP. The version defined by RFC 3550 is two (2). <br />
</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00077">77</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00092">92</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -98,7 +98,7 @@ Public Attributes</h2></td></tr>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>See <a href="https://www.rfc-editor.org/rfc/rfc3550#section-6.4.2" target="_blank">RFC 3550 section 6.4.2</a> </p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00117">117</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00134">134</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div><h2 class="groupheader">Member Data Documentation</h2>
<a id="aaf2084c49df772f0761ec538009351e2" name="aaf2084c49df772f0761ec538009351e2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aaf2084c49df772f0761ec538009351e2">&#9670;&#160;</a></span>header</h2>
@ -112,7 +112,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00118">118</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00135">135</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -128,7 +128,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00120">120</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00137">137</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -144,7 +144,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00119">119</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00136">136</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -106,7 +106,7 @@ Public Attributes</h2></td></tr>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>See <a href="https://www.rfc-editor.org/rfc/rfc3550#section-6.4.1" target="_blank">RFC 3550 section 6.4.1</a> </p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00106">106</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00123">123</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div><h2 class="groupheader">Member Data Documentation</h2>
<a id="a3a87d4c20cd448674824c1212752ca33" name="a3a87d4c20cd448674824c1212752ca33"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3a87d4c20cd448674824c1212752ca33">&#9670;&#160;</a></span>dlsr</h2>
@ -120,7 +120,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00113">113</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00130">130</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -136,7 +136,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00108">108</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00125">125</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -152,7 +152,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00111">111</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00128">128</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -168,7 +168,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00110">110</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00127">127</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -184,7 +184,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00109">109</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00126">126</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -200,7 +200,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00112">112</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00129">129</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -216,7 +216,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00107">107</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00124">124</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -96,7 +96,7 @@ Public Attributes</h2></td></tr>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>See <a href="https://www.rfc-editor.org/rfc/rfc3550#section-6.5" target="_blank">RFC 3550 section 6.5</a> </p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00139">139</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00156">156</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div><h2 class="groupheader">Member Data Documentation</h2>
<a id="a62c3b05b0b10b55461dfc0919ab2657a" name="a62c3b05b0b10b55461dfc0919ab2657a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a62c3b05b0b10b55461dfc0919ab2657a">&#9670;&#160;</a></span>items</h2>
@ -110,7 +110,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00141">141</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00158">158</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -126,7 +126,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00140">140</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00157">157</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -98,7 +98,7 @@ Public Attributes</h2></td></tr>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>See <a href="https://www.rfc-editor.org/rfc/rfc3550#section-6.5" target="_blank">RFC 3550 section 6.5</a> </p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00132">132</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00149">149</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div><h2 class="groupheader">Member Data Documentation</h2>
<a id="a2eb0e4fcf2e4e637a92139a2094a2683" name="a2eb0e4fcf2e4e637a92139a2094a2683"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2eb0e4fcf2e4e637a92139a2094a2683">&#9670;&#160;</a></span>data</h2>
@ -112,7 +112,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00135">135</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00152">152</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -128,7 +128,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00134">134</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00151">151</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -144,7 +144,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00133">133</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00150">150</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -96,7 +96,7 @@ Public Attributes</h2></td></tr>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>See <a href="https://www.rfc-editor.org/rfc/rfc3550#section-6.5" target="_blank">RFC 3550 section 6.5</a> </p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00145">145</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00162">162</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div><h2 class="groupheader">Member Data Documentation</h2>
<a id="a3975fd49c2168817c373f49c2ad3127b" name="a3975fd49c2168817c373f49c2ad3127b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a3975fd49c2168817c373f49c2ad3127b">&#9670;&#160;</a></span>chunks</h2>
@ -110,7 +110,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00147">147</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00164">164</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -126,7 +126,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00146">146</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00163">163</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -106,7 +106,7 @@ Public Attributes</h2></td></tr>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>See <a href="https://www.rfc-editor.org/rfc/rfc3550#section-6.4.1" target="_blank">RFC 3550 section 6.4.1</a> </p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00093">93</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00110">110</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div><h2 class="groupheader">Member Data Documentation</h2>
<a id="a41290b62c283bf5d4c8f3a86ac5975ce" name="a41290b62c283bf5d4c8f3a86ac5975ce"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a41290b62c283bf5d4c8f3a86ac5975ce">&#9670;&#160;</a></span>byte_cnt</h2>
@ -122,7 +122,7 @@ Public Attributes</h2></td></tr>
<p>Also known as octet count. </p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00102">102</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00119">119</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -140,7 +140,7 @@ Public Attributes</h2></td></tr>
<p>NTP timestamp, least significant word. </p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00097">97</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00114">114</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -158,7 +158,7 @@ Public Attributes</h2></td></tr>
<p>NTP timestamp, most significant word. </p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00095">95</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00112">112</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -174,7 +174,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00100">100</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00117">117</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -192,7 +192,7 @@ Public Attributes</h2></td></tr>
<p>RTP timestamp corresponding to this NTP timestamp. </p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00099">99</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00116">116</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -100,7 +100,7 @@ Public Attributes</h2></td></tr>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>See <a href="https://www.rfc-editor.org/rfc/rfc3550#section-6.4.1" target="_blank">RFC 3550 section 6.4.1</a> </p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00124">124</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00141">141</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div><h2 class="groupheader">Member Data Documentation</h2>
<a id="a058ec1f3692236352520c0ac3fe0923e" name="a058ec1f3692236352520c0ac3fe0923e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a058ec1f3692236352520c0ac3fe0923e">&#9670;&#160;</a></span>header</h2>
@ -114,7 +114,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00125">125</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00142">142</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -130,7 +130,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00128">128</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00145">145</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -146,7 +146,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00127">127</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00144">144</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -162,7 +162,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00126">126</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00143">143</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -105,7 +105,7 @@ Public Attributes</h2></td></tr>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>See <a href="https://www.rfc-editor.org/rfc/rfc3550#section-5" target="_blank">RFC 3550 section 5</a> </p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00053">53</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00068">68</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div><h2 class="groupheader">Member Data Documentation</h2>
<a id="a423f8199a03f636f3976cb95e42431e6" name="a423f8199a03f636f3976cb95e42431e6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a423f8199a03f636f3976cb95e42431e6">&#9670;&#160;</a></span>csrc</h2>
@ -119,7 +119,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00055">55</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00070">70</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -135,7 +135,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00056">56</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00071">71</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -151,7 +151,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00054">54</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00069">69</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -167,7 +167,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00058">58</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00073">73</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -183,7 +183,7 @@ Public Attributes</h2></td></tr>
</table>
</div><div class="memdoc">
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00065">65</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00080">80</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>
@ -202,7 +202,7 @@ Public Attributes</h2></td></tr>
<p>Length of the packet payload in bytes added by uvgRTP to help process the frame. </p>
<p>payload_len = total length - header length - padding length (if padded) </p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00064">64</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="frame_8hh_source.html#l00079">79</a> of file <a class="el" href="frame_8hh_source.html">frame.hh</a>.</p>
</div>
</div>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -188,6 +188,8 @@ Enumerations</h2></td></tr>
&#160;&#160;<a class="el" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4ee0ab7d51bf50f8f5a5cb995ecc407b">RTP_FORMAT_H265</a> = 107
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a0e3d0414b29804783324399c8a42c85d">RTP_FORMAT_H266</a> = 108
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a81c1df94bbe9478ae6c1ea212c9a20ee">RTP_FORMAT_ATLAS</a> = 109
<br />
}</td></tr>
<tr class="memdesc:a313c6640ac5ed9384184a94ec57a9a96"><td class="mdescLeft">&#160;</td><td class="mdescRight">These flags are given to <a class="el" href="classuvgrtp_1_1session.html#a0b9fb48e95cbfdb76fd9f61e8cafe8e4" title="Create a uni- or bidirectional media stream.">uvgrtp::session::create_stream()</a> <a href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96">More...</a><br /></td></tr>
@ -244,6 +246,8 @@ Enumerations</h2></td></tr>
&#160;&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afae175f37ce4fdc6e7d9e01d200b8d9abc">RCE_FRAME_RATE</a> = 1 &lt;&lt; 19
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa836063a6ef3da262d0805cf1571ab35c">RCE_PACE_FRAGMENT_SENDING</a> = 1 &lt;&lt; 20
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa3dc772b2aab5eae239afae6cef8c68a7">RCE_RTCP_MUX</a> = 1 &lt;&lt; 21
<br />
}</td></tr>
<tr class="memdesc:a15b2d6364db6065a482c99827f4bd2af"><td class="mdescLeft">&#160;</td><td class="mdescRight">RTP context enable flags. <a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2af">More...</a><br /></td></tr>
@ -269,7 +273,11 @@ Enumerations</h2></td></tr>
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fad93dccbcd813299ea0b976d4dea79937">RCC_SSRC</a> = 10
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa9a5a95ba2f189fb0350cbc44ba2b95c7">RCC_SESSION_BANDWIDTH</a> = 11
&#160;&#160;<a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa15b4ff7295eae57338f4c3864c5146b7">RCC_REMOTE_SSRC</a> = 11
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa9a5a95ba2f189fb0350cbc44ba2b95c7">RCC_SESSION_BANDWIDTH</a> = 12
, <br />
&#160;&#160;<a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa97b5a85e591372f65274238d0d1a73f8">RCC_POLL_TIMEOUT</a> = 13
<br />
}</td></tr>
<tr class="memdesc:aa98d9238629e33567e73af0d239e587f"><td class="mdescLeft">&#160;</td><td class="mdescRight">RTP context configuration flags. <a href="util_8hh.html#aa98d9238629e33567e73af0d239e587f">More...</a><br /></td></tr>
@ -331,17 +339,23 @@ thread_local rtp_error_t&#160;</td><td class="memItemRight" valign="bottom"><b>r
<p>Default is 1</p>
<p>See RCC_FPS_NUMERATOR for more info. </p>
</td></tr>
<tr><td class="fieldname"><a id="aa98d9238629e33567e73af0d239e587fad93dccbcd813299ea0b976d4dea79937" name="aa98d9238629e33567e73af0d239e587fad93dccbcd813299ea0b976d4dea79937"></a>RCC_SSRC&#160;</td><td class="fielddoc"><p>Set the SSRC of the stream manually</p>
<p>By default SSRC is generated randomly </p>
<tr><td class="fieldname"><a id="aa98d9238629e33567e73af0d239e587fad93dccbcd813299ea0b976d4dea79937" name="aa98d9238629e33567e73af0d239e587fad93dccbcd813299ea0b976d4dea79937"></a>RCC_SSRC&#160;</td><td class="fielddoc"><p>Set the local SSRC of the stream manually</p>
<p>By default local SSRC is generated randomly </p>
</td></tr>
<tr><td class="fieldname"><a id="aa98d9238629e33567e73af0d239e587fa15b4ff7295eae57338f4c3864c5146b7" name="aa98d9238629e33567e73af0d239e587fa15b4ff7295eae57338f4c3864c5146b7"></a>RCC_REMOTE_SSRC&#160;</td><td class="fielddoc"><p>Set the remote SSRC of the stream manually</p>
<p>By default remote SSRC is generated randomly </p>
</td></tr>
<tr><td class="fieldname"><a id="aa98d9238629e33567e73af0d239e587fa9a5a95ba2f189fb0350cbc44ba2b95c7" name="aa98d9238629e33567e73af0d239e587fa9a5a95ba2f189fb0350cbc44ba2b95c7"></a>RCC_SESSION_BANDWIDTH&#160;</td><td class="fielddoc"><p>Set bandwidth for the session</p>
<p>uvgRTP chooses this automatically depending on the format of the data being transferred. Use this flag to manually set the session bandwidth in kbps. RTCP reporting interval depends on this session bandwidth. The interval is calculated with the following formula:</p>
<p>RTCP interval = 1000 * 360 / session_bandwidth_kbps</p>
<p>Larger bandwidth values result in shorter RTCP intervals, and vice versa. See RFC 3550 Appendix A.7 for further information on RTCP interval </p>
</td></tr>
<tr><td class="fieldname"><a id="aa98d9238629e33567e73af0d239e587fa97b5a85e591372f65274238d0d1a73f8" name="aa98d9238629e33567e73af0d239e587fa97b5a85e591372f65274238d0d1a73f8"></a>RCC_POLL_TIMEOUT&#160;</td><td class="fielddoc"><p>Set the timeout value for socket polling</p>
<p>Default value is 100 ms. If you are experiencing packet loss when receiving, you can try lowering this value down to 0. This will, however cause increased CPU usage in the receiver, so use with caution. </p>
</td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="util_8hh_source.html#l00291">291</a> of file <a class="el" href="util_8hh_source.html">util.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="util_8hh_source.html#l00281">281</a> of file <a class="el" href="util_8hh_source.html">util.hh</a>.</p>
</div>
</div>
@ -410,9 +424,11 @@ thread_local rtp_error_t&#160;</td><td class="memItemRight" valign="bottom"><b>r
</td></tr>
<tr><td class="fieldname"><a id="a15b2d6364db6065a482c99827f4bd2afa836063a6ef3da262d0805cf1571ab35c" name="a15b2d6364db6065a482c99827f4bd2afa836063a6ef3da262d0805cf1571ab35c"></a>RCE_PACE_FRAGMENT_SENDING&#160;</td><td class="fielddoc"><p>Paces the sending of frame fragments within frame interval (default 1/30 s) </p>
</td></tr>
<tr><td class="fieldname"><a id="a15b2d6364db6065a482c99827f4bd2afa3dc772b2aab5eae239afae6cef8c68a7" name="a15b2d6364db6065a482c99827f4bd2afa3dc772b2aab5eae239afae6cef8c68a7"></a>RCE_RTCP_MUX&#160;</td><td class="fielddoc"><p>Use a single UDP port for both RTP and RTCP transmission (default RTCP port is +1) </p>
</td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="util_8hh_source.html#l00164">164</a> of file <a class="el" href="util_8hh_source.html">util.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="util_8hh_source.html#l00165">165</a> of file <a class="el" href="util_8hh_source.html">util.hh</a>.</p>
</div>
</div>
@ -489,7 +505,7 @@ thread_local rtp_error_t&#160;</td><td class="memItemRight" valign="bottom"><b>r
</td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="util_8hh_source.html#l00136">136</a> of file <a class="el" href="util_8hh_source.html">util.hh</a>.</p>
<p class="definition">Definition at line <a class="el" href="util_8hh_source.html#l00137">137</a> of file <a class="el" href="util_8hh_source.html">util.hh</a>.</p>
</div>
</div>
@ -563,6 +579,8 @@ thread_local rtp_error_t&#160;</td><td class="memItemRight" valign="bottom"><b>r
</td></tr>
<tr><td class="fieldname"><a id="a313c6640ac5ed9384184a94ec57a9a96a0e3d0414b29804783324399c8a42c85d" name="a313c6640ac5ed9384184a94ec57a9a96a0e3d0414b29804783324399c8a42c85d"></a>RTP_FORMAT_H266&#160;</td><td class="fielddoc"><p>H.266/VVC. </p>
</td></tr>
<tr><td class="fieldname"><a id="a313c6640ac5ed9384184a94ec57a9a96a81c1df94bbe9478ae6c1ea212c9a20ee" name="a313c6640ac5ed9384184a94ec57a9a96a81c1df94bbe9478ae6c1ea212c9a20ee"></a>RTP_FORMAT_ATLAS&#160;</td><td class="fielddoc"><p>V3C. </p>
</td></tr>
</table>
<p class="definition">Definition at line <a class="el" href="util_8hh_source.html#l00062">62</a> of file <a class="el" href="util_8hh_source.html">util.hh</a>.</p>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>
@ -186,141 +186,134 @@ $(function() {
<div class="line"><a id="l00123" name="l00123"></a><span class="lineno"> 123</span> <span class="comment">// H263-1998 is unsupported in uvgRTP</span></div>
<div class="line"><a id="l00124" name="l00124"></a><span class="lineno"><a class="line" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ad785025a8de9a53f17dc84ec3eed85bd"> 124</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ad785025a8de9a53f17dc84ec3eed85bd">RTP_FORMAT_H264</a> = 106, </div>
<div class="line"><a id="l00125" name="l00125"></a><span class="lineno"><a class="line" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4ee0ab7d51bf50f8f5a5cb995ecc407b"> 125</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4ee0ab7d51bf50f8f5a5cb995ecc407b">RTP_FORMAT_H265</a> = 107, </div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"> 126</span> <a class="code hl_enumvalue" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a0e3d0414b29804783324399c8a42c85d">RTP_FORMAT_H266</a> = 108 </div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> </div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"><a class="line" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a0e3d0414b29804783324399c8a42c85d"> 128</a></span>} rtp_format_t;</div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"> 129</span> </div>
<div class="line"><a id="l00136" name="l00136"></a><span class="lineno"><a class="line" href="util_8hh.html#af03a75996471fc531742cd640c7caf2d"> 136</a></span><span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code hl_enumeration" href="util_8hh.html#af03a75996471fc531742cd640c7caf2d">RTP_FLAGS</a> {</div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"><a class="line" href="util_8hh.html#af03a75996471fc531742cd640c7caf2da084c095dae54bbbc6d9509568c58f9a6"> 137</a></span> <a class="code hl_enumvalue" href="util_8hh.html#af03a75996471fc531742cd640c7caf2da084c095dae54bbbc6d9509568c58f9a6">RTP_NO_FLAGS</a> = 0, </div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"> 138</span> </div>
<div class="line"><a id="l00140" name="l00140"></a><span class="lineno"> 140</span> </div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> RTP_OBSOLETE = 1,</div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> RTP_SLICE = 1, <span class="comment">// used to do what RTP_NO_H26X_SCL does, may do something different in the future</span></div>
<div class="line"><a id="l00144" name="l00144"></a><span class="lineno"> 144</span><span class="comment"></span> </div>
<div class="line"><a id="l00146" name="l00146"></a><span class="lineno"><a class="line" href="util_8hh.html#af03a75996471fc531742cd640c7caf2dab1d5797a23c37a33168046a2ae6aef6a"> 146</a></span> <a class="code hl_enumvalue" href="util_8hh.html#af03a75996471fc531742cd640c7caf2dab1d5797a23c37a33168046a2ae6aef6a">RTP_COPY</a> = 1 &lt;&lt; 1,</div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"> 147</span> </div>
<div class="line"><a id="l00153" name="l00153"></a><span class="lineno"> 153</span> <a class="code hl_enumvalue" href="util_8hh.html#af03a75996471fc531742cd640c7caf2dafd917713b62c18d5fa4106e42f3fbde8">RTP_NO_H26X_SCL</a> = 1 &lt;&lt; 2</div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> </div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"><a class="line" href="util_8hh.html#af03a75996471fc531742cd640c7caf2dafd917713b62c18d5fa4106e42f3fbde8"> 155</a></span>} rtp_flags_t;</div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"> 156</span> </div>
<div class="line"><a id="l00164" name="l00164"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2af"> 164</a></span><span class="keyword">enum</span> <a class="code hl_enumeration" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2af">RTP_CTX_ENABLE_FLAGS</a> {</div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4952226c012292c16fe04477f76e5bcb"> 165</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4952226c012292c16fe04477f76e5bcb">RCE_NO_FLAGS</a> = 0, </div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"> 166</span> </div>
<div class="line"><a id="l00168" name="l00168"></a><span class="lineno"> 168</span> <span class="comment">// Obsolete flags, they do nothing because the feature has been removed or they are enabled by default</span></div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> RCE_OBSOLETE = 1, </div>
<div class="line"><a id="l00170" name="l00170"></a><span class="lineno"> 170</span> RCE_SYSTEM_CALL_DISPATCHER = 1, </div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> RCE_NO_H26X_INTRA_DELAY = 1, </div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> RCE_NO_H26X_SCL = 1, </div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"> 173</span> RCE_H26X_NO_DEPENDENCY_ENFORCEMENT = 1, </div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"> 174</span> RCE_H26X_PREPEND_SC = 1, </div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> RCE_NO_SYSTEM_CALL_CLUSTERING = 1, </div>
<div class="line"><a id="l00176" name="l00176"></a><span class="lineno"> 176</span> RCE_SRTP_INPLACE_ENCRYPTION = 1, </div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"> 177</span> </div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> <span class="comment">// renamed flags</span></div>
<div class="line"><a id="l00179" name="l00179"></a><span class="lineno"> 179</span> RCE_H26X_DO_NOT_PREPEND_SC = 1 &lt;&lt; 6, </div>
<div class="line"><a id="l00180" name="l00180"></a><span class="lineno"> 180</span> RCE_FRAMERATE = 1 &lt;&lt; 18, </div>
<div class="line"><a id="l00181" name="l00181"></a><span class="lineno"> 181</span> RCE_FRAGMENT_PACING = 1 &lt;&lt; 19, </div>
<div class="line"><a id="l00182" name="l00182"></a><span class="lineno"> 182</span> RCE_ZRTP_MULTISTREAM_NO_DH = 1 &lt;&lt; 17, </div>
<div class="line"><a id="l00184" name="l00184"></a><span class="lineno"> 184</span> </div>
<div class="line"><a id="l00185" name="l00185"></a><span class="lineno"> 185</span> <span class="comment">// These can be used to specify what the address does for one address create session</span></div>
<div class="line"><a id="l00186" name="l00186"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa6bb67e1962af60c05c6062fb6f1df374"> 186</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa6bb67e1962af60c05c6062fb6f1df374">RCE_SEND_ONLY</a> = 1 &lt;&lt; 1, </div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf89817eda89d32c43e18ed0645ac4d73"> 187</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf89817eda89d32c43e18ed0645ac4d73">RCE_RECEIVE_ONLY</a> = 1 &lt;&lt; 2, </div>
<div class="line"><a id="l00126" name="l00126"></a><span class="lineno"><a class="line" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a0e3d0414b29804783324399c8a42c85d"> 126</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a0e3d0414b29804783324399c8a42c85d">RTP_FORMAT_H266</a> = 108, </div>
<div class="line"><a id="l00127" name="l00127"></a><span class="lineno"> 127</span> <a class="code hl_enumvalue" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a81c1df94bbe9478ae6c1ea212c9a20ee">RTP_FORMAT_ATLAS</a> = 109 </div>
<div class="line"><a id="l00128" name="l00128"></a><span class="lineno"> 128</span> </div>
<div class="line"><a id="l00129" name="l00129"></a><span class="lineno"><a class="line" href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a81c1df94bbe9478ae6c1ea212c9a20ee"> 129</a></span>} rtp_format_t;</div>
<div class="line"><a id="l00130" name="l00130"></a><span class="lineno"> 130</span> </div>
<div class="line"><a id="l00137" name="l00137"></a><span class="lineno"><a class="line" href="util_8hh.html#af03a75996471fc531742cd640c7caf2d"> 137</a></span><span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code hl_enumeration" href="util_8hh.html#af03a75996471fc531742cd640c7caf2d">RTP_FLAGS</a> {</div>
<div class="line"><a id="l00138" name="l00138"></a><span class="lineno"><a class="line" href="util_8hh.html#af03a75996471fc531742cd640c7caf2da084c095dae54bbbc6d9509568c58f9a6"> 138</a></span> <a class="code hl_enumvalue" href="util_8hh.html#af03a75996471fc531742cd640c7caf2da084c095dae54bbbc6d9509568c58f9a6">RTP_NO_FLAGS</a> = 0, </div>
<div class="line"><a id="l00139" name="l00139"></a><span class="lineno"> 139</span> </div>
<div class="line"><a id="l00141" name="l00141"></a><span class="lineno"> 141</span> </div>
<div class="line"><a id="l00142" name="l00142"></a><span class="lineno"> 142</span> RTP_OBSOLETE = 1,</div>
<div class="line"><a id="l00143" name="l00143"></a><span class="lineno"> 143</span> RTP_SLICE = 1, <span class="comment">// used to do what RTP_NO_H26X_SCL does, may do something different in the future</span></div>
<div class="line"><a id="l00145" name="l00145"></a><span class="lineno"> 145</span><span class="comment"></span> </div>
<div class="line"><a id="l00147" name="l00147"></a><span class="lineno"><a class="line" href="util_8hh.html#af03a75996471fc531742cd640c7caf2dab1d5797a23c37a33168046a2ae6aef6a"> 147</a></span> <a class="code hl_enumvalue" href="util_8hh.html#af03a75996471fc531742cd640c7caf2dab1d5797a23c37a33168046a2ae6aef6a">RTP_COPY</a> = 1 &lt;&lt; 1,</div>
<div class="line"><a id="l00148" name="l00148"></a><span class="lineno"> 148</span> </div>
<div class="line"><a id="l00154" name="l00154"></a><span class="lineno"> 154</span> <a class="code hl_enumvalue" href="util_8hh.html#af03a75996471fc531742cd640c7caf2dafd917713b62c18d5fa4106e42f3fbde8">RTP_NO_H26X_SCL</a> = 1 &lt;&lt; 2</div>
<div class="line"><a id="l00155" name="l00155"></a><span class="lineno"> 155</span> </div>
<div class="line"><a id="l00156" name="l00156"></a><span class="lineno"><a class="line" href="util_8hh.html#af03a75996471fc531742cd640c7caf2dafd917713b62c18d5fa4106e42f3fbde8"> 156</a></span>} rtp_flags_t;</div>
<div class="line"><a id="l00157" name="l00157"></a><span class="lineno"> 157</span> </div>
<div class="line"><a id="l00165" name="l00165"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2af"> 165</a></span><span class="keyword">enum</span> <a class="code hl_enumeration" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2af">RTP_CTX_ENABLE_FLAGS</a> {</div>
<div class="line"><a id="l00166" name="l00166"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4952226c012292c16fe04477f76e5bcb"> 166</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4952226c012292c16fe04477f76e5bcb">RCE_NO_FLAGS</a> = 0, </div>
<div class="line"><a id="l00167" name="l00167"></a><span class="lineno"> 167</span> </div>
<div class="line"><a id="l00169" name="l00169"></a><span class="lineno"> 169</span> RCE_OBSOLETE = 1, </div>
<div class="line"><a id="l00171" name="l00171"></a><span class="lineno"> 171</span> </div>
<div class="line"><a id="l00172" name="l00172"></a><span class="lineno"> 172</span> <span class="comment">// These can be used to specify what the address does for one address create session</span></div>
<div class="line"><a id="l00173" name="l00173"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa6bb67e1962af60c05c6062fb6f1df374"> 173</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa6bb67e1962af60c05c6062fb6f1df374">RCE_SEND_ONLY</a> = 1 &lt;&lt; 1, </div>
<div class="line"><a id="l00174" name="l00174"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf89817eda89d32c43e18ed0645ac4d73"> 174</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf89817eda89d32c43e18ed0645ac4d73">RCE_RECEIVE_ONLY</a> = 1 &lt;&lt; 2, </div>
<div class="line"><a id="l00175" name="l00175"></a><span class="lineno"> 175</span> </div>
<div class="line"><a id="l00177" name="l00177"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf235cba606675b9c38284ee1a491696b"> 177</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf235cba606675b9c38284ee1a491696b">RCE_SRTP</a> = 1 &lt;&lt; 3,</div>
<div class="line"><a id="l00178" name="l00178"></a><span class="lineno"> 178</span> </div>
<div class="line"><a id="l00187" name="l00187"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa40a3deab3893524daf7e057c6dfdaa75"> 187</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa40a3deab3893524daf7e057c6dfdaa75">RCE_SRTP_KMNGMNT_ZRTP</a> = 1 &lt;&lt; 4,</div>
<div class="line"><a id="l00188" name="l00188"></a><span class="lineno"> 188</span> </div>
<div class="line"><a id="l00190" name="l00190"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf235cba606675b9c38284ee1a491696b"> 190</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf235cba606675b9c38284ee1a491696b">RCE_SRTP</a> = 1 &lt;&lt; 3,</div>
<div class="line"><a id="l00191" name="l00191"></a><span class="lineno"> 191</span> </div>
<div class="line"><a id="l00200" name="l00200"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa40a3deab3893524daf7e057c6dfdaa75"> 200</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa40a3deab3893524daf7e057c6dfdaa75">RCE_SRTP_KMNGMNT_ZRTP</a> = 1 &lt;&lt; 4,</div>
<div class="line"><a id="l00201" name="l00201"></a><span class="lineno"> 201</span> </div>
<div class="line"><a id="l00210" name="l00210"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4722105b4fd34467a56b8aca8fc03773"> 210</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4722105b4fd34467a56b8aca8fc03773">RCE_SRTP_KMNGMNT_USER</a> = 1 &lt;&lt; 5,</div>
<div class="line"><a id="l00211" name="l00211"></a><span class="lineno"> 211</span> </div>
<div class="line"><a id="l00212" name="l00212"></a><span class="lineno"> 212</span> </div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa877835beb990d36f59f4d9c1d61d2c35"> 216</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa877835beb990d36f59f4d9c1d61d2c35">RCE_NO_H26X_PREPEND_SC</a> = 1 &lt;&lt; 6,</div>
<div class="line"><a id="l00217" name="l00217"></a><span class="lineno"> 217</span> </div>
<div class="line"><a id="l00220" name="l00220"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa121da451fe2a4008cec78ac4642399b2"> 220</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa121da451fe2a4008cec78ac4642399b2">RCE_H26X_DEPENDENCY_ENFORCEMENT</a> = 1 &lt;&lt; 7,</div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"> 221</span> </div>
<div class="line"><a id="l00228" name="l00228"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa5b0a8dbb22c20ebe8c0711541fb68a79"> 228</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa5b0a8dbb22c20ebe8c0711541fb68a79">RCE_FRAGMENT_GENERIC</a> = 1 &lt;&lt; 8,</div>
<div class="line"><a id="l00229" name="l00229"></a><span class="lineno"> 229</span> </div>
<div class="line"><a id="l00234" name="l00234"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa9e41141dacd18def5ab83e9f671f4263"> 234</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa9e41141dacd18def5ab83e9f671f4263">RCE_SYSTEM_CALL_CLUSTERING</a> = 1 &lt;&lt; 9,</div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"> 235</span> </div>
<div class="line"><a id="l00237" name="l00237"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4ddec7d182cec161d6b582589bc9baba"> 237</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4ddec7d182cec161d6b582589bc9baba">RCE_SRTP_NULL_CIPHER</a> = 1 &lt;&lt; 10,</div>
<div class="line"><a id="l00238" name="l00238"></a><span class="lineno"> 238</span> </div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa820625b96886d955bc42e0cbc52cdd1e"> 245</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa820625b96886d955bc42e0cbc52cdd1e">RCE_SRTP_AUTHENTICATE_RTP</a> = 1 &lt;&lt; 11,</div>
<div class="line"><a id="l00197" name="l00197"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4722105b4fd34467a56b8aca8fc03773"> 197</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4722105b4fd34467a56b8aca8fc03773">RCE_SRTP_KMNGMNT_USER</a> = 1 &lt;&lt; 5,</div>
<div class="line"><a id="l00198" name="l00198"></a><span class="lineno"> 198</span> </div>
<div class="line"><a id="l00199" name="l00199"></a><span class="lineno"> 199</span> </div>
<div class="line"><a id="l00203" name="l00203"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa877835beb990d36f59f4d9c1d61d2c35"> 203</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa877835beb990d36f59f4d9c1d61d2c35">RCE_NO_H26X_PREPEND_SC</a> = 1 &lt;&lt; 6,</div>
<div class="line"><a id="l00204" name="l00204"></a><span class="lineno"> 204</span> </div>
<div class="line"><a id="l00207" name="l00207"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa121da451fe2a4008cec78ac4642399b2"> 207</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa121da451fe2a4008cec78ac4642399b2">RCE_H26X_DEPENDENCY_ENFORCEMENT</a> = 1 &lt;&lt; 7,</div>
<div class="line"><a id="l00208" name="l00208"></a><span class="lineno"> 208</span> </div>
<div class="line"><a id="l00215" name="l00215"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa5b0a8dbb22c20ebe8c0711541fb68a79"> 215</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa5b0a8dbb22c20ebe8c0711541fb68a79">RCE_FRAGMENT_GENERIC</a> = 1 &lt;&lt; 8,</div>
<div class="line"><a id="l00216" name="l00216"></a><span class="lineno"> 216</span> </div>
<div class="line"><a id="l00221" name="l00221"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa9e41141dacd18def5ab83e9f671f4263"> 221</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa9e41141dacd18def5ab83e9f671f4263">RCE_SYSTEM_CALL_CLUSTERING</a> = 1 &lt;&lt; 9,</div>
<div class="line"><a id="l00222" name="l00222"></a><span class="lineno"> 222</span> </div>
<div class="line"><a id="l00224" name="l00224"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4ddec7d182cec161d6b582589bc9baba"> 224</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4ddec7d182cec161d6b582589bc9baba">RCE_SRTP_NULL_CIPHER</a> = 1 &lt;&lt; 10,</div>
<div class="line"><a id="l00225" name="l00225"></a><span class="lineno"> 225</span> </div>
<div class="line"><a id="l00232" name="l00232"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa820625b96886d955bc42e0cbc52cdd1e"> 232</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa820625b96886d955bc42e0cbc52cdd1e">RCE_SRTP_AUTHENTICATE_RTP</a> = 1 &lt;&lt; 11,</div>
<div class="line"><a id="l00233" name="l00233"></a><span class="lineno"> 233</span> </div>
<div class="line"><a id="l00235" name="l00235"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaddd5fdb170d7cc194e4165d3f9e9a1c1"> 235</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaddd5fdb170d7cc194e4165d3f9e9a1c1">RCE_SRTP_REPLAY_PROTECTION</a> = 1 &lt;&lt; 12,</div>
<div class="line"><a id="l00236" name="l00236"></a><span class="lineno"> 236</span> </div>
<div class="line"><a id="l00239" name="l00239"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afab1342138e5af3f03d6eaf1378382bf3d"> 239</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afab1342138e5af3f03d6eaf1378382bf3d">RCE_RTCP</a> = 1 &lt;&lt; 13,</div>
<div class="line"><a id="l00240" name="l00240"></a><span class="lineno"> 240</span> </div>
<div class="line"><a id="l00245" name="l00245"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa8e66f45819774772a0156647d3788a95"> 245</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa8e66f45819774772a0156647d3788a95">RCE_HOLEPUNCH_KEEPALIVE</a> = 1 &lt;&lt; 14,</div>
<div class="line"><a id="l00246" name="l00246"></a><span class="lineno"> 246</span> </div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaddd5fdb170d7cc194e4165d3f9e9a1c1"> 248</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaddd5fdb170d7cc194e4165d3f9e9a1c1">RCE_SRTP_REPLAY_PROTECTION</a> = 1 &lt;&lt; 12,</div>
<div class="line"><a id="l00248" name="l00248"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaedeac11cc80833b61b51ae32f787db73"> 248</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaedeac11cc80833b61b51ae32f787db73">RCE_SRTP_KEYSIZE_192</a> = 1 &lt;&lt; 15,</div>
<div class="line"><a id="l00249" name="l00249"></a><span class="lineno"> 249</span> </div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afab1342138e5af3f03d6eaf1378382bf3d"> 252</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afab1342138e5af3f03d6eaf1378382bf3d">RCE_RTCP</a> = 1 &lt;&lt; 13,</div>
<div class="line"><a id="l00253" name="l00253"></a><span class="lineno"> 253</span> </div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa8e66f45819774772a0156647d3788a95"> 258</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa8e66f45819774772a0156647d3788a95">RCE_HOLEPUNCH_KEEPALIVE</a> = 1 &lt;&lt; 14,</div>
<div class="line"><a id="l00259" name="l00259"></a><span class="lineno"> 259</span> </div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaedeac11cc80833b61b51ae32f787db73"> 261</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaedeac11cc80833b61b51ae32f787db73">RCE_SRTP_KEYSIZE_192</a> = 1 &lt;&lt; 15,</div>
<div class="line"><a id="l00262" name="l00262"></a><span class="lineno"> 262</span> </div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa163744fe7c054b8396a4a07ae82a80c0"> 264</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa163744fe7c054b8396a4a07ae82a80c0">RCE_SRTP_KEYSIZE_256</a> = 1 &lt;&lt; 16,</div>
<div class="line"><a id="l00265" name="l00265"></a><span class="lineno"> 265</span> </div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4fdf2b1f3f934315158b4204e71f9171"> 267</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4fdf2b1f3f934315158b4204e71f9171">RCE_ZRTP_DIFFIE_HELLMAN_MODE</a> = 1 &lt;&lt; 17,</div>
<div class="line"><a id="l00268" name="l00268"></a><span class="lineno"> 268</span> </div>
<div class="line"><a id="l00270" name="l00270"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa9127265f0b1a1a45bac8e6fa7270a98a"> 270</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa9127265f0b1a1a45bac8e6fa7270a98a">RCE_ZRTP_MULTISTREAM_MODE</a> = 1 &lt;&lt; 18,</div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span> </div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afae175f37ce4fdc6e7d9e01d200b8d9abc"> 273</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afae175f37ce4fdc6e7d9e01d200b8d9abc">RCE_FRAME_RATE</a> = 1 &lt;&lt; 19,</div>
<div class="line"><a id="l00274" name="l00274"></a><span class="lineno"> 274</span> </div>
<div class="line"><a id="l00276" name="l00276"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa836063a6ef3da262d0805cf1571ab35c"> 276</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa836063a6ef3da262d0805cf1571ab35c">RCE_PACE_FRAGMENT_SENDING</a> = 1 &lt;&lt; 20,</div>
<div class="line"><a id="l00277" name="l00277"></a><span class="lineno"> 277</span> </div>
<div class="line"><a id="l00279" name="l00279"></a><span class="lineno"> 279</span> RCE_LAST = 1 &lt;&lt; 21</div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"> 281</span>}; <span class="comment">// maximum is 1 &lt;&lt; 30 for int</span></div>
<div class="line"><a id="l00282" name="l00282"></a><span class="lineno"> 282</span> </div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> </div>
<div class="line"><a id="l00291" name="l00291"></a><span class="lineno"><a class="line" href="util_8hh.html#aa98d9238629e33567e73af0d239e587f"> 291</a></span><span class="keyword">enum</span> <a class="code hl_enumeration" href="util_8hh.html#aa98d9238629e33567e73af0d239e587f">RTP_CTX_CONFIGURATION_FLAGS</a> {</div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> RCC_NO_FLAGS = 0, <span class="comment">// This flag has no purpose</span></div>
<div class="line"><a id="l00294" name="l00294"></a><span class="lineno"> 294</span> RCC_FPS_ENUMERATOR = 8, </div>
<div class="line"><a id="l00296" name="l00296"></a><span class="lineno"> 296</span> </div>
<div class="line"><a id="l00303" name="l00303"></a><span class="lineno"><a class="line" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fac52afca9d1a8c24b1a788bc5b8524663"> 303</a></span> <a class="code hl_enumvalue" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fac52afca9d1a8c24b1a788bc5b8524663">RCC_UDP_RCV_BUF_SIZE</a> = 1,</div>
<div class="line"><a id="l00304" name="l00304"></a><span class="lineno"> 304</span> </div>
<div class="line"><a id="l00311" name="l00311"></a><span class="lineno"><a class="line" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fad4eba6c62183db35dd4bd0e09ddd107b"> 311</a></span> <a class="code hl_enumvalue" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fad4eba6c62183db35dd4bd0e09ddd107b">RCC_UDP_SND_BUF_SIZE</a> = 2,</div>
<div class="line"><a id="l00312" name="l00312"></a><span class="lineno"> 312</span> </div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"><a class="line" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa9be732aa645fc09adde5c84a2d07e0f6"> 319</a></span> <a class="code hl_enumvalue" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa9be732aa645fc09adde5c84a2d07e0f6">RCC_RING_BUFFER_SIZE</a> = 3,</div>
<div class="line"><a id="l00251" name="l00251"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa163744fe7c054b8396a4a07ae82a80c0"> 251</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa163744fe7c054b8396a4a07ae82a80c0">RCE_SRTP_KEYSIZE_256</a> = 1 &lt;&lt; 16,</div>
<div class="line"><a id="l00252" name="l00252"></a><span class="lineno"> 252</span> </div>
<div class="line"><a id="l00254" name="l00254"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4fdf2b1f3f934315158b4204e71f9171"> 254</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4fdf2b1f3f934315158b4204e71f9171">RCE_ZRTP_DIFFIE_HELLMAN_MODE</a> = 1 &lt;&lt; 17,</div>
<div class="line"><a id="l00255" name="l00255"></a><span class="lineno"> 255</span> </div>
<div class="line"><a id="l00257" name="l00257"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa9127265f0b1a1a45bac8e6fa7270a98a"> 257</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa9127265f0b1a1a45bac8e6fa7270a98a">RCE_ZRTP_MULTISTREAM_MODE</a> = 1 &lt;&lt; 18,</div>
<div class="line"><a id="l00258" name="l00258"></a><span class="lineno"> 258</span> </div>
<div class="line"><a id="l00260" name="l00260"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afae175f37ce4fdc6e7d9e01d200b8d9abc"> 260</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afae175f37ce4fdc6e7d9e01d200b8d9abc">RCE_FRAME_RATE</a> = 1 &lt;&lt; 19,</div>
<div class="line"><a id="l00261" name="l00261"></a><span class="lineno"> 261</span> </div>
<div class="line"><a id="l00263" name="l00263"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa836063a6ef3da262d0805cf1571ab35c"> 263</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa836063a6ef3da262d0805cf1571ab35c">RCE_PACE_FRAGMENT_SENDING</a> = 1 &lt;&lt; 20,</div>
<div class="line"><a id="l00264" name="l00264"></a><span class="lineno"> 264</span> </div>
<div class="line"><a id="l00266" name="l00266"></a><span class="lineno"><a class="line" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa3dc772b2aab5eae239afae6cef8c68a7"> 266</a></span> <a class="code hl_enumvalue" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa3dc772b2aab5eae239afae6cef8c68a7">RCE_RTCP_MUX</a> = 1 &lt;&lt; 21,</div>
<div class="line"><a id="l00267" name="l00267"></a><span class="lineno"> 267</span> </div>
<div class="line"><a id="l00269" name="l00269"></a><span class="lineno"> 269</span> RCE_LAST = 1 &lt;&lt; 22</div>
<div class="line"><a id="l00271" name="l00271"></a><span class="lineno"> 271</span>}; <span class="comment">// maximum is 1 &lt;&lt; 30 for int</span></div>
<div class="line"><a id="l00272" name="l00272"></a><span class="lineno"> 272</span> </div>
<div class="line"><a id="l00273" name="l00273"></a><span class="lineno"> 273</span> </div>
<div class="line"><a id="l00281" name="l00281"></a><span class="lineno"><a class="line" href="util_8hh.html#aa98d9238629e33567e73af0d239e587f"> 281</a></span><span class="keyword">enum</span> <a class="code hl_enumeration" href="util_8hh.html#aa98d9238629e33567e73af0d239e587f">RTP_CTX_CONFIGURATION_FLAGS</a> {</div>
<div class="line"><a id="l00283" name="l00283"></a><span class="lineno"> 283</span> RCC_NO_FLAGS = 0, <span class="comment">// This flag has no purpose</span></div>
<div class="line"><a id="l00285" name="l00285"></a><span class="lineno"> 285</span><span class="comment"></span> </div>
<div class="line"><a id="l00292" name="l00292"></a><span class="lineno"><a class="line" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fac52afca9d1a8c24b1a788bc5b8524663"> 292</a></span> <a class="code hl_enumvalue" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fac52afca9d1a8c24b1a788bc5b8524663">RCC_UDP_RCV_BUF_SIZE</a> = 1,</div>
<div class="line"><a id="l00293" name="l00293"></a><span class="lineno"> 293</span> </div>
<div class="line"><a id="l00300" name="l00300"></a><span class="lineno"><a class="line" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fad4eba6c62183db35dd4bd0e09ddd107b"> 300</a></span> <a class="code hl_enumvalue" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fad4eba6c62183db35dd4bd0e09ddd107b">RCC_UDP_SND_BUF_SIZE</a> = 2,</div>
<div class="line"><a id="l00301" name="l00301"></a><span class="lineno"> 301</span> </div>
<div class="line"><a id="l00308" name="l00308"></a><span class="lineno"><a class="line" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa9be732aa645fc09adde5c84a2d07e0f6"> 308</a></span> <a class="code hl_enumvalue" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa9be732aa645fc09adde5c84a2d07e0f6">RCC_RING_BUFFER_SIZE</a> = 3,</div>
<div class="line"><a id="l00309" name="l00309"></a><span class="lineno"> 309</span> </div>
<div class="line"><a id="l00316" name="l00316"></a><span class="lineno"><a class="line" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa5ac1245e18a420489083adddfa97b135"> 316</a></span> <a class="code hl_enumvalue" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa5ac1245e18a420489083adddfa97b135">RCC_PKT_MAX_DELAY</a> = 4,</div>
<div class="line"><a id="l00317" name="l00317"></a><span class="lineno"> 317</span> </div>
<div class="line"><a id="l00319" name="l00319"></a><span class="lineno"><a class="line" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fac758a522806ada30386b262660f30617"> 319</a></span> <a class="code hl_enumvalue" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fac758a522806ada30386b262660f30617">RCC_DYN_PAYLOAD_TYPE</a> = 5,</div>
<div class="line"><a id="l00320" name="l00320"></a><span class="lineno"> 320</span> </div>
<div class="line"><a id="l00327" name="l00327"></a><span class="lineno"><a class="line" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa5ac1245e18a420489083adddfa97b135"> 327</a></span> <a class="code hl_enumvalue" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa5ac1245e18a420489083adddfa97b135">RCC_PKT_MAX_DELAY</a> = 4,</div>
<div class="line"><a id="l00328" name="l00328"></a><span class="lineno"> 328</span> </div>
<div class="line"><a id="l00330" name="l00330"></a><span class="lineno"><a class="line" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fac758a522806ada30386b262660f30617"> 330</a></span> <a class="code hl_enumvalue" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fac758a522806ada30386b262660f30617">RCC_DYN_PAYLOAD_TYPE</a> = 5,</div>
<div class="line"><a id="l00331" name="l00331"></a><span class="lineno"> 331</span> </div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"><a class="line" href="util_8hh.html#aa98d9238629e33567e73af0d239e587faece26b6edb4fc1fe6733b8fec0504b99"> 333</a></span> <a class="code hl_enumvalue" href="util_8hh.html#aa98d9238629e33567e73af0d239e587faece26b6edb4fc1fe6733b8fec0504b99">RCC_CLOCK_RATE</a> = 6,</div>
<div class="line"><a id="l00334" name="l00334"></a><span class="lineno"> 334</span> </div>
<div class="line"><a id="l00343" name="l00343"></a><span class="lineno"><a class="line" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa7667fb72b42a2c11991b4879619f9f83"> 343</a></span> <a class="code hl_enumvalue" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa7667fb72b42a2c11991b4879619f9f83">RCC_MTU_SIZE</a> = 7,</div>
<div class="line"><a id="l00344" name="l00344"></a><span class="lineno"> 344</span> </div>
<div class="line"><a id="l00356" name="l00356"></a><span class="lineno"><a class="line" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa51034849ac8a4078f0c3b5198b92ab54"> 356</a></span> <a class="code hl_enumvalue" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa51034849ac8a4078f0c3b5198b92ab54">RCC_FPS_NUMERATOR</a> = 8,</div>
<div class="line"><a id="l00357" name="l00357"></a><span class="lineno"> 357</span> </div>
<div class="line"><a id="l00364" name="l00364"></a><span class="lineno"><a class="line" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa9e60e576f72eafe6219cd9f0a9615ce9"> 364</a></span> <a class="code hl_enumvalue" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa9e60e576f72eafe6219cd9f0a9615ce9">RCC_FPS_DENOMINATOR</a> = 9,</div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"> 365</span> </div>
<div class="line"><a id="l00370" name="l00370"></a><span class="lineno"><a class="line" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fad93dccbcd813299ea0b976d4dea79937"> 370</a></span> <a class="code hl_enumvalue" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fad93dccbcd813299ea0b976d4dea79937">RCC_SSRC</a> = 10,</div>
<div class="line"><a id="l00371" name="l00371"></a><span class="lineno"> 371</span> </div>
<div class="line"><a id="l00384" name="l00384"></a><span class="lineno"><a class="line" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa9a5a95ba2f189fb0350cbc44ba2b95c7"> 384</a></span> <a class="code hl_enumvalue" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa9a5a95ba2f189fb0350cbc44ba2b95c7">RCC_SESSION_BANDWIDTH</a> = 11,</div>
<div class="line"><a id="l00385" name="l00385"></a><span class="lineno"> 385</span> </div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"> 387</span> RCC_LAST</div>
<div class="line"><a id="l00389" name="l00389"></a><span class="lineno"> 389</span>};</div>
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span> </div>
<div class="line"><a id="l00391" name="l00391"></a><span class="lineno"> 391</span><span class="keyword">extern</span> <span class="keyword">thread_local</span> rtp_error_t rtp_errno;</div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2af"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2af">RTP_CTX_ENABLE_FLAGS</a></div><div class="ttdeci">RTP_CTX_ENABLE_FLAGS</div><div class="ttdoc">RTP context enable flags.</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00164">util.hh:164</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa121da451fe2a4008cec78ac4642399b2"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa121da451fe2a4008cec78ac4642399b2">RCE_H26X_DEPENDENCY_ENFORCEMENT</a></div><div class="ttdeci">@ RCE_H26X_DEPENDENCY_ENFORCEMENT</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00220">util.hh:220</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa163744fe7c054b8396a4a07ae82a80c0"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa163744fe7c054b8396a4a07ae82a80c0">RCE_SRTP_KEYSIZE_256</a></div><div class="ttdeci">@ RCE_SRTP_KEYSIZE_256</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00264">util.hh:264</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa40a3deab3893524daf7e057c6dfdaa75"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa40a3deab3893524daf7e057c6dfdaa75">RCE_SRTP_KMNGMNT_ZRTP</a></div><div class="ttdeci">@ RCE_SRTP_KMNGMNT_ZRTP</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00200">util.hh:200</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa4722105b4fd34467a56b8aca8fc03773"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4722105b4fd34467a56b8aca8fc03773">RCE_SRTP_KMNGMNT_USER</a></div><div class="ttdeci">@ RCE_SRTP_KMNGMNT_USER</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00210">util.hh:210</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa4952226c012292c16fe04477f76e5bcb"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4952226c012292c16fe04477f76e5bcb">RCE_NO_FLAGS</a></div><div class="ttdeci">@ RCE_NO_FLAGS</div><div class="ttdoc">Use this if you have no RCE flags.</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00165">util.hh:165</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa4ddec7d182cec161d6b582589bc9baba"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4ddec7d182cec161d6b582589bc9baba">RCE_SRTP_NULL_CIPHER</a></div><div class="ttdeci">@ RCE_SRTP_NULL_CIPHER</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00237">util.hh:237</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa4fdf2b1f3f934315158b4204e71f9171"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4fdf2b1f3f934315158b4204e71f9171">RCE_ZRTP_DIFFIE_HELLMAN_MODE</a></div><div class="ttdeci">@ RCE_ZRTP_DIFFIE_HELLMAN_MODE</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00267">util.hh:267</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa5b0a8dbb22c20ebe8c0711541fb68a79"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa5b0a8dbb22c20ebe8c0711541fb68a79">RCE_FRAGMENT_GENERIC</a></div><div class="ttdeci">@ RCE_FRAGMENT_GENERIC</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00228">util.hh:228</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa6bb67e1962af60c05c6062fb6f1df374"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa6bb67e1962af60c05c6062fb6f1df374">RCE_SEND_ONLY</a></div><div class="ttdeci">@ RCE_SEND_ONLY</div><div class="ttdoc">address/port interpreted as remote, no binding to local socket</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00186">util.hh:186</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa820625b96886d955bc42e0cbc52cdd1e"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa820625b96886d955bc42e0cbc52cdd1e">RCE_SRTP_AUTHENTICATE_RTP</a></div><div class="ttdeci">@ RCE_SRTP_AUTHENTICATE_RTP</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00245">util.hh:245</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa836063a6ef3da262d0805cf1571ab35c"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa836063a6ef3da262d0805cf1571ab35c">RCE_PACE_FRAGMENT_SENDING</a></div><div class="ttdeci">@ RCE_PACE_FRAGMENT_SENDING</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00276">util.hh:276</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa877835beb990d36f59f4d9c1d61d2c35"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa877835beb990d36f59f4d9c1d61d2c35">RCE_NO_H26X_PREPEND_SC</a></div><div class="ttdeci">@ RCE_NO_H26X_PREPEND_SC</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00216">util.hh:216</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa8e66f45819774772a0156647d3788a95"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa8e66f45819774772a0156647d3788a95">RCE_HOLEPUNCH_KEEPALIVE</a></div><div class="ttdeci">@ RCE_HOLEPUNCH_KEEPALIVE</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00258">util.hh:258</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa9127265f0b1a1a45bac8e6fa7270a98a"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa9127265f0b1a1a45bac8e6fa7270a98a">RCE_ZRTP_MULTISTREAM_MODE</a></div><div class="ttdeci">@ RCE_ZRTP_MULTISTREAM_MODE</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00270">util.hh:270</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa9e41141dacd18def5ab83e9f671f4263"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa9e41141dacd18def5ab83e9f671f4263">RCE_SYSTEM_CALL_CLUSTERING</a></div><div class="ttdeci">@ RCE_SYSTEM_CALL_CLUSTERING</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00234">util.hh:234</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afab1342138e5af3f03d6eaf1378382bf3d"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afab1342138e5af3f03d6eaf1378382bf3d">RCE_RTCP</a></div><div class="ttdeci">@ RCE_RTCP</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00252">util.hh:252</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afaddd5fdb170d7cc194e4165d3f9e9a1c1"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaddd5fdb170d7cc194e4165d3f9e9a1c1">RCE_SRTP_REPLAY_PROTECTION</a></div><div class="ttdeci">@ RCE_SRTP_REPLAY_PROTECTION</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00248">util.hh:248</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afae175f37ce4fdc6e7d9e01d200b8d9abc"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afae175f37ce4fdc6e7d9e01d200b8d9abc">RCE_FRAME_RATE</a></div><div class="ttdeci">@ RCE_FRAME_RATE</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00273">util.hh:273</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afaedeac11cc80833b61b51ae32f787db73"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaedeac11cc80833b61b51ae32f787db73">RCE_SRTP_KEYSIZE_192</a></div><div class="ttdeci">@ RCE_SRTP_KEYSIZE_192</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00261">util.hh:261</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afaf235cba606675b9c38284ee1a491696b"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf235cba606675b9c38284ee1a491696b">RCE_SRTP</a></div><div class="ttdeci">@ RCE_SRTP</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00190">util.hh:190</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afaf89817eda89d32c43e18ed0645ac4d73"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf89817eda89d32c43e18ed0645ac4d73">RCE_RECEIVE_ONLY</a></div><div class="ttdeci">@ RCE_RECEIVE_ONLY</div><div class="ttdoc">address/port interpreted as local, sending not possible</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00187">util.hh:187</a></div></div>
<div class="line"><a id="l00322" name="l00322"></a><span class="lineno"><a class="line" href="util_8hh.html#aa98d9238629e33567e73af0d239e587faece26b6edb4fc1fe6733b8fec0504b99"> 322</a></span> <a class="code hl_enumvalue" href="util_8hh.html#aa98d9238629e33567e73af0d239e587faece26b6edb4fc1fe6733b8fec0504b99">RCC_CLOCK_RATE</a> = 6,</div>
<div class="line"><a id="l00323" name="l00323"></a><span class="lineno"> 323</span> </div>
<div class="line"><a id="l00332" name="l00332"></a><span class="lineno"><a class="line" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa7667fb72b42a2c11991b4879619f9f83"> 332</a></span> <a class="code hl_enumvalue" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa7667fb72b42a2c11991b4879619f9f83">RCC_MTU_SIZE</a> = 7,</div>
<div class="line"><a id="l00333" name="l00333"></a><span class="lineno"> 333</span> </div>
<div class="line"><a id="l00345" name="l00345"></a><span class="lineno"><a class="line" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa51034849ac8a4078f0c3b5198b92ab54"> 345</a></span> <a class="code hl_enumvalue" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa51034849ac8a4078f0c3b5198b92ab54">RCC_FPS_NUMERATOR</a> = 8,</div>
<div class="line"><a id="l00346" name="l00346"></a><span class="lineno"> 346</span> </div>
<div class="line"><a id="l00353" name="l00353"></a><span class="lineno"><a class="line" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa9e60e576f72eafe6219cd9f0a9615ce9"> 353</a></span> <a class="code hl_enumvalue" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa9e60e576f72eafe6219cd9f0a9615ce9">RCC_FPS_DENOMINATOR</a> = 9,</div>
<div class="line"><a id="l00354" name="l00354"></a><span class="lineno"> 354</span> </div>
<div class="line"><a id="l00359" name="l00359"></a><span class="lineno"><a class="line" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fad93dccbcd813299ea0b976d4dea79937"> 359</a></span> <a class="code hl_enumvalue" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fad93dccbcd813299ea0b976d4dea79937">RCC_SSRC</a> = 10,</div>
<div class="line"><a id="l00360" name="l00360"></a><span class="lineno"> 360</span> </div>
<div class="line"><a id="l00365" name="l00365"></a><span class="lineno"><a class="line" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa15b4ff7295eae57338f4c3864c5146b7"> 365</a></span> <a class="code hl_enumvalue" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa15b4ff7295eae57338f4c3864c5146b7">RCC_REMOTE_SSRC</a> = 11,</div>
<div class="line"><a id="l00366" name="l00366"></a><span class="lineno"> 366</span> </div>
<div class="line"><a id="l00379" name="l00379"></a><span class="lineno"><a class="line" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa9a5a95ba2f189fb0350cbc44ba2b95c7"> 379</a></span> <a class="code hl_enumvalue" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa9a5a95ba2f189fb0350cbc44ba2b95c7">RCC_SESSION_BANDWIDTH</a> = 12,</div>
<div class="line"><a id="l00380" name="l00380"></a><span class="lineno"> 380</span> </div>
<div class="line"><a id="l00387" name="l00387"></a><span class="lineno"><a class="line" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa97b5a85e591372f65274238d0d1a73f8"> 387</a></span> <a class="code hl_enumvalue" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa97b5a85e591372f65274238d0d1a73f8">RCC_POLL_TIMEOUT</a> = 13,</div>
<div class="line"><a id="l00388" name="l00388"></a><span class="lineno"> 388</span> </div>
<div class="line"><a id="l00390" name="l00390"></a><span class="lineno"> 390</span> RCC_LAST</div>
<div class="line"><a id="l00392" name="l00392"></a><span class="lineno"> 392</span>};</div>
<div class="line"><a id="l00393" name="l00393"></a><span class="lineno"> 393</span> </div>
<div class="line"><a id="l00394" name="l00394"></a><span class="lineno"> 394</span><span class="keyword">extern</span> <span class="keyword">thread_local</span> rtp_error_t rtp_errno;</div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2af"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2af">RTP_CTX_ENABLE_FLAGS</a></div><div class="ttdeci">RTP_CTX_ENABLE_FLAGS</div><div class="ttdoc">RTP context enable flags.</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00165">util.hh:165</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa121da451fe2a4008cec78ac4642399b2"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa121da451fe2a4008cec78ac4642399b2">RCE_H26X_DEPENDENCY_ENFORCEMENT</a></div><div class="ttdeci">@ RCE_H26X_DEPENDENCY_ENFORCEMENT</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00207">util.hh:207</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa163744fe7c054b8396a4a07ae82a80c0"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa163744fe7c054b8396a4a07ae82a80c0">RCE_SRTP_KEYSIZE_256</a></div><div class="ttdeci">@ RCE_SRTP_KEYSIZE_256</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00251">util.hh:251</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa3dc772b2aab5eae239afae6cef8c68a7"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa3dc772b2aab5eae239afae6cef8c68a7">RCE_RTCP_MUX</a></div><div class="ttdeci">@ RCE_RTCP_MUX</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00266">util.hh:266</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa40a3deab3893524daf7e057c6dfdaa75"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa40a3deab3893524daf7e057c6dfdaa75">RCE_SRTP_KMNGMNT_ZRTP</a></div><div class="ttdeci">@ RCE_SRTP_KMNGMNT_ZRTP</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00187">util.hh:187</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa4722105b4fd34467a56b8aca8fc03773"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4722105b4fd34467a56b8aca8fc03773">RCE_SRTP_KMNGMNT_USER</a></div><div class="ttdeci">@ RCE_SRTP_KMNGMNT_USER</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00197">util.hh:197</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa4952226c012292c16fe04477f76e5bcb"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4952226c012292c16fe04477f76e5bcb">RCE_NO_FLAGS</a></div><div class="ttdeci">@ RCE_NO_FLAGS</div><div class="ttdoc">Use this if you have no RCE flags.</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00166">util.hh:166</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa4ddec7d182cec161d6b582589bc9baba"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4ddec7d182cec161d6b582589bc9baba">RCE_SRTP_NULL_CIPHER</a></div><div class="ttdeci">@ RCE_SRTP_NULL_CIPHER</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00224">util.hh:224</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa4fdf2b1f3f934315158b4204e71f9171"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4fdf2b1f3f934315158b4204e71f9171">RCE_ZRTP_DIFFIE_HELLMAN_MODE</a></div><div class="ttdeci">@ RCE_ZRTP_DIFFIE_HELLMAN_MODE</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00254">util.hh:254</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa5b0a8dbb22c20ebe8c0711541fb68a79"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa5b0a8dbb22c20ebe8c0711541fb68a79">RCE_FRAGMENT_GENERIC</a></div><div class="ttdeci">@ RCE_FRAGMENT_GENERIC</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00215">util.hh:215</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa6bb67e1962af60c05c6062fb6f1df374"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa6bb67e1962af60c05c6062fb6f1df374">RCE_SEND_ONLY</a></div><div class="ttdeci">@ RCE_SEND_ONLY</div><div class="ttdoc">address/port interpreted as remote, no binding to local socket</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00173">util.hh:173</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa820625b96886d955bc42e0cbc52cdd1e"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa820625b96886d955bc42e0cbc52cdd1e">RCE_SRTP_AUTHENTICATE_RTP</a></div><div class="ttdeci">@ RCE_SRTP_AUTHENTICATE_RTP</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00232">util.hh:232</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa836063a6ef3da262d0805cf1571ab35c"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa836063a6ef3da262d0805cf1571ab35c">RCE_PACE_FRAGMENT_SENDING</a></div><div class="ttdeci">@ RCE_PACE_FRAGMENT_SENDING</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00263">util.hh:263</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa877835beb990d36f59f4d9c1d61d2c35"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa877835beb990d36f59f4d9c1d61d2c35">RCE_NO_H26X_PREPEND_SC</a></div><div class="ttdeci">@ RCE_NO_H26X_PREPEND_SC</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00203">util.hh:203</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa8e66f45819774772a0156647d3788a95"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa8e66f45819774772a0156647d3788a95">RCE_HOLEPUNCH_KEEPALIVE</a></div><div class="ttdeci">@ RCE_HOLEPUNCH_KEEPALIVE</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00245">util.hh:245</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa9127265f0b1a1a45bac8e6fa7270a98a"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa9127265f0b1a1a45bac8e6fa7270a98a">RCE_ZRTP_MULTISTREAM_MODE</a></div><div class="ttdeci">@ RCE_ZRTP_MULTISTREAM_MODE</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00257">util.hh:257</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afa9e41141dacd18def5ab83e9f671f4263"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa9e41141dacd18def5ab83e9f671f4263">RCE_SYSTEM_CALL_CLUSTERING</a></div><div class="ttdeci">@ RCE_SYSTEM_CALL_CLUSTERING</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00221">util.hh:221</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afab1342138e5af3f03d6eaf1378382bf3d"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afab1342138e5af3f03d6eaf1378382bf3d">RCE_RTCP</a></div><div class="ttdeci">@ RCE_RTCP</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00239">util.hh:239</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afaddd5fdb170d7cc194e4165d3f9e9a1c1"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaddd5fdb170d7cc194e4165d3f9e9a1c1">RCE_SRTP_REPLAY_PROTECTION</a></div><div class="ttdeci">@ RCE_SRTP_REPLAY_PROTECTION</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00235">util.hh:235</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afae175f37ce4fdc6e7d9e01d200b8d9abc"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afae175f37ce4fdc6e7d9e01d200b8d9abc">RCE_FRAME_RATE</a></div><div class="ttdeci">@ RCE_FRAME_RATE</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00260">util.hh:260</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afaedeac11cc80833b61b51ae32f787db73"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaedeac11cc80833b61b51ae32f787db73">RCE_SRTP_KEYSIZE_192</a></div><div class="ttdeci">@ RCE_SRTP_KEYSIZE_192</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00248">util.hh:248</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afaf235cba606675b9c38284ee1a491696b"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf235cba606675b9c38284ee1a491696b">RCE_SRTP</a></div><div class="ttdeci">@ RCE_SRTP</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00177">util.hh:177</a></div></div>
<div class="ttc" id="autil_8hh_html_a15b2d6364db6065a482c99827f4bd2afaf89817eda89d32c43e18ed0645ac4d73"><div class="ttname"><a href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf89817eda89d32c43e18ed0645ac4d73">RCE_RECEIVE_ONLY</a></div><div class="ttdeci">@ RCE_RECEIVE_ONLY</div><div class="ttdoc">address/port interpreted as local, sending not possible</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00174">util.hh:174</a></div></div>
<div class="ttc" id="autil_8hh_html_a313c6640ac5ed9384184a94ec57a9a96"><div class="ttname"><a href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96">RTP_FORMAT</a></div><div class="ttdeci">RTP_FORMAT</div><div class="ttdoc">These flags are given to uvgrtp::session::create_stream()</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00062">util.hh:62</a></div></div>
<div class="ttc" id="autil_8hh_html_a313c6640ac5ed9384184a94ec57a9a96a0e3d0414b29804783324399c8a42c85d"><div class="ttname"><a href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a0e3d0414b29804783324399c8a42c85d">RTP_FORMAT_H266</a></div><div class="ttdeci">@ RTP_FORMAT_H266</div><div class="ttdoc">H.266/VVC.</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00128">util.hh:126</a></div></div>
<div class="ttc" id="autil_8hh_html_a313c6640ac5ed9384184a94ec57a9a96a0e3d0414b29804783324399c8a42c85d"><div class="ttname"><a href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a0e3d0414b29804783324399c8a42c85d">RTP_FORMAT_H266</a></div><div class="ttdeci">@ RTP_FORMAT_H266</div><div class="ttdoc">H.266/VVC.</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00126">util.hh:126</a></div></div>
<div class="ttc" id="autil_8hh_html_a313c6640ac5ed9384184a94ec57a9a96a0f194f13a6b06211c1411caf0a454313"><div class="ttname"><a href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a0f194f13a6b06211c1411caf0a454313">RTP_FORMAT_G728</a></div><div class="ttdeci">@ RTP_FORMAT_G728</div><div class="ttdoc">G728.</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00082">util.hh:82</a></div></div>
<div class="ttc" id="autil_8hh_html_a313c6640ac5ed9384184a94ec57a9a96a12448ad5b424a2f6d5028a7fd06019b7"><div class="ttname"><a href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a12448ad5b424a2f6d5028a7fd06019b7">RTP_FORMAT_PCMU</a></div><div class="ttdeci">@ RTP_FORMAT_PCMU</div><div class="ttdoc">PCMU, ITU-T G.711.</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00067">util.hh:67</a></div></div>
<div class="ttc" id="autil_8hh_html_a313c6640ac5ed9384184a94ec57a9a96a1de81aee545949cf4609fe3cca3ab1b8"><div class="ttname"><a href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a1de81aee545949cf4609fe3cca3ab1b8">RTP_FORMAT_L16_STEREO</a></div><div class="ttdeci">@ RTP_FORMAT_L16_STEREO</div><div class="ttdoc">L16 Stereo.</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00077">util.hh:77</a></div></div>
@ -333,6 +326,7 @@ $(function() {
<div class="ttc" id="autil_8hh_html_a313c6640ac5ed9384184a94ec57a9a96a518313e0a5342ff1b5b79ead46791b2e"><div class="ttname"><a href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a518313e0a5342ff1b5b79ead46791b2e">RTP_FORMAT_PCMA</a></div><div class="ttdeci">@ RTP_FORMAT_PCMA</div><div class="ttdoc">PCMA.</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00075">util.hh:75</a></div></div>
<div class="ttc" id="autil_8hh_html_a313c6640ac5ed9384184a94ec57a9a96a61c2e69b79b0fd2a8fd0bb24fb359ecd"><div class="ttname"><a href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a61c2e69b79b0fd2a8fd0bb24fb359ecd">RTP_FORMAT_LPC</a></div><div class="ttdeci">@ RTP_FORMAT_LPC</div><div class="ttdoc">LPC.</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00074">util.hh:74</a></div></div>
<div class="ttc" id="autil_8hh_html_a313c6640ac5ed9384184a94ec57a9a96a78da373e5b8fb9a83e28f5b8b715ca19"><div class="ttname"><a href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a78da373e5b8fb9a83e28f5b8b715ca19">RTP_FORMAT_G729</a></div><div class="ttdeci">@ RTP_FORMAT_G729</div><div class="ttdoc">G729, 8 kbit/s.</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00085">util.hh:85</a></div></div>
<div class="ttc" id="autil_8hh_html_a313c6640ac5ed9384184a94ec57a9a96a81c1df94bbe9478ae6c1ea212c9a20ee"><div class="ttname"><a href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a81c1df94bbe9478ae6c1ea212c9a20ee">RTP_FORMAT_ATLAS</a></div><div class="ttdeci">@ RTP_FORMAT_ATLAS</div><div class="ttdoc">V3C.</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00129">util.hh:127</a></div></div>
<div class="ttc" id="autil_8hh_html_a313c6640ac5ed9384184a94ec57a9a96a8635bcd6f336c19271e7ea20eb9111cf"><div class="ttname"><a href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a8635bcd6f336c19271e7ea20eb9111cf">RTP_FORMAT_G726_24</a></div><div class="ttdeci">@ RTP_FORMAT_G726_24</div><div class="ttdoc">G726, 24 kbit/s.</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00114">util.hh:114</a></div></div>
<div class="ttc" id="autil_8hh_html_a313c6640ac5ed9384184a94ec57a9a96a91525c8b53f821a6644803967be0e3ed"><div class="ttname"><a href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a91525c8b53f821a6644803967be0e3ed">RTP_FORMAT_VDVI</a></div><div class="ttdeci">@ RTP_FORMAT_VDVI</div><div class="ttdoc">VDVI, variable-rate DVI4.</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00121">util.hh:121</a></div></div>
<div class="ttc" id="autil_8hh_html_a313c6640ac5ed9384184a94ec57a9a96aa4e91d147dcc0696bae592e0de3ae295"><div class="ttname"><a href="util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96aa4e91d147dcc0696bae592e0de3ae295">RTP_FORMAT_DVI4_441</a></div><div class="ttdeci">@ RTP_FORMAT_DVI4_441</div><div class="ttdoc">DVI 44.1 kbit/s.</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00083">util.hh:83</a></div></div>
@ -364,22 +358,24 @@ $(function() {
<div class="ttc" id="autil_8hh_html_aa6dc3f3578923d1afc40045e4cbe387bac54e582250aec15bf2aea189ccbb0348"><div class="ttname"><a href="util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bac54e582250aec15bf2aea189ccbb0348">RTP_MEMORY_ERROR</a></div><div class="ttdeci">@ RTP_MEMORY_ERROR</div><div class="ttdoc">Memory allocation failed.</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00046">util.hh:46</a></div></div>
<div class="ttc" id="autil_8hh_html_aa6dc3f3578923d1afc40045e4cbe387bacb40716d1ab0663c0cce56f6d03f0902"><div class="ttname"><a href="util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bacb40716d1ab0663c0cce56f6d03f0902">RTP_TIMEOUT</a></div><div class="ttdeci">@ RTP_TIMEOUT</div><div class="ttdoc">Operation timed out.</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00052">util.hh:52</a></div></div>
<div class="ttc" id="autil_8hh_html_aa6dc3f3578923d1afc40045e4cbe387bafde486de26be732acf472480e3693b19"><div class="ttname"><a href="util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bafde486de26be732acf472480e3693b19">RTP_GENERIC_ERROR</a></div><div class="ttdeci">@ RTP_GENERIC_ERROR</div><div class="ttdoc">Generic error condition.</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00041">util.hh:41</a></div></div>
<div class="ttc" id="autil_8hh_html_aa98d9238629e33567e73af0d239e587f"><div class="ttname"><a href="util_8hh.html#aa98d9238629e33567e73af0d239e587f">RTP_CTX_CONFIGURATION_FLAGS</a></div><div class="ttdeci">RTP_CTX_CONFIGURATION_FLAGS</div><div class="ttdoc">RTP context configuration flags.</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00291">util.hh:291</a></div></div>
<div class="ttc" id="autil_8hh_html_aa98d9238629e33567e73af0d239e587fa51034849ac8a4078f0c3b5198b92ab54"><div class="ttname"><a href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa51034849ac8a4078f0c3b5198b92ab54">RCC_FPS_NUMERATOR</a></div><div class="ttdeci">@ RCC_FPS_NUMERATOR</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00356">util.hh:356</a></div></div>
<div class="ttc" id="autil_8hh_html_aa98d9238629e33567e73af0d239e587fa5ac1245e18a420489083adddfa97b135"><div class="ttname"><a href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa5ac1245e18a420489083adddfa97b135">RCC_PKT_MAX_DELAY</a></div><div class="ttdeci">@ RCC_PKT_MAX_DELAY</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00327">util.hh:327</a></div></div>
<div class="ttc" id="autil_8hh_html_aa98d9238629e33567e73af0d239e587fa7667fb72b42a2c11991b4879619f9f83"><div class="ttname"><a href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa7667fb72b42a2c11991b4879619f9f83">RCC_MTU_SIZE</a></div><div class="ttdeci">@ RCC_MTU_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00343">util.hh:343</a></div></div>
<div class="ttc" id="autil_8hh_html_aa98d9238629e33567e73af0d239e587fa9a5a95ba2f189fb0350cbc44ba2b95c7"><div class="ttname"><a href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa9a5a95ba2f189fb0350cbc44ba2b95c7">RCC_SESSION_BANDWIDTH</a></div><div class="ttdeci">@ RCC_SESSION_BANDWIDTH</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00384">util.hh:384</a></div></div>
<div class="ttc" id="autil_8hh_html_aa98d9238629e33567e73af0d239e587fa9be732aa645fc09adde5c84a2d07e0f6"><div class="ttname"><a href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa9be732aa645fc09adde5c84a2d07e0f6">RCC_RING_BUFFER_SIZE</a></div><div class="ttdeci">@ RCC_RING_BUFFER_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00319">util.hh:319</a></div></div>
<div class="ttc" id="autil_8hh_html_aa98d9238629e33567e73af0d239e587fa9e60e576f72eafe6219cd9f0a9615ce9"><div class="ttname"><a href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa9e60e576f72eafe6219cd9f0a9615ce9">RCC_FPS_DENOMINATOR</a></div><div class="ttdeci">@ RCC_FPS_DENOMINATOR</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00364">util.hh:364</a></div></div>
<div class="ttc" id="autil_8hh_html_aa98d9238629e33567e73af0d239e587fac52afca9d1a8c24b1a788bc5b8524663"><div class="ttname"><a href="util_8hh.html#aa98d9238629e33567e73af0d239e587fac52afca9d1a8c24b1a788bc5b8524663">RCC_UDP_RCV_BUF_SIZE</a></div><div class="ttdeci">@ RCC_UDP_RCV_BUF_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00303">util.hh:303</a></div></div>
<div class="ttc" id="autil_8hh_html_aa98d9238629e33567e73af0d239e587fac758a522806ada30386b262660f30617"><div class="ttname"><a href="util_8hh.html#aa98d9238629e33567e73af0d239e587fac758a522806ada30386b262660f30617">RCC_DYN_PAYLOAD_TYPE</a></div><div class="ttdeci">@ RCC_DYN_PAYLOAD_TYPE</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00330">util.hh:330</a></div></div>
<div class="ttc" id="autil_8hh_html_aa98d9238629e33567e73af0d239e587fad4eba6c62183db35dd4bd0e09ddd107b"><div class="ttname"><a href="util_8hh.html#aa98d9238629e33567e73af0d239e587fad4eba6c62183db35dd4bd0e09ddd107b">RCC_UDP_SND_BUF_SIZE</a></div><div class="ttdeci">@ RCC_UDP_SND_BUF_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00311">util.hh:311</a></div></div>
<div class="ttc" id="autil_8hh_html_aa98d9238629e33567e73af0d239e587fad93dccbcd813299ea0b976d4dea79937"><div class="ttname"><a href="util_8hh.html#aa98d9238629e33567e73af0d239e587fad93dccbcd813299ea0b976d4dea79937">RCC_SSRC</a></div><div class="ttdeci">@ RCC_SSRC</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00370">util.hh:370</a></div></div>
<div class="ttc" id="autil_8hh_html_aa98d9238629e33567e73af0d239e587faece26b6edb4fc1fe6733b8fec0504b99"><div class="ttname"><a href="util_8hh.html#aa98d9238629e33567e73af0d239e587faece26b6edb4fc1fe6733b8fec0504b99">RCC_CLOCK_RATE</a></div><div class="ttdeci">@ RCC_CLOCK_RATE</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00333">util.hh:333</a></div></div>
<div class="ttc" id="autil_8hh_html_af03a75996471fc531742cd640c7caf2d"><div class="ttname"><a href="util_8hh.html#af03a75996471fc531742cd640c7caf2d">RTP_FLAGS</a></div><div class="ttdeci">RTP_FLAGS</div><div class="ttdoc">These flags are given to uvgrtp::media_stream::push_frame() and they can be OR'ed together.</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00136">util.hh:136</a></div></div>
<div class="ttc" id="autil_8hh_html_af03a75996471fc531742cd640c7caf2da084c095dae54bbbc6d9509568c58f9a6"><div class="ttname"><a href="util_8hh.html#af03a75996471fc531742cd640c7caf2da084c095dae54bbbc6d9509568c58f9a6">RTP_NO_FLAGS</a></div><div class="ttdeci">@ RTP_NO_FLAGS</div><div class="ttdoc">Use this if you have no RTP flags.</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00137">util.hh:137</a></div></div>
<div class="ttc" id="autil_8hh_html_af03a75996471fc531742cd640c7caf2dab1d5797a23c37a33168046a2ae6aef6a"><div class="ttname"><a href="util_8hh.html#af03a75996471fc531742cd640c7caf2dab1d5797a23c37a33168046a2ae6aef6a">RTP_COPY</a></div><div class="ttdeci">@ RTP_COPY</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00146">util.hh:146</a></div></div>
<div class="ttc" id="autil_8hh_html_af03a75996471fc531742cd640c7caf2dafd917713b62c18d5fa4106e42f3fbde8"><div class="ttname"><a href="util_8hh.html#af03a75996471fc531742cd640c7caf2dafd917713b62c18d5fa4106e42f3fbde8">RTP_NO_H26X_SCL</a></div><div class="ttdeci">@ RTP_NO_H26X_SCL</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00155">util.hh:153</a></div></div>
<div class="ttc" id="autil_8hh_html_aa98d9238629e33567e73af0d239e587f"><div class="ttname"><a href="util_8hh.html#aa98d9238629e33567e73af0d239e587f">RTP_CTX_CONFIGURATION_FLAGS</a></div><div class="ttdeci">RTP_CTX_CONFIGURATION_FLAGS</div><div class="ttdoc">RTP context configuration flags.</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00281">util.hh:281</a></div></div>
<div class="ttc" id="autil_8hh_html_aa98d9238629e33567e73af0d239e587fa15b4ff7295eae57338f4c3864c5146b7"><div class="ttname"><a href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa15b4ff7295eae57338f4c3864c5146b7">RCC_REMOTE_SSRC</a></div><div class="ttdeci">@ RCC_REMOTE_SSRC</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00365">util.hh:365</a></div></div>
<div class="ttc" id="autil_8hh_html_aa98d9238629e33567e73af0d239e587fa51034849ac8a4078f0c3b5198b92ab54"><div class="ttname"><a href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa51034849ac8a4078f0c3b5198b92ab54">RCC_FPS_NUMERATOR</a></div><div class="ttdeci">@ RCC_FPS_NUMERATOR</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00345">util.hh:345</a></div></div>
<div class="ttc" id="autil_8hh_html_aa98d9238629e33567e73af0d239e587fa5ac1245e18a420489083adddfa97b135"><div class="ttname"><a href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa5ac1245e18a420489083adddfa97b135">RCC_PKT_MAX_DELAY</a></div><div class="ttdeci">@ RCC_PKT_MAX_DELAY</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00316">util.hh:316</a></div></div>
<div class="ttc" id="autil_8hh_html_aa98d9238629e33567e73af0d239e587fa7667fb72b42a2c11991b4879619f9f83"><div class="ttname"><a href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa7667fb72b42a2c11991b4879619f9f83">RCC_MTU_SIZE</a></div><div class="ttdeci">@ RCC_MTU_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00332">util.hh:332</a></div></div>
<div class="ttc" id="autil_8hh_html_aa98d9238629e33567e73af0d239e587fa97b5a85e591372f65274238d0d1a73f8"><div class="ttname"><a href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa97b5a85e591372f65274238d0d1a73f8">RCC_POLL_TIMEOUT</a></div><div class="ttdeci">@ RCC_POLL_TIMEOUT</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00387">util.hh:387</a></div></div>
<div class="ttc" id="autil_8hh_html_aa98d9238629e33567e73af0d239e587fa9a5a95ba2f189fb0350cbc44ba2b95c7"><div class="ttname"><a href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa9a5a95ba2f189fb0350cbc44ba2b95c7">RCC_SESSION_BANDWIDTH</a></div><div class="ttdeci">@ RCC_SESSION_BANDWIDTH</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00379">util.hh:379</a></div></div>
<div class="ttc" id="autil_8hh_html_aa98d9238629e33567e73af0d239e587fa9be732aa645fc09adde5c84a2d07e0f6"><div class="ttname"><a href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa9be732aa645fc09adde5c84a2d07e0f6">RCC_RING_BUFFER_SIZE</a></div><div class="ttdeci">@ RCC_RING_BUFFER_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00308">util.hh:308</a></div></div>
<div class="ttc" id="autil_8hh_html_aa98d9238629e33567e73af0d239e587fa9e60e576f72eafe6219cd9f0a9615ce9"><div class="ttname"><a href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa9e60e576f72eafe6219cd9f0a9615ce9">RCC_FPS_DENOMINATOR</a></div><div class="ttdeci">@ RCC_FPS_DENOMINATOR</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00353">util.hh:353</a></div></div>
<div class="ttc" id="autil_8hh_html_aa98d9238629e33567e73af0d239e587fac52afca9d1a8c24b1a788bc5b8524663"><div class="ttname"><a href="util_8hh.html#aa98d9238629e33567e73af0d239e587fac52afca9d1a8c24b1a788bc5b8524663">RCC_UDP_RCV_BUF_SIZE</a></div><div class="ttdeci">@ RCC_UDP_RCV_BUF_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00292">util.hh:292</a></div></div>
<div class="ttc" id="autil_8hh_html_aa98d9238629e33567e73af0d239e587fac758a522806ada30386b262660f30617"><div class="ttname"><a href="util_8hh.html#aa98d9238629e33567e73af0d239e587fac758a522806ada30386b262660f30617">RCC_DYN_PAYLOAD_TYPE</a></div><div class="ttdeci">@ RCC_DYN_PAYLOAD_TYPE</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00319">util.hh:319</a></div></div>
<div class="ttc" id="autil_8hh_html_aa98d9238629e33567e73af0d239e587fad4eba6c62183db35dd4bd0e09ddd107b"><div class="ttname"><a href="util_8hh.html#aa98d9238629e33567e73af0d239e587fad4eba6c62183db35dd4bd0e09ddd107b">RCC_UDP_SND_BUF_SIZE</a></div><div class="ttdeci">@ RCC_UDP_SND_BUF_SIZE</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00300">util.hh:300</a></div></div>
<div class="ttc" id="autil_8hh_html_aa98d9238629e33567e73af0d239e587fad93dccbcd813299ea0b976d4dea79937"><div class="ttname"><a href="util_8hh.html#aa98d9238629e33567e73af0d239e587fad93dccbcd813299ea0b976d4dea79937">RCC_SSRC</a></div><div class="ttdeci">@ RCC_SSRC</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00359">util.hh:359</a></div></div>
<div class="ttc" id="autil_8hh_html_aa98d9238629e33567e73af0d239e587faece26b6edb4fc1fe6733b8fec0504b99"><div class="ttname"><a href="util_8hh.html#aa98d9238629e33567e73af0d239e587faece26b6edb4fc1fe6733b8fec0504b99">RCC_CLOCK_RATE</a></div><div class="ttdeci">@ RCC_CLOCK_RATE</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00322">util.hh:322</a></div></div>
<div class="ttc" id="autil_8hh_html_af03a75996471fc531742cd640c7caf2d"><div class="ttname"><a href="util_8hh.html#af03a75996471fc531742cd640c7caf2d">RTP_FLAGS</a></div><div class="ttdeci">RTP_FLAGS</div><div class="ttdoc">These flags are given to uvgrtp::media_stream::push_frame() and they can be OR'ed together.</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00137">util.hh:137</a></div></div>
<div class="ttc" id="autil_8hh_html_af03a75996471fc531742cd640c7caf2da084c095dae54bbbc6d9509568c58f9a6"><div class="ttname"><a href="util_8hh.html#af03a75996471fc531742cd640c7caf2da084c095dae54bbbc6d9509568c58f9a6">RTP_NO_FLAGS</a></div><div class="ttdeci">@ RTP_NO_FLAGS</div><div class="ttdoc">Use this if you have no RTP flags.</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00138">util.hh:138</a></div></div>
<div class="ttc" id="autil_8hh_html_af03a75996471fc531742cd640c7caf2dab1d5797a23c37a33168046a2ae6aef6a"><div class="ttname"><a href="util_8hh.html#af03a75996471fc531742cd640c7caf2dab1d5797a23c37a33168046a2ae6aef6a">RTP_COPY</a></div><div class="ttdeci">@ RTP_COPY</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00147">util.hh:147</a></div></div>
<div class="ttc" id="autil_8hh_html_af03a75996471fc531742cd640c7caf2dafd917713b62c18d5fa4106e42f3fbde8"><div class="ttname"><a href="util_8hh.html#af03a75996471fc531742cd640c7caf2dafd917713b62c18d5fa4106e42f3fbde8">RTP_NO_H26X_SCL</a></div><div class="ttdeci">@ RTP_NO_H26X_SCL</div><div class="ttdef"><b>Definition:</b> <a href="util_8hh_source.html#l00156">util.hh:154</a></div></div>
</div><!-- fragment --></div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>

View File

@ -21,7 +21,7 @@
<tbody>
<tr id="projectrow">
<td id="projectalign">
<div id="projectname">uvgRTP<span id="projectnumber">&#160;2.3.0</span>
<div id="projectname">uvgRTP<span id="projectnumber">&#160;3.0.0</span>
</div>
<div id="projectbrief">An open-source library for RTP/SRTP media delivery</div>
</td>