次の方法で共有


DirectSound ハードウェア アクセラレータの概要

多くのオーディオ アダプターは、1 つ以上の DirectSound ストリームのハードウェア ミキシングを実行する機能である DirectSound ハードウェア アクセラレーションを提供します。 ハードウェア ミキシングでは、CPU からオーディオ ミキシング操作をオフロードし、ハードウェアの速度で実行することで、パフォーマンスが向上します。 混合に加えて、ハードウェアは、サンプル レート変換 (SRC)、減衰、必要に応じてソフトウェアで実行する必要がある 3D 処理などの関連する操作を実行します。

すべての WaveCyclic または WavePci レンダリング デバイスには、オーディオ ストリームを混合するための 1 つ以上のハードウェア ピンが用意されています。 単一ストリーム デバイスの場合、 KMixer システム ドライバー は常に、使用可能な 1 つのハードウェア レンダリング ピンでインスタンス化されます。

DirectSound ハードウェア アクセラレーションを備えたデバイスは、複数のハードウェア ミキシング ピンを提供します。 各追加のピンを使用して、DirectSound ストリームを混在させることができます。 ハードウェア ミキサー ピンに送り込まれる DirectSound ストリームは KMixer をバイパスし、KMixer でのソフトウェア ミキシングの待機時間を回避します。 DirectSoundは、DirectSoundのノード・オーダーの要件に適合するトポロジーを持つピンがある限り、オーディオ・デバイスの利用可能なハードウェア・アクセラレーテッド・ミキサー・ピンのすべてを使用します。 DirectSound では、ピンが KSDATAFORMAT_SPECIFIER_DSOUND で指定された DirectSound データ形式をサポートしている必要もあります (DirectSound ストリームデータ形式を参照)。

SysAudioシステムドライバは、常にKMixerのために1つのハードウェアピンを予約しており、他の(予約されていない)ハードウェアピンがすべて割り当てられた後、追加のストリームをKMixerでミキシングし、予約されたハードウェアピンに送ることができます。

DirectSoundソフトウェアおよびハードウェアバッファを使用した波コンテンツのレンダリング の図は、これらの概念を示しています。

オーディオ デバイスが十分な数のハードウェア ミキシング ピンを提供する場合、DirectSound アプリケーションのすべての出力ストリームをハードウェアアクセラレータで高速化できます。 そうでない場合、DirectSound アプリケーションにはいくつかのオプションがあります。

  • 待機時間が最も短いストリームに、使用可能なハードウェア ミキシング ピンを静的に割り当てることができます。

  • ピンを共有リソースのプールとして扱うことで、必要に応じて使用可能なハードウェア ミキシング ピンをストリームに動的に割り当てることができます。

詳細については、Microsoft Windows SDK ドキュメントの音声管理の説明を参照してください。

DirectSound は、2D と 3D の 2 種類のハードウェア ミキサー ピンを使用できます。 2D ピンは SRC、減衰、ミキシングを実行しますが、3D の配置は実行しません。 DirectSound は、ソフトウェアで必要な減衰と周波数の計算を実行し、2D ピン上の適切なノードに結果を適用することで、2D ピンを使用して 3D 位置決めを行うことができます。 これに対し、3D ピンには、DirectSound に依存するのではなく、3D バッファープロパティと 3D リスナー プロパティから直接独自の 3D 効果を計算できる 3D ノードが含まれています。 3D ノードのプロパティの一覧については、「KSNODETYPE_3D_EFFECTS」を参照してください。 2D ピンと 3D ピンの詳細については、「WDM オーディオでの 2D DirectSound アクセラレーションのサポート」および「WDM Audio での 3D DirectSound アクセラレーションのサポート」を参照してください。