IWMReaderAdvanced3
COM公式ドキュメント
IWMReaderAdvanced3 インターフェイスは、リーダーオブジェクトに追加の機能を提供します。
メソッド 2
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
StopNetStreaming メソッドは、ネットワークストリーミングを停止します。ネットワークから既に受信済みのサンプルは、通常どおり配信されます。
戻り値
メソッドが成功した場合は S_OK を返します。失敗した場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドが完了すると、WMT_END_OF_STREAMING メッセージが OnStatus メソッドに配信されます。
StartAtPosition メソッドを使用すると、複数のオフセット形式のいずれかを使って、ファイルの再生開始位置を指定できます。
| wStreamNum | WORD | in | pvOffsetStart と pvDuration が適用されるストリーム番号を格納する WORD。ゼロを渡すと、オフセットの開始位置と再生時間がファイル内のすべてのストリームに適用されることを意味します。ゼロを渡した場合、dwOffsetFormat に指定できる有効な値は WMT_OFFSET_FORMAT_100NS と WMT_OFFSET_FORMAT_PLAYLIST_OFFSET のみです。 | ||||||||||||
| pvOffsetStart | void* | in | オフセットの開始位置を格納するアドレスへの void ポインター。オフセットの測定単位は dwOffsetFormat によって決まります。また、測定単位によって、ポインターが指す変数のサイズも決まります。オフセット形式ごとに指定できる変数の型を、次の表に示します。
| ||||||||||||
| pvDuration | void* | in | 再生時間を格納するアドレスへの void ポインター。ゼロを渡すと、ファイルの末尾まで再生が続きます。再生時間の測定単位は dwOffsetFormat によって決まります。また、測定単位によって、ポインターが指す変数のサイズも決まります。オフセット形式ごとに指定できる変数の型を、次の表に示します。
| ||||||||||||
| dwOffsetFormat | WMT_OFFSET_FORMAT | in | WMT_OFFSET_FORMAT 列挙型のメンバーを 1 つ格納する DWORD。有効な値とその意味は次のとおりです。
| ||||||||||||
| fRate | FLOAT | in | 再生レートを示す浮動小数点数。標準速度での再生は 1.0 です。数値が大きいほど再生が速くなり、小さいほど遅くなります。ゼロ未満の数値は逆方向のレート(巻き戻し)を示します。有効な範囲は 1.0 ~ 10.0 および -1.0 ~ -10.0 です。 | ||||||||||||
| pvContext | void* | in | アプリケーションが使用する汎用ポインター。このポインターは、IWMReaderCallback への呼び出し時にアプリケーションへ返されます。 |
戻り値
このメソッドは HRESULT を返します。指定できる値には、次の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
|
dwOffsetFormat が WMT_OFFSET_FORMAT_FRAME_NUMBERS で、かつ wStreamNum がゼロです。
または pvOffsetStart が NULL(再開を意味します)で、かつリーダーが停止モードになっています。プレーヤーが停止している場合、再生を再開することはできません。 または pvOffsetStart が NULL(再開を意味します)で、かつ pvDuration が NULL ではありません。再開に対して再生時間を指定することはできません。 または リーダーでファイルが開かれていません。 または fRate が範囲外です。 または リーダーがブロードキャストストリームを受信しています。ブロードキャストソースからはシークできません。 または fRate が負(巻き戻しを示す)で、かつ再生時間がファイルの先頭より前まで巻き戻すことになります。 または dwOffsetFormat が WMT_OFFSET_FORMAT_FRAME_NUMBERS で、かつファイルがインデックス化されていない、またはフレームでインデックス化されていません。 |
|
| 内部的に必要となるメッセージ構造体のメモリを割り当てることができません。 |
解説(Remarks)
フレームベースのアクセスは、ローカルファイルでのみ利用できます。ストリーミングされるコンテンツに対しては、たとえファイルがフレームでインデックス化されていても、StartAtPosition を使用して開始フレーム番号を指定することはできません。
一時停止した再生を再開する呼び出しを行う場合は、pvOffsetStart に NULL を渡すことができます。この場合、pvDuration にも NULL を渡す必要があります。
無効な再生時間を指定しても、StartAtPosition は失敗しません。可能な限り多くのサンプルが配信されます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWMReaderAdvanced3 "{5DC0674B-F04B-4A4E-9F2A-B1AFDE2C8100}"
#usecom global IWMReaderAdvanced3 IID_IWMReaderAdvanced3 "{}"
#comfunc global IWMReaderAdvanced3_StopNetStreaming 38
#comfunc global IWMReaderAdvanced3_StartAtPosition 39 int,sptr,sptr,int,float,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。