Microsoft DirectX 8.0 |
このインターフェイスは、フィルタ グラフ内を通る個々のメディア サンプルを取得するメソッドを提供する。
サンプル グラバ フィルタは、このインターフェイスを公開する。アプリケーションでは、このインターフェイスのメソッドを呼び出して、メディア サンプルを取得できる。詳細については、「メディア サンプルの入手」を参照すること。
要件
Requires Qedit.h が必要である。
vtable 順のメソッド
IUnknown メソッド 説明 QueryInterface サポートされているインターフェイスへのポインタを取得する。 AddRef 参照カウントをインクリメントする。 Release 参照カウントをデクリメントする。 ISampleGrabber メソッド 説明 SetOneShot サンプルを 1 つ受け取ったらフィルタがグラフを停止すべきかどうかを指定する。 SetMediaType サンプル グラバの入力ピン上の接続に使用するメディア タイプを指定する。 GetConnectedMediaType サンプル グラバの入力ピン上の接続に使用するメディア タイプを取得する。 SetBufferSamples フィルタ内を通るサンプルをバッファにコピーするかどうかを指定する。 GetCurrentBuffer フィルタが受け取った最新サンプルのコピーを取得する。 GetCurrentSample 現在は実装されていない。 SetCallback サンプル到着時に呼び出すコールバック メソッドを指定する。
サンプル グラバの入力ピン上の接続に使用するメディア タイプを取得する。
構文
HRESULT GetConnectedMediaType( AM_MEDIA_TYPE *pType );
パラメータ
- pType
- AM_MEDIA_TYPE 構造体を受け取る変数へのポインタ。
戻り値
次のいずれかの値を返す。
E_POINTER NULL ポインタ引数。 S_OK 成功。 VFW_E_NOT_CONNECTED フィルタが接続されていない。
最新サンプルに関連付けられたバッファのコピーを取得する。
構文
HRESULT GetCurrentBuffer( long *pBufferSize, long *pBuffer );
パラメータ
- pBufferSize
- [in, out] バッファのサイズへのポインタ。pBuffer が NULL の場合、このパラメータは必要なサイズを受け取る。pBuffer が NULL でない場合、このパラメータはバッファのサイズを示す。
- pBuffer
- [out] サンプルのコピーを受け取るバッファへのポインタ、または NULL。
戻り値
次のいずれかの値を返す。
E_INVALIDARG サンプルがバッファリングされていない。 E_POINTER NULL ポインタ引数。 S_OK 成功。 VFW_E_NOT_CONNECTED フィルタが接続されていない VFW_E_WRONG_STATE フィルタが不適切な状態にある。
注意
バッファリングをアクティブにするには、値 TRUE で SetBufferSamples を呼び出す。
現在は実装されていない。
構文
HRESULT GetCurrentSample( IMediaSample **ppSample );
フィルタ内を通るサンプルをバッファにコピーするかどうかを指定する。
構文
HRESULT SetBufferSamples( BOOL BufferThem );
パラメータ
- BufferThem
- サンプル データをバッファリングするかどうかを指定するブール型の値。TRUE の場合、フィルタはサンプル データを内部バッファにコピーする。
戻り値
S_OK を返す。
サンプル到着時に呼び出すコールバック メソッドを指定する。
構文
HRESULT SetCallback( ISampleGrabberCB *pCallback, long WhichMethodToCallback );
パラメータ
- pCallback
- コールバック メソッドが格納された ISampleGrabberCB インターフェイスへのポインタ、または NULL。コールバックを取り消す場合に、NULL を指定する。
- WhichMethodToCallback
- コールバック メソッドを指定するインデックス。次のいずれかの値を指定する。
0 ISampleGrabberCB::SampleCB メソッドを呼び出す。 1 ISampleGrabberCB::BufferCB メソッドを呼び出す。
戻り値
次のいずれかの値を返す。
E_INVALIDARG サンプルはバッファリングされていない。 S_OK 成功。
注意
サンプルが Microsoft® DirectDraw® サーフェスである場合、そのサーフェスはコールバック中にロックされる。Win16 ロック (Win16Mutex とも呼ばれる) も、ロックされることがある。これらのロックによって、デッドロックの可能性が生まれる。コールバック スレッドが DirectDraw API を呼び出そうとしているスレッドを待っている場合、デッドロックが発生する可能性がある。さらに、Win16 ロックが保持されている場合、コールバックにクリティカル セクションが保持されているか、またはほかのスレッドが処理を完了するのを待っていると、デッドロックが発生する可能性がある。
そのため、コールバックはブロックを発生させる可能性のある処理を実行してはならない。これには、クリティカル セクションの保持や、ほかのスレッド待ちが含まれる。また、ウィンドウを動かすような GDI や USER32.DLL API を呼び出してはならない。Win16 ロックについての詳細は、Knowledge Base 文章 Q125867 : Understandign Win16Mutex ((http://support.microsoft.com/support/kb/articles/Q125/8/67.asp) を参照すること。
データ処理スレッドは、コールバック メソッドから戻るまでブロックする。コールバック メソッドから戻るまでに時間がかかると、再生に影響が出る可能性がある。
サンプル グラバの入力ピン上の接続に使用するメディア タイプを指定する。
構文
HRESULT SetMediaType( const AM_MEDIA_TYPE *pType );
パラメータ
- pType
- メディア タイプを指定する AM_MEDIA_TYPE 型の変数へのポインタ。構造体メンバをすべて設定する必要はない。このパラメータでは、メジャー タイプだけを指定したり、メジャー タイプとサブタイプを指定したり、メジャー タイプ、サブタイプ、およびフォーマット タイプを指定したりすることができる。その他の構造体メンバは無視される。
戻り値
S_OK を返す。
注意
デフォルトでは、サンプル グラバに優先メディア タイプはない。サンプル グラバを正しいフィルタに確実に接続するには、グラフをレンダリングする前にこのメソッドを呼び出す。
サンプルを 1 つ受け取ったらフィルタがグラフを停止すべきかどうかを指定する。
構文
HRESULT SetOneShot( BOOL OneShot );
パラメータ
- OneShot
- サンプルを 1 つ受け取ったらフィルタがグラフを停止すべきかどうかを指定するブール型の値。TRUE の場合、最初のサンプルを受け取ると、フィルタは停止し、EC_COMPLETE を通知する。FALSE の場合、フィルタは通常どおり実行を続ける。
戻り値
S_OK を返す。
注意
値 TRUE でこのメソッドを呼び出し、希望の時間までシークし、グラフを実行すると、特定時間のサンプルを取得できる。