DirectSound 硬體加速概觀
許多音訊配接器提供 DirectSound 硬體加速,其能夠針對一或多個 DirectSound 串流執行硬體混合。 硬體混合透過將音訊混音作業從 CPU 轉移到硬體上以硬體速度執行,以提升效能。 除了混合之外,硬體還可以執行相關作業,例如取樣率轉換 (SRC)、衰減,以及選擇性地進行的 3D 處理,這些作業否則需要在軟體中執行。
所有 WaveCyclic 或 WavePci 轉譯裝置都會提供一或多個硬體引腳來混合音訊串流。 在單一串流裝置的情況下,KMixer 系統驅動程式 一律會在一個可用的硬體渲染管腳上初始化。
具有 DirectSound 硬體加速的裝置提供不只一個的硬體混音端口。 每個額外的引腳都可以用來混合 DirectSound 數據流。 饋送至硬體混音器針腳的 DirectSound 串流會略過 KMixer,並避免在 KMixer 中混合軟體的延遲。 只要這些 pin 具有符合 DirectSound 節點排序需求的拓撲,DirectSound 會使用所有音訊裝置可用的硬體加速混音器針腳,。 DirectSound 也需要接腳支援 KSDATAFORMAT_SPECIFIER_DSOUND 所指定的 DirectSound 資料格式(請參閱 DirectSound Stream 資料格式)。
SysAudio 系統驅動程式 一律為 KMixer 保留一個硬體針腳,這樣在所有其他(未預留)硬體針腳都已配置後,任何額外的音頻流都可以由 KMixer 混合並輸入至保留的硬體針腳。
使用 DirectSound 軟體和硬體緩衝區轉譯 Wave 內容的圖表 說明這些概念。
如果音訊裝置提供足夠的硬體混合針腳,則所有 DirectSound 應用程式的輸出數據流都可以以硬體加速。 如果沒有,DirectSound 應用程式有幾個選項:
它可以靜態分配可用的硬體混合針腳到需要最低延遲的音頻流。
可以將針腳視為共享資源池,並在需要時動態分配可用的硬體混合針腳至各個數據流。
如需詳細資訊,請參閱 Microsoft Windows SDK 檔中的語音管理討論。
DirectSound 可以使用兩種類型的硬體混音器針腳:2D 和 3D。 2D 引腳會執行 SRC、衰減和混合,但不會執行 3D 定位。 DirectSound 可以使用 2D 針腳來執行 3D 定位,方法是在軟體中執行必要的衰減和頻率計算,並將結果套用至 2D 針腳上的適當節點。 相反地,3D 針包含 3D 節點,能夠直接從 3D 緩衝區和 3D 聆聽器屬性計算自己的 3D 效果,而不是依賴 DirectSound 來執行此動作。 如需 3D 節點的屬性清單,請參閱 KSNODETYPE_3D_EFFECTS。 如需有關 2D 和 3D pin 的更多資訊,請參閱 支援在 WDM 音訊中加速 2D DirectSound 和 支援在 WDM 音訊中加速 3D DirectSound。