<divclass="line"><aname="l00031"></a><spanclass="lineno"> 31</span> <spanclass="comment"> * Other error return codes are defined in {conn,writer,reader}.hh */</span></div>
<divclass="line"><aname="l00042"></a><spanclass="lineno"> 42</span> <spanclass="comment"> * Other error return codes are defined in {conn,writer,reader,srtp}.hh */</span></div>
<divclass="line"><aname="l00048"></a><spanclass="lineno"> 48</span> <spanclass="comment"> * For user-managed SRTP session, the media stream is not started</span></div>
<divclass="line"><aname="l00049"></a><spanclass="lineno"> 49</span> <spanclass="comment"> * until SRTP key has been added and all calls to push_frame() will fail</span></div>
<divclass="line"><aname="l00051"></a><spanclass="lineno"> 51</span> <spanclass="comment"> * Currently uvgRTP only supports key length of 16 bytes (128 bits)</span></div>
<divclass="line"><aname="l00052"></a><spanclass="lineno"> 52</span> <spanclass="comment"> * and salt length of 14 bytes (112 bits).</span></div>
<divclass="line"><aname="l00053"></a><spanclass="lineno"> 53</span> <spanclass="comment"> * If the key/salt is longer, it is implicitly truncated to correct length</span></div>
<divclass="line"><aname="l00054"></a><spanclass="lineno"> 54</span> <spanclass="comment"> * and if the key/salt is shorter a memory violation may occur</span></div>
<divclass="line"><aname="l00056"></a><spanclass="lineno"> 56</span> <spanclass="comment"> * Return RTP_OK on success</span></div>
<divclass="line"><aname="l00057"></a><spanclass="lineno"> 57</span> <spanclass="comment"> * Return RTP_INVALID_VALUE if "key" or "salt" is invalid</span></div>
<divclass="line"><aname="l00058"></a><spanclass="lineno"> 58</span> <spanclass="comment"> * Return RTP_NOT_SUPPORTED if user-managed SRTP was not specified in create_stream() */</span></div>
<divclass="line"><aname="l00133"></a><spanclass="lineno"> 133</span> <spanclass="comment">/* If system call dispatcher is enabled and calling application has special requirements</span></div>
<divclass="line"><aname="l00134"></a><spanclass="lineno"> 134</span> <spanclass="comment"> * for the deallocation of a frame, it may install a deallocation hook which is called</span></div>
<divclass="line"><aname="l00135"></a><spanclass="lineno"> 135</span> <spanclass="comment"> * when SCD has processed the frame</span></div>
<divclass="line"><aname="l00137"></a><spanclass="lineno"> 137</span> <spanclass="comment"> * Return RTP_OK on success</span></div>
<divclass="line"><aname="l00138"></a><spanclass="lineno"> 138</span> <spanclass="comment"> * Return RTP_INVALID_VALUE if "hook" is nullptr */</span></div>
<divclass="line"><aname="l00141"></a><spanclass="lineno"> 141</span> <spanclass="comment">/* If needed, a notification hook can be installed to uvgRTP that can be used as</span></div>
<divclass="line"><aname="l00142"></a><spanclass="lineno"> 142</span> <spanclass="comment"> * an information side channel to the internal state of the library.</span></div>
<divclass="line"><aname="l00144"></a><spanclass="lineno"> 144</span> <spanclass="comment"> * When uvgRTP encouters a situation it doesn't know how to react to,</span></div>
<divclass="line"><aname="l00145"></a><spanclass="lineno"> 145</span> <spanclass="comment"> * it calls the notify hook with certain notify reason number (src/util.hh).</span></div>
<divclass="line"><aname="l00146"></a><spanclass="lineno"> 146</span> <spanclass="comment"> * Upon receiving a notification, application may ignore it or act on it somehow</span></div>
<divclass="line"><aname="l00148"></a><spanclass="lineno"> 148</span> <spanclass="comment"> * Currently only one notification type is supported and only receiver uses notifications</span></div>
<divclass="line"><aname="l00150"></a><spanclass="lineno"> 150</span> <spanclass="comment"> * "arg" is optional argument that is passed to hook when it is called. It may be nullptr</span></div>
<divclass="line"><aname="l00152"></a><spanclass="lineno"> 152</span> <spanclass="comment"> * Return RTP_OK on success</span></div>
<divclass="line"><aname="l00153"></a><spanclass="lineno"> 153</span> <spanclass="comment"> * Return RTP_INVALID_VALUE if "hook" is nullptr */</span></div>
<divclass="line"><aname="l00170"></a><spanclass="lineno"> 170</span> <spanclass="comment">/* Setter and getter for media-specific config that can be used f.ex with Opus */</span></div>
<divclass="line"><aname="l00174"></a><spanclass="lineno"> 174</span> <spanclass="comment">/* Get unique key of the media stream</span></div>
<divclass="line"><aname="l00175"></a><spanclass="lineno"> 175</span> <spanclass="comment"> * Used by session to index media streams */</span></div>
<divclass="line"><aname="l00194"></a><spanclass="lineno"> 194</span> <spanclass="comment">/* Initialize the connection by initializing the socket</span></div>
<divclass="line"><aname="l00195"></a><spanclass="lineno"> 195</span> <spanclass="comment"> * and binding ourselves to specified interface and creating</span></div>
<divclass="line"><aname="l00196"></a><spanclass="lineno"> 196</span> <spanclass="comment"> * an outgoing address */</span></div>
<divclass="line"><aname="l00221"></a><spanclass="lineno"> 221</span> <spanclass="comment">/* Has the media stream been initialized */</span></div>
<divclass="line"><aname="l00228"></a><spanclass="lineno"> 228</span> <spanclass="comment">/* RTP packet dispatcher for the receiver */</span></div>
<divclass="line"><aname="l00232"></a><spanclass="lineno"> 232</span> <spanclass="comment">/* Media object associated with this media stream. */</span></div>
<divclass="line"><aname="l00235"></a><spanclass="lineno"> 235</span> <spanclass="comment">/* Thread that keeps the holepunched connection open for unidirectional streams */</span></div>
<divclass="ttc"id="aclassuvgrtp_1_1media__stream_html_a1134ff0271ad54bf1e07feed422118c2"><divclass="ttname"><ahref="classuvgrtp_1_1media__stream.html#a1134ff0271ad54bf1e07feed422118c2">uvgrtp::media_stream::get_rtcp</a></div><divclass="ttdeci">uvgrtp::rtcp * get_rtcp()</div><divclass="ttdoc">Get pointer to the RTCP object of the media stream.</div></div>
<divclass="ttc"id="aclassuvgrtp_1_1media__stream_html_a441263e19be4383223884fde8838f736"><divclass="ttname"><ahref="classuvgrtp_1_1media__stream.html#a441263e19be4383223884fde8838f736">uvgrtp::media_stream::pull_frame</a></div><divclass="ttdeci">uvgrtp::frame::rtp_frame * pull_frame(size_t timeout)</div><divclass="ttdoc">Poll a frame for a specified time from the media stream object.</div></div>
<divclass="ttc"id="aclassuvgrtp_1_1media__stream_html_ab2b7507d5b2c76bef74c9bceec07ba18"><divclass="ttname"><ahref="classuvgrtp_1_1media__stream.html#ab2b7507d5b2c76bef74c9bceec07ba18">uvgrtp::media_stream::push_frame</a></div><divclass="ttdeci">rtp_error_t push_frame(uint8_t *data, size_t data_len, int flags)</div></div>
<divclass="ttc"id="aclassuvgrtp_1_1media__stream_html_addf1cde9cb8c4e4af3160ce24c4288a5"><divclass="ttname"><ahref="classuvgrtp_1_1media__stream.html#addf1cde9cb8c4e4af3160ce24c4288a5">uvgrtp::media_stream::configure_ctx</a></div><divclass="ttdeci">rtp_error_t configure_ctx(int flag, ssize_t value)</div><divclass="ttdoc">Configure the media stream, see RTP_CTX_CONFIGURATION_FLAGS for more details.</div></div>
<divclass="ttc"id="aclassuvgrtp_1_1media__stream_html_ae2fe9e8d9b67e25f103a78a25417149f"><divclass="ttname"><ahref="classuvgrtp_1_1media__stream.html#ae2fe9e8d9b67e25f103a78a25417149f">uvgrtp::media_stream::pull_frame</a></div><divclass="ttdeci">uvgrtp::frame::rtp_frame * pull_frame()</div><divclass="ttdoc">Poll a frame indefinetily from the media stream object.</div></div>