IMediaSeeking インターフェイス
IMediaSeeking インターフェイスには、ストリーム内の位置にシークするメソッドと、再生レートを設定するメソッドが含まれる。フィルタ グラフ マネージャはこのインターフェイスを公開し、個々のフィルタも同じように公開する。アプリケーションはこのインターフェイスに関してはフィルタ グラフ マネージャに照会する必要がある。
フィルタ グラフ マネージャは、IMediaSeeking 呼び出しをグラフ内の各レンダリング フィルタに配布する。レンダリング フィルタは、その呼び出しをソース フィルタへのアップストリームに送る。イベントのこのシーケンスによってすべてのストリームは同期される。配布されたいずれかの呼び出しがエラーを返した場合、フィルタ グラフ マネージャは、配布された呼び出しの一部が成功した場合でも、最初に受け取ったエラー値を返す。この例外には、E_NOTIMPL がある。フィルタ グラフ マネージャは、配布されたすべての呼び出しが E_NOTIMPL を返さない限り、E_NOTIMPL を返さない。
グラフがどの状態 (実行中、ポーズ、停止中) にあっても、アプリケーションはグラフをシークできる。グラフが実行中の場合、フィルタ グラフ マネージャはシークコマンドを発行する前にグラフをポーズする。その後、グラフを再び実行する。すべてのシーク操作は、現在の再生レートには依存しない。シーク操作によって、ペンディング状態のメディア データはグラフからフラッシュされる。
タイムを指定するすべての IMediaSeeking 引数について、タイムの単位は現在のタイム フォーマットに依存する。タイム フォーマットを設定するには、IMediaSeeking::SetTimeFormat を呼び出す。タイム フォーマットは、uuids.h で定義されているグローバルに一意の識別子 (GUID) である。詳細については、「タイム フォーマット GUID」を参照すること。
IMediaSeeking インターフェイスは、IUnknown から継承するメソッド以外に以下のメソッドも公開する。
メソッド | 説明 |
GetCapabilities | ストリームのすべてのシーク能力を取得する。 |
CheckCapabilities | 指定したシーク能力をストリームが持っているかどうかを照会する。 |
IsFormatSupported | 指定したタイム フォーマットがシーク操作でサポートされているかどうかを確認する。 |
QueryPreferredFormat | シーク操作の優先タイム フォーマットを取得する。 |
GetTimeFormat | 現在シーク操作で使われているタイム フォーマットを取得する。 |
IsUsingTimeFormat | シーク操作が現在指定したタイム フォーマットを使っているかどうかを確認する。 |
SetTimeFormat | 以降のシーク操作のタイム フォーマットを設定する。 |
GetDuration | ストリームの時間幅を取得する。 |
GetStopPosition | ストリームの時間幅を基準として、再生が停止するタイムを取得する。 |
GetCurrentPosition | ストリームの合計時間幅を基準とする、現在の位置を取得する。 |
ConvertTimeFormat | 1 つのタイム フォーマットから別のタイム フォーマットに変換する。 |
SetPositions | 現在位置と停止位置を設定する。 |
GetPositions | ストリームの合計時間幅を基準とする、現在の位置と停止位置を取得する。 |
GetAvailable | シークが有効なタイムの範囲を取得する。 |
SetRate | 再生レートを設定する。 |
GetRate | 再生レートを取得する。 |
GetPreroll | 開始位置の前にキューに入るデータの量を取得する。 |
参照