Document set_ts_info()
This commit is contained in:
parent
5bdb283193
commit
c2e6207698
|
@ -138,6 +138,13 @@ Public Member Functions</h2></td></tr>
|
|||
<p>Currently uvgRTP only supports key length of 16 bytes (128 bits) and salt length of 14 bytes (112 bits).</p>
|
||||
<p>If the key or salt is longer, it is implicitly truncated to correct length and if the key or salt is shorter, a memory violation may occur</p>
|
||||
<p>Notice that if user-managed SRTP has been enabled during media stream creation, this function must be called before anything else. All calls to other functions will fail with <a class="el" href="util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba32d67254c4da35568e7007ec3825f98a" title="Object has not been initialized.">RTP_NOT_INITIALIZED</a> until the SRTP context has been specified</p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">key</td><td>128-bit long key </td></tr>
|
||||
<tr><td class="paramname">salt</td><td>112-bit long salt</td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
<dl class="section return"><dt>Returns</dt><dd>RTP error code</dd></dl>
|
||||
<dl class="retval"><dt>Return values</dt><dd>
|
||||
<table class="retval">
|
||||
|
@ -420,7 +427,7 @@ Public Member Functions</h2></td></tr>
|
|||
<p>Send data to remote participant with a custom timestamp. </p>
|
||||
<p>If so specified either by the selected media format and/or given <a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2af" title="RTP context enable flags.">RTP_CTX_ENABLE_FLAGS</a>, uvgRTP fragments the input data into RTP packets of 1500 bytes, or to any other size defined by the application using <a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa7667fb72b42a2c11991b4879619f9f83">RCC_MTU_SIZE</a></p>
|
||||
<p>The frame is automatically reconstructed by the receiver if all fragments have been received successfully.</p>
|
||||
<p>If application so wishes, it may override uvgRTP's own timestamp calculations and provide timestamping information for the stream itself. This requires that the application provides a sensible value for the ts parameter. If RTCP has been enabled, uvgrtp::rtcp::set_ts_info() should have been called.</p>
|
||||
<p>If application so wishes, it may override uvgRTP's own timestamp calculations and provide timestamping information for the stream itself. This requires that the application provides a sensible value for the ts parameter. If RTCP has been enabled, <a class="el" href="classuvgrtp_1_1rtcp.html#a5d0d06f9b4b7779d96d8d60938627316" title="Provide timestamping information for RTCP.">uvgrtp::rtcp::set_ts_info()</a> should have been called.</p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">data</td><td>Smart pointer to data the that should be sent </td></tr>
|
||||
|
@ -543,7 +550,7 @@ Public Member Functions</h2></td></tr>
|
|||
<p>Send data to remote participant with a custom timestamp. </p>
|
||||
<p>If so specified either by the selected media format and/or given <a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2af" title="RTP context enable flags.">RTP_CTX_ENABLE_FLAGS</a>, uvgRTP fragments the input data into RTP packets of 1500 bytes, or to any other size defined by the application using <a class="el" href="util_8hh.html#aa98d9238629e33567e73af0d239e587fa7667fb72b42a2c11991b4879619f9f83">RCC_MTU_SIZE</a></p>
|
||||
<p>The frame is automatically reconstructed by the receiver if all fragments have been received successfully.</p>
|
||||
<p>If application so wishes, it may override uvgRTP's own timestamp calculations and provide timestamping information for the stream itself. This requires that the application provides a sensible value for the ts parameter. If RTCP has been enabled, uvgrtp::rtcp::set_ts_info() should have been called.</p>
|
||||
<p>If application so wishes, it may override uvgRTP's own timestamp calculations and provide timestamping information for the stream itself. This requires that the application provides a sensible value for the ts parameter. If RTCP has been enabled, <a class="el" href="classuvgrtp_1_1rtcp.html#a5d0d06f9b4b7779d96d8d60938627316" title="Provide timestamping information for RTCP.">uvgrtp::rtcp::set_ts_info()</a> should have been called.</p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">data</td><td>Pointer to data the that should be sent </td></tr>
|
||||
|
|
|
@ -79,7 +79,7 @@ $(function() {
|
|||
<tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>send_app_packet</b>(char *name, uint8_t subtype, size_t payload_len, uint8_t *payload) (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 bgcolor="#f0f0f0"><td class="entry"><b>send_bye_packet</b>(std::vector< uint32_t > ssrcs) (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 bgcolor="#f0f0f0" class="even"><td class="entry"><b>send_sdes_packet</b>(std::vector< uvgrtp::frame::rtcp_sdes_item > &items) (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 bgcolor="#f0f0f0"><td class="entry"><b>set_ts_info</b>(uint64_t clock_start, uint32_t clock_rate, uint32_t rtp_ts_start) (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><td class="entry"><a class="el" href="classuvgrtp_1_1rtcp.html#a5d0d06f9b4b7779d96d8d60938627316">set_ts_info</a>(uint64_t clock_start, uint32_t clock_rate, uint32_t rtp_ts_start)</td><td class="entry"><a class="el" href="classuvgrtp_1_1rtcp.html">uvgrtp::rtcp</a></td><td class="entry"></td></tr>
|
||||
</table></div><!-- contents -->
|
||||
<!-- start footer part -->
|
||||
<hr class="footer"/><address class="footer"><small>
|
||||
|
|
|
@ -90,8 +90,8 @@ rtp_error_t </td><td class="memItemRight" valign="bottom"><b>send_app_packe
|
|||
<tr class="memitem:a2b831698320212e382e3d565e62d31c4"><td class="memItemLeft" align="right" valign="top"><a id="a2b831698320212e382e3d565e62d31c4"></a>
|
||||
rtp_error_t </td><td class="memItemRight" valign="bottom"><b>send_bye_packet</b> (std::vector< uint32_t > ssrcs)</td></tr>
|
||||
<tr class="separator:a2b831698320212e382e3d565e62d31c4"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a5d0d06f9b4b7779d96d8d60938627316"><td class="memItemLeft" align="right" valign="top"><a id="a5d0d06f9b4b7779d96d8d60938627316"></a>
|
||||
void </td><td class="memItemRight" valign="bottom"><b>set_ts_info</b> (uint64_t clock_start, uint32_t clock_rate, uint32_t rtp_ts_start)</td></tr>
|
||||
<tr class="memitem:a5d0d06f9b4b7779d96d8d60938627316"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classuvgrtp_1_1rtcp.html#a5d0d06f9b4b7779d96d8d60938627316">set_ts_info</a> (uint64_t clock_start, uint32_t clock_rate, uint32_t rtp_ts_start)</td></tr>
|
||||
<tr class="memdesc:a5d0d06f9b4b7779d96d8d60938627316"><td class="mdescLeft"> </td><td class="mdescRight">Provide timestamping information for RTCP. <a href="classuvgrtp_1_1rtcp.html#a5d0d06f9b4b7779d96d8d60938627316">More...</a><br /></td></tr>
|
||||
<tr class="separator:a5d0d06f9b4b7779d96d8d60938627316"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
<tr class="memitem:a4a262a814ffa3093ac6829c90b0b3fd1"><td class="memItemLeft" align="right" valign="top"><a id="a4a262a814ffa3093ac6829c90b0b3fd1"></a>
|
||||
rtp_error_t </td><td class="memItemRight" valign="bottom"><b>install_sender_hook</b> (void(*hook)(uvgrtp::frame::rtcp_sender_report *))</td></tr>
|
||||
|
@ -106,6 +106,53 @@ rtp_error_t </td><td class="memItemRight" valign="bottom"><b>install_sdes_h
|
|||
rtp_error_t </td><td class="memItemRight" valign="bottom"><b>install_app_hook</b> (void(*hook)(uvgrtp::frame::rtcp_app_packet *))</td></tr>
|
||||
<tr class="separator:a977c99cfaa1442553ab12d4c140bbb0f"><td class="memSeparator" colspan="2"> </td></tr>
|
||||
</table>
|
||||
<h2 class="groupheader">Member Function Documentation</h2>
|
||||
<a id="a5d0d06f9b4b7779d96d8d60938627316"></a>
|
||||
<h2 class="memtitle"><span class="permalink"><a href="#a5d0d06f9b4b7779d96d8d60938627316">◆ </a></span>set_ts_info()</h2>
|
||||
|
||||
<div class="memitem">
|
||||
<div class="memproto">
|
||||
<table class="memname">
|
||||
<tr>
|
||||
<td class="memname">void uvgrtp::rtcp::set_ts_info </td>
|
||||
<td>(</td>
|
||||
<td class="paramtype">uint64_t </td>
|
||||
<td class="paramname"><em>clock_start</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">uint32_t </td>
|
||||
<td class="paramname"><em>clock_rate</em>, </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="paramkey"></td>
|
||||
<td></td>
|
||||
<td class="paramtype">uint32_t </td>
|
||||
<td class="paramname"><em>rtp_ts_start</em> </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td></td>
|
||||
<td>)</td>
|
||||
<td></td><td></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div><div class="memdoc">
|
||||
|
||||
<p>Provide timestamping information for RTCP. </p>
|
||||
<p>If the application wishes to timestamp the stream itself AND it has enabled RTCP by using <a class="el" href="util_8hh.html#a15b2d6364db6065a482c99827f4bd2afab1342138e5af3f03d6eaf1378382bf3d">RCE_RTCP</a>, it must provide timestamping information for RTCP so sensible synchronization values can be calculated for Sender Reports</p>
|
||||
<p>The application can call uvgrtp::clock::ntp::now() to get the current wall clock reading as an NTP timestamp value</p>
|
||||
<dl class="params"><dt>Parameters</dt><dd>
|
||||
<table class="params">
|
||||
<tr><td class="paramname">clock_start</td><td>NTP timestamp for t = 0 </td></tr>
|
||||
<tr><td class="paramname">clock_rate</td><td>Clock rate of the stream </td></tr>
|
||||
<tr><td class="paramname">rtp_ts_start</td><td>RTP timestamp for t = 0 </td></tr>
|
||||
</table>
|
||||
</dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr/>The documentation for this class was generated from the following file:<ul>
|
||||
<li>include/<a class="el" href="rtcp_8hh_source.html">rtcp.hh</a></li>
|
||||
</ul>
|
||||
|
|
|
@ -95,6 +95,9 @@ $(function() {
|
|||
<li>push_frame()
|
||||
: <a class="el" href="classuvgrtp_1_1media__stream.html#ab2b7507d5b2c76bef74c9bceec07ba18">uvgrtp::media_stream</a>
|
||||
</li>
|
||||
<li>set_ts_info()
|
||||
: <a class="el" href="classuvgrtp_1_1rtcp.html#a5d0d06f9b4b7779d96d8d60938627316">uvgrtp::rtcp</a>
|
||||
</li>
|
||||
<li>~context()
|
||||
: <a class="el" href="classuvgrtp_1_1context.html#a652a201ae11685961267455ab823eb60">uvgrtp::context</a>
|
||||
</li>
|
||||
|
|
|
@ -95,6 +95,9 @@ $(function() {
|
|||
<li>push_frame()
|
||||
: <a class="el" href="classuvgrtp_1_1media__stream.html#ab2b7507d5b2c76bef74c9bceec07ba18">uvgrtp::media_stream</a>
|
||||
</li>
|
||||
<li>set_ts_info()
|
||||
: <a class="el" href="classuvgrtp_1_1rtcp.html#a5d0d06f9b4b7779d96d8d60938627316">uvgrtp::rtcp</a>
|
||||
</li>
|
||||
<li>~context()
|
||||
: <a class="el" href="classuvgrtp_1_1context.html#a652a201ae11685961267455ab823eb60">uvgrtp::context</a>
|
||||
</li>
|
||||
|
|
|
@ -112,105 +112,105 @@ $(function() {
|
|||
<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment"> * Other error return codes are defined in {conn,writer,reader,srtp}.hh */</span></div>
|
||||
<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  rtp_error_t init(uvgrtp::zrtp *zrtp);</div>
|
||||
<div class="line"><a name="l00045"></a><span class="lineno"> 45</span>  </div>
|
||||
<div class="line"><a name="l00068"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a0950a91bd645cbf842d8218ae4171aed"> 68</a></span>  rtp_error_t <a class="code" href="classuvgrtp_1_1media__stream.html#a0950a91bd645cbf842d8218ae4171aed">add_srtp_ctx</a>(uint8_t *key, uint8_t *salt);</div>
|
||||
<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  </div>
|
||||
<div class="line"><a name="l00093"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#ab2b7507d5b2c76bef74c9bceec07ba18"> 93</a></span>  rtp_error_t <a class="code" href="classuvgrtp_1_1media__stream.html#ab2b7507d5b2c76bef74c9bceec07ba18">push_frame</a>(uint8_t *data, <span class="keywordtype">size_t</span> data_len, <span class="keywordtype">int</span> flags);</div>
|
||||
<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  </div>
|
||||
<div class="line"><a name="l00118"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#ab2e79cf2f90f81a90ae9c22e0c1fb01e"> 118</a></span>  rtp_error_t <a class="code" href="classuvgrtp_1_1media__stream.html#ab2e79cf2f90f81a90ae9c22e0c1fb01e">push_frame</a>(std::unique_ptr<uint8_t[]> data, <span class="keywordtype">size_t</span> data_len, <span class="keywordtype">int</span> flags);</div>
|
||||
<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  </div>
|
||||
<div class="line"><a name="l00149"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a18975c5463df0664f1fd8ab495248dcc"> 149</a></span>  rtp_error_t <a class="code" href="classuvgrtp_1_1media__stream.html#a18975c5463df0664f1fd8ab495248dcc">push_frame</a>(uint8_t *data, <span class="keywordtype">size_t</span> data_len, uint32_t ts, <span class="keywordtype">int</span> flags);</div>
|
||||
<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  </div>
|
||||
<div class="line"><a name="l00180"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a85fed1e02b97326d3b794551f0677e2b"> 180</a></span>  rtp_error_t <a class="code" href="classuvgrtp_1_1media__stream.html#a85fed1e02b97326d3b794551f0677e2b">push_frame</a>(std::unique_ptr<uint8_t[]> data, <span class="keywordtype">size_t</span> data_len, uint32_t ts, <span class="keywordtype">int</span> flags);</div>
|
||||
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  </div>
|
||||
<div class="line"><a name="l00190"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#ae2fe9e8d9b67e25f103a78a25417149f"> 190</a></span>  uvgrtp::frame::rtp_frame *<a class="code" href="classuvgrtp_1_1media__stream.html#ae2fe9e8d9b67e25f103a78a25417149f">pull_frame</a>();</div>
|
||||
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  </div>
|
||||
<div class="line"><a name="l00201"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a441263e19be4383223884fde8838f736"> 201</a></span>  uvgrtp::frame::rtp_frame *<a class="code" href="classuvgrtp_1_1media__stream.html#a441263e19be4383223884fde8838f736">pull_frame</a>(<span class="keywordtype">size_t</span> timeout);</div>
|
||||
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  </div>
|
||||
<div class="line"><a name="l00221"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a74a558b23866976e52c5903996544a27"> 221</a></span>  rtp_error_t <a class="code" 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> *, uvgrtp::frame::rtp_frame *));</div>
|
||||
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  </div>
|
||||
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="comment">/* If system call dispatcher is enabled and calling application has special requirements</span></div>
|
||||
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="comment"> * for the deallocation of a frame, it may install a deallocation hook which is called</span></div>
|
||||
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="comment"> * when SCD has processed the frame</span></div>
|
||||
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="comment"> *</span></div>
|
||||
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="comment"> * Return RTP_OK on success</span></div>
|
||||
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="comment"> * Return RTP_INVALID_VALUE if "hook" is nullptr */</span></div>
|
||||
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  rtp_error_t install_deallocation_hook(<span class="keywordtype">void</span> (*hook)(<span class="keywordtype">void</span> *));</div>
|
||||
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  </div>
|
||||
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="comment">/* If needed, a notification hook can be installed to uvgRTP that can be used as</span></div>
|
||||
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span> <span class="comment"> * an information side channel to the internal state of the library.</span></div>
|
||||
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span> <span class="comment"> *</span></div>
|
||||
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="comment"> * When uvgRTP encouters a situation it doesn't know how to react to,</span></div>
|
||||
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="comment"> * it calls the notify hook with certain notify reason number (src/util.hh).</span></div>
|
||||
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="comment"> * Upon receiving a notification, application may ignore it or act on it somehow</span></div>
|
||||
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="comment"> *</span></div>
|
||||
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="comment"> * Currently only one notification type is supported and only receiver uses notifications</span></div>
|
||||
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="comment"> *</span></div>
|
||||
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="comment"> * "arg" is optional argument that is passed to hook when it is called. It may be nullptr</span></div>
|
||||
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="comment"> *</span></div>
|
||||
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="comment"> * Return RTP_OK on success</span></div>
|
||||
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="comment"> * Return RTP_INVALID_VALUE if "hook" is nullptr */</span></div>
|
||||
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  rtp_error_t install_notify_hook(<span class="keywordtype">void</span> *arg, <span class="keywordtype">void</span> (*hook)(<span class="keywordtype">void</span> *, <span class="keywordtype">int</span>));</div>
|
||||
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  </div>
|
||||
<div class="line"><a name="l00258"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#addf1cde9cb8c4e4af3160ce24c4288a5"> 258</a></span>  rtp_error_t <a class="code" href="classuvgrtp_1_1media__stream.html#addf1cde9cb8c4e4af3160ce24c4288a5">configure_ctx</a>(<span class="keywordtype">int</span> flag, ssize_t value);</div>
|
||||
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  </div>
|
||||
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="comment">/* Setter and getter for media-specific config that can be used f.ex with Opus */</span></div>
|
||||
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="keywordtype">void</span> set_media_config(<span class="keywordtype">void</span> *config);</div>
|
||||
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="keywordtype">void</span> *get_media_config();</div>
|
||||
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  </div>
|
||||
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="comment">/* Get unique key of the media stream</span></div>
|
||||
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span> <span class="comment"> * Used by session to index media streams */</span></div>
|
||||
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  uint32_t get_key();</div>
|
||||
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  </div>
|
||||
<div class="line"><a name="l00282"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a1134ff0271ad54bf1e07feed422118c2"> 282</a></span>  <a class="code" href="classuvgrtp_1_1rtcp.html">uvgrtp::rtcp</a> *<a class="code" href="classuvgrtp_1_1media__stream.html#a1134ff0271ad54bf1e07feed422118c2">get_rtcp</a>();</div>
|
||||
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  </div>
|
||||
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keyword">private</span>:</div>
|
||||
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="comment">/* Initialize the connection by initializing the socket</span></div>
|
||||
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span> <span class="comment"> * and binding ourselves to specified interface and creating</span></div>
|
||||
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span> <span class="comment"> * an outgoing address */</span></div>
|
||||
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  rtp_error_t init_connection();</div>
|
||||
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  </div>
|
||||
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  uint32_t key_;</div>
|
||||
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  </div>
|
||||
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  uvgrtp::srtp *srtp_;</div>
|
||||
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  uvgrtp::srtcp *srtcp_;</div>
|
||||
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  uvgrtp::socket *socket_;</div>
|
||||
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  uvgrtp::rtp *rtp_;</div>
|
||||
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <a class="code" href="classuvgrtp_1_1rtcp.html">uvgrtp::rtcp</a> *rtcp_;</div>
|
||||
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  </div>
|
||||
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  sockaddr_in addr_out_;</div>
|
||||
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  std::string addr_;</div>
|
||||
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  std::string laddr_;</div>
|
||||
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordtype">int</span> src_port_;</div>
|
||||
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="keywordtype">int</span> dst_port_;</div>
|
||||
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  rtp_format_t fmt_;</div>
|
||||
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordtype">int</span> flags_;</div>
|
||||
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  </div>
|
||||
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="comment">/* Media context config (SCD etc.) */</span></div>
|
||||
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  rtp_ctx_conf_t ctx_config_;</div>
|
||||
<div class="line"><a name="l00071"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a0950a91bd645cbf842d8218ae4171aed"> 71</a></span>  rtp_error_t <a class="code" href="classuvgrtp_1_1media__stream.html#a0950a91bd645cbf842d8218ae4171aed">add_srtp_ctx</a>(uint8_t *key, uint8_t *salt);</div>
|
||||
<div class="line"><a name="l00072"></a><span class="lineno"> 72</span>  </div>
|
||||
<div class="line"><a name="l00096"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#ab2b7507d5b2c76bef74c9bceec07ba18"> 96</a></span>  rtp_error_t <a class="code" href="classuvgrtp_1_1media__stream.html#ab2b7507d5b2c76bef74c9bceec07ba18">push_frame</a>(uint8_t *data, <span class="keywordtype">size_t</span> data_len, <span class="keywordtype">int</span> flags);</div>
|
||||
<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  </div>
|
||||
<div class="line"><a name="l00121"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#ab2e79cf2f90f81a90ae9c22e0c1fb01e"> 121</a></span>  rtp_error_t <a class="code" href="classuvgrtp_1_1media__stream.html#ab2e79cf2f90f81a90ae9c22e0c1fb01e">push_frame</a>(std::unique_ptr<uint8_t[]> data, <span class="keywordtype">size_t</span> data_len, <span class="keywordtype">int</span> flags);</div>
|
||||
<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  </div>
|
||||
<div class="line"><a name="l00152"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a18975c5463df0664f1fd8ab495248dcc"> 152</a></span>  rtp_error_t <a class="code" href="classuvgrtp_1_1media__stream.html#a18975c5463df0664f1fd8ab495248dcc">push_frame</a>(uint8_t *data, <span class="keywordtype">size_t</span> data_len, uint32_t ts, <span class="keywordtype">int</span> flags);</div>
|
||||
<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  </div>
|
||||
<div class="line"><a name="l00183"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a85fed1e02b97326d3b794551f0677e2b"> 183</a></span>  rtp_error_t <a class="code" href="classuvgrtp_1_1media__stream.html#a85fed1e02b97326d3b794551f0677e2b">push_frame</a>(std::unique_ptr<uint8_t[]> data, <span class="keywordtype">size_t</span> data_len, uint32_t ts, <span class="keywordtype">int</span> flags);</div>
|
||||
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  </div>
|
||||
<div class="line"><a name="l00193"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#ae2fe9e8d9b67e25f103a78a25417149f"> 193</a></span>  uvgrtp::frame::rtp_frame *<a class="code" href="classuvgrtp_1_1media__stream.html#ae2fe9e8d9b67e25f103a78a25417149f">pull_frame</a>();</div>
|
||||
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  </div>
|
||||
<div class="line"><a name="l00204"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a441263e19be4383223884fde8838f736"> 204</a></span>  uvgrtp::frame::rtp_frame *<a class="code" href="classuvgrtp_1_1media__stream.html#a441263e19be4383223884fde8838f736">pull_frame</a>(<span class="keywordtype">size_t</span> timeout);</div>
|
||||
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  </div>
|
||||
<div class="line"><a name="l00224"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a74a558b23866976e52c5903996544a27"> 224</a></span>  rtp_error_t <a class="code" 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> *, uvgrtp::frame::rtp_frame *));</div>
|
||||
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  </div>
|
||||
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="comment">/* If system call dispatcher is enabled and calling application has special requirements</span></div>
|
||||
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="comment"> * for the deallocation of a frame, it may install a deallocation hook which is called</span></div>
|
||||
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="comment"> * when SCD has processed the frame</span></div>
|
||||
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="comment"> *</span></div>
|
||||
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span> <span class="comment"> * Return RTP_OK on success</span></div>
|
||||
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span> <span class="comment"> * Return RTP_INVALID_VALUE if "hook" is nullptr */</span></div>
|
||||
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  rtp_error_t install_deallocation_hook(<span class="keywordtype">void</span> (*hook)(<span class="keywordtype">void</span> *));</div>
|
||||
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  </div>
|
||||
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="comment">/* If needed, a notification hook can be installed to uvgRTP that can be used as</span></div>
|
||||
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="comment"> * an information side channel to the internal state of the library.</span></div>
|
||||
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="comment"> *</span></div>
|
||||
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="comment"> * When uvgRTP encouters a situation it doesn't know how to react to,</span></div>
|
||||
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="comment"> * it calls the notify hook with certain notify reason number (src/util.hh).</span></div>
|
||||
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span> <span class="comment"> * Upon receiving a notification, application may ignore it or act on it somehow</span></div>
|
||||
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span> <span class="comment"> *</span></div>
|
||||
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="comment"> * Currently only one notification type is supported and only receiver uses notifications</span></div>
|
||||
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="comment"> *</span></div>
|
||||
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="comment"> * "arg" is optional argument that is passed to hook when it is called. It may be nullptr</span></div>
|
||||
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span> <span class="comment"> *</span></div>
|
||||
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span> <span class="comment"> * Return RTP_OK on success</span></div>
|
||||
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span> <span class="comment"> * Return RTP_INVALID_VALUE if "hook" is nullptr */</span></div>
|
||||
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  rtp_error_t install_notify_hook(<span class="keywordtype">void</span> *arg, <span class="keywordtype">void</span> (*hook)(<span class="keywordtype">void</span> *, <span class="keywordtype">int</span>));</div>
|
||||
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  </div>
|
||||
<div class="line"><a name="l00261"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#addf1cde9cb8c4e4af3160ce24c4288a5"> 261</a></span>  rtp_error_t <a class="code" href="classuvgrtp_1_1media__stream.html#addf1cde9cb8c4e4af3160ce24c4288a5">configure_ctx</a>(<span class="keywordtype">int</span> flag, ssize_t value);</div>
|
||||
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  </div>
|
||||
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="comment">/* Setter and getter for media-specific config that can be used f.ex with Opus */</span></div>
|
||||
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="keywordtype">void</span> set_media_config(<span class="keywordtype">void</span> *config);</div>
|
||||
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="keywordtype">void</span> *get_media_config();</div>
|
||||
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  </div>
|
||||
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="comment">/* Get unique key of the media stream</span></div>
|
||||
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span> <span class="comment"> * Used by session to index media streams */</span></div>
|
||||
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  uint32_t get_key();</div>
|
||||
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  </div>
|
||||
<div class="line"><a name="l00285"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1media__stream.html#a1134ff0271ad54bf1e07feed422118c2"> 285</a></span>  <a class="code" href="classuvgrtp_1_1rtcp.html">uvgrtp::rtcp</a> *<a class="code" href="classuvgrtp_1_1media__stream.html#a1134ff0271ad54bf1e07feed422118c2">get_rtcp</a>();</div>
|
||||
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  </div>
|
||||
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="keyword">private</span>:</div>
|
||||
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="comment">/* Initialize the connection by initializing the socket</span></div>
|
||||
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span> <span class="comment"> * and binding ourselves to specified interface and creating</span></div>
|
||||
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span> <span class="comment"> * an outgoing address */</span></div>
|
||||
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  rtp_error_t init_connection();</div>
|
||||
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  </div>
|
||||
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  uint32_t key_;</div>
|
||||
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  </div>
|
||||
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  uvgrtp::srtp *srtp_;</div>
|
||||
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  uvgrtp::srtcp *srtcp_;</div>
|
||||
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  uvgrtp::socket *socket_;</div>
|
||||
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  uvgrtp::rtp *rtp_;</div>
|
||||
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <a class="code" href="classuvgrtp_1_1rtcp.html">uvgrtp::rtcp</a> *rtcp_;</div>
|
||||
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  </div>
|
||||
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  sockaddr_in addr_out_;</div>
|
||||
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  std::string addr_;</div>
|
||||
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  std::string laddr_;</div>
|
||||
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordtype">int</span> src_port_;</div>
|
||||
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="keywordtype">int</span> dst_port_;</div>
|
||||
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  rtp_format_t fmt_;</div>
|
||||
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="keywordtype">int</span> flags_;</div>
|
||||
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  </div>
|
||||
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="comment">/* Media config f.ex. for Opus */</span></div>
|
||||
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordtype">void</span> *media_config_;</div>
|
||||
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="comment">/* Media context config (SCD etc.) */</span></div>
|
||||
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  rtp_ctx_conf_t ctx_config_;</div>
|
||||
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  </div>
|
||||
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="comment">/* Has the media stream been initialized */</span></div>
|
||||
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordtype">bool</span> initialized_;</div>
|
||||
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="comment">/* Media config f.ex. for Opus */</span></div>
|
||||
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordtype">void</span> *media_config_;</div>
|
||||
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  </div>
|
||||
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="comment">/* Primary handler keys for the RTP packet dispatcher */</span></div>
|
||||
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  uint32_t rtp_handler_key_;</div>
|
||||
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  uint32_t zrtp_handler_key_;</div>
|
||||
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  </div>
|
||||
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="comment">/* RTP packet dispatcher for the receiver */</span></div>
|
||||
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  uvgrtp::pkt_dispatcher *pkt_dispatcher_;</div>
|
||||
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  std::thread *dispatcher_thread_;</div>
|
||||
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  </div>
|
||||
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="comment">/* Media object associated with this media stream. */</span></div>
|
||||
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  uvgrtp::formats::media *media_;</div>
|
||||
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="comment">/* Has the media stream been initialized */</span></div>
|
||||
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordtype">bool</span> initialized_;</div>
|
||||
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  </div>
|
||||
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="comment">/* Primary handler keys for the RTP packet dispatcher */</span></div>
|
||||
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  uint32_t rtp_handler_key_;</div>
|
||||
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  uint32_t zrtp_handler_key_;</div>
|
||||
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  </div>
|
||||
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="comment">/* RTP packet dispatcher for the receiver */</span></div>
|
||||
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  uvgrtp::pkt_dispatcher *pkt_dispatcher_;</div>
|
||||
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  std::thread *dispatcher_thread_;</div>
|
||||
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  </div>
|
||||
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="comment">/* Thread that keeps the holepunched connection open for unidirectional streams */</span></div>
|
||||
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  uvgrtp::holepuncher *holepuncher_;</div>
|
||||
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  };</div>
|
||||
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span> };</div>
|
||||
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  </div>
|
||||
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span> <span class="keyword">namespace </span>uvg_rtp = uvgrtp;</div>
|
||||
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="comment">/* Media object associated with this media stream. */</span></div>
|
||||
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  uvgrtp::formats::media *media_;</div>
|
||||
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  </div>
|
||||
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="comment">/* Thread that keeps the holepunched connection open for unidirectional streams */</span></div>
|
||||
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  uvgrtp::holepuncher *holepuncher_;</div>
|
||||
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  };</div>
|
||||
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span> };</div>
|
||||
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  </div>
|
||||
<div class="line"><a name="l00334"></a><span class="lineno"> 334</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="ttdef"><b>Definition:</b> media_stream.hh:18</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_a1134ff0271ad54bf1e07feed422118c2"><div class="ttname"><a href="classuvgrtp_1_1media__stream.html#a1134ff0271ad54bf1e07feed422118c2">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>
|
||||
|
|
|
@ -246,163 +246,162 @@ $(function() {
|
|||
<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="comment">/* Return SSRCs of all participants */</span></div>
|
||||
<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  std::vector<uint32_t> get_participants();</div>
|
||||
<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  </div>
|
||||
<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="comment">/* Set wallclock reading for t = 0 and random RTP timestamp from where the counting is started</span></div>
|
||||
<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> <span class="comment"> * + clock rate for calculating the correct increment */</span></div>
|
||||
<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="keywordtype">void</span> set_ts_info(uint64_t clock_start, uint32_t clock_rate, uint32_t rtp_ts_start);</div>
|
||||
<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  </div>
|
||||
<div class="line"><a name="l00188"></a><span class="lineno"> 188</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 name="l00189"></a><span class="lineno"> 189</span> <span class="comment"> * polling an RTCP packet, user can install a function that is called when</span></div>
|
||||
<div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="comment"> * a specific RTCP packet is received. */</span></div>
|
||||
<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  rtp_error_t install_sender_hook(<span class="keywordtype">void</span> (*hook)(uvgrtp::frame::rtcp_sender_report *));</div>
|
||||
<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  rtp_error_t install_receiver_hook(<span class="keywordtype">void</span> (*hook)(uvgrtp::frame::rtcp_receiver_report *));</div>
|
||||
<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  rtp_error_t install_sdes_hook(<span class="keywordtype">void</span> (*hook)(uvgrtp::frame::rtcp_sdes_packet *));</div>
|
||||
<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  rtp_error_t install_app_hook(<span class="keywordtype">void</span> (*hook)(uvgrtp::frame::rtcp_app_packet *));</div>
|
||||
<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  </div>
|
||||
<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">/* Update RTCP-related sender statistics */</span></div>
|
||||
<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  rtp_error_t update_sender_stats(<span class="keywordtype">size_t</span> pkt_size);</div>
|
||||
<div class="line"><a name="l00198"></a><span class="lineno"><a class="line" href="classuvgrtp_1_1rtcp.html#a5d0d06f9b4b7779d96d8d60938627316"> 198</a></span>  <span class="keywordtype">void</span> <a class="code" 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 name="l00199"></a><span class="lineno"> 199</span>  </div>
|
||||
<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="comment">/* Update RTCP-related receiver statistics */</span></div>
|
||||
<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  <span class="keyword">static</span> rtp_error_t recv_packet_handler(<span class="keywordtype">void</span> *arg, <span class="keywordtype">int</span> flags, frame::rtp_frame **out);</div>
|
||||
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  </div>
|
||||
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="comment">/* Update RTCP-related sender statistics */</span></div>
|
||||
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="keyword">static</span> rtp_error_t send_packet_handler_vec(<span class="keywordtype">void</span> *arg, uvgrtp::buf_vec& buffers);</div>
|
||||
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  </div>
|
||||
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="keyword">private</span>:</div>
|
||||
<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> rtcp_runner(<a class="code" href="classuvgrtp_1_1rtcp.html">rtcp</a> *<a class="code" href="classuvgrtp_1_1rtcp.html">rtcp</a>);</div>
|
||||
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  </div>
|
||||
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="comment">/* when we start the RTCP instance, we don't know what the SSRC of the remote is</span></div>
|
||||
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span> <span class="comment"> * when an RTP packet is received, we must check if we've already received a packet</span></div>
|
||||
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="comment"> * from this sender and if not, create new entry to receiver_stats_ map */</span></div>
|
||||
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordtype">bool</span> is_participant(uint32_t ssrc);</div>
|
||||
<div class="line"><a name="l00200"></a><span class="lineno"> 200</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 name="l00201"></a><span class="lineno"> 201</span> <span class="comment"> * polling an RTCP packet, user can install a function that is called when</span></div>
|
||||
<div class="line"><a name="l00202"></a><span class="lineno"> 202</span> <span class="comment"> * a specific RTCP packet is received. */</span></div>
|
||||
<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  rtp_error_t install_sender_hook(<span class="keywordtype">void</span> (*hook)(uvgrtp::frame::rtcp_sender_report *));</div>
|
||||
<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  rtp_error_t install_receiver_hook(<span class="keywordtype">void</span> (*hook)(uvgrtp::frame::rtcp_receiver_report *));</div>
|
||||
<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  rtp_error_t install_sdes_hook(<span class="keywordtype">void</span> (*hook)(uvgrtp::frame::rtcp_sdes_packet *));</div>
|
||||
<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  rtp_error_t install_app_hook(<span class="keywordtype">void</span> (*hook)(uvgrtp::frame::rtcp_app_packet *));</div>
|
||||
<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  </div>
|
||||
<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="comment">/* Update RTCP-related sender statistics */</span></div>
|
||||
<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  rtp_error_t update_sender_stats(<span class="keywordtype">size_t</span> pkt_size);</div>
|
||||
<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  </div>
|
||||
<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="comment">/* Update RTCP-related receiver statistics */</span></div>
|
||||
<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keyword">static</span> rtp_error_t recv_packet_handler(<span class="keywordtype">void</span> *arg, <span class="keywordtype">int</span> flags, frame::rtp_frame **out);</div>
|
||||
<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  </div>
|
||||
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="comment">/* When we receive an RTP or RTCP packet, we need to check the source address and see if it's</span></div>
|
||||
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span> <span class="comment"> * the same address where we've received packets before.</span></div>
|
||||
<div class="line"><a name="l00217"></a><span class="lineno"> 217</span> <span class="comment"> *</span></div>
|
||||
<div class="line"><a name="l00218"></a><span class="lineno"> 218</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 name="l00219"></a><span class="lineno"> 219</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 name="l00220"></a><span class="lineno"> 220</span> <span class="comment"> * we need to send RTCP BYE and rejoin to the session */</span></div>
|
||||
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="keywordtype">bool</span> collision_detected(uint32_t ssrc, sockaddr_in& src_addr);</div>
|
||||
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  </div>
|
||||
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="comment">/* Move participant from initial_peers_ to participants_ */</span></div>
|
||||
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  rtp_error_t add_participant(uint32_t ssrc);</div>
|
||||
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  </div>
|
||||
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="comment">/* We've got a message from new source (the SSRC of the frame is not known to us)</span></div>
|
||||
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="comment"> * Initialize statistics for the peer and move it to participants_ */</span></div>
|
||||
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  rtp_error_t init_new_participant(uvgrtp::frame::rtp_frame *frame);</div>
|
||||
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  </div>
|
||||
<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="comment">/* Initialize the RTP Sequence related stuff of peer</span></div>
|
||||
<div class="line"><a name="l00231"></a><span class="lineno"> 231</span> <span class="comment"> * This function assumes that the peer already exists in the participants_ map */</span></div>
|
||||
<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  rtp_error_t init_participant_seq(uint32_t ssrc, uint16_t base_seq);</div>
|
||||
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  </div>
|
||||
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="comment">/* Update the SSRC's sequence related data in participants_ map</span></div>
|
||||
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="comment"> *</span></div>
|
||||
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="comment"> * Return RTP_OK if the received packet was OK</span></div>
|
||||
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span> <span class="comment"> * Return RTP_GENERIC_ERROR if it wasn't and</span></div>
|
||||
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span> <span class="comment"> * packet-related statistics should not be updated */</span></div>
|
||||
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  rtp_error_t update_participant_seq(uint32_t ssrc, uint16_t seq);</div>
|
||||
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  </div>
|
||||
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="comment">/* Update the RTCP bandwidth variables</span></div>
|
||||
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span> <span class="comment"> *</span></div>
|
||||
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="comment"> * "pkt_size" tells how much rtcp_byte_count_</span></div>
|
||||
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span> <span class="comment"> * should be increased before calculating the new average */</span></div>
|
||||
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="keywordtype">void</span> update_rtcp_bandwidth(<span class="keywordtype">size_t</span> pkt_size);</div>
|
||||
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  </div>
|
||||
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="comment">/* Functions for generating different kinds of reports.</span></div>
|
||||
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span> <span class="comment"> * These functions will both generate the report and send it</span></div>
|
||||
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span> <span class="comment"> *</span></div>
|
||||
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="comment"> * Return RTP_OK on success and RTP_ERROR on error */</span></div>
|
||||
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  rtp_error_t generate_sender_report();</div>
|
||||
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  rtp_error_t generate_receiver_report();</div>
|
||||
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  </div>
|
||||
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="comment">/* Because struct statistics contains uvgRTP clock object we cannot</span></div>
|
||||
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <span class="comment"> * zero it out without compiler complaining about it so all the fields</span></div>
|
||||
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span> <span class="comment"> * must be set to zero manually */</span></div>
|
||||
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordtype">void</span> zero_stats(uvgrtp::rtcp_statistics *stats);</div>
|
||||
<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="comment">/* Update RTCP-related sender statistics */</span></div>
|
||||
<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keyword">static</span> rtp_error_t send_packet_handler_vec(<span class="keywordtype">void</span> *arg, uvgrtp::buf_vec& buffers);</div>
|
||||
<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  </div>
|
||||
<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keyword">private</span>:</div>
|
||||
<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keyword">static</span> <span class="keywordtype">void</span> rtcp_runner(<a class="code" href="classuvgrtp_1_1rtcp.html">rtcp</a> *<a class="code" href="classuvgrtp_1_1rtcp.html">rtcp</a>);</div>
|
||||
<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  </div>
|
||||
<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="comment">/* when we start the RTCP instance, we don't know what the SSRC of the remote is</span></div>
|
||||
<div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="comment"> * when an RTP packet is received, we must check if we've already received a packet</span></div>
|
||||
<div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="comment"> * from this sender and if not, create new entry to receiver_stats_ map */</span></div>
|
||||
<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="keywordtype">bool</span> is_participant(uint32_t ssrc);</div>
|
||||
<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  </div>
|
||||
<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="comment">/* When we receive an RTP or RTCP packet, we need to check the source address and see if it's</span></div>
|
||||
<div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="comment"> * the same address where we've received packets before.</span></div>
|
||||
<div class="line"><a name="l00229"></a><span class="lineno"> 229</span> <span class="comment"> *</span></div>
|
||||
<div class="line"><a name="l00230"></a><span class="lineno"> 230</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 name="l00231"></a><span class="lineno"> 231</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 name="l00232"></a><span class="lineno"> 232</span> <span class="comment"> * we need to send RTCP BYE and rejoin to the session */</span></div>
|
||||
<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="keywordtype">bool</span> collision_detected(uint32_t ssrc, sockaddr_in& src_addr);</div>
|
||||
<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  </div>
|
||||
<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="comment">/* Move participant from initial_peers_ to participants_ */</span></div>
|
||||
<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  rtp_error_t add_participant(uint32_t ssrc);</div>
|
||||
<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  </div>
|
||||
<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="comment">/* We've got a message from new source (the SSRC of the frame is not known to us)</span></div>
|
||||
<div class="line"><a name="l00239"></a><span class="lineno"> 239</span> <span class="comment"> * Initialize statistics for the peer and move it to participants_ */</span></div>
|
||||
<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  rtp_error_t init_new_participant(uvgrtp::frame::rtp_frame *frame);</div>
|
||||
<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  </div>
|
||||
<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="comment">/* Initialize the RTP Sequence related stuff of peer</span></div>
|
||||
<div class="line"><a name="l00243"></a><span class="lineno"> 243</span> <span class="comment"> * This function assumes that the peer already exists in the participants_ map */</span></div>
|
||||
<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  rtp_error_t init_participant_seq(uint32_t ssrc, uint16_t base_seq);</div>
|
||||
<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  </div>
|
||||
<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="comment">/* Update the SSRC's sequence related data in participants_ map</span></div>
|
||||
<div class="line"><a name="l00247"></a><span class="lineno"> 247</span> <span class="comment"> *</span></div>
|
||||
<div class="line"><a name="l00248"></a><span class="lineno"> 248</span> <span class="comment"> * Return RTP_OK if the received packet was OK</span></div>
|
||||
<div class="line"><a name="l00249"></a><span class="lineno"> 249</span> <span class="comment"> * Return RTP_GENERIC_ERROR if it wasn't and</span></div>
|
||||
<div class="line"><a name="l00250"></a><span class="lineno"> 250</span> <span class="comment"> * packet-related statistics should not be updated */</span></div>
|
||||
<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  rtp_error_t update_participant_seq(uint32_t ssrc, uint16_t seq);</div>
|
||||
<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  </div>
|
||||
<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="comment">/* Update the RTCP bandwidth variables</span></div>
|
||||
<div class="line"><a name="l00254"></a><span class="lineno"> 254</span> <span class="comment"> *</span></div>
|
||||
<div class="line"><a name="l00255"></a><span class="lineno"> 255</span> <span class="comment"> * "pkt_size" tells how much rtcp_byte_count_</span></div>
|
||||
<div class="line"><a name="l00256"></a><span class="lineno"> 256</span> <span class="comment"> * should be increased before calculating the new average */</span></div>
|
||||
<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="keywordtype">void</span> update_rtcp_bandwidth(<span class="keywordtype">size_t</span> pkt_size);</div>
|
||||
<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  </div>
|
||||
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="comment">/* Pointer to RTP context from which clock rate etc. info is collected and which is</span></div>
|
||||
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span> <span class="comment"> * used to change SSRC if a collision is detected */</span></div>
|
||||
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  uvgrtp::rtp *rtp_;</div>
|
||||
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  </div>
|
||||
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="comment">/* Secure RTCP context */</span></div>
|
||||
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  uvgrtp::srtcp *srtcp_;</div>
|
||||
<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="comment">/* Functions for generating different kinds of reports.</span></div>
|
||||
<div class="line"><a name="l00260"></a><span class="lineno"> 260</span> <span class="comment"> * These functions will both generate the report and send it</span></div>
|
||||
<div class="line"><a name="l00261"></a><span class="lineno"> 261</span> <span class="comment"> *</span></div>
|
||||
<div class="line"><a name="l00262"></a><span class="lineno"> 262</span> <span class="comment"> * Return RTP_OK on success and RTP_ERROR on error */</span></div>
|
||||
<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  rtp_error_t generate_sender_report();</div>
|
||||
<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  rtp_error_t generate_receiver_report();</div>
|
||||
<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  </div>
|
||||
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="comment">/* RTP context flags */</span></div>
|
||||
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="keywordtype">int</span> flags_;</div>
|
||||
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  </div>
|
||||
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="comment">/* are we a sender or a receiver */</span></div>
|
||||
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="keywordtype">int</span> our_role_;</div>
|
||||
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  </div>
|
||||
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="comment">/* TODO: time_t?? */</span></div>
|
||||
<div class="line"><a name="l00273"></a><span class="lineno"> 273</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 name="l00274"></a><span class="lineno"> 274</span>  <span class="keywordtype">size_t</span> tc_; <span class="comment">/* the current time */</span></div>
|
||||
<div class="line"><a name="l00275"></a><span class="lineno"> 275</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 name="l00276"></a><span class="lineno"> 276</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 name="l00277"></a><span class="lineno"> 277</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 name="l00278"></a><span class="lineno"> 278</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 name="l00279"></a><span class="lineno"> 279</span>  </div>
|
||||
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="comment">/* The target RTCP bandwidth, i.e., the total bandwidth</span></div>
|
||||
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span> <span class="comment"> * that will be used for RTCP packets by all members of this session,</span></div>
|
||||
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span> <span class="comment"> * in octets per second. This will be a specified fraction of the</span></div>
|
||||
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span> <span class="comment"> * "session bandwidth" parameter supplied to the application at startup. */</span></div>
|
||||
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="keywordtype">size_t</span> rtcp_bandwidth_;</div>
|
||||
<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  </div>
|
||||
<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="comment">/* Flag that is true if the application has sent data since</span></div>
|
||||
<div class="line"><a name="l00287"></a><span class="lineno"> 287</span> <span class="comment"> * the 2nd previous RTCP report was transmitted. */</span></div>
|
||||
<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  <span class="keywordtype">bool</span> we_sent_;</div>
|
||||
<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  </div>
|
||||
<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="comment">/* The average compound RTCP packet size, in octets,</span></div>
|
||||
<div class="line"><a name="l00291"></a><span class="lineno"> 291</span> <span class="comment"> * over all RTCP packets sent and received by this participant. The</span></div>
|
||||
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span> <span class="comment"> * size includes lower-layer transport and network protocol headers</span></div>
|
||||
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span> <span class="comment"> * (e.g., UDP and IP) as explained in Section 6.2 */</span></div>
|
||||
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  <span class="keywordtype">size_t</span> avg_rtcp_pkt_pize_;</div>
|
||||
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  </div>
|
||||
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="comment">/* Number of RTCP packets and bytes sent and received by this participant */</span></div>
|
||||
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="keywordtype">size_t</span> rtcp_pkt_count_;</div>
|
||||
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="keywordtype">size_t</span> rtcp_byte_count_;</div>
|
||||
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  </div>
|
||||
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="comment">/* Number of RTCP packets sent */</span></div>
|
||||
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="keywordtype">size_t</span> rtcp_pkt_sent_count_;</div>
|
||||
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  </div>
|
||||
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="comment">/* Flag that is true if the application has not yet sent an RTCP packet. */</span></div>
|
||||
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="keywordtype">bool</span> initial_;</div>
|
||||
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  </div>
|
||||
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="comment">/* Copy of our own current SSRC */</span></div>
|
||||
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  uint32_t ssrc_;</div>
|
||||
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  </div>
|
||||
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="comment">/* NTP timestamp associated with initial RTP timestamp (aka t = 0) */</span></div>
|
||||
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  uint64_t clock_start_;</div>
|
||||
<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="comment">/* Because struct statistics contains uvgRTP clock object we cannot</span></div>
|
||||
<div class="line"><a name="l00267"></a><span class="lineno"> 267</span> <span class="comment"> * zero it out without compiler complaining about it so all the fields</span></div>
|
||||
<div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="comment"> * must be set to zero manually */</span></div>
|
||||
<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="keywordtype">void</span> zero_stats(uvgrtp::rtcp_statistics *stats);</div>
|
||||
<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  </div>
|
||||
<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="comment">/* Pointer to RTP context from which clock rate etc. info is collected and which is</span></div>
|
||||
<div class="line"><a name="l00272"></a><span class="lineno"> 272</span> <span class="comment"> * used to change SSRC if a collision is detected */</span></div>
|
||||
<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  uvgrtp::rtp *rtp_;</div>
|
||||
<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  </div>
|
||||
<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="comment">/* Secure RTCP context */</span></div>
|
||||
<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  uvgrtp::srtcp *srtcp_;</div>
|
||||
<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  </div>
|
||||
<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="comment">/* RTP context flags */</span></div>
|
||||
<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="keywordtype">int</span> flags_;</div>
|
||||
<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  </div>
|
||||
<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="comment">/* are we a sender or a receiver */</span></div>
|
||||
<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="keywordtype">int</span> our_role_;</div>
|
||||
<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  </div>
|
||||
<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="comment">/* TODO: time_t?? */</span></div>
|
||||
<div class="line"><a name="l00285"></a><span class="lineno"> 285</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 name="l00286"></a><span class="lineno"> 286</span>  <span class="keywordtype">size_t</span> tc_; <span class="comment">/* the current time */</span></div>
|
||||
<div class="line"><a name="l00287"></a><span class="lineno"> 287</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 name="l00288"></a><span class="lineno"> 288</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 name="l00289"></a><span class="lineno"> 289</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 name="l00290"></a><span class="lineno"> 290</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 name="l00291"></a><span class="lineno"> 291</span>  </div>
|
||||
<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="comment">/* The target RTCP bandwidth, i.e., the total bandwidth</span></div>
|
||||
<div class="line"><a name="l00293"></a><span class="lineno"> 293</span> <span class="comment"> * that will be used for RTCP packets by all members of this session,</span></div>
|
||||
<div class="line"><a name="l00294"></a><span class="lineno"> 294</span> <span class="comment"> * in octets per second. This will be a specified fraction of the</span></div>
|
||||
<div class="line"><a name="l00295"></a><span class="lineno"> 295</span> <span class="comment"> * "session bandwidth" parameter supplied to the application at startup. */</span></div>
|
||||
<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="keywordtype">size_t</span> rtcp_bandwidth_;</div>
|
||||
<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  </div>
|
||||
<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="comment">/* Flag that is true if the application has sent data since</span></div>
|
||||
<div class="line"><a name="l00299"></a><span class="lineno"> 299</span> <span class="comment"> * the 2nd previous RTCP report was transmitted. */</span></div>
|
||||
<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="keywordtype">bool</span> we_sent_;</div>
|
||||
<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  </div>
|
||||
<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="comment">/* The average compound RTCP packet size, in octets,</span></div>
|
||||
<div class="line"><a name="l00303"></a><span class="lineno"> 303</span> <span class="comment"> * over all RTCP packets sent and received by this participant. The</span></div>
|
||||
<div class="line"><a name="l00304"></a><span class="lineno"> 304</span> <span class="comment"> * size includes lower-layer transport and network protocol headers</span></div>
|
||||
<div class="line"><a name="l00305"></a><span class="lineno"> 305</span> <span class="comment"> * (e.g., UDP and IP) as explained in Section 6.2 */</span></div>
|
||||
<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="keywordtype">size_t</span> avg_rtcp_pkt_pize_;</div>
|
||||
<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  </div>
|
||||
<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="comment">/* Number of RTCP packets and bytes sent and received by this participant */</span></div>
|
||||
<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="keywordtype">size_t</span> rtcp_pkt_count_;</div>
|
||||
<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordtype">size_t</span> rtcp_byte_count_;</div>
|
||||
<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  </div>
|
||||
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="comment">/* Clock rate of the media ie. how fast does the time increase */</span></div>
|
||||
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  uint32_t clock_rate_;</div>
|
||||
<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="comment">/* Number of RTCP packets sent */</span></div>
|
||||
<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="keywordtype">size_t</span> rtcp_pkt_sent_count_;</div>
|
||||
<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  </div>
|
||||
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="comment">/* The first value of RTP timestamp (aka t = 0) */</span></div>
|
||||
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  uint32_t rtp_ts_start_;</div>
|
||||
<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="comment">/* Flag that is true if the application has not yet sent an RTCP packet. */</span></div>
|
||||
<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="keywordtype">bool</span> initial_;</div>
|
||||
<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  </div>
|
||||
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  std::map<uint32_t, rtcp_participant *> participants_;</div>
|
||||
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordtype">size_t</span> num_receivers_;</div>
|
||||
<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="comment">/* Copy of our own current SSRC */</span></div>
|
||||
<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  uint32_t ssrc_;</div>
|
||||
<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  </div>
|
||||
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="comment">/* statistics for RTCP Sender and Receiver Reports */</span></div>
|
||||
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="keyword">struct </span>rtcp_statistics our_stats;</div>
|
||||
<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="comment">/* NTP timestamp associated with initial RTP timestamp (aka t = 0) */</span></div>
|
||||
<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  uint64_t clock_start_;</div>
|
||||
<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  </div>
|
||||
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="comment">/* If we expect frames from remote but haven't received anything from remote yet,</span></div>
|
||||
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span> <span class="comment"> * the participant resides in this vector until he's moved to participants_ */</span></div>
|
||||
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  std::vector<rtcp_participant *> initial_participants_;</div>
|
||||
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  </div>
|
||||
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="comment">/* Vector of sockets the RTCP runner is listening to</span></div>
|
||||
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span> <span class="comment"> *</span></div>
|
||||
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span> <span class="comment"> * The socket are also stored here (in addition to participants_ map) so they're easier</span></div>
|
||||
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span> <span class="comment"> * to pass to poll when RTCP runner is listening to incoming packets */</span></div>
|
||||
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  std::vector<uvgrtp::socket> sockets_;</div>
|
||||
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  </div>
|
||||
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  void (*sender_hook_)(uvgrtp::frame::rtcp_sender_report *);</div>
|
||||
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  void (*receiver_hook_)(uvgrtp::frame::rtcp_receiver_report *);</div>
|
||||
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  void (*sdes_hook_)(uvgrtp::frame::rtcp_sdes_packet *);</div>
|
||||
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  void (*app_hook_)(uvgrtp::frame::rtcp_app_packet *);</div>
|
||||
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  };</div>
|
||||
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span> };</div>
|
||||
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  </div>
|
||||
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span> <span class="keyword">namespace </span>uvg_rtp = uvgrtp;</div>
|
||||
<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="comment">/* Clock rate of the media ie. how fast does the time increase */</span></div>
|
||||
<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  uint32_t clock_rate_;</div>
|
||||
<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  </div>
|
||||
<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="comment">/* The first value of RTP timestamp (aka t = 0) */</span></div>
|
||||
<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  uint32_t rtp_ts_start_;</div>
|
||||
<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  </div>
|
||||
<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  std::map<uint32_t, rtcp_participant *> participants_;</div>
|
||||
<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="keywordtype">size_t</span> num_receivers_;</div>
|
||||
<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  </div>
|
||||
<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="comment">/* statistics for RTCP Sender and Receiver Reports */</span></div>
|
||||
<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="keyword">struct </span>rtcp_statistics our_stats;</div>
|
||||
<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  </div>
|
||||
<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="comment">/* If we expect frames from remote but haven't received anything from remote yet,</span></div>
|
||||
<div class="line"><a name="l00337"></a><span class="lineno"> 337</span> <span class="comment"> * the participant resides in this vector until he's moved to participants_ */</span></div>
|
||||
<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  std::vector<rtcp_participant *> initial_participants_;</div>
|
||||
<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  </div>
|
||||
<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="comment">/* Vector of sockets the RTCP runner is listening to</span></div>
|
||||
<div class="line"><a name="l00341"></a><span class="lineno"> 341</span> <span class="comment"> *</span></div>
|
||||
<div class="line"><a name="l00342"></a><span class="lineno"> 342</span> <span class="comment"> * The socket are also stored here (in addition to participants_ map) so they're easier</span></div>
|
||||
<div class="line"><a name="l00343"></a><span class="lineno"> 343</span> <span class="comment"> * to pass to poll when RTCP runner is listening to incoming packets */</span></div>
|
||||
<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  std::vector<uvgrtp::socket> sockets_;</div>
|
||||
<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  </div>
|
||||
<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  void (*sender_hook_)(uvgrtp::frame::rtcp_sender_report *);</div>
|
||||
<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  void (*receiver_hook_)(uvgrtp::frame::rtcp_receiver_report *);</div>
|
||||
<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  void (*sdes_hook_)(uvgrtp::frame::rtcp_sdes_packet *);</div>
|
||||
<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  void (*app_hook_)(uvgrtp::frame::rtcp_app_packet *);</div>
|
||||
<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  };</div>
|
||||
<div class="line"><a name="l00351"></a><span class="lineno"> 351</span> };</div>
|
||||
<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  </div>
|
||||
<div class="line"><a name="l00353"></a><span class="lineno"> 353</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="ttdef"><b>Definition:</b> rtcp.hh:74</div></div>
|
||||
<div class="ttc" id="aclassuvgrtp_1_1rtcp_html_a5d0d06f9b4b7779d96d8d60938627316"><div class="ttname"><a href="classuvgrtp_1_1rtcp.html#a5d0d06f9b4b7779d96d8d60938627316">uvgrtp::rtcp::set_ts_info</a></div><div class="ttdeci">void set_ts_info(uint64_t clock_start, uint32_t clock_rate, uint32_t rtp_ts_start)</div><div class="ttdoc">Provide timestamping information for RTCP.</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 -->
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
var searchData=
|
||||
[
|
||||
['session_59',['session',['../classuvgrtp_1_1session.html',1,'uvgrtp']]]
|
||||
['session_59',['session',['../classuvgrtp_1_1session.html',1,'uvgrtp']]],
|
||||
['set_5fts_5finfo_60',['set_ts_info',['../classuvgrtp_1_1rtcp.html#a5d0d06f9b4b7779d96d8d60938627316',1,'uvgrtp::rtcp']]]
|
||||
];
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
var searchData=
|
||||
[
|
||||
['util_2ehh_60',['util.hh',['../util_8hh.html',1,'']]],
|
||||
['uvgrtp_20public_20api_20documentation_61',['uvgRTP public API documentation',['../index.html',1,'']]]
|
||||
['util_2ehh_61',['util.hh',['../util_8hh.html',1,'']]],
|
||||
['uvgrtp_20public_20api_20documentation_62',['uvgRTP public API documentation',['../index.html',1,'']]]
|
||||
];
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
var searchData=
|
||||
[
|
||||
['_7econtext_62',['~context',['../classuvgrtp_1_1context.html#a652a201ae11685961267455ab823eb60',1,'uvgrtp::context']]]
|
||||
['_7econtext_63',['~context',['../classuvgrtp_1_1context.html#a652a201ae11685961267455ab823eb60',1,'uvgrtp::context']]]
|
||||
];
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
var searchData=
|
||||
[
|
||||
['context_63',['context',['../classuvgrtp_1_1context.html',1,'uvgrtp']]]
|
||||
['context_64',['context',['../classuvgrtp_1_1context.html',1,'uvgrtp']]]
|
||||
];
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
var searchData=
|
||||
[
|
||||
['media_5fstream_64',['media_stream',['../classuvgrtp_1_1media__stream.html',1,'uvgrtp']]]
|
||||
['media_5fstream_65',['media_stream',['../classuvgrtp_1_1media__stream.html',1,'uvgrtp']]]
|
||||
];
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
var searchData=
|
||||
[
|
||||
['rtcp_65',['rtcp',['../classuvgrtp_1_1rtcp.html',1,'uvgrtp']]]
|
||||
['rtcp_66',['rtcp',['../classuvgrtp_1_1rtcp.html',1,'uvgrtp']]]
|
||||
];
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
var searchData=
|
||||
[
|
||||
['session_66',['session',['../classuvgrtp_1_1session.html',1,'uvgrtp']]]
|
||||
['session_67',['session',['../classuvgrtp_1_1session.html',1,'uvgrtp']]]
|
||||
];
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
var searchData=
|
||||
[
|
||||
['rtp_5fctx_5fconfiguration_5fflags_80',['RTP_CTX_CONFIGURATION_FLAGS',['../util_8hh.html#aa98d9238629e33567e73af0d239e587f',1,'util.hh']]],
|
||||
['rtp_5fctx_5fenable_5fflags_81',['RTP_CTX_ENABLE_FLAGS',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2af',1,'util.hh']]],
|
||||
['rtp_5ferror_82',['RTP_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387b',1,'util.hh']]],
|
||||
['rtp_5fflags_83',['RTP_FLAGS',['../util_8hh.html#af03a75996471fc531742cd640c7caf2d',1,'util.hh']]],
|
||||
['rtp_5fformat_84',['RTP_FORMAT',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96',1,'util.hh']]]
|
||||
['rtp_5fctx_5fconfiguration_5fflags_82',['RTP_CTX_CONFIGURATION_FLAGS',['../util_8hh.html#aa98d9238629e33567e73af0d239e587f',1,'util.hh']]],
|
||||
['rtp_5fctx_5fenable_5fflags_83',['RTP_CTX_ENABLE_FLAGS',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2af',1,'util.hh']]],
|
||||
['rtp_5ferror_84',['RTP_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387b',1,'util.hh']]],
|
||||
['rtp_5fflags_85',['RTP_FLAGS',['../util_8hh.html#af03a75996471fc531742cd640c7caf2d',1,'util.hh']]],
|
||||
['rtp_5fformat_86',['RTP_FORMAT',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96',1,'util.hh']]]
|
||||
];
|
||||
|
|
|
@ -1,44 +1,44 @@
|
|||
var searchData=
|
||||
[
|
||||
['rcc_5fdyn_5fpayload_5ftype_85',['RCC_DYN_PAYLOAD_TYPE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fac758a522806ada30386b262660f30617',1,'util.hh']]],
|
||||
['rcc_5fmtu_5fsize_86',['RCC_MTU_SIZE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa7667fb72b42a2c11991b4879619f9f83',1,'util.hh']]],
|
||||
['rcc_5fpkt_5fmax_5fdelay_87',['RCC_PKT_MAX_DELAY',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa5ac1245e18a420489083adddfa97b135',1,'util.hh']]],
|
||||
['rcc_5fudp_5frcv_5fbuf_5fsize_88',['RCC_UDP_RCV_BUF_SIZE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fac52afca9d1a8c24b1a788bc5b8524663',1,'util.hh']]],
|
||||
['rcc_5fudp_5fsnd_5fbuf_5fsize_89',['RCC_UDP_SND_BUF_SIZE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fad4eba6c62183db35dd4bd0e09ddd107b',1,'util.hh']]],
|
||||
['rce_5ffragment_5fgeneric_90',['RCE_FRAGMENT_GENERIC',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa5b0a8dbb22c20ebe8c0711541fb68a79',1,'util.hh']]],
|
||||
['rce_5fh26x_5fprepend_5fsc_91',['RCE_H26X_PREPEND_SC',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa75a655a9170ae88e07e993c1dd7ca4f7',1,'util.hh']]],
|
||||
['rce_5fholepunch_5fkeepalive_92',['RCE_HOLEPUNCH_KEEPALIVE',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa8e66f45819774772a0156647d3788a95',1,'util.hh']]],
|
||||
['rce_5fno_5fh26x_5fintra_5fdelay_93',['RCE_NO_H26X_INTRA_DELAY',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa5e9f19a63c964806ac9ff4ee089745e0',1,'util.hh']]],
|
||||
['rce_5fno_5fsystem_5fcall_5fclustering_94',['RCE_NO_SYSTEM_CALL_CLUSTERING',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afac03160668b92662fcb8d5b27bca3fbb0',1,'util.hh']]],
|
||||
['rce_5frtcp_95',['RCE_RTCP',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afab1342138e5af3f03d6eaf1378382bf3d',1,'util.hh']]],
|
||||
['rce_5fsrtp_96',['RCE_SRTP',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf235cba606675b9c38284ee1a491696b',1,'util.hh']]],
|
||||
['rce_5fsrtp_5fauthenticate_5frtp_97',['RCE_SRTP_AUTHENTICATE_RTP',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa820625b96886d955bc42e0cbc52cdd1e',1,'util.hh']]],
|
||||
['rce_5fsrtp_5finplace_5fencryption_98',['RCE_SRTP_INPLACE_ENCRYPTION',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa38c61eb2382a39b82fdacb7ae832bdd8',1,'util.hh']]],
|
||||
['rce_5fsrtp_5fkmngmnt_5fuser_99',['RCE_SRTP_KMNGMNT_USER',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4722105b4fd34467a56b8aca8fc03773',1,'util.hh']]],
|
||||
['rce_5fsrtp_5fkmngmnt_5fzrtp_100',['RCE_SRTP_KMNGMNT_ZRTP',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa40a3deab3893524daf7e057c6dfdaa75',1,'util.hh']]],
|
||||
['rce_5fsrtp_5fnull_5fcipher_101',['RCE_SRTP_NULL_CIPHER',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4ddec7d182cec161d6b582589bc9baba',1,'util.hh']]],
|
||||
['rce_5fsrtp_5freplay_5fprotection_102',['RCE_SRTP_REPLAY_PROTECTION',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaddd5fdb170d7cc194e4165d3f9e9a1c1',1,'util.hh']]],
|
||||
['rtp_5fauth_5ftag_5fmismatch_103',['RTP_AUTH_TAG_MISMATCH',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba6d62ec0a7250a3db7c0f3a13280ecc65',1,'util.hh']]],
|
||||
['rtp_5fbind_5ferror_104',['RTP_BIND_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba000c0166a0c38686389fc2eba0ddc458',1,'util.hh']]],
|
||||
['rtp_5fcopy_105',['RTP_COPY',['../util_8hh.html#af03a75996471fc531742cd640c7caf2dab1d5797a23c37a33168046a2ae6aef6a',1,'util.hh']]],
|
||||
['rtp_5fformat_5fgeneric_106',['RTP_FORMAT_GENERIC',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ad4b1be929d880baa2c2ca85c614f61b9',1,'util.hh']]],
|
||||
['rtp_5fformat_5fh264_107',['RTP_FORMAT_H264',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ad785025a8de9a53f17dc84ec3eed85bd',1,'util.hh']]],
|
||||
['rtp_5fformat_5fh265_108',['RTP_FORMAT_H265',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4ee0ab7d51bf50f8f5a5cb995ecc407b',1,'util.hh']]],
|
||||
['rtp_5fformat_5fh266_109',['RTP_FORMAT_H266',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a0e3d0414b29804783324399c8a42c85d',1,'util.hh']]],
|
||||
['rtp_5fformat_5fopus_110',['RTP_FORMAT_OPUS',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4e6ef095b4645cdc8aef241aad1f974b',1,'util.hh']]],
|
||||
['rtp_5fgeneric_5ferror_111',['RTP_GENERIC_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bafde486de26be732acf472480e3693b19',1,'util.hh']]],
|
||||
['rtp_5finitialized_112',['RTP_INITIALIZED',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba0759e9bb74c7a15ef09513547ed5cc2a',1,'util.hh']]],
|
||||
['rtp_5finvalid_5fvalue_113',['RTP_INVALID_VALUE',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba4cdd3c5db294a4f05294b264afbf678b',1,'util.hh']]],
|
||||
['rtp_5fmemory_5ferror_114',['RTP_MEMORY_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bac54e582250aec15bf2aea189ccbb0348',1,'util.hh']]],
|
||||
['rtp_5fno_5fflags_115',['RTP_NO_FLAGS',['../util_8hh.html#af03a75996471fc531742cd640c7caf2da084c095dae54bbbc6d9509568c58f9a6',1,'util.hh']]],
|
||||
['rtp_5fnot_5ffound_116',['RTP_NOT_FOUND',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba0a18f9856d2dd5890bb6ec25e4acf631',1,'util.hh']]],
|
||||
['rtp_5fnot_5finitialized_117',['RTP_NOT_INITIALIZED',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba32d67254c4da35568e7007ec3825f98a',1,'util.hh']]],
|
||||
['rtp_5fnot_5fsupported_118',['RTP_NOT_SUPPORTED',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba756d5cd372b045f069a493ed2f2cfa22',1,'util.hh']]],
|
||||
['rtp_5fok_119',['RTP_OK',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba0d701531b2bb1c027f5e5bcc64ed29e1',1,'util.hh']]],
|
||||
['rtp_5frecv_5ferror_120',['RTP_RECV_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387baa499befa487c22503360adffc590f33b',1,'util.hh']]],
|
||||
['rtp_5fsend_5ferror_121',['RTP_SEND_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba6c47e86944dbed4d33531236a6e28079',1,'util.hh']]],
|
||||
['rtp_5fslice_122',['RTP_SLICE',['../util_8hh.html#af03a75996471fc531742cd640c7caf2dada7e8bc5f5542554ad7de9d74967616f',1,'util.hh']]],
|
||||
['rtp_5fsocket_5ferror_123',['RTP_SOCKET_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bab392a7774c551eed903855248760ad06',1,'util.hh']]],
|
||||
['rtp_5fssrc_5fcollision_124',['RTP_SSRC_COLLISION',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba80aa5b74c1e252c2ef49e0796d4183d3',1,'util.hh']]],
|
||||
['rtp_5ftimeout_125',['RTP_TIMEOUT',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bacb40716d1ab0663c0cce56f6d03f0902',1,'util.hh']]]
|
||||
['rcc_5fdyn_5fpayload_5ftype_87',['RCC_DYN_PAYLOAD_TYPE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fac758a522806ada30386b262660f30617',1,'util.hh']]],
|
||||
['rcc_5fmtu_5fsize_88',['RCC_MTU_SIZE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa7667fb72b42a2c11991b4879619f9f83',1,'util.hh']]],
|
||||
['rcc_5fpkt_5fmax_5fdelay_89',['RCC_PKT_MAX_DELAY',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fa5ac1245e18a420489083adddfa97b135',1,'util.hh']]],
|
||||
['rcc_5fudp_5frcv_5fbuf_5fsize_90',['RCC_UDP_RCV_BUF_SIZE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fac52afca9d1a8c24b1a788bc5b8524663',1,'util.hh']]],
|
||||
['rcc_5fudp_5fsnd_5fbuf_5fsize_91',['RCC_UDP_SND_BUF_SIZE',['../util_8hh.html#aa98d9238629e33567e73af0d239e587fad4eba6c62183db35dd4bd0e09ddd107b',1,'util.hh']]],
|
||||
['rce_5ffragment_5fgeneric_92',['RCE_FRAGMENT_GENERIC',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa5b0a8dbb22c20ebe8c0711541fb68a79',1,'util.hh']]],
|
||||
['rce_5fh26x_5fprepend_5fsc_93',['RCE_H26X_PREPEND_SC',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa75a655a9170ae88e07e993c1dd7ca4f7',1,'util.hh']]],
|
||||
['rce_5fholepunch_5fkeepalive_94',['RCE_HOLEPUNCH_KEEPALIVE',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa8e66f45819774772a0156647d3788a95',1,'util.hh']]],
|
||||
['rce_5fno_5fh26x_5fintra_5fdelay_95',['RCE_NO_H26X_INTRA_DELAY',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa5e9f19a63c964806ac9ff4ee089745e0',1,'util.hh']]],
|
||||
['rce_5fno_5fsystem_5fcall_5fclustering_96',['RCE_NO_SYSTEM_CALL_CLUSTERING',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afac03160668b92662fcb8d5b27bca3fbb0',1,'util.hh']]],
|
||||
['rce_5frtcp_97',['RCE_RTCP',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afab1342138e5af3f03d6eaf1378382bf3d',1,'util.hh']]],
|
||||
['rce_5fsrtp_98',['RCE_SRTP',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaf235cba606675b9c38284ee1a491696b',1,'util.hh']]],
|
||||
['rce_5fsrtp_5fauthenticate_5frtp_99',['RCE_SRTP_AUTHENTICATE_RTP',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa820625b96886d955bc42e0cbc52cdd1e',1,'util.hh']]],
|
||||
['rce_5fsrtp_5finplace_5fencryption_100',['RCE_SRTP_INPLACE_ENCRYPTION',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa38c61eb2382a39b82fdacb7ae832bdd8',1,'util.hh']]],
|
||||
['rce_5fsrtp_5fkmngmnt_5fuser_101',['RCE_SRTP_KMNGMNT_USER',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4722105b4fd34467a56b8aca8fc03773',1,'util.hh']]],
|
||||
['rce_5fsrtp_5fkmngmnt_5fzrtp_102',['RCE_SRTP_KMNGMNT_ZRTP',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa40a3deab3893524daf7e057c6dfdaa75',1,'util.hh']]],
|
||||
['rce_5fsrtp_5fnull_5fcipher_103',['RCE_SRTP_NULL_CIPHER',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afa4ddec7d182cec161d6b582589bc9baba',1,'util.hh']]],
|
||||
['rce_5fsrtp_5freplay_5fprotection_104',['RCE_SRTP_REPLAY_PROTECTION',['../util_8hh.html#a15b2d6364db6065a482c99827f4bd2afaddd5fdb170d7cc194e4165d3f9e9a1c1',1,'util.hh']]],
|
||||
['rtp_5fauth_5ftag_5fmismatch_105',['RTP_AUTH_TAG_MISMATCH',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba6d62ec0a7250a3db7c0f3a13280ecc65',1,'util.hh']]],
|
||||
['rtp_5fbind_5ferror_106',['RTP_BIND_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba000c0166a0c38686389fc2eba0ddc458',1,'util.hh']]],
|
||||
['rtp_5fcopy_107',['RTP_COPY',['../util_8hh.html#af03a75996471fc531742cd640c7caf2dab1d5797a23c37a33168046a2ae6aef6a',1,'util.hh']]],
|
||||
['rtp_5fformat_5fgeneric_108',['RTP_FORMAT_GENERIC',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ad4b1be929d880baa2c2ca85c614f61b9',1,'util.hh']]],
|
||||
['rtp_5fformat_5fh264_109',['RTP_FORMAT_H264',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96ad785025a8de9a53f17dc84ec3eed85bd',1,'util.hh']]],
|
||||
['rtp_5fformat_5fh265_110',['RTP_FORMAT_H265',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4ee0ab7d51bf50f8f5a5cb995ecc407b',1,'util.hh']]],
|
||||
['rtp_5fformat_5fh266_111',['RTP_FORMAT_H266',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a0e3d0414b29804783324399c8a42c85d',1,'util.hh']]],
|
||||
['rtp_5fformat_5fopus_112',['RTP_FORMAT_OPUS',['../util_8hh.html#a313c6640ac5ed9384184a94ec57a9a96a4e6ef095b4645cdc8aef241aad1f974b',1,'util.hh']]],
|
||||
['rtp_5fgeneric_5ferror_113',['RTP_GENERIC_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bafde486de26be732acf472480e3693b19',1,'util.hh']]],
|
||||
['rtp_5finitialized_114',['RTP_INITIALIZED',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba0759e9bb74c7a15ef09513547ed5cc2a',1,'util.hh']]],
|
||||
['rtp_5finvalid_5fvalue_115',['RTP_INVALID_VALUE',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba4cdd3c5db294a4f05294b264afbf678b',1,'util.hh']]],
|
||||
['rtp_5fmemory_5ferror_116',['RTP_MEMORY_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bac54e582250aec15bf2aea189ccbb0348',1,'util.hh']]],
|
||||
['rtp_5fno_5fflags_117',['RTP_NO_FLAGS',['../util_8hh.html#af03a75996471fc531742cd640c7caf2da084c095dae54bbbc6d9509568c58f9a6',1,'util.hh']]],
|
||||
['rtp_5fnot_5ffound_118',['RTP_NOT_FOUND',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba0a18f9856d2dd5890bb6ec25e4acf631',1,'util.hh']]],
|
||||
['rtp_5fnot_5finitialized_119',['RTP_NOT_INITIALIZED',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba32d67254c4da35568e7007ec3825f98a',1,'util.hh']]],
|
||||
['rtp_5fnot_5fsupported_120',['RTP_NOT_SUPPORTED',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba756d5cd372b045f069a493ed2f2cfa22',1,'util.hh']]],
|
||||
['rtp_5fok_121',['RTP_OK',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba0d701531b2bb1c027f5e5bcc64ed29e1',1,'util.hh']]],
|
||||
['rtp_5frecv_5ferror_122',['RTP_RECV_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387baa499befa487c22503360adffc590f33b',1,'util.hh']]],
|
||||
['rtp_5fsend_5ferror_123',['RTP_SEND_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba6c47e86944dbed4d33531236a6e28079',1,'util.hh']]],
|
||||
['rtp_5fslice_124',['RTP_SLICE',['../util_8hh.html#af03a75996471fc531742cd640c7caf2dada7e8bc5f5542554ad7de9d74967616f',1,'util.hh']]],
|
||||
['rtp_5fsocket_5ferror_125',['RTP_SOCKET_ERROR',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bab392a7774c551eed903855248760ad06',1,'util.hh']]],
|
||||
['rtp_5fssrc_5fcollision_126',['RTP_SSRC_COLLISION',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba80aa5b74c1e252c2ef49e0796d4183d3',1,'util.hh']]],
|
||||
['rtp_5ftimeout_127',['RTP_TIMEOUT',['../util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387bacb40716d1ab0663c0cce56f6d03f0902',1,'util.hh']]]
|
||||
];
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
var searchData=
|
||||
[
|
||||
['util_2ehh_67',['util.hh',['../util_8hh.html',1,'']]]
|
||||
['util_2ehh_68',['util.hh',['../util_8hh.html',1,'']]]
|
||||
];
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
var searchData=
|
||||
[
|
||||
['add_5fsrtp_5fctx_68',['add_srtp_ctx',['../classuvgrtp_1_1media__stream.html#a0950a91bd645cbf842d8218ae4171aed',1,'uvgrtp::media_stream']]]
|
||||
['add_5fsrtp_5fctx_69',['add_srtp_ctx',['../classuvgrtp_1_1media__stream.html#a0950a91bd645cbf842d8218ae4171aed',1,'uvgrtp::media_stream']]]
|
||||
];
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
var searchData=
|
||||
[
|
||||
['configure_5fctx_69',['configure_ctx',['../classuvgrtp_1_1media__stream.html#addf1cde9cb8c4e4af3160ce24c4288a5',1,'uvgrtp::media_stream']]],
|
||||
['context_70',['context',['../classuvgrtp_1_1context.html#a98be18c2848404549cfadf910ba1573a',1,'uvgrtp::context']]],
|
||||
['create_5fsession_71',['create_session',['../classuvgrtp_1_1context.html#aa109aa2a419933359d225d19bcf3b2f9',1,'uvgrtp::context::create_session(std::string addr)'],['../classuvgrtp_1_1context.html#a0007eebfd5131bf0930cfedc0c4018e8',1,'uvgrtp::context::create_session(std::string remote_addr, std::string local_addr)']]],
|
||||
['create_5fstream_72',['create_stream',['../classuvgrtp_1_1session.html#a71aad1226214b1b0b1ba60a46c048ab2',1,'uvgrtp::session']]]
|
||||
['configure_5fctx_70',['configure_ctx',['../classuvgrtp_1_1media__stream.html#addf1cde9cb8c4e4af3160ce24c4288a5',1,'uvgrtp::media_stream']]],
|
||||
['context_71',['context',['../classuvgrtp_1_1context.html#a98be18c2848404549cfadf910ba1573a',1,'uvgrtp::context']]],
|
||||
['create_5fsession_72',['create_session',['../classuvgrtp_1_1context.html#aa109aa2a419933359d225d19bcf3b2f9',1,'uvgrtp::context::create_session(std::string addr)'],['../classuvgrtp_1_1context.html#a0007eebfd5131bf0930cfedc0c4018e8',1,'uvgrtp::context::create_session(std::string remote_addr, std::string local_addr)']]],
|
||||
['create_5fstream_73',['create_stream',['../classuvgrtp_1_1session.html#a71aad1226214b1b0b1ba60a46c048ab2',1,'uvgrtp::session']]]
|
||||
];
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
var searchData=
|
||||
[
|
||||
['destroy_5fsession_73',['destroy_session',['../classuvgrtp_1_1context.html#a61daf2f3cdcdf2542ee997ab6de5efa9',1,'uvgrtp::context']]],
|
||||
['destroy_5fstream_74',['destroy_stream',['../classuvgrtp_1_1session.html#a291629a3bfb910463b88d8edb3984149',1,'uvgrtp::session']]]
|
||||
['destroy_5fsession_74',['destroy_session',['../classuvgrtp_1_1context.html#a61daf2f3cdcdf2542ee997ab6de5efa9',1,'uvgrtp::context']]],
|
||||
['destroy_5fstream_75',['destroy_stream',['../classuvgrtp_1_1session.html#a291629a3bfb910463b88d8edb3984149',1,'uvgrtp::session']]]
|
||||
];
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
var searchData=
|
||||
[
|
||||
['get_5frtcp_75',['get_rtcp',['../classuvgrtp_1_1media__stream.html#a1134ff0271ad54bf1e07feed422118c2',1,'uvgrtp::media_stream']]]
|
||||
['get_5frtcp_76',['get_rtcp',['../classuvgrtp_1_1media__stream.html#a1134ff0271ad54bf1e07feed422118c2',1,'uvgrtp::media_stream']]]
|
||||
];
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
var searchData=
|
||||
[
|
||||
['install_5freceive_5fhook_76',['install_receive_hook',['../classuvgrtp_1_1media__stream.html#a74a558b23866976e52c5903996544a27',1,'uvgrtp::media_stream']]]
|
||||
['install_5freceive_5fhook_77',['install_receive_hook',['../classuvgrtp_1_1media__stream.html#a74a558b23866976e52c5903996544a27',1,'uvgrtp::media_stream']]]
|
||||
];
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
var searchData=
|
||||
[
|
||||
['pull_5fframe_77',['pull_frame',['../classuvgrtp_1_1media__stream.html#ae2fe9e8d9b67e25f103a78a25417149f',1,'uvgrtp::media_stream::pull_frame()'],['../classuvgrtp_1_1media__stream.html#a441263e19be4383223884fde8838f736',1,'uvgrtp::media_stream::pull_frame(size_t timeout)']]],
|
||||
['push_5fframe_78',['push_frame',['../classuvgrtp_1_1media__stream.html#ab2b7507d5b2c76bef74c9bceec07ba18',1,'uvgrtp::media_stream::push_frame(uint8_t *data, size_t data_len, int flags)'],['../classuvgrtp_1_1media__stream.html#ab2e79cf2f90f81a90ae9c22e0c1fb01e',1,'uvgrtp::media_stream::push_frame(std::unique_ptr< uint8_t[]> data, size_t data_len, int flags)'],['../classuvgrtp_1_1media__stream.html#a18975c5463df0664f1fd8ab495248dcc',1,'uvgrtp::media_stream::push_frame(uint8_t *data, size_t data_len, uint32_t ts, int flags)'],['../classuvgrtp_1_1media__stream.html#a85fed1e02b97326d3b794551f0677e2b',1,'uvgrtp::media_stream::push_frame(std::unique_ptr< uint8_t[]> data, size_t data_len, uint32_t ts, int flags)']]]
|
||||
['pull_5fframe_78',['pull_frame',['../classuvgrtp_1_1media__stream.html#ae2fe9e8d9b67e25f103a78a25417149f',1,'uvgrtp::media_stream::pull_frame()'],['../classuvgrtp_1_1media__stream.html#a441263e19be4383223884fde8838f736',1,'uvgrtp::media_stream::pull_frame(size_t timeout)']]],
|
||||
['push_5fframe_79',['push_frame',['../classuvgrtp_1_1media__stream.html#ab2b7507d5b2c76bef74c9bceec07ba18',1,'uvgrtp::media_stream::push_frame(uint8_t *data, size_t data_len, int flags)'],['../classuvgrtp_1_1media__stream.html#ab2e79cf2f90f81a90ae9c22e0c1fb01e',1,'uvgrtp::media_stream::push_frame(std::unique_ptr< uint8_t[]> data, size_t data_len, int flags)'],['../classuvgrtp_1_1media__stream.html#a18975c5463df0664f1fd8ab495248dcc',1,'uvgrtp::media_stream::push_frame(uint8_t *data, size_t data_len, uint32_t ts, int flags)'],['../classuvgrtp_1_1media__stream.html#a85fed1e02b97326d3b794551f0677e2b',1,'uvgrtp::media_stream::push_frame(std::unique_ptr< uint8_t[]> data, size_t data_len, uint32_t ts, int flags)']]]
|
||||
];
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
var searchData=
|
||||
[
|
||||
['_7econtext_79',['~context',['../classuvgrtp_1_1context.html#a652a201ae11685961267455ab823eb60',1,'uvgrtp::context']]]
|
||||
['set_5fts_5finfo_80',['set_ts_info',['../classuvgrtp_1_1rtcp.html#a5d0d06f9b4b7779d96d8d60938627316',1,'uvgrtp::rtcp']]]
|
||||
];
|
||||
|
|
|
@ -0,0 +1,37 @@
|
|||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head><title></title>
|
||||
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
|
||||
<meta name="generator" content="Doxygen 1.9.1"/>
|
||||
<link rel="stylesheet" type="text/css" href="search.css"/>
|
||||
<script type="text/javascript" src="functions_7.js"></script>
|
||||
<script type="text/javascript" src="search.js"></script>
|
||||
</head>
|
||||
<body class="SRPage">
|
||||
<div id="SRIndex">
|
||||
<div class="SRStatus" id="Loading">Loading...</div>
|
||||
<div id="SRResults"></div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
createResults();
|
||||
/* @license-end */
|
||||
</script>
|
||||
<div class="SRStatus" id="Searching">Searching...</div>
|
||||
<div class="SRStatus" id="NoMatches">No Matches</div>
|
||||
<script type="text/javascript">
|
||||
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */
|
||||
document.getElementById("Loading").style.display="none";
|
||||
document.getElementById("NoMatches").style.display="none";
|
||||
var searchResults = new SearchResults("searchResults");
|
||||
searchResults.Search();
|
||||
window.addEventListener("message", function(event) {
|
||||
if (event.data == "take_focus") {
|
||||
var elem = searchResults.NavNext(0);
|
||||
if (elem) elem.focus();
|
||||
}
|
||||
});
|
||||
/* @license-end */
|
||||
</script>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
|
@ -0,0 +1,4 @@
|
|||
var searchData=
|
||||
[
|
||||
['_7econtext_81',['~context',['../classuvgrtp_1_1context.html#a652a201ae11685961267455ab823eb60',1,'uvgrtp::context']]]
|
||||
];
|
|
@ -1,4 +1,4 @@
|
|||
var searchData=
|
||||
[
|
||||
['uvgrtp_20public_20api_20documentation_126',['uvgRTP public API documentation',['../index.html',1,'']]]
|
||||
['uvgrtp_20public_20api_20documentation_128',['uvgRTP public API documentation',['../index.html',1,'']]]
|
||||
];
|
||||
|
|
|
@ -3,7 +3,7 @@ var indexSectionsWithContent =
|
|||
0: "acdgimprsu~",
|
||||
1: "cmrs",
|
||||
2: "u",
|
||||
3: "acdgip~",
|
||||
3: "acdgips~",
|
||||
4: "r",
|
||||
5: "r",
|
||||
6: "u"
|
||||
|
|
|
@ -181,8 +181,20 @@ namespace uvgrtp {
|
|||
std::vector<uint32_t> get_participants();
|
||||
/// \endcond
|
||||
|
||||
/* Set wallclock reading for t = 0 and random RTP timestamp from where the counting is started
|
||||
* + clock rate for calculating the correct increment */
|
||||
/**
|
||||
* \brief Provide timestamping information for RTCP
|
||||
*
|
||||
* \details If the application wishes to timestamp the stream itself AND it has
|
||||
* enabled RTCP by using ::RCE_RTCP, it must provide timestamping information for
|
||||
* RTCP so sensible synchronization values can be calculated for Sender Reports
|
||||
*
|
||||
* The application can call uvgrtp::clock::ntp::now() to get the current wall clock
|
||||
* reading as an NTP timestamp value
|
||||
*
|
||||
* \param clock_start NTP timestamp for t = 0
|
||||
* \param clock_rate Clock rate of the stream
|
||||
* \param rtp_ts_start RTP timestamp for t = 0
|
||||
*/
|
||||
void set_ts_info(uint64_t clock_start, uint32_t clock_rate, uint32_t rtp_ts_start);
|
||||
|
||||
/* Alternate way to get RTCP packets is to install a hook for them. So instead of
|
||||
|
|
Loading…
Reference in New Issue