Home | History | Annotate | Download | only in pvplayer_html
      1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
      2 <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
      3 <title>PVPlayerInterface class Reference</title>
      4 <link href="doxygen.css" rel="stylesheet" type="text/css">
      5 </head><body>
      6 <!-- Generated by Doxygen 1.2.18 -->
      7 <center>
      8 <a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="annotated.html">Data Structures</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Data Fields</a> &nbsp; </center>
      9 <hr><h1>PVPlayerInterface Class Reference</h1><code>#include &lt;<a class="el" href="pv__player__interface_8h-source.html">pv_player_interface.h</a>&gt;</code>
     10 <p>
     11 <table border=0 cellpadding=0 cellspacing=0>
     12 <tr><td></td></tr>
     13 <tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
     14 <tr><td nowrap align=right valign=top>virtual&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a0">~PVPlayerInterface</a> ()</td></tr>
     15 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a1">GetSDKModuleInfo</a> (PVSDKModuleInfo &amp;aSDKModuleInfo, const OsclAny *aContextData=NULL)=0</td></tr>
     16 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a2">SetLogAppender</a> (const char *aTag, OsclSharedPtr&lt; PVLoggerAppender &gt; &amp;aAppender, const OsclAny *aContextData=NULL)=0</td></tr>
     17 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a3">RemoveLogAppender</a> (const char *aTag, OsclSharedPtr&lt; PVLoggerAppender &gt; &amp;aAppender, const OsclAny *aContextData=NULL)=0</td></tr>
     18 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a4">SetLogLevel</a> (const char *aTag, int32 aLevel, bool aSetSubtree=false, const OsclAny *aContextData=NULL)=0</td></tr>
     19 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a5">GetLogLevel</a> (const char *aTag, PVLogLevelInfo &amp;aLogInfo, const OsclAny *aContextData=NULL)=0</td></tr>
     20 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a6">QueryUUID</a> (const PvmfMimeString &amp;aMimeType, Oscl_Vector&lt; PVUuid, OsclMemAllocator &gt; &amp;aUuids, bool aExactUuidsOnly=false, const OsclAny *aContextData=NULL)=0</td></tr>
     21 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a7">QueryInterface</a> (const PVUuid &amp;aUuid, PVInterface *&amp;aInterfacePtr, const OsclAny *aContextData=NULL)=0</td></tr>
     22 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a8">CancelCommand</a> (PVCommandId aCancelCmdId, const OsclAny *aContextData=NULL)=0</td></tr>
     23 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a9">CancelAllCommands</a> (const OsclAny *aContextData=NULL)=0</td></tr>
     24 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a10">GetPVPlayerState</a> (PVPlayerState &amp;aState, const OsclAny *aContextData=NULL)=0</td></tr>
     25 <tr><td nowrap align=right valign=top>virtual PVMFStatus&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a11">GetPVPlayerStateSync</a> (PVPlayerState &amp;aState)=0</td></tr>
     26 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a12">AddDataSource</a> (PVPlayerDataSource &amp;aDataSource, const OsclAny *aContextData=NULL)=0</td></tr>
     27 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a13">Init</a> (const OsclAny *aContextData=NULL)=0</td></tr>
     28 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a14">GetMetadataKeys</a> (PVPMetadataList &amp;aKeyList, int32 aStartingIndex=0, int32 aMaxEntries=-1, char *aQueryKey=NULL, const OsclAny *aContextData=NULL)=0</td></tr>
     29 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a15">GetMetadataValues</a> (PVPMetadataList &amp;aKeyList, int32 aStartingValueIndex, int32 aMaxValueEntries, int32 &amp;aNumAvailableValueEntries, Oscl_Vector&lt; PvmiKvp, OsclMemAllocator &gt; &amp;aValueList, const OsclAny *aContextData=NULL, bool aMetadataValuesCopiedInCallBack=true)=0</td></tr>
     30 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a16">ReleaseMetadataValues</a> (Oscl_Vector&lt; PvmiKvp, OsclMemAllocator &gt; &amp;aValueList, const OsclAny *aContextData=NULL)=0</td></tr>
     31 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a17">AddDataSink</a> (PVPlayerDataSink &amp;aDataSink, const OsclAny *aContextData=NULL)=0</td></tr>
     32 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a18">SetPlaybackRange</a> (PVPPlaybackPosition aBeginPos, PVPPlaybackPosition aEndPos, bool aQueueRange, const OsclAny *aContextData=NULL)=0</td></tr>
     33 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a19">GetPlaybackRange</a> (PVPPlaybackPosition &amp;aBeginPos, PVPPlaybackPosition &amp;aEndPos, bool aQueued, const OsclAny *aContextData=NULL)=0</td></tr>
     34 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a20">GetCurrentPosition</a> (PVPPlaybackPosition &amp;aPos, const OsclAny *aContextData=NULL)=0</td></tr>
     35 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a21">SetPlaybackRate</a> (int32 aRate, PVMFTimebase *aTimebase=NULL, const OsclAny *aContextData=NULL)=0</td></tr>
     36 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a22">GetPlaybackRate</a> (int32 &amp;aRate, PVMFTimebase *&amp;aTimebase, const OsclAny *aContextData=NULL)=0</td></tr>
     37 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a23">GetPlaybackMinMaxRate</a> (int32 &amp;aMinRate, int32 &amp;aMaxRate, const OsclAny *aContextData=NULL)=0</td></tr>
     38 <tr><td nowrap align=right valign=top>virtual PVMFStatus&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a24">GetCurrentPositionSync</a> (PVPPlaybackPosition &amp;aPos)=0</td></tr>
     39 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a25">Prepare</a> (const OsclAny *aContextData=NULL)=0</td></tr>
     40 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a26">Start</a> (const OsclAny *aContextData=NULL)=0</td></tr>
     41 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a27">Pause</a> (const OsclAny *aContextData=NULL)=0</td></tr>
     42 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a28">Resume</a> (const OsclAny *aContextData=NULL)=0</td></tr>
     43 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a29">Stop</a> (const OsclAny *aContextData=NULL)=0</td></tr>
     44 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a30">RemoveDataSink</a> (PVPlayerDataSink &amp;aDataSink, const OsclAny *aContextData=NULL)=0</td></tr>
     45 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a31">Reset</a> (const OsclAny *aContextData=NULL)=0</td></tr>
     46 <tr><td nowrap align=right valign=top>virtual PVCommandId&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#a32">RemoveDataSource</a> (PVPlayerDataSource &amp;aDataSource, const OsclAny *aContextData=NULL)=0</td></tr>
     47 <tr><td colspan=2><br><h2>Static Public Methods</h2></td></tr>
     48 <tr><td nowrap align=right valign=top>OSCL_IMPORT_REF void&nbsp;</td><td valign=bottom><a class="el" href="classPVPlayerInterface.html#d0">GetSDKInfo</a> (PVSDKInfo &amp;aSDKInfo)</td></tr>
     49 </table>
     50 <hr><a name="_details"></a><h2>Detailed Description</h2>
     51 PVPlayerInterface is the interface to the pvPlayer SDK, which allows control of a multimedia playback engine. The PVPlayerFactory factory class is to be used to create and delete instances of this object 
     52 <p>
     53 <hr><h2>Constructor &amp; Destructor Documentation</h2>
     54 <a name="a0" doxytag="PVPlayerInterface::~PVPlayerInterface"></a><p>
     55 <table width="100%" cellpadding="2" cellspacing="0" border="0">
     56   <tr>
     57     <td class="md">
     58       <table cellpadding="0" cellspacing="0" border="0">
     59         <tr>
     60           <td class="md" nowrap valign="top"> virtual PVPlayerInterface::~PVPlayerInterface </td>
     61           <td class="md" valign="top">(&nbsp;</td>
     62           <td class="mdname1" valign="top" nowrap>&nbsp;          </td>
     63           <td class="md" valign="top">)&nbsp;</td>
     64           <td class="md" nowrap><code> [inline, virtual]</code></td>
     65         </tr>
     66 
     67       </table>
     68     </td>
     69   </tr>
     70 </table>
     71 <table cellspacing=5 cellpadding=0 border=0>
     72   <tr>
     73     <td>
     74       &nbsp;
     75     </td>
     76     <td>
     77 
     78 <p>
     79 Object destructor function Releases all resources prior to destruction     </td>
     80   </tr>
     81 </table>
     82 <hr><h2>Member Function Documentation</h2>
     83 <a name="a17" doxytag="PVPlayerInterface::AddDataSink"></a><p>
     84 <table width="100%" cellpadding="2" cellspacing="0" border="0">
     85   <tr>
     86     <td class="md">
     87       <table cellpadding="0" cellspacing="0" border="0">
     88         <tr>
     89           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::AddDataSink </td>
     90           <td class="md" valign="top">(&nbsp;</td>
     91           <td class="md" nowrap valign="top">PVPlayerDataSink &amp;&nbsp;</td>
     92           <td class="mdname" nowrap>&nbsp; <em>aDataSink</em>, </td>
     93         </tr>
     94         <tr>
     95           <td></td>
     96           <td></td>
     97           <td class="md" nowrap>const OsclAny *&nbsp;</td>
     98           <td class="mdname" nowrap>&nbsp; <em>aContextData</em> = NULL</td>
     99         </tr>
    100         <tr>
    101           <td></td>
    102           <td class="md">)&nbsp;</td>
    103           <td class="md" colspan="2"><code> [pure virtual]</code></td>
    104         </tr>
    105 
    106       </table>
    107     </td>
    108   </tr>
    109 </table>
    110 <table cellspacing=5 cellpadding=0 border=0>
    111   <tr>
    112     <td>
    113       &nbsp;
    114     </td>
    115     <td>
    116 
    117 <p>
    118 This function allows a player data sink to be specified for playback. This function must be called when pvPlayer is in PVP_STATE_INITIALIZED state. The specified data sink must be a valid PVPlayerDataSink to be accepted for use in playback. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
    119 <table border=0 cellspacing=2 cellpadding=0>
    120 <tr><td valign=top><em>aDataSink</em>&nbsp;</td><td>
    121 The player data sink to be used for playback. </td></tr>
    122 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
    123 Optional opaque data that will be passed back to the user with the command response @leave This method can leave with one of the following error codes OsclErrNotSupported if the format of the sink is incompatible with what the SDK can handle OsclErrInvalidState if invoked in the incorrect state OsclErrNoMemory if the SDK failed to allocate memory during this operation </td></tr>
    124 </table>
    125 </dl><dl compact><dt><b>Returns: </b></dt><dd>
    126 A unique command id for asynchronous completion </dl>    </td>
    127   </tr>
    128 </table>
    129 <a name="a12" doxytag="PVPlayerInterface::AddDataSource"></a><p>
    130 <table width="100%" cellpadding="2" cellspacing="0" border="0">
    131   <tr>
    132     <td class="md">
    133       <table cellpadding="0" cellspacing="0" border="0">
    134         <tr>
    135           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::AddDataSource </td>
    136           <td class="md" valign="top">(&nbsp;</td>
    137           <td class="md" nowrap valign="top">PVPlayerDataSource &amp;&nbsp;</td>
    138           <td class="mdname" nowrap>&nbsp; <em>aDataSource</em>, </td>
    139         </tr>
    140         <tr>
    141           <td></td>
    142           <td></td>
    143           <td class="md" nowrap>const OsclAny *&nbsp;</td>
    144           <td class="mdname" nowrap>&nbsp; <em>aContextData</em> = NULL</td>
    145         </tr>
    146         <tr>
    147           <td></td>
    148           <td class="md">)&nbsp;</td>
    149           <td class="md" colspan="2"><code> [pure virtual]</code></td>
    150         </tr>
    151 
    152       </table>
    153     </td>
    154   </tr>
    155 </table>
    156 <table cellspacing=5 cellpadding=0 border=0>
    157   <tr>
    158     <td>
    159       &nbsp;
    160     </td>
    161     <td>
    162 
    163 <p>
    164 This function allows a player data source to be specified for playback. This function must be called when pvPlayer is in PVP_STATE_IDLE state and before calling Init. The specified data source must be a valid PVPlayerDataSource to be accepted for use in playback. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
    165 <table border=0 cellspacing=2 cellpadding=0>
    166 <tr><td valign=top><em>aDataSource</em>&nbsp;</td><td>
    167 Reference to the player data source to be used for playback </td></tr>
    168 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
    169 Optional opaque data that will be passed back to the user with the command response @leave This method can leave with one of the following error codes OsclErrNotSupported if the format of the source is incompatible with what the SDK can handle OsclErrInvalidState if invoked in the incorrect state OsclErrNoMemory if the SDK failed to allocate memory during this operation </td></tr>
    170 </table>
    171 </dl><dl compact><dt><b>Returns: </b></dt><dd>
    172 A unique command id for asynchronous completion </dl>    </td>
    173   </tr>
    174 </table>
    175 <a name="a9" doxytag="PVPlayerInterface::CancelAllCommands"></a><p>
    176 <table width="100%" cellpadding="2" cellspacing="0" border="0">
    177   <tr>
    178     <td class="md">
    179       <table cellpadding="0" cellspacing="0" border="0">
    180         <tr>
    181           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::CancelAllCommands </td>
    182           <td class="md" valign="top">(&nbsp;</td>
    183           <td class="md" nowrap valign="top">const OsclAny *&nbsp;</td>
    184           <td class="mdname1" valign="top" nowrap>&nbsp; <em>aContextData</em> = NULL          </td>
    185           <td class="md" valign="top">)&nbsp;</td>
    186           <td class="md" nowrap><code> [pure virtual]</code></td>
    187         </tr>
    188 
    189       </table>
    190     </td>
    191   </tr>
    192 </table>
    193 <table cellspacing=5 cellpadding=0 border=0>
    194   <tr>
    195     <td>
    196       &nbsp;
    197     </td>
    198     <td>
    199 
    200 <p>
    201 This API is to allow the user to cancel all pending requests in pvPlayer. The current request being processed, if any, will also be aborted. The user of PV-SDK should get the state of PVPlayer Engine after the command completes and before issuing any other command. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
    202 <table border=0 cellspacing=2 cellpadding=0>
    203 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
    204 Optional opaque data that will be passed back to the user with the command response </td></tr>
    205 </table>
    206 </dl><dl compact><dt><b>Returns: </b></dt><dd>
    207 A unique command id for asynchronous completion </dl>    </td>
    208   </tr>
    209 </table>
    210 <a name="a8" doxytag="PVPlayerInterface::CancelCommand"></a><p>
    211 <table width="100%" cellpadding="2" cellspacing="0" border="0">
    212   <tr>
    213     <td class="md">
    214       <table cellpadding="0" cellspacing="0" border="0">
    215         <tr>
    216           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::CancelCommand </td>
    217           <td class="md" valign="top">(&nbsp;</td>
    218           <td class="md" nowrap valign="top">PVCommandId&nbsp;</td>
    219           <td class="mdname" nowrap>&nbsp; <em>aCancelCmdId</em>, </td>
    220         </tr>
    221         <tr>
    222           <td></td>
    223           <td></td>
    224           <td class="md" nowrap>const OsclAny *&nbsp;</td>
    225           <td class="mdname" nowrap>&nbsp; <em>aContextData</em> = NULL</td>
    226         </tr>
    227         <tr>
    228           <td></td>
    229           <td class="md">)&nbsp;</td>
    230           <td class="md" colspan="2"><code> [pure virtual]</code></td>
    231         </tr>
    232 
    233       </table>
    234     </td>
    235   </tr>
    236 </table>
    237 <table cellspacing=5 cellpadding=0 border=0>
    238   <tr>
    239     <td>
    240       &nbsp;
    241     </td>
    242     <td>
    243 
    244 <p>
    245 This API is to allow user of the SDK to cancel any specific command which is pending on pvPlayer. If the request is to cancel a command which still has to be processed pvPlayer will just remove the command from its queue of commands to be processed. If the request is to cancel a command that is ongoing then player will attempt to interrupt the ongoing command. The state of player after a cancel can vary. So the user of pvPlayerSDK must always query for state before issuing any subsequent commands. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
    246 <table border=0 cellspacing=2 cellpadding=0>
    247 <tr><td valign=top><em>aCancelCmdId</em>&nbsp;</td><td>
    248 Command Id to be cancelled. </td></tr>
    249 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
    250 Optional opaque data that will be passed back to the user with the command response </td></tr>
    251 </table>
    252 </dl><dl compact><dt><b>Returns: </b></dt><dd>
    253 A unique command id for asynchronous completion </dl>    </td>
    254   </tr>
    255 </table>
    256 <a name="a20" doxytag="PVPlayerInterface::GetCurrentPosition"></a><p>
    257 <table width="100%" cellpadding="2" cellspacing="0" border="0">
    258   <tr>
    259     <td class="md">
    260       <table cellpadding="0" cellspacing="0" border="0">
    261         <tr>
    262           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::GetCurrentPosition </td>
    263           <td class="md" valign="top">(&nbsp;</td>
    264           <td class="md" nowrap valign="top">PVPPlaybackPosition &amp;&nbsp;</td>
    265           <td class="mdname" nowrap>&nbsp; <em>aPos</em>, </td>
    266         </tr>
    267         <tr>
    268           <td></td>
    269           <td></td>
    270           <td class="md" nowrap>const OsclAny *&nbsp;</td>
    271           <td class="mdname" nowrap>&nbsp; <em>aContextData</em> = NULL</td>
    272         </tr>
    273         <tr>
    274           <td></td>
    275           <td class="md">)&nbsp;</td>
    276           <td class="md" colspan="2"><code> [pure virtual]</code></td>
    277         </tr>
    278 
    279       </table>
    280     </td>
    281   </tr>
    282 </table>
    283 <table cellspacing=5 cellpadding=0 border=0>
    284   <tr>
    285     <td>
    286       &nbsp;
    287     </td>
    288     <td>
    289 
    290 <p>
    291 This function allows querying of the current playback position. The playback position units will be in the one specified by the passed-in reference to PVPPlaybackPosition. If no units are specified, the units will default to milliseconds. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
    292 <table border=0 cellspacing=2 cellpadding=0>
    293 <tr><td valign=top><em>aPos</em>&nbsp;</td><td>
    294 Reference to place the current playback position </td></tr>
    295 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
    296 Optional opaque data that will be passed back to the user with the command response @leave This method can leave with one of the following error codes OsclErrInvalidState if invoked in the incorrect state </td></tr>
    297 </table>
    298 </dl><dl compact><dt><b>Returns: </b></dt><dd>
    299 A unique command id for asynchronous completion </dl>    </td>
    300   </tr>
    301 </table>
    302 <a name="a24" doxytag="PVPlayerInterface::GetCurrentPositionSync"></a><p>
    303 <table width="100%" cellpadding="2" cellspacing="0" border="0">
    304   <tr>
    305     <td class="md">
    306       <table cellpadding="0" cellspacing="0" border="0">
    307         <tr>
    308           <td class="md" nowrap valign="top"> virtual PVMFStatus PVPlayerInterface::GetCurrentPositionSync </td>
    309           <td class="md" valign="top">(&nbsp;</td>
    310           <td class="md" nowrap valign="top">PVPPlaybackPosition &amp;&nbsp;</td>
    311           <td class="mdname1" valign="top" nowrap>&nbsp; <em>aPos</em>          </td>
    312           <td class="md" valign="top">)&nbsp;</td>
    313           <td class="md" nowrap><code> [pure virtual]</code></td>
    314         </tr>
    315 
    316       </table>
    317     </td>
    318   </tr>
    319 </table>
    320 <table cellspacing=5 cellpadding=0 border=0>
    321   <tr>
    322     <td>
    323       &nbsp;
    324     </td>
    325     <td>
    326 
    327 <p>
    328 This function allows querying of the current playback position as a synchronous command. The playback position units will be in the one specified by the passed-in reference to PVPPlaybackPosition. If no units are specified, the units will default to milliseconds.<dl compact><dt><b>Parameters: </b></dt><dd>
    329 <table border=0 cellspacing=2 cellpadding=0>
    330 <tr><td valign=top><em>aPos</em>&nbsp;</td><td>
    331 Reference to place the current playback position @leave This method can leave with one of the following error codes OsclErrInvalidState if invoked in the incorrect state </td></tr>
    332 </table>
    333 </dl><dl compact><dt><b>Returns: </b></dt><dd>
    334 Status indicating whether the command succeeded or not. </dl>    </td>
    335   </tr>
    336 </table>
    337 <a name="a5" doxytag="PVPlayerInterface::GetLogLevel"></a><p>
    338 <table width="100%" cellpadding="2" cellspacing="0" border="0">
    339   <tr>
    340     <td class="md">
    341       <table cellpadding="0" cellspacing="0" border="0">
    342         <tr>
    343           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::GetLogLevel </td>
    344           <td class="md" valign="top">(&nbsp;</td>
    345           <td class="md" nowrap valign="top">const char *&nbsp;</td>
    346           <td class="mdname" nowrap>&nbsp; <em>aTag</em>, </td>
    347         </tr>
    348         <tr>
    349           <td></td>
    350           <td></td>
    351           <td class="md" nowrap>PVLogLevelInfo &amp;&nbsp;</td>
    352           <td class="mdname" nowrap>&nbsp; <em>aLogInfo</em>, </td>
    353         </tr>
    354         <tr>
    355           <td></td>
    356           <td></td>
    357           <td class="md" nowrap>const OsclAny *&nbsp;</td>
    358           <td class="mdname" nowrap>&nbsp; <em>aContextData</em> = NULL</td>
    359         </tr>
    360         <tr>
    361           <td></td>
    362           <td class="md">)&nbsp;</td>
    363           <td class="md" colspan="2"><code> [pure virtual]</code></td>
    364         </tr>
    365 
    366       </table>
    367     </td>
    368   </tr>
    369 </table>
    370 <table cellspacing=5 cellpadding=0 border=0>
    371   <tr>
    372     <td>
    373       &nbsp;
    374     </td>
    375     <td>
    376 
    377 <p>
    378 Allows the logging level to be queried for a particular logging tag. A larger log level will result in more messages being logged. In the asynchronous response, this should return the log level along with an indication of where the level was inherited (i.e., the ancestor tag). This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
    379 <table border=0 cellspacing=2 cellpadding=0>
    380 <tr><td valign=top><em>aTag</em>&nbsp;</td><td>
    381 Specifies the logger tree tag where the log level should be retrieved. </td></tr>
    382 <tr><td valign=top><em>aLogInfo</em>&nbsp;</td><td>
    383 An output parameter which will be filled in with the log level information. </td></tr>
    384 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
    385 Optional opaque data that will be passed back to the user with the command response </td></tr>
    386 </table>
    387 </dl><dl compact><dt><b>Exceptions: </b></dt><dd>
    388 <table border=0 cellspacing=2 cellpadding=0>
    389 <tr><td valign=top><em>This</em>&nbsp;</td><td>
    390  method can leave with one of the following error codes OsclErrNoMemory if the SDK failed to allocate memory during this operation </td></tr>
    391 </table>
    392 </dl><dl compact><dt><b>Returns: </b></dt><dd>
    393 A unique command ID for asynchronous completion </dl>    </td>
    394   </tr>
    395 </table>
    396 <a name="a14" doxytag="PVPlayerInterface::GetMetadataKeys"></a><p>
    397 <table width="100%" cellpadding="2" cellspacing="0" border="0">
    398   <tr>
    399     <td class="md">
    400       <table cellpadding="0" cellspacing="0" border="0">
    401         <tr>
    402           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::GetMetadataKeys </td>
    403           <td class="md" valign="top">(&nbsp;</td>
    404           <td class="md" nowrap valign="top">PVPMetadataList &amp;&nbsp;</td>
    405           <td class="mdname" nowrap>&nbsp; <em>aKeyList</em>, </td>
    406         </tr>
    407         <tr>
    408           <td></td>
    409           <td></td>
    410           <td class="md" nowrap>int32&nbsp;</td>
    411           <td class="mdname" nowrap>&nbsp; <em>aStartingIndex</em> = 0, </td>
    412         </tr>
    413         <tr>
    414           <td></td>
    415           <td></td>
    416           <td class="md" nowrap>int32&nbsp;</td>
    417           <td class="mdname" nowrap>&nbsp; <em>aMaxEntries</em> = -1, </td>
    418         </tr>
    419         <tr>
    420           <td></td>
    421           <td></td>
    422           <td class="md" nowrap>char *&nbsp;</td>
    423           <td class="mdname" nowrap>&nbsp; <em>aQueryKey</em> = NULL, </td>
    424         </tr>
    425         <tr>
    426           <td></td>
    427           <td></td>
    428           <td class="md" nowrap>const OsclAny *&nbsp;</td>
    429           <td class="mdname" nowrap>&nbsp; <em>aContextData</em> = NULL</td>
    430         </tr>
    431         <tr>
    432           <td></td>
    433           <td class="md">)&nbsp;</td>
    434           <td class="md" colspan="2"><code> [pure virtual]</code></td>
    435         </tr>
    436 
    437       </table>
    438     </td>
    439   </tr>
    440 </table>
    441 <table cellspacing=5 cellpadding=0 border=0>
    442   <tr>
    443     <td>
    444       &nbsp;
    445     </td>
    446     <td>
    447 
    448 <p>
    449 This function makes a request to return the list of all or segment of available metadata keys in the current pvPlayer state. The metadata key list is dynamic and can change during the course of pvPlayer usage. The list can be used to retrieve the metadata values with GetMetadataValues function. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
    450 <table border=0 cellspacing=2 cellpadding=0>
    451 <tr><td valign=top><em>aKeyList</em>&nbsp;</td><td>
    452 Reference to a vector to place the metadata key list. </td></tr>
    453 <tr><td valign=top><em>aStartingIndex</em>&nbsp;</td><td>
    454 Input parameter to specify the starting index for aKeyList. This parameter along with aMaxEntries allows us to retrieve the metadata key list in segments. </td></tr>
    455 <tr><td valign=top><em>aMaxEntries</em>&nbsp;</td><td>
    456 Input parameter to specify the maximum number of entries to be added to aKeyList. If there is no limit, set to -1. </td></tr>
    457 <tr><td valign=top><em>aQueryKey</em>&nbsp;</td><td>
    458 Input parameter to narrow down the list of requested keys. For example, "track-info/video" indicates all keys related to "track-info/video". for eg: "track-info/video/width" "track-info/video/height". A NULL value indicates that all keys are requested. </td></tr>
    459 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
    460 Optional opaque data that will be passed back to the user with the command response @leave This method can leave with one of the following error codes OsclErrInvalidState if invoked in the incorrect state OsclErrNoMemory if the SDK failed to allocate memory during this operation </td></tr>
    461 </table>
    462 </dl><dl compact><dt><b>Returns: </b></dt><dd>
    463 A unique command id for asynchronous completion </dl>    </td>
    464   </tr>
    465 </table>
    466 <a name="a15" doxytag="PVPlayerInterface::GetMetadataValues"></a><p>
    467 <table width="100%" cellpadding="2" cellspacing="0" border="0">
    468   <tr>
    469     <td class="md">
    470       <table cellpadding="0" cellspacing="0" border="0">
    471         <tr>
    472           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::GetMetadataValues </td>
    473           <td class="md" valign="top">(&nbsp;</td>
    474           <td class="md" nowrap valign="top">PVPMetadataList &amp;&nbsp;</td>
    475           <td class="mdname" nowrap>&nbsp; <em>aKeyList</em>, </td>
    476         </tr>
    477         <tr>
    478           <td></td>
    479           <td></td>
    480           <td class="md" nowrap>int32&nbsp;</td>
    481           <td class="mdname" nowrap>&nbsp; <em>aStartingValueIndex</em>, </td>
    482         </tr>
    483         <tr>
    484           <td></td>
    485           <td></td>
    486           <td class="md" nowrap>int32&nbsp;</td>
    487           <td class="mdname" nowrap>&nbsp; <em>aMaxValueEntries</em>, </td>
    488         </tr>
    489         <tr>
    490           <td></td>
    491           <td></td>
    492           <td class="md" nowrap>int32 &amp;&nbsp;</td>
    493           <td class="mdname" nowrap>&nbsp; <em>aNumAvailableValueEntries</em>, </td>
    494         </tr>
    495         <tr>
    496           <td></td>
    497           <td></td>
    498           <td class="md" nowrap>Oscl_Vector&lt; PvmiKvp, OsclMemAllocator &gt; &amp;&nbsp;</td>
    499           <td class="mdname" nowrap>&nbsp; <em>aValueList</em>, </td>
    500         </tr>
    501         <tr>
    502           <td></td>
    503           <td></td>
    504           <td class="md" nowrap>const OsclAny *&nbsp;</td>
    505           <td class="mdname" nowrap>&nbsp; <em>aContextData</em> = NULL, </td>
    506         </tr>
    507         <tr>
    508           <td></td>
    509           <td></td>
    510           <td class="md" nowrap>bool&nbsp;</td>
    511           <td class="mdname" nowrap>&nbsp; <em>aMetadataValuesCopiedInCallBack</em> = true</td>
    512         </tr>
    513         <tr>
    514           <td></td>
    515           <td class="md">)&nbsp;</td>
    516           <td class="md" colspan="2"><code> [pure virtual]</code></td>
    517         </tr>
    518 
    519       </table>
    520     </td>
    521   </tr>
    522 </table>
    523 <table cellspacing=5 cellpadding=0 border=0>
    524   <tr>
    525     <td>
    526       &nbsp;
    527     </td>
    528     <td>
    529 
    530 <p>
    531 The function makes a request to return the metadata value(s) specified by the passed in metadata key list. If the requeted metadata value is unavailable or the metadata key is invalid, the returned list will not contain a KVP entry for the key. Note that value indexed in the returned aValueList does not necessary match the same index into the specified aKeyList since this command can return none or more than one KVP for a specified key. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
    532 <table border=0 cellspacing=2 cellpadding=0>
    533 <tr><td valign=top><em>aKeyList</em>&nbsp;</td><td>
    534 Reference to a list of metadata keys for which metadata values are requested. </td></tr>
    535 <tr><td valign=top><em>aStartingValueIndex</em>&nbsp;</td><td>
    536 The starting index refers to the an index into the whole value list specified by the keys in aKeyList. This command would populate the aValueList starting from the specified index. </td></tr>
    537 <tr><td valign=top><em>aMaxValueEntries</em>&nbsp;</td><td>
    538 Input parameter to specify the maximum number of entries to be added to aValueList. If there is no limit, set to -1. </td></tr>
    539 <tr><td valign=top><em>aNumAvailableValueEntries</em>&nbsp;</td><td>
    540 Output parameter which will be filled with number of available values for the specified key list. </td></tr>
    541 <tr><td valign=top><em>aValueList</em>&nbsp;</td><td>
    542 Reference to a vector of KVP to place the specified metadata values </td></tr>
    543 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
    544 Optional opaque data that will be passed back to the user with the command response </td></tr>
    545 <tr><td valign=top><em>aMetadataValuesCopiedInCallBack</em>&nbsp;</td><td>
    546 Boolean to let engine know if metadata values are copied by User of SDK in command complete callback. By default the SDK assumes this to be the case. If this argument is set to false by the caller, then SDK assumes that user will call ReleaseMetaDataValues at a later point. @leave This method can leave with one of the following error codes OsclErrInvalidState if invoked in the incorrect state OsclErrNoMemory if the SDK failed to allocate memory during this operation </td></tr>
    547 </table>
    548 </dl><dl compact><dt><b>Returns: </b></dt><dd>
    549 A unique command id for asynchronous completion </dl>    </td>
    550   </tr>
    551 </table>
    552 <a name="a23" doxytag="PVPlayerInterface::GetPlaybackMinMaxRate"></a><p>
    553 <table width="100%" cellpadding="2" cellspacing="0" border="0">
    554   <tr>
    555     <td class="md">
    556       <table cellpadding="0" cellspacing="0" border="0">
    557         <tr>
    558           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::GetPlaybackMinMaxRate </td>
    559           <td class="md" valign="top">(&nbsp;</td>
    560           <td class="md" nowrap valign="top">int32 &amp;&nbsp;</td>
    561           <td class="mdname" nowrap>&nbsp; <em>aMinRate</em>, </td>
    562         </tr>
    563         <tr>
    564           <td></td>
    565           <td></td>
    566           <td class="md" nowrap>int32 &amp;&nbsp;</td>
    567           <td class="mdname" nowrap>&nbsp; <em>aMaxRate</em>, </td>
    568         </tr>
    569         <tr>
    570           <td></td>
    571           <td></td>
    572           <td class="md" nowrap>const OsclAny *&nbsp;</td>
    573           <td class="mdname" nowrap>&nbsp; <em>aContextData</em> = NULL</td>
    574         </tr>
    575         <tr>
    576           <td></td>
    577           <td class="md">)&nbsp;</td>
    578           <td class="md" colspan="2"><code> [pure virtual]</code></td>
    579         </tr>
    580 
    581       </table>
    582     </td>
    583   </tr>
    584 </table>
    585 <table cellspacing=5 cellpadding=0 border=0>
    586   <tr>
    587     <td>
    588       &nbsp;
    589     </td>
    590     <td>
    591 
    592 <p>
    593 This function retrieves the minimum and maximum playback rate expressed as a millipercent of "real-time" playback rate. This function can be called anytime between pvPlayer instantiation and destruction. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
    594 <table border=0 cellspacing=2 cellpadding=0>
    595 <tr><td valign=top><em>aMinRate</em>&nbsp;</td><td>
    596 A reference to an integer which will be filled in with the minimum playback rate allowed expressed as millipercent of "real-time" playback rate. </td></tr>
    597 <tr><td valign=top><em>aMaxRate</em>&nbsp;</td><td>
    598 A reference to an integer which will be filled in with the maximum playback rate allowed expressed as millipercent of "real-time" playback rate. </td></tr>
    599 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
    600 Optional opaque data that will be passed back to the user with the command response @leave This method can leave with one of the following error codes</td></tr>
    601 </table>
    602 </dl><dl compact><dt><b>Returns: </b></dt><dd>
    603 A unique command id for asynchronous completion </dl>    </td>
    604   </tr>
    605 </table>
    606 <a name="a19" doxytag="PVPlayerInterface::GetPlaybackRange"></a><p>
    607 <table width="100%" cellpadding="2" cellspacing="0" border="0">
    608   <tr>
    609     <td class="md">
    610       <table cellpadding="0" cellspacing="0" border="0">
    611         <tr>
    612           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::GetPlaybackRange </td>
    613           <td class="md" valign="top">(&nbsp;</td>
    614           <td class="md" nowrap valign="top">PVPPlaybackPosition &amp;&nbsp;</td>
    615           <td class="mdname" nowrap>&nbsp; <em>aBeginPos</em>, </td>
    616         </tr>
    617         <tr>
    618           <td></td>
    619           <td></td>
    620           <td class="md" nowrap>PVPPlaybackPosition &amp;&nbsp;</td>
    621           <td class="mdname" nowrap>&nbsp; <em>aEndPos</em>, </td>
    622         </tr>
    623         <tr>
    624           <td></td>
    625           <td></td>
    626           <td class="md" nowrap>bool&nbsp;</td>
    627           <td class="mdname" nowrap>&nbsp; <em>aQueued</em>, </td>
    628         </tr>
    629         <tr>
    630           <td></td>
    631           <td></td>
    632           <td class="md" nowrap>const OsclAny *&nbsp;</td>
    633           <td class="mdname" nowrap>&nbsp; <em>aContextData</em> = NULL</td>
    634         </tr>
    635         <tr>
    636           <td></td>
    637           <td class="md">)&nbsp;</td>
    638           <td class="md" colspan="2"><code> [pure virtual]</code></td>
    639         </tr>
    640 
    641       </table>
    642     </td>
    643   </tr>
    644 </table>
    645 <table cellspacing=5 cellpadding=0 border=0>
    646   <tr>
    647     <td>
    648       &nbsp;
    649     </td>
    650     <td>
    651 
    652 <p>
    653 This function retrieves the playback range information for the current or queued playback range. The user can choose which playback range by the aQueued flag. This function can be called when pvPlayer is in PVP_STATE_INITIALIZED, PVP_STATE_PREPARED, PVP_STATE_STARTED, or PVP_STATE_PAUSED state. The units of position is specified in the passed-in PVPlaybackPosition parameters which will be filled in when the command completes. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
    654 <table border=0 cellspacing=2 cellpadding=0>
    655 <tr><td valign=top><em>aBeginPos</em>&nbsp;</td><td>
    656 Reference to place the begin position for the playback range </td></tr>
    657 <tr><td valign=top><em>aEndPos</em>&nbsp;</td><td>
    658 Reference to place the end position for the playback range </td></tr>
    659 <tr><td valign=top><em>aQueued</em>&nbsp;</td><td>
    660 Input flag to choose inof of which playback range to return. Set(true)for queued range. Reset(false) for current range. </td></tr>
    661 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
    662 Optional opaque data that will be passed back to the user with the command response @leave This method can leave with one of the following error codes OsclErrInvalidState if invoked in the incorrect state </td></tr>
    663 </table>
    664 </dl><dl compact><dt><b>Returns: </b></dt><dd>
    665 A unique command id for asynchronous completion </dl>    </td>
    666   </tr>
    667 </table>
    668 <a name="a22" doxytag="PVPlayerInterface::GetPlaybackRate"></a><p>
    669 <table width="100%" cellpadding="2" cellspacing="0" border="0">
    670   <tr>
    671     <td class="md">
    672       <table cellpadding="0" cellspacing="0" border="0">
    673         <tr>
    674           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::GetPlaybackRate </td>
    675           <td class="md" valign="top">(&nbsp;</td>
    676           <td class="md" nowrap valign="top">int32 &amp;&nbsp;</td>
    677           <td class="mdname" nowrap>&nbsp; <em>aRate</em>, </td>
    678         </tr>
    679         <tr>
    680           <td></td>
    681           <td></td>
    682           <td class="md" nowrap>PVMFTimebase *&amp;&nbsp;</td>
    683           <td class="mdname" nowrap>&nbsp; <em>aTimebase</em>, </td>
    684         </tr>
    685         <tr>
    686           <td></td>
    687           <td></td>
    688           <td class="md" nowrap>const OsclAny *&nbsp;</td>
    689           <td class="mdname" nowrap>&nbsp; <em>aContextData</em> = NULL</td>
    690         </tr>
    691         <tr>
    692           <td></td>
    693           <td class="md">)&nbsp;</td>
    694           <td class="md" colspan="2"><code> [pure virtual]</code></td>
    695         </tr>
    696 
    697       </table>
    698     </td>
    699   </tr>
    700 </table>
    701 <table cellspacing=5 cellpadding=0 border=0>
    702   <tr>
    703     <td>
    704       &nbsp;
    705     </td>
    706     <td>
    707 
    708 <p>
    709 This function retrieves the current playback rate setting. If the playback rate is set as a millipercent of "real-time" playback rate, then aRate will be filled in with the milliperecent value when this command completes successfully. If the playback rate is set by an outside timebase, aRate will be set to 0 and aTimebase pointer will point to the PVMFTimebase being used when the command completes successfully. This function can be called when pvPlayer is in PVP_STATE_PREPARED, PVP_STATE_STARTED, or PVP_STATE_PAUSED state. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
    710 <table border=0 cellspacing=2 cellpadding=0>
    711 <tr><td valign=top><em>aRate</em>&nbsp;</td><td>
    712 A reference to an integer which will be filled in with the current playback rate expressed as millipercent of "real-time" playback rate. If an outside timebase is being used, aRate would be set to 0. </td></tr>
    713 <tr><td valign=top><em>aTimebase</em>&nbsp;</td><td>
    714 Reference to an PVMFTimebase pointer which will be valid if an outside timebase is being used for the playback clock. </td></tr>
    715 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
    716 Optional opaque data that will be passed back to the user with the command response @leave This method can leave with one of the following error codes</td></tr>
    717 </table>
    718 </dl><dl compact><dt><b>Returns: </b></dt><dd>
    719 A unique command id for asynchronous completion </dl>    </td>
    720   </tr>
    721 </table>
    722 <a name="a10" doxytag="PVPlayerInterface::GetPVPlayerState"></a><p>
    723 <table width="100%" cellpadding="2" cellspacing="0" border="0">
    724   <tr>
    725     <td class="md">
    726       <table cellpadding="0" cellspacing="0" border="0">
    727         <tr>
    728           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::GetPVPlayerState </td>
    729           <td class="md" valign="top">(&nbsp;</td>
    730           <td class="md" nowrap valign="top">PVPlayerState &amp;&nbsp;</td>
    731           <td class="mdname" nowrap>&nbsp; <em>aState</em>, </td>
    732         </tr>
    733         <tr>
    734           <td></td>
    735           <td></td>
    736           <td class="md" nowrap>const OsclAny *&nbsp;</td>
    737           <td class="mdname" nowrap>&nbsp; <em>aContextData</em> = NULL</td>
    738         </tr>
    739         <tr>
    740           <td></td>
    741           <td class="md">)&nbsp;</td>
    742           <td class="md" colspan="2"><code> [pure virtual]</code></td>
    743         </tr>
    744 
    745       </table>
    746     </td>
    747   </tr>
    748 </table>
    749 <table cellspacing=5 cellpadding=0 border=0>
    750   <tr>
    751     <td>
    752       &nbsp;
    753     </td>
    754     <td>
    755 
    756 <p>
    757 This function returns the current state of pvPlayer. Application may use this info for updating display or determine if the pvPlayer is ready for the next request. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
    758 <table border=0 cellspacing=2 cellpadding=0>
    759 <tr><td valign=top><em>aState</em>&nbsp;</td><td>
    760 A reference to a PVPlayerState. Upon successful completion of this command, it will contain the current state of pvPlayer. </td></tr>
    761 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
    762 Optional opaque data that will be passed back to the user with the command response </td></tr>
    763 </table>
    764 </dl><dl compact><dt><b>Returns: </b></dt><dd>
    765 A unique command id for asynchronous completion </dl>    </td>
    766   </tr>
    767 </table>
    768 <a name="a11" doxytag="PVPlayerInterface::GetPVPlayerStateSync"></a><p>
    769 <table width="100%" cellpadding="2" cellspacing="0" border="0">
    770   <tr>
    771     <td class="md">
    772       <table cellpadding="0" cellspacing="0" border="0">
    773         <tr>
    774           <td class="md" nowrap valign="top"> virtual PVMFStatus PVPlayerInterface::GetPVPlayerStateSync </td>
    775           <td class="md" valign="top">(&nbsp;</td>
    776           <td class="md" nowrap valign="top">PVPlayerState &amp;&nbsp;</td>
    777           <td class="mdname1" valign="top" nowrap>&nbsp; <em>aState</em>          </td>
    778           <td class="md" valign="top">)&nbsp;</td>
    779           <td class="md" nowrap><code> [pure virtual]</code></td>
    780         </tr>
    781 
    782       </table>
    783     </td>
    784   </tr>
    785 </table>
    786 <table cellspacing=5 cellpadding=0 border=0>
    787   <tr>
    788     <td>
    789       &nbsp;
    790     </td>
    791     <td>
    792 
    793 <p>
    794 This function returns the current state of pvPlayer as a synchronous command. Application may use this info for updating display or determine if the pvPlayer is ready for the next request.<dl compact><dt><b>Parameters: </b></dt><dd>
    795 <table border=0 cellspacing=2 cellpadding=0>
    796 <tr><td valign=top><em>aState</em>&nbsp;</td><td>
    797 A reference to a PVPlayerState. Upon successful completion of this command, it will contain the current state of pvPlayer. </td></tr>
    798 </table>
    799 </dl><dl compact><dt><b>Returns: </b></dt><dd>
    800 Status indicating whether the command succeeded or not. </dl>    </td>
    801   </tr>
    802 </table>
    803 <a name="d0" doxytag="PVPlayerInterface::GetSDKInfo"></a><p>
    804 <table width="100%" cellpadding="2" cellspacing="0" border="0">
    805   <tr>
    806     <td class="md">
    807       <table cellpadding="0" cellspacing="0" border="0">
    808         <tr>
    809           <td class="md" nowrap valign="top"> OSCL_IMPORT_REF void PVPlayerInterface::GetSDKInfo </td>
    810           <td class="md" valign="top">(&nbsp;</td>
    811           <td class="md" nowrap valign="top">PVSDKInfo &amp;&nbsp;</td>
    812           <td class="mdname1" valign="top" nowrap>&nbsp; <em>aSDKInfo</em>          </td>
    813           <td class="md" valign="top">)&nbsp;</td>
    814           <td class="md" nowrap><code> [static]</code></td>
    815         </tr>
    816 
    817       </table>
    818     </td>
    819   </tr>
    820 </table>
    821 <table cellspacing=5 cellpadding=0 border=0>
    822   <tr>
    823     <td>
    824       &nbsp;
    825     </td>
    826     <td>
    827 
    828 <p>
    829 Returns SDK version information about pvPlayer.<dl compact><dt><b>Parameters: </b></dt><dd>
    830 <table border=0 cellspacing=2 cellpadding=0>
    831 <tr><td valign=top><em>aSDKInfo</em>&nbsp;</td><td>
    832 A reference to a PVSDKInfo structure which contains product name, supported hardware platform, supported software platform, version, part number, and PV UUID. These fields will contain info .for the currently instantiated pvPlayer engine when this function returns success. </td></tr>
    833 </table>
    834 </dl>    </td>
    835   </tr>
    836 </table>
    837 <a name="a1" doxytag="PVPlayerInterface::GetSDKModuleInfo"></a><p>
    838 <table width="100%" cellpadding="2" cellspacing="0" border="0">
    839   <tr>
    840     <td class="md">
    841       <table cellpadding="0" cellspacing="0" border="0">
    842         <tr>
    843           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::GetSDKModuleInfo </td>
    844           <td class="md" valign="top">(&nbsp;</td>
    845           <td class="md" nowrap valign="top">PVSDKModuleInfo &amp;&nbsp;</td>
    846           <td class="mdname" nowrap>&nbsp; <em>aSDKModuleInfo</em>, </td>
    847         </tr>
    848         <tr>
    849           <td></td>
    850           <td></td>
    851           <td class="md" nowrap>const OsclAny *&nbsp;</td>
    852           <td class="mdname" nowrap>&nbsp; <em>aContextData</em> = NULL</td>
    853         </tr>
    854         <tr>
    855           <td></td>
    856           <td class="md">)&nbsp;</td>
    857           <td class="md" colspan="2"><code> [pure virtual]</code></td>
    858         </tr>
    859 
    860       </table>
    861     </td>
    862   </tr>
    863 </table>
    864 <table cellspacing=5 cellpadding=0 border=0>
    865   <tr>
    866     <td>
    867       &nbsp;
    868     </td>
    869     <td>
    870 
    871 <p>
    872 Returns information about all modules currently used by pvPlayer SDK. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
    873 <table border=0 cellspacing=2 cellpadding=0>
    874 <tr><td valign=top><em>aSDKModuleInfo</em>&nbsp;</td><td>
    875 A reference to a PVSDKModuleInfo structure which contains the number of modules currently used by pvPlayer SDK and the PV UUID and description string for each module. The PV UUID and description string for modules will be returned in one string buffer allocated by the client. If the string buffer is not large enough to hold the all the module's information, the information will be written up to the length of the buffer and truncated. </td></tr>
    876 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
    877 Optional opaque data that will be passed back to the user with the command response @leave This method can leave with one of the following error codes OsclErrNoMemory if the SDK failed to allocate memory during this operation </td></tr>
    878 </table>
    879 </dl><dl compact><dt><b>Returns: </b></dt><dd>
    880 A unique command ID for asynchronous completion </dl>    </td>
    881   </tr>
    882 </table>
    883 <a name="a13" doxytag="PVPlayerInterface::Init"></a><p>
    884 <table width="100%" cellpadding="2" cellspacing="0" border="0">
    885   <tr>
    886     <td class="md">
    887       <table cellpadding="0" cellspacing="0" border="0">
    888         <tr>
    889           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::Init </td>
    890           <td class="md" valign="top">(&nbsp;</td>
    891           <td class="md" nowrap valign="top">const OsclAny *&nbsp;</td>
    892           <td class="mdname1" valign="top" nowrap>&nbsp; <em>aContextData</em> = NULL          </td>
    893           <td class="md" valign="top">)&nbsp;</td>
    894           <td class="md" nowrap><code> [pure virtual]</code></td>
    895         </tr>
    896 
    897       </table>
    898     </td>
    899   </tr>
    900 </table>
    901 <table cellspacing=5 cellpadding=0 border=0>
    902   <tr>
    903     <td>
    904       &nbsp;
    905     </td>
    906     <td>
    907 
    908 <p>
    909 This function switches pvPlayer from PVP_STATE_IDLE state to the PVP_STATE_INITIALIZED state. During the transition, pvPlayer is in the PVP_STATE_INITIALIZING transitional state and the data source is being initialized to obtain metadata and track information of the source media. If initialization fails, pvPlayer will revert to PVP_STATE_IDLE state and the data source will be closed. The Command should only be called in PVP_STATE_IDLE. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
    910 <table border=0 cellspacing=2 cellpadding=0>
    911 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
    912 Optional opaque data that will be passed back to the user with the command response @leave This method can leave with one of the following error codes OsclErrInvalidState if invoked in the incorrect state OsclErrNoMemory if the SDK failed to allocate memory during this operation </td></tr>
    913 </table>
    914 </dl><dl compact><dt><b>Returns: </b></dt><dd>
    915 A unique command id for asynchronous completion </dl>    </td>
    916   </tr>
    917 </table>
    918 <a name="a27" doxytag="PVPlayerInterface::Pause"></a><p>
    919 <table width="100%" cellpadding="2" cellspacing="0" border="0">
    920   <tr>
    921     <td class="md">
    922       <table cellpadding="0" cellspacing="0" border="0">
    923         <tr>
    924           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::Pause </td>
    925           <td class="md" valign="top">(&nbsp;</td>
    926           <td class="md" nowrap valign="top">const OsclAny *&nbsp;</td>
    927           <td class="mdname1" valign="top" nowrap>&nbsp; <em>aContextData</em> = NULL          </td>
    928           <td class="md" valign="top">)&nbsp;</td>
    929           <td class="md" nowrap><code> [pure virtual]</code></td>
    930         </tr>
    931 
    932       </table>
    933     </td>
    934   </tr>
    935 </table>
    936 <table cellspacing=5 cellpadding=0 border=0>
    937   <tr>
    938     <td>
    939       &nbsp;
    940     </td>
    941     <td>
    942 
    943 <p>
    944 This function pauses the currently ongoing playback. pvPlayer must be in PVP_STATE_STARTED state to call this function. When pause successfully completes, pvPlayer will be in PVP_STATE_PAUSED state. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
    945 <table border=0 cellspacing=2 cellpadding=0>
    946 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
    947 Optional opaque data that will be passed back to the user with the command response @leave This method can leave with one of the following error codes OsclErrInvalidState if invoked in the incorrect state OsclErrNoMemory if the SDK failed to allocate memory during this operation </td></tr>
    948 </table>
    949 </dl><dl compact><dt><b>Returns: </b></dt><dd>
    950 A unique command id for asynchronous completion </dl>    </td>
    951   </tr>
    952 </table>
    953 <a name="a25" doxytag="PVPlayerInterface::Prepare"></a><p>
    954 <table width="100%" cellpadding="2" cellspacing="0" border="0">
    955   <tr>
    956     <td class="md">
    957       <table cellpadding="0" cellspacing="0" border="0">
    958         <tr>
    959           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::Prepare </td>
    960           <td class="md" valign="top">(&nbsp;</td>
    961           <td class="md" nowrap valign="top">const OsclAny *&nbsp;</td>
    962           <td class="mdname1" valign="top" nowrap>&nbsp; <em>aContextData</em> = NULL          </td>
    963           <td class="md" valign="top">)&nbsp;</td>
    964           <td class="md" nowrap><code> [pure virtual]</code></td>
    965         </tr>
    966 
    967       </table>
    968     </td>
    969   </tr>
    970 </table>
    971 <table cellspacing=5 cellpadding=0 border=0>
    972   <tr>
    973     <td>
    974       &nbsp;
    975     </td>
    976     <td>
    977 
    978 <p>
    979 This functions prepares pvPlayer for playback. pvPlayer connects the data source with the data sinks and starts the data source to queue the media data for playback(e.g. for 3GPP streaming, fills the jitter buffer). pvPlayer also checks to make sure each component needed for playback is ready and capable. When successful, pvPlayer will be in PVP_STATE_PREPARED state, The command should be called only in PVP_STATE_INITIALISED. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
    980 <table border=0 cellspacing=2 cellpadding=0>
    981 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
    982 Optional opaque data that will be passed back to the user with the command response @leave This method can leave with one of the following error codes OsclErrInvalidState if invoked in the incorrect state OsclErrNoMemory if the SDK failed to allocate memory during this operation </td></tr>
    983 </table>
    984 </dl><dl compact><dt><b>Returns: </b></dt><dd>
    985 A unique command id for asynchronous completion </dl>    </td>
    986   </tr>
    987 </table>
    988 <a name="a7" doxytag="PVPlayerInterface::QueryInterface"></a><p>
    989 <table width="100%" cellpadding="2" cellspacing="0" border="0">
    990   <tr>
    991     <td class="md">
    992       <table cellpadding="0" cellspacing="0" border="0">
    993         <tr>
    994           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::QueryInterface </td>
    995           <td class="md" valign="top">(&nbsp;</td>
    996           <td class="md" nowrap valign="top">const PVUuid &amp;&nbsp;</td>
    997           <td class="mdname" nowrap>&nbsp; <em>aUuid</em>, </td>
    998         </tr>
    999         <tr>
   1000           <td></td>
   1001           <td></td>
   1002           <td class="md" nowrap>PVInterface *&amp;&nbsp;</td>
   1003           <td class="mdname" nowrap>&nbsp; <em>aInterfacePtr</em>, </td>
   1004         </tr>
   1005         <tr>
   1006           <td></td>
   1007           <td></td>
   1008           <td class="md" nowrap>const OsclAny *&nbsp;</td>
   1009           <td class="mdname" nowrap>&nbsp; <em>aContextData</em> = NULL</td>
   1010         </tr>
   1011         <tr>
   1012           <td></td>
   1013           <td class="md">)&nbsp;</td>
   1014           <td class="md" colspan="2"><code> [pure virtual]</code></td>
   1015         </tr>
   1016 
   1017       </table>
   1018     </td>
   1019   </tr>
   1020 </table>
   1021 <table cellspacing=5 cellpadding=0 border=0>
   1022   <tr>
   1023     <td>
   1024       &nbsp;
   1025     </td>
   1026     <td>
   1027 
   1028 <p>
   1029 This API is to allow for extensibility of the pvPlayer interface. It allows a caller to ask for an instance of a particular interface object to be returned. The mechanism is analogous to the COM IUnknown method. The interfaces are identified with an interface ID that is a UUID as in DCE and a pointer to the interface object is returned if it is supported. Otherwise the returned pointer is NULL. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
   1030 <table border=0 cellspacing=2 cellpadding=0>
   1031 <tr><td valign=top><em>aUuid</em>&nbsp;</td><td>
   1032 The UUID of the desired interface </td></tr>
   1033 <tr><td valign=top><em>aInterfacePtr</em>&nbsp;</td><td>
   1034 A reference to the output pointer to the desired interface </td></tr>
   1035 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
   1036 Optional opaque data that will be passed back to the user with the command response</td></tr>
   1037 </table>
   1038 </dl><dl compact><dt><b>Exceptions: </b></dt><dd>
   1039 <table border=0 cellspacing=2 cellpadding=0>
   1040 <tr><td valign=top><em>This</em>&nbsp;</td><td>
   1041  method can leave with one of the following error codes OsclErrNotSupported if the specified interface UUID is not supported </td></tr>
   1042 </table>
   1043 </dl><dl compact><dt><b>Returns: </b></dt><dd>
   1044 A unique command ID for asynchronous completion </dl>    </td>
   1045   </tr>
   1046 </table>
   1047 <a name="a6" doxytag="PVPlayerInterface::QueryUUID"></a><p>
   1048 <table width="100%" cellpadding="2" cellspacing="0" border="0">
   1049   <tr>
   1050     <td class="md">
   1051       <table cellpadding="0" cellspacing="0" border="0">
   1052         <tr>
   1053           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::QueryUUID </td>
   1054           <td class="md" valign="top">(&nbsp;</td>
   1055           <td class="md" nowrap valign="top">const PvmfMimeString &amp;&nbsp;</td>
   1056           <td class="mdname" nowrap>&nbsp; <em>aMimeType</em>, </td>
   1057         </tr>
   1058         <tr>
   1059           <td></td>
   1060           <td></td>
   1061           <td class="md" nowrap>Oscl_Vector&lt; PVUuid, OsclMemAllocator &gt; &amp;&nbsp;</td>
   1062           <td class="mdname" nowrap>&nbsp; <em>aUuids</em>, </td>
   1063         </tr>
   1064         <tr>
   1065           <td></td>
   1066           <td></td>
   1067           <td class="md" nowrap>bool&nbsp;</td>
   1068           <td class="mdname" nowrap>&nbsp; <em>aExactUuidsOnly</em> = false, </td>
   1069         </tr>
   1070         <tr>
   1071           <td></td>
   1072           <td></td>
   1073           <td class="md" nowrap>const OsclAny *&nbsp;</td>
   1074           <td class="mdname" nowrap>&nbsp; <em>aContextData</em> = NULL</td>
   1075         </tr>
   1076         <tr>
   1077           <td></td>
   1078           <td class="md">)&nbsp;</td>
   1079           <td class="md" colspan="2"><code> [pure virtual]</code></td>
   1080         </tr>
   1081 
   1082       </table>
   1083     </td>
   1084   </tr>
   1085 </table>
   1086 <table cellspacing=5 cellpadding=0 border=0>
   1087   <tr>
   1088     <td>
   1089       &nbsp;
   1090     </td>
   1091     <td>
   1092 
   1093 <p>
   1094 This API is to allow for extensibility of the pvPlayer interface. It allows a caller to ask for all UUIDs associated with a particular MIME type. If interfaces of the requested MIME type are found within the system, they are added to the UUIDs array. Also added to the UUIDs array will be all interfaces which have the requested MIME type as a base MIME type. This functionality can be turned off. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
   1095 <table border=0 cellspacing=2 cellpadding=0>
   1096 <tr><td valign=top><em>aMimeType</em>&nbsp;</td><td>
   1097 The MIME type of the desired interfaces </td></tr>
   1098 <tr><td valign=top><em>aUuids</em>&nbsp;</td><td>
   1099 An array to hold the discovered UUIDs </td></tr>
   1100 <tr><td valign=top><em>aExactUuidsOnly</em>&nbsp;</td><td>
   1101 Turns on/off the retrival of UUIDs with aMimeType as a base type </td></tr>
   1102 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
   1103 Optional opaque data that will be passed back to the user with the command response</td></tr>
   1104 </table>
   1105 </dl><dl compact><dt><b>Exceptions: </b></dt><dd>
   1106 <table border=0 cellspacing=2 cellpadding=0>
   1107 <tr><td valign=top><em>This</em>&nbsp;</td><td>
   1108  method can leave with one of the following error codes OsclErrNoMemory if the SDK failed to allocate memory during this operation </td></tr>
   1109 </table>
   1110 </dl><dl compact><dt><b>Returns: </b></dt><dd>
   1111 A unique command ID for asynchronous completion </dl>    </td>
   1112   </tr>
   1113 </table>
   1114 <a name="a16" doxytag="PVPlayerInterface::ReleaseMetadataValues"></a><p>
   1115 <table width="100%" cellpadding="2" cellspacing="0" border="0">
   1116   <tr>
   1117     <td class="md">
   1118       <table cellpadding="0" cellspacing="0" border="0">
   1119         <tr>
   1120           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::ReleaseMetadataValues </td>
   1121           <td class="md" valign="top">(&nbsp;</td>
   1122           <td class="md" nowrap valign="top">Oscl_Vector&lt; PvmiKvp, OsclMemAllocator &gt; &amp;&nbsp;</td>
   1123           <td class="mdname" nowrap>&nbsp; <em>aValueList</em>, </td>
   1124         </tr>
   1125         <tr>
   1126           <td></td>
   1127           <td></td>
   1128           <td class="md" nowrap>const OsclAny *&nbsp;</td>
   1129           <td class="mdname" nowrap>&nbsp; <em>aContextData</em> = NULL</td>
   1130         </tr>
   1131         <tr>
   1132           <td></td>
   1133           <td class="md">)&nbsp;</td>
   1134           <td class="md" colspan="2"><code> [pure virtual]</code></td>
   1135         </tr>
   1136 
   1137       </table>
   1138     </td>
   1139   </tr>
   1140 </table>
   1141 <table cellspacing=5 cellpadding=0 border=0>
   1142   <tr>
   1143     <td>
   1144       &nbsp;
   1145     </td>
   1146     <td>
   1147 
   1148 <p>
   1149 The function makes a request to release the metadata value(s) specified by the passed in metadata value list. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.If a GetMetaDataValues were called in PVP_STATE_INITIALIZED state, then corresponding ReleaseMetaDataValues must be called before Reset. If a GetMetaDataValues were called in PVP_STATE_PREPARED, PVP_STATE_STARTED, PVP_STATE_PAUSED states, then corresponding ReleaseMetaDataValues must be called before Stop.<dl compact><dt><b>Parameters: </b></dt><dd>
   1150 <table border=0 cellspacing=2 cellpadding=0>
   1151 <tr><td valign=top><em>aValueList</em>&nbsp;</td><td>
   1152 Reference to a vector of KVP to place the specified metadata values </td></tr>
   1153 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
   1154 Optional opaque data that will be passed back to the user with the command response @leave This method can leave with one of the following error codes OsclErrInvalidState if invoked in the incorrect state OsclErrNoMemory if the SDK failed to allocate memory during this operation </td></tr>
   1155 </table>
   1156 </dl><dl compact><dt><b>Returns: </b></dt><dd>
   1157 A unique command id for asynchronous completion </dl>    </td>
   1158   </tr>
   1159 </table>
   1160 <a name="a30" doxytag="PVPlayerInterface::RemoveDataSink"></a><p>
   1161 <table width="100%" cellpadding="2" cellspacing="0" border="0">
   1162   <tr>
   1163     <td class="md">
   1164       <table cellpadding="0" cellspacing="0" border="0">
   1165         <tr>
   1166           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::RemoveDataSink </td>
   1167           <td class="md" valign="top">(&nbsp;</td>
   1168           <td class="md" nowrap valign="top">PVPlayerDataSink &amp;&nbsp;</td>
   1169           <td class="mdname" nowrap>&nbsp; <em>aDataSink</em>, </td>
   1170         </tr>
   1171         <tr>
   1172           <td></td>
   1173           <td></td>
   1174           <td class="md" nowrap>const OsclAny *&nbsp;</td>
   1175           <td class="mdname" nowrap>&nbsp; <em>aContextData</em> = NULL</td>
   1176         </tr>
   1177         <tr>
   1178           <td></td>
   1179           <td class="md">)&nbsp;</td>
   1180           <td class="md" colspan="2"><code> [pure virtual]</code></td>
   1181         </tr>
   1182 
   1183       </table>
   1184     </td>
   1185   </tr>
   1186 </table>
   1187 <table cellspacing=5 cellpadding=0 border=0>
   1188   <tr>
   1189     <td>
   1190       &nbsp;
   1191     </td>
   1192     <td>
   1193 
   1194 <p>
   1195 This function may be used to close and unbind a data sink that has been previously added. This function must be called when pvPlayer is in PVP_STATE_INITIALIZED state. If the data sink is in use for playback, Stop must be called first to stop the playback and free the data sink. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
   1196 <table border=0 cellspacing=2 cellpadding=0>
   1197 <tr><td valign=top><em>aDataSink</em>&nbsp;</td><td>
   1198 Reference to the data sink to be removed </td></tr>
   1199 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
   1200 Optional opaque data that will be passed back to the user with the command response @leave This method can leave with one of the following error codes OsclErrBadHandle if the passed in sink parameter is invalid OsclErrInvalidState if invoked in the incorrect state OsclErrNoMemory if the SDK failed to allocate memory during this operation </td></tr>
   1201 </table>
   1202 </dl><dl compact><dt><b>Returns: </b></dt><dd>
   1203 A unique command id for asynchronous completion </dl>    </td>
   1204   </tr>
   1205 </table>
   1206 <a name="a32" doxytag="PVPlayerInterface::RemoveDataSource"></a><p>
   1207 <table width="100%" cellpadding="2" cellspacing="0" border="0">
   1208   <tr>
   1209     <td class="md">
   1210       <table cellpadding="0" cellspacing="0" border="0">
   1211         <tr>
   1212           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::RemoveDataSource </td>
   1213           <td class="md" valign="top">(&nbsp;</td>
   1214           <td class="md" nowrap valign="top">PVPlayerDataSource &amp;&nbsp;</td>
   1215           <td class="mdname" nowrap>&nbsp; <em>aDataSource</em>, </td>
   1216         </tr>
   1217         <tr>
   1218           <td></td>
   1219           <td></td>
   1220           <td class="md" nowrap>const OsclAny *&nbsp;</td>
   1221           <td class="mdname" nowrap>&nbsp; <em>aContextData</em> = NULL</td>
   1222         </tr>
   1223         <tr>
   1224           <td></td>
   1225           <td class="md">)&nbsp;</td>
   1226           <td class="md" colspan="2"><code> [pure virtual]</code></td>
   1227         </tr>
   1228 
   1229       </table>
   1230     </td>
   1231   </tr>
   1232 </table>
   1233 <table cellspacing=5 cellpadding=0 border=0>
   1234   <tr>
   1235     <td>
   1236       &nbsp;
   1237     </td>
   1238     <td>
   1239 
   1240 <p>
   1241 This function may be used to close and unbind a data source that has been previously added. This function must be called when pvPlayer is in PVP_STATE_IDLE state. If the data source has already been initialized, Reset must be called first. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
   1242 <table border=0 cellspacing=2 cellpadding=0>
   1243 <tr><td valign=top><em>aDataSource</em>&nbsp;</td><td>
   1244 Reference to the data source to be removed. </td></tr>
   1245 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
   1246 Optional opaque data that will be passed back to the user with the command response @leave This method can leave with one of the following error codes OsclErrBadHandle if the passed in sink parameter is invalid OsclErrInvalidState if invoked in the incorrect state OsclErrNoMemory if the SDK failed to allocate memory during this operation </td></tr>
   1247 </table>
   1248 </dl><dl compact><dt><b>Returns: </b></dt><dd>
   1249 A unique command id for asynchronous completion </dl>    </td>
   1250   </tr>
   1251 </table>
   1252 <a name="a3" doxytag="PVPlayerInterface::RemoveLogAppender"></a><p>
   1253 <table width="100%" cellpadding="2" cellspacing="0" border="0">
   1254   <tr>
   1255     <td class="md">
   1256       <table cellpadding="0" cellspacing="0" border="0">
   1257         <tr>
   1258           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::RemoveLogAppender </td>
   1259           <td class="md" valign="top">(&nbsp;</td>
   1260           <td class="md" nowrap valign="top">const char *&nbsp;</td>
   1261           <td class="mdname" nowrap>&nbsp; <em>aTag</em>, </td>
   1262         </tr>
   1263         <tr>
   1264           <td></td>
   1265           <td></td>
   1266           <td class="md" nowrap>OsclSharedPtr&lt; PVLoggerAppender &gt; &amp;&nbsp;</td>
   1267           <td class="mdname" nowrap>&nbsp; <em>aAppender</em>, </td>
   1268         </tr>
   1269         <tr>
   1270           <td></td>
   1271           <td></td>
   1272           <td class="md" nowrap>const OsclAny *&nbsp;</td>
   1273           <td class="mdname" nowrap>&nbsp; <em>aContextData</em> = NULL</td>
   1274         </tr>
   1275         <tr>
   1276           <td></td>
   1277           <td class="md">)&nbsp;</td>
   1278           <td class="md" colspan="2"><code> [pure virtual]</code></td>
   1279         </tr>
   1280 
   1281       </table>
   1282     </td>
   1283   </tr>
   1284 </table>
   1285 <table cellspacing=5 cellpadding=0 border=0>
   1286   <tr>
   1287     <td>
   1288       &nbsp;
   1289     </td>
   1290     <td>
   1291 
   1292 <p>
   1293 Allows a logging appender to be removed from the logger tree at the point specified by the input tag. If the input tag is NULL then the appender will be removed from locations in the tree. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
   1294 <table border=0 cellspacing=2 cellpadding=0>
   1295 <tr><td valign=top><em>aTag</em>&nbsp;</td><td>
   1296 Specifies the logger tree tag where the appender should be removed. Can be NULL to remove at all locations. </td></tr>
   1297 <tr><td valign=top><em>aAppender</em>&nbsp;</td><td>
   1298 The log appender to remove. </td></tr>
   1299 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
   1300 Optional opaque data that will be passed back to the user with the command response</td></tr>
   1301 </table>
   1302 </dl><dl compact><dt><b>Exceptions: </b></dt><dd>
   1303 <table border=0 cellspacing=2 cellpadding=0>
   1304 <tr><td valign=top><em>This</em>&nbsp;</td><td>
   1305  method can leave with one of the following error codes OsclErrNoMemory if the SDK failed to allocate memory during this operation </td></tr>
   1306 </table>
   1307 </dl><dl compact><dt><b>Returns: </b></dt><dd>
   1308 A unique command ID for asynchronous completion </dl>    </td>
   1309   </tr>
   1310 </table>
   1311 <a name="a31" doxytag="PVPlayerInterface::Reset"></a><p>
   1312 <table width="100%" cellpadding="2" cellspacing="0" border="0">
   1313   <tr>
   1314     <td class="md">
   1315       <table cellpadding="0" cellspacing="0" border="0">
   1316         <tr>
   1317           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::Reset </td>
   1318           <td class="md" valign="top">(&nbsp;</td>
   1319           <td class="md" nowrap valign="top">const OsclAny *&nbsp;</td>
   1320           <td class="mdname1" valign="top" nowrap>&nbsp; <em>aContextData</em> = NULL          </td>
   1321           <td class="md" valign="top">)&nbsp;</td>
   1322           <td class="md" nowrap><code> [pure virtual]</code></td>
   1323         </tr>
   1324 
   1325       </table>
   1326     </td>
   1327   </tr>
   1328 </table>
   1329 <table cellspacing=5 cellpadding=0 border=0>
   1330   <tr>
   1331     <td>
   1332       &nbsp;
   1333     </td>
   1334     <td>
   1335 
   1336 <p>
   1337 This function cleans up resources used for playback to transition pvPlayer to PVP_STATE_IDLE state. While processing this command, pvPlayer is in the PVP_STATE_RESETTING state. If any data sinks are still referenced by pvPlayer when this function is called, the data sinks will be closed and removed from pvPlayer during the Reset. If already in PVP_STATE_IDLE state, then nothing will occur. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
   1338 <table border=0 cellspacing=2 cellpadding=0>
   1339 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
   1340 Optional opaque data that will be passed back to the user with the command response @leave This method can leave with one of the following error codes OsclErrNoMemory if the SDK failed to allocate memory during this operation </td></tr>
   1341 </table>
   1342 </dl><dl compact><dt><b>Returns: </b></dt><dd>
   1343 A unique command id for asynchronous completion </dl>    </td>
   1344   </tr>
   1345 </table>
   1346 <a name="a28" doxytag="PVPlayerInterface::Resume"></a><p>
   1347 <table width="100%" cellpadding="2" cellspacing="0" border="0">
   1348   <tr>
   1349     <td class="md">
   1350       <table cellpadding="0" cellspacing="0" border="0">
   1351         <tr>
   1352           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::Resume </td>
   1353           <td class="md" valign="top">(&nbsp;</td>
   1354           <td class="md" nowrap valign="top">const OsclAny *&nbsp;</td>
   1355           <td class="mdname1" valign="top" nowrap>&nbsp; <em>aContextData</em> = NULL          </td>
   1356           <td class="md" valign="top">)&nbsp;</td>
   1357           <td class="md" nowrap><code> [pure virtual]</code></td>
   1358         </tr>
   1359 
   1360       </table>
   1361     </td>
   1362   </tr>
   1363 </table>
   1364 <table cellspacing=5 cellpadding=0 border=0>
   1365   <tr>
   1366     <td>
   1367       &nbsp;
   1368     </td>
   1369     <td>
   1370 
   1371 <p>
   1372 This function resumes the currently paused playback. pvPlayer must be in PVP_STATE_PAUSED state to call this function. When resume successfully completes, pvPlayer will be in PVP_STATE_STARTED state. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
   1373 <table border=0 cellspacing=2 cellpadding=0>
   1374 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
   1375 Optional opaque data that will be passed back to the user with the command response @leave This method can leave with one of the following error codes OsclErrInvalidState if invoked in the incorrect state OsclErrNoMemory if the SDK failed to allocate memory during this operation </td></tr>
   1376 </table>
   1377 </dl><dl compact><dt><b>Returns: </b></dt><dd>
   1378 A unique command id for asynchronous completion </dl>    </td>
   1379   </tr>
   1380 </table>
   1381 <a name="a2" doxytag="PVPlayerInterface::SetLogAppender"></a><p>
   1382 <table width="100%" cellpadding="2" cellspacing="0" border="0">
   1383   <tr>
   1384     <td class="md">
   1385       <table cellpadding="0" cellspacing="0" border="0">
   1386         <tr>
   1387           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::SetLogAppender </td>
   1388           <td class="md" valign="top">(&nbsp;</td>
   1389           <td class="md" nowrap valign="top">const char *&nbsp;</td>
   1390           <td class="mdname" nowrap>&nbsp; <em>aTag</em>, </td>
   1391         </tr>
   1392         <tr>
   1393           <td></td>
   1394           <td></td>
   1395           <td class="md" nowrap>OsclSharedPtr&lt; PVLoggerAppender &gt; &amp;&nbsp;</td>
   1396           <td class="mdname" nowrap>&nbsp; <em>aAppender</em>, </td>
   1397         </tr>
   1398         <tr>
   1399           <td></td>
   1400           <td></td>
   1401           <td class="md" nowrap>const OsclAny *&nbsp;</td>
   1402           <td class="mdname" nowrap>&nbsp; <em>aContextData</em> = NULL</td>
   1403         </tr>
   1404         <tr>
   1405           <td></td>
   1406           <td class="md">)&nbsp;</td>
   1407           <td class="md" colspan="2"><code> [pure virtual]</code></td>
   1408         </tr>
   1409 
   1410       </table>
   1411     </td>
   1412   </tr>
   1413 </table>
   1414 <table cellspacing=5 cellpadding=0 border=0>
   1415   <tr>
   1416     <td>
   1417       &nbsp;
   1418     </td>
   1419     <td>
   1420 
   1421 <p>
   1422 Allows a logging appender to be attached at some point in the logger tag tree. The location in the tag tree is specified by the input tag string. A single appender can be attached multiple times in the tree, but it may result in duplicate copies of log messages if the appender is not attached in disjoint portions of the tree. A logging appender is responsible for actually writing the log message to its final location (e.g., memory, file, network, etc). This API can be called anytime after creation of pvPlayer. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
   1423 <table border=0 cellspacing=2 cellpadding=0>
   1424 <tr><td valign=top><em>aTag</em>&nbsp;</td><td>
   1425 Specifies the logger tree tag where the appender should be attached. </td></tr>
   1426 <tr><td valign=top><em>aAppender</em>&nbsp;</td><td>
   1427 The log appender to attach. </td></tr>
   1428 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
   1429 Optional opaque data that will be passed back to the user with the command response </td></tr>
   1430 </table>
   1431 </dl><dl compact><dt><b>Exceptions: </b></dt><dd>
   1432 <table border=0 cellspacing=2 cellpadding=0>
   1433 <tr><td valign=top><em>This</em>&nbsp;</td><td>
   1434  method can leave with one of the following error codes OsclErrNoMemory if the SDK failed to allocate memory during this operation </td></tr>
   1435 </table>
   1436 </dl><dl compact><dt><b>Returns: </b></dt><dd>
   1437 A unique command ID for asynchronous completion </dl>    </td>
   1438   </tr>
   1439 </table>
   1440 <a name="a4" doxytag="PVPlayerInterface::SetLogLevel"></a><p>
   1441 <table width="100%" cellpadding="2" cellspacing="0" border="0">
   1442   <tr>
   1443     <td class="md">
   1444       <table cellpadding="0" cellspacing="0" border="0">
   1445         <tr>
   1446           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::SetLogLevel </td>
   1447           <td class="md" valign="top">(&nbsp;</td>
   1448           <td class="md" nowrap valign="top">const char *&nbsp;</td>
   1449           <td class="mdname" nowrap>&nbsp; <em>aTag</em>, </td>
   1450         </tr>
   1451         <tr>
   1452           <td></td>
   1453           <td></td>
   1454           <td class="md" nowrap>int32&nbsp;</td>
   1455           <td class="mdname" nowrap>&nbsp; <em>aLevel</em>, </td>
   1456         </tr>
   1457         <tr>
   1458           <td></td>
   1459           <td></td>
   1460           <td class="md" nowrap>bool&nbsp;</td>
   1461           <td class="mdname" nowrap>&nbsp; <em>aSetSubtree</em> = false, </td>
   1462         </tr>
   1463         <tr>
   1464           <td></td>
   1465           <td></td>
   1466           <td class="md" nowrap>const OsclAny *&nbsp;</td>
   1467           <td class="mdname" nowrap>&nbsp; <em>aContextData</em> = NULL</td>
   1468         </tr>
   1469         <tr>
   1470           <td></td>
   1471           <td class="md">)&nbsp;</td>
   1472           <td class="md" colspan="2"><code> [pure virtual]</code></td>
   1473         </tr>
   1474 
   1475       </table>
   1476     </td>
   1477   </tr>
   1478 </table>
   1479 <table cellspacing=5 cellpadding=0 border=0>
   1480   <tr>
   1481     <td>
   1482       &nbsp;
   1483     </td>
   1484     <td>
   1485 
   1486 <p>
   1487 Allows the logging level to be set for the logging node specified by the tag. A larger log level will result in more messages being logged. A message will only be logged if its level is LESS THAN or equal to the current log level. The aSetSubtree flag will allow an entire subtree, with the specified tag as the root, to be reset to the specified value. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
   1488 <table border=0 cellspacing=2 cellpadding=0>
   1489 <tr><td valign=top><em>aTag</em>&nbsp;</td><td>
   1490 Specifies the logger tree tag where the log level should be set. </td></tr>
   1491 <tr><td valign=top><em>aLevel</em>&nbsp;</td><td>
   1492 Specifies the log level to set. </td></tr>
   1493 <tr><td valign=top><em>aSetSubtree</em>&nbsp;</td><td>
   1494 Specifies whether the entire subtree with aTag as the root should be reset to the log level. </td></tr>
   1495 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
   1496 Optional opaque data that will be passed back to the user with the command response</td></tr>
   1497 </table>
   1498 </dl><dl compact><dt><b>Exceptions: </b></dt><dd>
   1499 <table border=0 cellspacing=2 cellpadding=0>
   1500 <tr><td valign=top><em>This</em>&nbsp;</td><td>
   1501  method can leave with one of the following error codes OsclErrNoMemory if the SDK failed to allocate memory during this operation </td></tr>
   1502 </table>
   1503 </dl><dl compact><dt><b>Returns: </b></dt><dd>
   1504 A unique command ID for asynchronous completion </dl>    </td>
   1505   </tr>
   1506 </table>
   1507 <a name="a18" doxytag="PVPlayerInterface::SetPlaybackRange"></a><p>
   1508 <table width="100%" cellpadding="2" cellspacing="0" border="0">
   1509   <tr>
   1510     <td class="md">
   1511       <table cellpadding="0" cellspacing="0" border="0">
   1512         <tr>
   1513           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::SetPlaybackRange </td>
   1514           <td class="md" valign="top">(&nbsp;</td>
   1515           <td class="md" nowrap valign="top">PVPPlaybackPosition&nbsp;</td>
   1516           <td class="mdname" nowrap>&nbsp; <em>aBeginPos</em>, </td>
   1517         </tr>
   1518         <tr>
   1519           <td></td>
   1520           <td></td>
   1521           <td class="md" nowrap>PVPPlaybackPosition&nbsp;</td>
   1522           <td class="mdname" nowrap>&nbsp; <em>aEndPos</em>, </td>
   1523         </tr>
   1524         <tr>
   1525           <td></td>
   1526           <td></td>
   1527           <td class="md" nowrap>bool&nbsp;</td>
   1528           <td class="mdname" nowrap>&nbsp; <em>aQueueRange</em>, </td>
   1529         </tr>
   1530         <tr>
   1531           <td></td>
   1532           <td></td>
   1533           <td class="md" nowrap>const OsclAny *&nbsp;</td>
   1534           <td class="mdname" nowrap>&nbsp; <em>aContextData</em> = NULL</td>
   1535         </tr>
   1536         <tr>
   1537           <td></td>
   1538           <td class="md">)&nbsp;</td>
   1539           <td class="md" colspan="2"><code> [pure virtual]</code></td>
   1540         </tr>
   1541 
   1542       </table>
   1543     </td>
   1544   </tr>
   1545 </table>
   1546 <table cellspacing=5 cellpadding=0 border=0>
   1547   <tr>
   1548     <td>
   1549       &nbsp;
   1550     </td>
   1551     <td>
   1552 
   1553 <p>
   1554 This function sets the begin and end positions for the new playback range or changes the end position of the current playback range. This function must be called when pvPlayer is in PVP_STATE_INITIALIZED, PVP_STATE_PREPARED, PVP_STATE_STARTED, or PVP_STATE_PAUSED state. The specified positions must be between beginning of clip and clip duration. The units of position is specified in the passed-in parameter PVPPlaybackPosition. If either of the positions is indeterminate, use the indeterminate flag in PVPPlaybackPosition structure. The queued playback range can be done using aQueueRange flag which is Not Supported as of now by PV-SDK. This function will overwrite any previous playback range info. The only exception is the changing of end position for the current playback range during playback. Command if called in player state as PVP_STATE_INITIALISED or PVP_STATE_PAUSED, will complete in one Engine AO run without actually changing the position. The change in position will come into affect when Prepare or Resume respectively is called on Engine by the app. If reposition request is not honored by the source node during Prepare or Resume, engine will continue to complete Prepare or Resume but will send an informational event "PVMFInfoChangePlaybackPositionNotSupported" to the app informing that the SetPlaybackRange request could not be honored. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
   1555 <table border=0 cellspacing=2 cellpadding=0>
   1556 <tr><td valign=top><em>aBeginPos</em>&nbsp;</td><td>
   1557 Beginning position for the new playback range </td></tr>
   1558 <tr><td valign=top><em>aEndPos</em>&nbsp;</td><td>
   1559 Ending position for the new playback range. </td></tr>
   1560 <tr><td valign=top><em>aQueueRange</em>&nbsp;</td><td>
   1561 Input flag to tell pvPlayer to queue the new playback range (Set/true) or use the new playback range right away (Reset/false) </td></tr>
   1562 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
   1563 Optional opaque data that will be passed back to the user with the command response @leave This method can leave with one of the following error codes OsclErrInvalidState if invoked in the incorrect state </td></tr>
   1564 </table>
   1565 </dl><dl compact><dt><b>Returns: </b></dt><dd>
   1566 A unique command id for asynchronous completion </dl>    </td>
   1567   </tr>
   1568 </table>
   1569 <a name="a21" doxytag="PVPlayerInterface::SetPlaybackRate"></a><p>
   1570 <table width="100%" cellpadding="2" cellspacing="0" border="0">
   1571   <tr>
   1572     <td class="md">
   1573       <table cellpadding="0" cellspacing="0" border="0">
   1574         <tr>
   1575           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::SetPlaybackRate </td>
   1576           <td class="md" valign="top">(&nbsp;</td>
   1577           <td class="md" nowrap valign="top">int32&nbsp;</td>
   1578           <td class="mdname" nowrap>&nbsp; <em>aRate</em>, </td>
   1579         </tr>
   1580         <tr>
   1581           <td></td>
   1582           <td></td>
   1583           <td class="md" nowrap>PVMFTimebase *&nbsp;</td>
   1584           <td class="mdname" nowrap>&nbsp; <em>aTimebase</em> = NULL, </td>
   1585         </tr>
   1586         <tr>
   1587           <td></td>
   1588           <td></td>
   1589           <td class="md" nowrap>const OsclAny *&nbsp;</td>
   1590           <td class="mdname" nowrap>&nbsp; <em>aContextData</em> = NULL</td>
   1591         </tr>
   1592         <tr>
   1593           <td></td>
   1594           <td class="md">)&nbsp;</td>
   1595           <td class="md" colspan="2"><code> [pure virtual]</code></td>
   1596         </tr>
   1597 
   1598       </table>
   1599     </td>
   1600   </tr>
   1601 </table>
   1602 <table cellspacing=5 cellpadding=0 border=0>
   1603   <tr>
   1604     <td>
   1605       &nbsp;
   1606     </td>
   1607     <td>
   1608 
   1609 <p>
   1610 This function allows the setting of the playback rate. The playback rate can be set as millipercent of "real-time" playback rate. For example, 100000 means 1X "real-time", 400000 means 4X, 25000 means 0.25X, and -100000 means 1X backward. The playback rate can also be modified by specifying the timebase to use for the playback clock. This is accomplished by setting the aRate parameter to 0 and passing in a pointer to an PVMFTimebase. This function can be called when pvPlayer is in PVP_STATE_PREPARED, PVP_STATE_STARTED, or PVP_STATE_PAUSED state. Changing to or from an outside timebase is only allowed in PVP_STATE_PREPARED. Command if called in player state PVP_STATE_PAUSED with a direction change, will complete in one Engine AO run without actually changing the direction. The change in direction will come into affect when Resume is called on Engine by the app. If the request is not honored by the source node during Resume, engine will continue to complete Resume but will send an informational event "PVMFInfoChangePlaybackPositionNotSupported" to the app informing that the SetPlaybackRate request could not be honored. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
   1611 <table border=0 cellspacing=2 cellpadding=0>
   1612 <tr><td valign=top><em>aRate</em>&nbsp;</td><td>
   1613 The playback rate specified as millipercent of "real-time". A millipercent is 1/1000 of a percent. So 2X = 200% of realtime is 200,000 millipercent. The motivation is to povide precision with an integer parameter. Negative rates specify backward playback. The valid range of absolute value of playback rates will be limited to the minimum and maximum returned by <a class="el" href="classPVPlayerInterface.html#a23">GetPlaybackMinMaxRate()</a>. </td></tr>
   1614 <tr><td valign=top><em>aTimebase</em>&nbsp;</td><td>
   1615 Reference to an PVMFTimebase which will be used to drive the playback clock. aRate must be set to 0, 1X, or -1X to use the timebase. </td></tr>
   1616 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
   1617 Optional opaque data that will be passed back to the user with the command response @leave This method can leave with one of the following error codes OsclErrArgument if rate or timebase is invalid </td></tr>
   1618 </table>
   1619 </dl><dl compact><dt><b>Returns: </b></dt><dd>
   1620 A unique command id for asynchronous completion </dl>    </td>
   1621   </tr>
   1622 </table>
   1623 <a name="a26" doxytag="PVPlayerInterface::Start"></a><p>
   1624 <table width="100%" cellpadding="2" cellspacing="0" border="0">
   1625   <tr>
   1626     <td class="md">
   1627       <table cellpadding="0" cellspacing="0" border="0">
   1628         <tr>
   1629           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::Start </td>
   1630           <td class="md" valign="top">(&nbsp;</td>
   1631           <td class="md" nowrap valign="top">const OsclAny *&nbsp;</td>
   1632           <td class="mdname1" valign="top" nowrap>&nbsp; <em>aContextData</em> = NULL          </td>
   1633           <td class="md" valign="top">)&nbsp;</td>
   1634           <td class="md" nowrap><code> [pure virtual]</code></td>
   1635         </tr>
   1636 
   1637       </table>
   1638     </td>
   1639   </tr>
   1640 </table>
   1641 <table cellspacing=5 cellpadding=0 border=0>
   1642   <tr>
   1643     <td>
   1644       &nbsp;
   1645     </td>
   1646     <td>
   1647 
   1648 <p>
   1649 This function kicks off the actual playback. Media data are sent out from the data source to the data sink(s). pvPlayer will transition to PVP_STATE_STARTED state after playback starts successfully. The command should be called only in PVP_STATE_PREPARED. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
   1650 <table border=0 cellspacing=2 cellpadding=0>
   1651 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
   1652 Optional opaque data that will be passed back to the user with the command response @leave This method can leave with one of the following error codes OsclErrInvalidState if invoked in the incorrect state OsclErrNoMemory if the SDK failed to allocate memory during this operation </td></tr>
   1653 </table>
   1654 </dl><dl compact><dt><b>Returns: </b></dt><dd>
   1655 A unique command id for asynchronous completion </dl>    </td>
   1656   </tr>
   1657 </table>
   1658 <a name="a29" doxytag="PVPlayerInterface::Stop"></a><p>
   1659 <table width="100%" cellpadding="2" cellspacing="0" border="0">
   1660   <tr>
   1661     <td class="md">
   1662       <table cellpadding="0" cellspacing="0" border="0">
   1663         <tr>
   1664           <td class="md" nowrap valign="top"> virtual PVCommandId PVPlayerInterface::Stop </td>
   1665           <td class="md" valign="top">(&nbsp;</td>
   1666           <td class="md" nowrap valign="top">const OsclAny *&nbsp;</td>
   1667           <td class="mdname1" valign="top" nowrap>&nbsp; <em>aContextData</em> = NULL          </td>
   1668           <td class="md" valign="top">)&nbsp;</td>
   1669           <td class="md" nowrap><code> [pure virtual]</code></td>
   1670         </tr>
   1671 
   1672       </table>
   1673     </td>
   1674   </tr>
   1675 </table>
   1676 <table cellspacing=5 cellpadding=0 border=0>
   1677   <tr>
   1678     <td>
   1679       &nbsp;
   1680     </td>
   1681     <td>
   1682 
   1683 <p>
   1684 This function stops the current playback and transitions pvPlayer to the PVP_STATE_INITIALIZED state. During the transition, data transmission from data source to all data sinks are terminated. Also all connections between data source and data sinks are torn down. This command request is asynchronous. PVCommandStatusObserver's CommandCompleted() callback handler will be called when this command request completes.<dl compact><dt><b>Parameters: </b></dt><dd>
   1685 <table border=0 cellspacing=2 cellpadding=0>
   1686 <tr><td valign=top><em>aContextData</em>&nbsp;</td><td>
   1687 Optional opaque data that will be passed back to the user with the command response @leave This method can leave with one of the following error codes OsclErrInvalidState if invoked in the incorrect state OsclErrNoMemory if the SDK failed to allocate memory during this operation </td></tr>
   1688 </table>
   1689 </dl><dl compact><dt><b>Returns: </b></dt><dd>
   1690 A unique command id for asynchronous completion </dl>    </td>
   1691   </tr>
   1692 </table>
   1693 <hr>The documentation for this class was generated from the following file:<ul>
   1694 <li><a class="el" href="pv__player__interface_8h-source.html">pv_player_interface.h</a></ul>
   1695 <hr size="1"><img src="pvlogo_small.jpg"><address style="align: right;"><small>PV Player Engine</small>
   1696 <address style="align: left;"><small>Posting Version: OPENCORE_20090310 </small>
   1697 </small></address>
   1698 </body>
   1699 </html>
   1700