Microsoft DirectX 8.0 |
レンダリング フィルタのシーク コマンドを処理する。
宣言 : Ctlutil.h
このクラスは、CPosPassThru クラスから派生する。サンプルが届いたときサンプルからタイム スタンプをキャッシュするサポートが追加されている。
CPosPassThru クラスと同じやり方でこのクラスを使用する。詳細については、「CPosPassThru」を参照すること。さらに、レンダリング フィルタは、キャッシュされたオブジェクトのタイム スタンプを更新しなければならない。
このクラスの使い方については、CBaseRenderer ソース コードを参照すること。
Public メソッド | |
---|---|
CRendererPosPassThru | コンストラクタ メソッド。 |
GetMediaTime | 現在のサンプルのタイム スタンプを取得する。 |
RegisterMediaTime | 現在のサンプルからタイム スタンプをキャッシュする。 |
ResetMediaTime | キャッシュされたタイム スタンプをゼロにリセットする。 |
EOS | エンドオブストリーム通知の後でキャッシュされたタイム スタンプをアップデートする。 |
コンストラクタ メソッド。
構文
CRendererPosPassThru( const TCHAR *pName, LPUNKNOWN pUnk, HRESULT *phr, IPin *pPin );
パラメータ
エンドオブストリーム通知の後でキャッシュされたタイム スタンプをアップデートする。
構文
HRESULT EOS(void);
戻り値
HRESULT 値を返す。以下の表に示されるいずれかの値。
S_OK 成功。 E_FAIL 失敗。多分フィルタがストリーミングしていない。
注意
フィルタがエンドオブストリーム通知 (IPin::EndOfStream) を受け取ったとき、このメソッドを呼び出すべきだ。このメソッドはストップ位置と等しい 2 つのキャッシュされたタイム スタンプをセットし、IMediaStream::GetCurrentPosition メソッドに正しいストリームの終りの値を返させる。
現在のサンプルのタイム スタンプを取得する。
構文
HRESULT GetMediaTime( LONGLONG *pStartTime, LONGLONG *pEndTime );
パラメータ
- pStartTime
- 開始タイムを受け取る変数へのポインタ、現在のタイム フォーマットの単位。
- pEndTime
- 終了タイムを受け取る変数へのポインタ、現在のタイム フォーマットの単位。NULL も可。
戻り値
HRESULT 値を返す。 以下の表に示されるいずれかの値。
S_OK 成功。 E_INVALIDARG このフォーマットへの変換はサポートされていない。 E_POINTER NULL ポインタ引数。
注意
このメソッドは CPosPassThru::GetMediaTime メソッドをオーバーライドする。CPosPassThru::ConvertTimeFormat メソッドを呼び出すことにより、タイム スタンプ値は現在のタイム フォーマットに変換される。
現在のサンプルからタイム スタンプをキャッシュする。
構文
HRESULT RegisterMediaTime( IMediaSample *pMediaSample ); HRESULT RegisterMediaTime( LONGLONG StartTime, LONGLONG EndTime );
パラメータ
- pMediaSample
- サンプルの IMediaSample インターフェイスへのポインタ。
- StartTime
- サンプル開始タイム、100 ナノ秒単位。
- EndTime
- サンプル終了タイム、100 ナノ秒単位。
戻り値
HRESULT 値を返す。 以下の表に示されるいずれかの値。
S_OK 成功。 VFW_E_MEDIA_TIME_NOT_SET サンプルはタイム スタンプされていない。
注意
このメソッドは現在のサンプルからタイム スタンプをストアする。GetMediaTime メソッドは同じ値を取得する。
フィルタは受け取った各サンプルに対しこのメソッドを呼び出すべきだ。このメソッドはサンプルへのポインタかタイム サンプルそれ自身のどちらかを受け取るためにオーバーロードされる。
キャッシュされたタイム スタンプをゼロにリセットする。
構文
HRESULT ResetMediaTime(void);
戻り値
S_OK を返す。
注意
RegisterMediaTime がキャッシュしたタイム スタンプが無効になるたびに、フィルタはこのメソッドを呼び出すべきだ。とりわけ、IPin::EndFlush と IMediaFilter::Stop メソッドに対応する際にこのメソッドを呼び出すべきだ。
このメソッドが呼び出された後、GetMediaTime メソッドは開始タイムと終了タイムにゼロを返す。