XAudio2 音訊效果
音訊效果是接受傳入音訊數據的物件,並在傳遞數據之前對數據執行一些作業。 您可以使用效果來執行各種工作,包括將殘響新增至音訊串流,以及監視尖峰音量層級。
效果鏈結
任何 XAudio2 語音都可以裝載音訊效果鏈結。 您可以使用 XAUDIO2_EFFECT_DESCRIPTOR 結構的數位來指定效果鏈結。 每個描述項都包含用戶端所提供之效果物件的指標。 這些對象必須實作音訊處理物件 (APO) 介面。 如需 APO 模型的詳細資訊,請參閱 XAPO 概觀。
效果鏈結可由客戶端動態修改(當 XAudio2 引擎正在執行時),可以個別啟用或停用效果,而且效果參數可以變更,完全不會中斷音訊。 每當效果圖形的任何層面變更時,XAudio2 會再次優化圖形,以避免不必要的處理。 請參閱 IXAudio2Voice::SetEffectChain、IXAudio2Voice::EnableEffect,以及 IXAudio2Voice::SetEffectParameters。
在效果附加至 XAudio2 語音之後,XAudio2 會控制效果,而且客戶端不應該再呼叫它。 確保這是釋放效果所有指標的最簡單方式。
指定 XAudio2 語音效果鏈結中的效果必須取用併產生在該語音處理取樣率的浮點音訊。 他們可以變更的音訊格式唯一層面是通道計數(例如,殘響效果可以將單聲道數據轉換成 5.1)。 用戶端可以使用 XAUDIO2_EFFECT_DESCRIPTOR。OutputChannels 字段,以指定每個效果應該產生的通道數目。 如果任何效果無法滿足這些需求,或效果會產生一些無法處理下一個效果的通道,效果鏈結就會失敗。 任何 IXAudio2Voice::EnableEffect 或 IXAudio2Voice::D isableEffect 呼叫,導致效果鏈停止滿足這些需求將會失敗。
XAudio2 中使用的 APO 介面必須 破壞性。 這表示它們一律會覆寫他們在輸出緩衝區中找到的任何數據。 否則,產生的音訊可能不正確,因為 XAudio2 無法保證這些緩衝區先前已以無聲方式初始化。
XAudio2 內建效果
下表列出 XAudio2 及其建立方法所提供的一組內建音訊效果。
影響 | 建立方法 |
---|---|
混響 | XAudio2CreateReverb |
音量計量 | XAudio2CreateVolumeMeter |
如需建立和使用音訊效果實例的範例,請參閱 如何:建立效果鏈結。
XAudio2 中的自定義效果
XAPO API 提供一個架構,讓您建立可在 XAudio2 中使用的自定義音訊效果。 如需使用 XAPO 建立自訂效果的範例,請參閱 如何:建立 XAPO。
XAPO 效果連結庫 (XAPOFX)
XAPOFX 提供額外的 XPO 連結庫,以及建立它們的共同機制。 如需搭配 XAudio2 使用 XAPOFX 的範例,請參閱 如何:在 XAudio2 中使用 XAPOFX。
相關主題