オーディオ キャプチャ プロパティの設定

オーディオ キャプチャ フィルタの各入力ピンは IAMAudioInputMixer インターフェイスを公開する。このインターフェイスを使い、特定の入力を有効または無効にするには、ピンに対して IAMAudioInputMixer::put_Enable メソッドを呼び出す。また、低音域部、高音域部、ボリューム レベルなど、入力のプロパティを設定する場合も、このインターフェイスを使う。同時に複数の入力をキャプチャする場合は、フィルタ自体の IAMAudioInputMixer インターフェイスを使って全体の低音域部、高音域部、ボリューム レベルを制御できる。

キャプチャに利用できるサンプリング レートとオーディオ フォーマットは、ドライバにより決定される。利用できるサンプリング レートとフォーマットを列挙し、必要なフォーマットを設定するには、オーディオ キャプチャ フィルタの出力ピン上の IAMStreamConfig インターフェイスを使う。フィルタは、出力ピンのメディア タイプを受け入れる任意のフィルタに、ダウンストリームを接続できる。

また、オーディオ キャプチャ フィルタは IAMBufferNegotiation インターフェイスも公開する。このインターフェイスはオーディオ プレビューにおける遅延時間量を制御するときに役立つ。デフォルトでは、オーディオ キャプチャ フィルタは 0.5 秒のバッファ サイズを使う。このバッファ サイズはキャプチャ用に最適化されているが、プレビューに 0.5 秒の遅延が生じることになる。遅延時間を減らすには、オーディオ キャプチャ フィルタの出力ピンを接続する前に IAMBufferNegotiation::SuggestAllocatorProperties メソッドを呼び出す。このメソッドは ALLOCATOR_PROPERTIES 構造体へのポインタを受け取る。バッファ サイズをバイト単位で指定するには、cbBuffer メンバを使う。通常は 80 ミリ秒のバッファが安全であるが、30 ~ 40 ミリ秒のバッファでも十分なことがある。バッファが小さすぎると、音質は低下する。