ホーム › Media.MediaFoundation › IMFByteStreamTimeSeek
IMFByteStreamTimeSeek
COM公式ドキュメント
バイトストリームを時間位置でシークします。
解説(Remarks)
バイトストリームが時間ベースのシークをサポートする場合、このインターフェイスを実装できます。たとえば、サーバーからデータを読み取るバイトストリームはこのインターフェイスを実装することがあります。通常、ローカルのファイルベースのバイトストリームは実装しません。
このインターフェイスへのポインターを取得するには、バイトストリームオブジェクトに対して QueryInterface を呼び出します。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
バイトストリームが時間ベースのシークをサポートするかどうかを照会します。
| pfTimeSeekIsSupported | BOOL* | out | バイトストリームが時間ベースのシークをサポートする場合は値 TRUE、そうでない場合は FALSE を受け取ります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
バイトストリーム内の新しい位置へシークします。
| qwTimePosition | ULONGLONG | in | 新しい位置。100ナノ秒単位で指定します。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
バイトストリームがサーバーから読み取る場合、次の読み取り要求までシーク要求をキャッシュすることがあります。そのため、バイトストリームはサーバーへの要求を即座に送信しないことがあります。
vtbl 5 HRESULT GetTimeSeekResult(ULONGLONG* pqwStartTime, ULONGLONG* pqwStopTime, ULONGLONG* pqwDuration)
時間ベースのシークの結果を取得します。
| pqwStartTime | ULONGLONG* | out | シーク後の新しい位置を受け取ります。100ナノ秒単位です。 |
| pqwStopTime | ULONGLONG* | out | 停止時間を受け取ります。100ナノ秒単位です。停止時間が不明な場合、値は 0 になります。 |
| pqwDuration | ULONGLONG* | out | ファイルの総再生時間を受け取ります。100ナノ秒単位です。再生時間が不明な場合、値は –1 になります。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 | |
| バイトストリームが時間ベースのシークをサポートしていないか、利用可能なデータがありません。 |
解説(Remarks)
このメソッドは、直前の時間ベースのシークに対するサーバーの応答を返します。
注意 IMFByteStreamTimeSeek::TimeSeek メソッドはサーバー要求を即座に送信しないため、このメソッドは通常、バイトストリームから何らかのデータが読み取られるまで呼び出すことができません。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
出力引数:
#define global IID_IMFByteStreamTimeSeek "{64976BFA-FB61-4041-9069-8C9A5F659BEB}" #usecom global IMFByteStreamTimeSeek IID_IMFByteStreamTimeSeek "{}" #comfunc global IMFByteStreamTimeSeek_IsTimeSeekSupported 3 var #comfunc global IMFByteStreamTimeSeek_TimeSeek 4 int64 #comfunc global IMFByteStreamTimeSeek_GetTimeSeekResult 5 var,var,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IMFByteStreamTimeSeek "{64976BFA-FB61-4041-9069-8C9A5F659BEB}" #usecom global IMFByteStreamTimeSeek IID_IMFByteStreamTimeSeek "{}" #comfunc global IMFByteStreamTimeSeek_IsTimeSeekSupported 3 sptr #comfunc global IMFByteStreamTimeSeek_TimeSeek 4 int64 #comfunc global IMFByteStreamTimeSeek_GetTimeSeekResult 5 sptr,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。