Microsoft DirectX 8.0 |
IAMBufferNegotiation インターフェイスは、ピンの中でも特にキャプチャ フィルタ内のピンにおいて実装される。これによってアプリケーションは、ピンにおけるバッファの割り当て処理を制御できる。
電子会議アプリケーションでは、このインターフェイスを使用して最小のバッファ数を指定する。これによって、低速なキャプチャ環境やディスクへの書き込みが行われる環境での、情報のバッファリングによるリソースの無駄を防ぐことができる。
アプリケーションが、キャプチャしたオーディオを出力デバイスに送信することによってオーディオ プレビューを実行していて、遅延時間が大きすぎると思われる場合は、バッファ数を少なくしてみる。
IAMBufferNegotiation::SuggestAllocatorProperties メソッドは、使用するアロケータのカウント、サイズ、アラインメント、およびプレフィックスのプロパティで構成される ALLOCATOR_PROPERTIES 構造体をサポートする。通常は、ALLOCATOR_PROPERTIES 構造体の cBuffers メンバだけを設定する。これは、指定のアロケータのバッファ数に相当する。その他のすべてのプロパティについては、負の値を指定することで、キャプチャ ハードウェア自体のデフォルト値が使用される。
cBuffers に対して負の値を指定すると、アロケータが必要とするだけのバッファ数の割り当てが試みられる。その個数は、利用可能なリソースとキャプチャ フレーム レートによって異なる。大きな値を指定すると、システムで利用可能なメモリを最高に、より多くのバッファの割り当てがアロケータによって試みられる。バッファ数の割り当てが少ないと、場合によってはドロップ フレームが発生する。電子会議アプリケーションでは、多くの場合、この値を小さな値に設定することが望ましい。たとえば、ネットワークが、指定のビデオ方式と解像度では 2 フレーム/秒 (fps) の転送速度だけをサポートする場合は、2 という値が適切な設定である。
アプリケーションでは、IAMBufferNegotiation::GetAllocatorProperties メソッドを呼び出して、使用しているアロケータのプロパティを取得できる。
フィルタ開発者: IMemInputPin インターフェイスを使用してピンを別のピンに接続し、フィルタ間でメディア サンプルをトランスポートするときに使用するバッファ設定をアプリケーションが割り当てる場合は、このインターフェイスを実装する。アプリケーションが正確なバッファ設定を指定できるようにするためには、すべてのキャプチャ フィルタがこのインターフェイスをサポートする必要がある。
vtable 順のメソッド
IUnknown メソッド 説明 QueryInterface サポートされているインターフェイスへのポインタを取得する。 AddRef 参照カウントをインクリメントする。 Release 参照カウントをデクリメントする。 IAMBufferNegotiation メソッド 説明 SuggestAllocatorProperties ALLOCATOR_PROPERTIES 構造体に設定されているアロケータのバッファ プロパティを使用することを、ピンに対して指定する。 GetAllocatorProperties ピンが使用する、アロケータのプロパティを取得する。
ピンが使用している、アロケータのプロパティを取得する。
構文
HRESULT GetAllocatorProperties(
ALLOCATOR_PROPERTIES *pprop
);
パラメータ
- pprop
- [out] ALLOCATOR_PROPERTIES 構造体へのポインタ。
戻り値
成功した場合は S_OK を返す。それ以外の場合は、失敗の原因を示す HRESULT 値を返す。有効なエラー コードは、次のとおりである。
E_FAIL 失敗。 E_POINTER NULL ポインタ。 VFW_E_NOT_CONNECTED ピンが接続されていない。
注意
このメソッドを呼び出すのは、ピンが接続した後に限られる。
参照
ALLOCATOR_PROPERTIES 構造体に設定されているアロケータのバッファ プロパティを使用することを、ピンに対して指定する。
構文
HRESULT SuggestAllocatorProperties(
const ALLOCATOR_PROPERTIES *pprop
);
パラメータ
- pprop
- [in] ALLOCATOR_PROPERTIES 構造体へのポインタ。
戻り値
成功した場合は S_OK を返す。それ以外の場合は、失敗の原因を示す HRESULT 値を返す。有効なエラー コードは、次のとおりである。
E_FAIL 失敗。 (指定のプロパティを使用できなかった。) E_POINTER NULL ポインタ。 E_UNEXPECTED 予期せぬ失敗。 VFW_E_ALREADY_CONNECTED ピンは接続済みである。
注意
アプリケーションでは、2 つのピンを接続する前にこの関数を呼び出す必要がある。このメソッドを呼び出す前にピンが接続されている場合、フィルタ グラフはバッファを既に決定しており、アプリケーションがこれを事前に割り当てることはもやはできない。
アプリケーションでは、接続する両方のピンについてこのメソッドを呼び出し、ほかのピンがアプリケーションの要求を書き換えることがないようにしなければならない。ただし、一方のピンがこのインターフェイスをサポートしていない場合は、1 回の呼び出しで十分である。
ALLOCATOR_PROPERTIES 構造体内の任意の要素に対して負の値を使用すると、プロパティはデフォルト値に設定される。
参照