blob: 9cd43b2d7dc9333fd6a600480d85bb1a88f99fcf [file] [log] [blame]
{{+bindTo:partials.standard_nacl_api}}
<h1>PPB_MediaStreamVideoTrack Struct Reference</h1>
<div id="doxygen-ref">
{{- dummy div to appease doxygen -}}
<div>
<!-- Generated by Doxygen 1.7.6.1 -->
</div>
<!--header-->
<div class="contents">
<!-- doxytag: class="PPB_MediaStreamVideoTrack" --><h2>
Data Fields</h2><table class="memberdecls">
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#ae8c4dcff35a89de06875295ce6791f52">Create</a> )(<a class="el" href="group___typedefs.html#ga89b662403e6a687bb914b80114c0d19d">PP_Instance</a> instance)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___enums.html#ga4f272d99be14aacafe08dfd4ef830918">PP_Bool</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a145d621225b6d7e1501d862823c94380">IsMediaStreamVideoTrack</a> )(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> resource)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int32_t(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a511bd529cecdee0573bd27d49bc97229">Configure</a> )(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> video_track, const int32_t attrib_list[], struct <a class="el" href="struct_p_p___completion_callback.html">PP_CompletionCallback</a> callback)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int32_t(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a512c61d2da03d815abfc3d5eff3fb152">GetAttrib</a> )(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> video_track, <a class="el" href="group___enums.html#ga49cd0a65c15c8a91959310699afc36b7">PP_MediaStreamVideoTrack_Attrib</a> attrib, int32_t *value)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">struct <a class="el" href="struct_p_p___var.html">PP_Var</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a5ea1040a0248265660173d334009ea4e">GetId</a> )(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> video_track)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group___enums.html#ga4f272d99be14aacafe08dfd4ef830918">PP_Bool</a>(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a1b5e00cfe17f935bedefc9fc32f43bdd">HasEnded</a> )(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> video_track)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int32_t(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a81a2f469f7311aaf784bfa8cb57e5a1a">GetFrame</a> )(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> video_track, <a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> *frame, struct <a class="el" href="struct_p_p___completion_callback.html">PP_CompletionCallback</a> callback)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int32_t(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a5f37a68d85311c2ae4ef229b411bb718">RecycleFrame</a> )(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> video_track, <a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> frame)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a8d76657c5d43a1ad785f2069c68bc70b">Close</a> )(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> video_track)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int32_t(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a3d5241dc22fa9cc03b96fb8f2e3c976e">GetEmptyFrame</a> )(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> video_track, <a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> *frame, struct <a class="el" href="struct_p_p___completion_callback.html">PP_CompletionCallback</a> callback)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">int32_t(*&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#ab3bbbc3074a6198d696521351608313f">PutFrame</a> )(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> video_track, <a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> frame)</td></tr>
</table>
<hr /><h2>Field Documentation</h2>
<a class="anchor" id="a8d76657c5d43a1ad785f2069c68bc70b"></a><!-- doxytag: member="PPB_MediaStreamVideoTrack::Close" ref="a8d76657c5d43a1ad785f2069c68bc70b" args=")(PP_Resource video_track)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">void(* <a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a8d76657c5d43a1ad785f2069c68bc70b">PPB_MediaStreamVideoTrack::Close</a>)(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> video_track)</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Closes the MediaStream video track and disconnects it from video source. </p>
<p>After calling <code><a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a8d76657c5d43a1ad785f2069c68bc70b" title="Closes the MediaStream video track and disconnects it from video source.">Close()</a></code>, no new frames will be received.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">video_track</td><td>A <code>PP_Resource</code> corresponding to a MediaStream video track resource. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a class="anchor" id="a511bd529cecdee0573bd27d49bc97229"></a><!-- doxytag: member="PPB_MediaStreamVideoTrack::Configure" ref="a511bd529cecdee0573bd27d49bc97229" args=")(PP_Resource video_track, const int32_t attrib_list[], struct PP_CompletionCallback callback)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int32_t(* <a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a511bd529cecdee0573bd27d49bc97229">PPB_MediaStreamVideoTrack::Configure</a>)(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> video_track, const int32_t attrib_list[], struct <a class="el" href="struct_p_p___completion_callback.html">PP_CompletionCallback</a> callback)</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Configures underlying frame buffers for incoming frames. </p>
<p>If the application doesn't want to drop frames, then the <code>PP_MEDIASTREAMVIDEOTRACK_ATTRIB_BUFFERED_FRAMES</code> should be chosen such that inter-frame processing time variability won't overrun the input buffer. If the buffer is overfilled, then frames will be dropped. The application can detect this by examining the timestamp on returned frames. If some attributes are not specified, default values will be used for those unspecified attributes. If <code><a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a511bd529cecdee0573bd27d49bc97229" title="Configures underlying frame buffers for incoming frames.">Configure()</a></code> is not called, default settings will be used. Example usage from plugin code: </p>
<div class="fragment"><pre class="fragment"> int32_t attribs[] = {
<a class="code" href="group___enums.html#gga49cd0a65c15c8a91959310699afc36b7a82a5dbfcbfa8f78e80ccf2c5607bf327" title="The maximum number of frames to hold in the input buffer.">PP_MEDIASTREAMVIDEOTRACK_ATTRIB_BUFFERED_FRAMES</a>, 4,
<a class="code" href="group___enums.html#gga49cd0a65c15c8a91959310699afc36b7a0d5a46a7dbdfc72630e58159a4ac7c50" title="Attribute list terminator.">PP_MEDIASTREAMVIDEOTRACK_ATTRIB_NONE</a>};
track_if-&gt;Configure(track, attribs, callback);
</pre></div><dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">video_track</td><td>A <code>PP_Resource</code> corresponding to a video resource. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">attrib_list</td><td>A list of attribute name-value pairs in which each attribute is immediately followed by the corresponding desired value. The list is terminated by <code>PP_MEDIASTREAMVIDEOTRACK_ATTRIB_NONE</code>. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td><code><a class="el" href="struct_p_p___completion_callback.html" title="PP_CompletionCallback is a common mechanism for supporting potentially asynchronous calls in browser ...">PP_CompletionCallback</a></code> to be called upon completion of <code><a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a511bd529cecdee0573bd27d49bc97229" title="Configures underlying frame buffers for incoming frames.">Configure()</a></code>.</td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>An int32_t containing a result code from <code><a class="el" href="pp__errors_8h.html" title="This file defines an enumeration of all PPAPI error codes.">pp_errors.h</a></code>. Returns <code>PP_ERROR_INPROGRESS</code> if there is a pending call of <code><a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a511bd529cecdee0573bd27d49bc97229" title="Configures underlying frame buffers for incoming frames.">Configure()</a></code> or <code><a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a81a2f469f7311aaf784bfa8cb57e5a1a" title="Gets the next video frame from the MediaStream track.">GetFrame()</a></code>, or the plugin holds some frames which are not recycled with <code><a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a5f37a68d85311c2ae4ef229b411bb718" title="Recycles a frame returned by GetFrame(), so the track can reuse the underlying buffer of this frame...">RecycleFrame()</a></code>. If an error is returned, all attributes and the underlying buffer will not be changed. </dd></dl>
</div>
</div>
<a class="anchor" id="ae8c4dcff35a89de06875295ce6791f52"></a><!-- doxytag: member="PPB_MediaStreamVideoTrack::Create" ref="ae8c4dcff35a89de06875295ce6791f52" args=")(PP_Instance instance)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a>(* <a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#ae8c4dcff35a89de06875295ce6791f52">PPB_MediaStreamVideoTrack::Create</a>)(<a class="el" href="group___typedefs.html#ga89b662403e6a687bb914b80114c0d19d">PP_Instance</a> instance)</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Creates a PPB_MediaStreamVideoTrack resource for video output. </p>
<p>Call this when you will be creating frames and putting them to the track.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">instance</td><td>A <code>PP_Instance</code> identifying one instance of a module.</td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>A <code>PP_Resource</code> corresponding to a PPB_MediaStreamVideoTrack resource if successful, 0 if failed. </dd></dl>
</div>
</div>
<a class="anchor" id="a512c61d2da03d815abfc3d5eff3fb152"></a><!-- doxytag: member="PPB_MediaStreamVideoTrack::GetAttrib" ref="a512c61d2da03d815abfc3d5eff3fb152" args=")(PP_Resource video_track, PP_MediaStreamVideoTrack_Attrib attrib, int32_t *value)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int32_t(* <a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a512c61d2da03d815abfc3d5eff3fb152">PPB_MediaStreamVideoTrack::GetAttrib</a>)(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> video_track, <a class="el" href="group___enums.html#ga49cd0a65c15c8a91959310699afc36b7">PP_MediaStreamVideoTrack_Attrib</a> attrib, int32_t *value)</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets attribute value for a given attribute name. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">video_track</td><td>A <code>PP_Resource</code> corresponding to a video resource. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">attrib</td><td>A <code>PP_MediaStreamVideoTrack_Attrib</code> for querying. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">value</td><td>A int32_t for storing the attribute value on success. Otherwise, the value will not be changed.</td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>An int32_t containing a result code from <code><a class="el" href="pp__errors_8h.html" title="This file defines an enumeration of all PPAPI error codes.">pp_errors.h</a></code>. </dd></dl>
</div>
</div>
<a class="anchor" id="a3d5241dc22fa9cc03b96fb8f2e3c976e"></a><!-- doxytag: member="PPB_MediaStreamVideoTrack::GetEmptyFrame" ref="a3d5241dc22fa9cc03b96fb8f2e3c976e" args=")(PP_Resource video_track, PP_Resource *frame, struct PP_CompletionCallback callback)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int32_t(* <a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a3d5241dc22fa9cc03b96fb8f2e3c976e">PPB_MediaStreamVideoTrack::GetEmptyFrame</a>)(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> video_track, <a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> *frame, struct <a class="el" href="struct_p_p___completion_callback.html">PP_CompletionCallback</a> callback)</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets a free frame for output. </p>
<p>The frame is allocated by <code><a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a511bd529cecdee0573bd27d49bc97229" title="Configures underlying frame buffers for incoming frames.">Configure()</a></code>. The caller should fill it with frame data, and then use |PutFrame()| to send the frame back. </p>
</div>
</div>
<a class="anchor" id="a81a2f469f7311aaf784bfa8cb57e5a1a"></a><!-- doxytag: member="PPB_MediaStreamVideoTrack::GetFrame" ref="a81a2f469f7311aaf784bfa8cb57e5a1a" args=")(PP_Resource video_track, PP_Resource *frame, struct PP_CompletionCallback callback)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int32_t(* <a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a81a2f469f7311aaf784bfa8cb57e5a1a">PPB_MediaStreamVideoTrack::GetFrame</a>)(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> video_track, <a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> *frame, struct <a class="el" href="struct_p_p___completion_callback.html">PP_CompletionCallback</a> callback)</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Gets the next video frame from the MediaStream track. </p>
<p>If internal processing is slower than the incoming frame rate, new frames will be dropped from the incoming stream. Once the input buffer is full, frames will be dropped until <code><a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a5f37a68d85311c2ae4ef229b411bb718" title="Recycles a frame returned by GetFrame(), so the track can reuse the underlying buffer of this frame...">RecycleFrame()</a></code> is called to free a spot for another frame to be buffered. If there are no frames in the input buffer, <code>PP_OK_COMPLETIONPENDING</code> will be returned immediately and the <code>callback</code> will be called when a new frame is received or an error happens.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">video_track</td><td>A <code>PP_Resource</code> corresponding to a video resource. </td></tr>
<tr><td class="paramdir">[out]</td><td class="paramname">frame</td><td>A <code>PP_Resource</code> corresponding to a VideoFrame resource. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">callback</td><td>A <code><a class="el" href="struct_p_p___completion_callback.html" title="PP_CompletionCallback is a common mechanism for supporting potentially asynchronous calls in browser ...">PP_CompletionCallback</a></code> to be called upon completion of <a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a81a2f469f7311aaf784bfa8cb57e5a1a" title="Gets the next video frame from the MediaStream track.">GetFrame()</a>.</td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>An int32_t containing a result code from <code><a class="el" href="pp__errors_8h.html" title="This file defines an enumeration of all PPAPI error codes.">pp_errors.h</a></code>. Returns PP_ERROR_NOMEMORY if <code>max_buffered_frames</code> frames buffer was not allocated successfully. </dd></dl>
</div>
</div>
<a class="anchor" id="a5ea1040a0248265660173d334009ea4e"></a><!-- doxytag: member="PPB_MediaStreamVideoTrack::GetId" ref="a5ea1040a0248265660173d334009ea4e" args=")(PP_Resource video_track)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">struct <a class="el" href="struct_p_p___var.html">PP_Var</a>(* <a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a5ea1040a0248265660173d334009ea4e">PPB_MediaStreamVideoTrack::GetId</a>)(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> video_track)<code> [read]</code></td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Returns the track ID of the underlying MediaStream video track. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">video_track</td><td>The <code>PP_Resource</code> to check.</td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>A <code><a class="el" href="struct_p_p___var.html" title="The PP_VAR struct is a variant data type and can contain any value of one of the types named in the P...">PP_Var</a></code> containing the MediaStream track ID as a string. </dd></dl>
</div>
</div>
<a class="anchor" id="a1b5e00cfe17f935bedefc9fc32f43bdd"></a><!-- doxytag: member="PPB_MediaStreamVideoTrack::HasEnded" ref="a1b5e00cfe17f935bedefc9fc32f43bdd" args=")(PP_Resource video_track)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group___enums.html#ga4f272d99be14aacafe08dfd4ef830918">PP_Bool</a>(* <a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a1b5e00cfe17f935bedefc9fc32f43bdd">PPB_MediaStreamVideoTrack::HasEnded</a>)(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> video_track)</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Checks whether the underlying MediaStream track has ended. </p>
<p>Calls to GetFrame while the track has ended are safe to make and will complete, but will fail.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">video_track</td><td>The <code>PP_Resource</code> to check.</td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>A <code>PP_Bool</code> with <code>PP_TRUE</code> if the given MediaStream track has ended or <code>PP_FALSE</code> otherwise. </dd></dl>
</div>
</div>
<a class="anchor" id="a145d621225b6d7e1501d862823c94380"></a><!-- doxytag: member="PPB_MediaStreamVideoTrack::IsMediaStreamVideoTrack" ref="a145d621225b6d7e1501d862823c94380" args=")(PP_Resource resource)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="group___enums.html#ga4f272d99be14aacafe08dfd4ef830918">PP_Bool</a>(* <a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a145d621225b6d7e1501d862823c94380">PPB_MediaStreamVideoTrack::IsMediaStreamVideoTrack</a>)(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> resource)</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Determines if a resource is a MediaStream video track resource. </p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">resource</td><td>The <code>PP_Resource</code> to test.</td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>A <code>PP_Bool</code> with <code>PP_TRUE</code> if the given resource is a Mediastream video track resource or <code>PP_FALSE</code> otherwise. </dd></dl>
</div>
</div>
<a class="anchor" id="ab3bbbc3074a6198d696521351608313f"></a><!-- doxytag: member="PPB_MediaStreamVideoTrack::PutFrame" ref="ab3bbbc3074a6198d696521351608313f" args=")(PP_Resource video_track, PP_Resource frame)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int32_t(* <a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#ab3bbbc3074a6198d696521351608313f">PPB_MediaStreamVideoTrack::PutFrame</a>)(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> video_track, <a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> frame)</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Sends a frame returned by |GetEmptyFrame()| to the output track. </p>
<p>After this function, the |frame| should not be used anymore and the caller should release the reference that it holds. </p>
</div>
</div>
<a class="anchor" id="a5f37a68d85311c2ae4ef229b411bb718"></a><!-- doxytag: member="PPB_MediaStreamVideoTrack::RecycleFrame" ref="a5f37a68d85311c2ae4ef229b411bb718" args=")(PP_Resource video_track, PP_Resource frame)" -->
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">int32_t(* <a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a5f37a68d85311c2ae4ef229b411bb718">PPB_MediaStreamVideoTrack::RecycleFrame</a>)(<a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> video_track, <a class="el" href="group___typedefs.html#gafdc3895ee80f4750d0d95ae1b677e9b7">PP_Resource</a> frame)</td>
</tr>
</table>
</div>
<div class="memdoc">
<p>Recycles a frame returned by <code><a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a81a2f469f7311aaf784bfa8cb57e5a1a" title="Gets the next video frame from the MediaStream track.">GetFrame()</a></code>, so the track can reuse the underlying buffer of this frame. </p>
<p>And the frame will become invalid. The caller should release all references it holds to <code>frame</code> and not use it anymore.</p>
<dl class="params"><dt><b>Parameters:</b></dt><dd>
<table class="params">
<tr><td class="paramdir">[in]</td><td class="paramname">video_track</td><td>A <code>PP_Resource</code> corresponding to a video resource. </td></tr>
<tr><td class="paramdir">[in]</td><td class="paramname">frame</td><td>A <code>PP_Resource</code> corresponding to a VideoFrame resource returned by <code><a class="el" href="struct_p_p_b___media_stream_video_track__1__0.html#a81a2f469f7311aaf784bfa8cb57e5a1a" title="Gets the next video frame from the MediaStream track.">GetFrame()</a></code>.</td></tr>
</table>
</dd>
</dl>
<dl class="return"><dt><b>Returns:</b></dt><dd>An int32_t containing a result code from <code><a class="el" href="pp__errors_8h.html" title="This file defines an enumeration of all PPAPI error codes.">pp_errors.h</a></code>. </dd></dl>
</div>
</div>
<hr />The documentation for this struct was generated from the following file:<ul>
<li><a class="el" href="ppb__media__stream__video__track_8h.html">ppb_media_stream_video_track.h</a></li>
</ul>
</div><!-- contents -->
</div>
{{/partials.standard_nacl_api}}