次の方法で共有


IVMRFilterConfig::SetNumberOfStreams

SetNumberOfStreams メソッドは、ミキシングするストリームの数を設定し、VMR にミキサー モードに移行するように指示する。

構文

  HRESULT SetNumberOfStreams(
  DWORD  dwMaxStreams
);

パラメータ

dwMaxStreams

[in] ミキシングに VMR を必要とする入力ストリームの最大数を格納する DWORD 型の値。MAX_MIXER_STREAMS (16) よりも大きい値を指定しないこと。

戻り値

メソッドが成功すると S_OK を返す。失敗するとエラー コードを返す。

エラー コード 説明
E_FAIL ミキサーは既に構成されている。
E_INVALIDARG 16 を超える入力ストリームに対してミキサーを構成しようとした。
E_OUTOFMEMORY ストリームを管理するためのメモリを割り当てられなかった。

注意

dwMaxStreams は、必要な入力ピンの数と同じでなければならない。VMR が接続された後では、ピンは追加も削除もできない。事前に必要な入力ストリーム数がわからないときは、dxMaxStreams を最大限必要となる数に設定すること。1 の値は dwMaxStreams には有効である。この値を設定しても追加ピンは作成されないが、VMR を "ミキサー モード" に強制的に移行する。したがって、このメソッドが一度呼び出されると、SetRenderingMode を呼び出してモードを VMRMode_Renderless には設定できない。

VMR は、指定された数だけ入力ピンを作成するが、それらのピンをすべてサポートできるだけのビデオ メモリがあるかどうかを判断しようとはしない。これは、この時点ではメディア タイプや矩形のディメンジョンを知る方法がないからである。後で、アップストリーム フィルタがピンに接続しようとすると、その時点ではメディア タイプがわかるので、VMR はビデオ メモリを調べて、ストリームを処理できる十分なメモリがない場合は接続を失敗させる。

 :  VMR は複数のストリームをサポートしているが、それらのストリームは 1 つのクロックを共有しているので、あるストリームを個別にはシークできない。入力ストリームを個別にシークする必要がある場合は、別の手法を使う必要がある。詳細については、VMRMulti サンプルを参照すること。

参照