Microsoft DirectX 8.0 (C++)

ISA カード上の DirectSound バッファ

DirectSound が最初に導入されたとき、すべてのオーディオ デバイスは ISA バス上で動作していた。ISA バスは、システム全体の性能に大きな影響を与えることなく、16 ビット、22 kHz ステレオ データを CPU からサウンド カードにストリーミングするには十分であった。しかし、より多くのデータを送信しようとすると、バスに過度の負荷がかかる場合があった。この制限によって、オーディオ ハードウェアの設計は大きく影響されていた。

DirectSound バッファをミキシングするために、サウンド カード上のチップで 2 とおりの処理を行うことができる。ISA バスを介してシステム メモリにアクセスするか、カード自体の専用メモリを使用するかである。ISA バスの帯域幅は限られているので、システム メモリからのオーディオ データの読み込みは現実的ではない。したがって、ISA ベースのサウンド カードで、DirectSound アクセラレーションを実行するカードは、ほとんどの場合専用のオンボード RAM を持っている。

このようなサウンド カードを使って DirectSound をアクセラレートする場合、まずサウンド データをシステム メモリから、ISA バスを介してカード上の専用メモリにコピーしなければならない。このコピーには若干時間がかかる場合がある。しかし、データをカードにコピーした後は、システムに対してサウンドの開始、停止、ミキシングの負荷はほとんどかからない。このような処理はすべて、カード上の専用メモリにアクセスするオーディオ プロセッサ チップによって処理される。

ISA ベースの DirectSound アクセラレータはカード上のスタティック バッファをサポートしているが、ストリーミング バッファはサポートしていない。これは、低速の ISA バスを介してデータをストリーミングするのは実用的ではないからである。DSBCAPS_STATIC フラグを指定して作成した DirectSound バッファは、カードにメモリが搭載されている場合、そのメモリに配置される。その他のバッファは、システム メモリに作成される。