Platform SDK: DirectX |
DirectSound は、オーディオ デバイス ドライバが実装するインターフェイス、つまり DirectSound ハードウェア アブストラクション レイヤ (HAL) を使ってサウンド機器へアクセスする。
DirectSound HAL は、以下の機能を提供する。
デバイス ドライバは、ソフトウェア エミュレーションを一切行わない。ハードウェアの能力を DirectSound へ通知し、DirectSound からの要求をハードウェアに伝えるだけである。要求された操作をハードウェアが実行できない場合には、デバイス ドライバが要求の失敗を報告した後、DirectSound がその操作をエミュレートする。
DirectX の実行時ファイルがユーザーのシステム上にある限り、アプリケーションは DirectSound を利用できる。サウンド機器に対応する DirectSound ドライバが実装されていない場合は、DirectSound は Windows のマルチメディア ウェーブフォーム オーディオ関数 (waveIn と waveOut) を利用したハードウェア エミュレーション レイヤ (HEL) を使う。DirectSound のほとんどの機能は、HEL を通して利用できるが、ハードウェア アクセラレーションは当然不可能である。アプリケーションがエミュレーション ドライバを使って動作しているかどうかを調べるには、C++ の IDirectSound::GetCaps メソッド、または Visual Basic の DirectSound.GetCaps メソッドを呼び出し、DSCAPS_EMULDRIVER フラグをチェックする。
DirectSound は、ハードウェア ミキシングやハードウェア サウンドバッファ メモリなどのサウンド機器のアクセラレーション機能を自動的に活用する。このハードウェア アクセラレーションを使うときに、アプリケーションからハードウェアやプログラムに特に問い合わせる必要はない。ただし、ハードウェア リソースを最大限に利用するには、(さまざまな GetCaps メソッドを使って) 実行時に DirectSound への問い合わせを行ってサウンド機器の能力の全情報を入手し、特定の機能の有無に応じて最適のルーチンを使う。また、どのサウンド バッファにハードウェア アクセラレーションを適用するかを指定することもできる。