<trclass="memdesc:a0950a91bd645cbf842d8218ae4171aed"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Add keying information for user-managed SRTP session. <ahref="classuvgrtp_1_1media__stream.html#a0950a91bd645cbf842d8218ae4171aed">More...</a><br/></td></tr>
<trclass="memdesc:ab2b7507d5b2c76bef74c9bceec07ba18"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Send data to remote participant with a custom timestamp. <ahref="classuvgrtp_1_1media__stream.html#ab2b7507d5b2c76bef74c9bceec07ba18">More...</a><br/></td></tr>
<trclass="memitem:ab2e79cf2f90f81a90ae9c22e0c1fb01e"><tdclass="memItemLeft"align="right"valign="top">rtp_error_t </td><tdclass="memItemRight"valign="bottom"><aclass="el"href="classuvgrtp_1_1media__stream.html#ab2e79cf2f90f81a90ae9c22e0c1fb01e">push_frame</a> (std::unique_ptr< uint8_t[]> data, size_t data_len, int flags)</td></tr>
<trclass="memdesc:ab2e79cf2f90f81a90ae9c22e0c1fb01e"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Send data to remote participant with a custom timestamp. <ahref="classuvgrtp_1_1media__stream.html#ab2e79cf2f90f81a90ae9c22e0c1fb01e">More...</a><br/></td></tr>
<trclass="memitem:a18975c5463df0664f1fd8ab495248dcc"><tdclass="memItemLeft"align="right"valign="top">rtp_error_t </td><tdclass="memItemRight"valign="bottom"><aclass="el"href="classuvgrtp_1_1media__stream.html#a18975c5463df0664f1fd8ab495248dcc">push_frame</a> (uint8_t *data, size_t data_len, uint32_t ts, int flags)</td></tr>
<trclass="memdesc:a18975c5463df0664f1fd8ab495248dcc"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Send data to remote participant with a custom timestamp. <ahref="classuvgrtp_1_1media__stream.html#a18975c5463df0664f1fd8ab495248dcc">More...</a><br/></td></tr>
<trclass="memitem:a85fed1e02b97326d3b794551f0677e2b"><tdclass="memItemLeft"align="right"valign="top">rtp_error_t </td><tdclass="memItemRight"valign="bottom"><aclass="el"href="classuvgrtp_1_1media__stream.html#a85fed1e02b97326d3b794551f0677e2b">push_frame</a> (std::unique_ptr< uint8_t[]> data, size_t data_len, uint32_t ts, int flags)</td></tr>
<trclass="memdesc:a85fed1e02b97326d3b794551f0677e2b"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Send data to remote participant with a custom timestamp. <ahref="classuvgrtp_1_1media__stream.html#a85fed1e02b97326d3b794551f0677e2b">More...</a><br/></td></tr>
<trclass="memdesc:ae2fe9e8d9b67e25f103a78a25417149f"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Poll a frame indefinitely from the media stream object. <ahref="classuvgrtp_1_1media__stream.html#ae2fe9e8d9b67e25f103a78a25417149f">More...</a><br/></td></tr>
<trclass="memdesc:a441263e19be4383223884fde8838f736"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Poll a frame for a specified time from the media stream object. <ahref="classuvgrtp_1_1media__stream.html#a441263e19be4383223884fde8838f736">More...</a><br/></td></tr>
<trclass="memdesc:a74a558b23866976e52c5903996544a27"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Asynchronous way of getting frames. <ahref="classuvgrtp_1_1media__stream.html#a74a558b23866976e52c5903996544a27">More...</a><br/></td></tr>
<trclass="memdesc:addf1cde9cb8c4e4af3160ce24c4288a5"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Configure the media stream, see <aclass="el"href="util_8hh.html#aa98d9238629e33567e73af0d239e587f"title="RTP context configuration flags.">RTP_CTX_CONFIGURATION_FLAGS</a> for more details. <ahref="classuvgrtp_1_1media__stream.html#addf1cde9cb8c4e4af3160ce24c4288a5">More...</a><br/></td></tr>
<trclass="memdesc:a1134ff0271ad54bf1e07feed422118c2"><tdclass="mdescLeft"> </td><tdclass="mdescRight">Get pointer to the RTCP object of the media stream. <ahref="classuvgrtp_1_1media__stream.html#a1134ff0271ad54bf1e07feed422118c2">More...</a><br/></td></tr>
<p>Add keying information for user-managed SRTP session. </p>
<p>For user-managed SRTP session, the media stream is not started until SRTP key has been added and all calls to <aclass="el"href="classuvgrtp_1_1media__stream.html#ab2b7507d5b2c76bef74c9bceec07ba18"title="Send data to remote participant with a custom timestamp.">push_frame()</a> will fail</p>
<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 <aclass="el"href="util_8hh.html#aa6dc3f3578923d1afc40045e4cbe387ba32d67254c4da35568e7007ec3825f98a"title="Object has not been initialized.">RTP_NOT_INITIALIZED</a> until the SRTP context has been specified</p>
<p>Configure the media stream, see <aclass="el"href="util_8hh.html#aa98d9238629e33567e73af0d239e587f"title="RTP context configuration flags.">RTP_CTX_CONFIGURATION_FLAGS</a> for more details. </p>
<p>Get pointer to the RTCP object of the media stream. </p>
<p>This object is used to control all RTCP-related functionality and RTCP documentation can be found from <aclass="el"href="classuvgrtp_1_1rtcp.html">uvgrtp::rtcp</a></p>
<dlclass="section return"><dt>Returns</dt><dd>Pointer to RTCP object</dd></dl>
<dlclass="retval"><dt>Return values</dt><dd>
<tableclass="retval">
<tr><tdclass="paramname">uvgrtp::rtcp*</td><td>If RTCP has been enabled (RCE_RTCP has been given to <aclass="el"href="classuvgrtp_1_1session.html#a71aad1226214b1b0b1ba60a46c048ab2"title="Create a bidirectional media stream for an RTP session.">uvgrtp::session::create_stream()</a>) </td></tr>
<tr><tdclass="paramname">nullptr</td><td>If RTCP has not been enabled </td></tr>
<p>Receive hook is an alternative to polling frames using <aclass="el"href="classuvgrtp_1_1media__stream.html#ae2fe9e8d9b67e25f103a78a25417149f"title="Poll a frame indefinitely from the media stream object.">uvgrtp::media_stream::pull_frame()</a>. Instead of application asking from uvgRTP if there are any new frames available, uvgRTP will notify the application when a frame has been received</p>
<p>The hook should not be used for media processing as it will block the receiver from reading more frames. Instead, it should only be used as an interface between uvgRTP and the calling application where the frame hand-off happens.</p>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramname">arg</td><td>Optional argument that is passed to the hook when it is called, can be set to nullptr </td></tr>
<tr><tdclass="paramname">hook</td><td>Function pointer to the receive hook that uvgRTP should call</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 <aclass="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 <aclass="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>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramname">data</td><td>Smart pointer to data the that should be sent </td></tr>
<tr><tdclass="paramname">data_len</td><td>Length of data </td></tr>
<tr><tdclass="paramname">ts</td><td>32-bit timestamp value for the data </td></tr>
<tr><tdclass="paramname">flags</td><td>Optional flags, see <aclass="el"href="util_8hh.html#af03a75996471fc531742cd640c7caf2d"title="These flags are given to uvgrtp::media_stream::push_frame() and they can be OR'ed together.">RTP_FLAGS</a> for more details</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 <aclass="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 <aclass="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, <aclass="el"href="classuvgrtp_1_1rtcp.html#a5d0d06f9b4b7779d96d8d60938627316"title="Provide timestamping information for RTCP.">uvgrtp::rtcp::set_ts_info()</a> should have been called.</p>
<tr><tdclass="paramname">data</td><td>Smart pointer to data the that should be sent </td></tr>
<tr><tdclass="paramname">data_len</td><td>Length of data </td></tr>
<tr><tdclass="paramname">ts</td><td>32-bit timestamp value for the data </td></tr>
<tr><tdclass="paramname">flags</td><td>Optional flags, see <aclass="el"href="util_8hh.html#af03a75996471fc531742cd640c7caf2d"title="These flags are given to uvgrtp::media_stream::push_frame() and they can be OR'ed together.">RTP_FLAGS</a> for more details</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 <aclass="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 <aclass="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>
<dlclass="params"><dt>Parameters</dt><dd>
<tableclass="params">
<tr><tdclass="paramname">data</td><td>Pointer to data the that should be sent </td></tr>
<tr><tdclass="paramname">data_len</td><td>Length of data </td></tr>
<tr><tdclass="paramname">ts</td><td>32-bit timestamp value for the data </td></tr>
<tr><tdclass="paramname">flags</td><td>Optional flags, see <aclass="el"href="util_8hh.html#af03a75996471fc531742cd640c7caf2d"title="These flags are given to uvgrtp::media_stream::push_frame() and they can be OR'ed together.">RTP_FLAGS</a> for more details</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 <aclass="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 <aclass="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, <aclass="el"href="classuvgrtp_1_1rtcp.html#a5d0d06f9b4b7779d96d8d60938627316"title="Provide timestamping information for RTCP.">uvgrtp::rtcp::set_ts_info()</a> should have been called.</p>
<tr><tdclass="paramname">data</td><td>Pointer to data the that should be sent </td></tr>
<tr><tdclass="paramname">data_len</td><td>Length of data </td></tr>
<tr><tdclass="paramname">ts</td><td>32-bit timestamp value for the data </td></tr>
<tr><tdclass="paramname">flags</td><td>Optional flags, see <aclass="el"href="util_8hh.html#af03a75996471fc531742cd640c7caf2d"title="These flags are given to uvgrtp::media_stream::push_frame() and they can be OR'ed together.">RTP_FLAGS</a> for more details</td></tr>