IMediaObject::GetInputSizeInfo メソッド (mediaobj.h)
メソッドは GetInputSizeInfo
、指定された入力ストリームのバッファー要件を取得します。
構文
HRESULT GetInputSizeInfo(
DWORD dwInputStreamIndex,
[out] DWORD *pcbSize,
[out] DWORD *pcbMaxLookahead,
[out] DWORD *pcbAlignment
);
パラメーター
dwInputStreamIndex
DMO 上の入力ストリームの 0 から始まるインデックス。
[out] pcbSize
このストリームの入力バッファーの最小サイズをバイト単位で受け取る変数へのポインター。
[out] pcbMaxLookahead
DMO が先読みのために保持する最大データ量をバイト単位で受け取る変数へのポインター。 DMO がストリームで先読みを実行しない場合、値は 0 です。
[out] pcbAlignment
必要なバッファーアラインメントを受け取る変数へのポインター (バイト単位)。 入力ストリームにアラインメント要件がない場合、値は 1 です。
戻り値
HRESULT 値を返します。 次の表に示す値を指定できます。
リターン コード | 説明 |
---|---|
|
ストリーム インデックスが無効です。 |
|
メディアの種類が設定されていません。 |
|
正常終了しました。 |
解説
バッファー要件は、さまざまなストリームのメディアの種類によって異なります。 このメソッドを呼び出す前に、 IMediaObject::SetInputType メソッドと IMediaObject::SetOutputType メソッドを呼び出して、各ストリームのメディア の種類を 設定します。 メディアの種類が設定されていない場合、このメソッドはエラーを返す可能性があります。
DMO が入力ストリームに対して先読みを実行すると、 IMediaObject::GetInputStreamInfo メソッドでDMO_INPUT_STREAMF_HOLDS_BUFFERS フラグが返されます。 処理中、DMO は pcbMaxLookahead パラメーターによって示されるバイト数まで保持します。 アプリケーションは、DMO がこの多くのデータを保持するのに十分なバッファーを割り当てる必要があります。
バッファーの開始アドレスが *pcbAlignment の倍数である場合、バッファーはアラインされます。 配置は 2 の累乗である必要があります。 マイクロプロセッサによっては、アラインされたバッファーに対する読み取りと書き込みが、アラインされていないバッファーよりも高速になる場合があります。 また、一部のマイクロプロセッサでは、整列されていない読み取りと書き込みがサポートされていません。
要件
対象プラットフォーム | Windows |
ヘッダー | mediaobj.h (Dmo.h を含む) |
Library | Dmoguids.lib |