共用方式為


使用方法:在 XAudio2 中使用 XAPO

本主題說明如何在 XAudio2 效果鏈結中使用以 XAPO API 建立的效果。

  1. 建立 XAPO,如 如何:建立 XAPO中所述。

    您也可以實作執行時間參數功能,如 如何:將執行時間參數支援新增至 XAPO中所述。

  2. 建立 XAPO 的實例。

    IUnknown * pXAPO;
    pXAPO = new SimpleXAPO();
    
  3. 使用資料填入 XAUDIO2_EFFECT_DESCRIPTOR 結構。

    XAUDIO2_EFFECT_DESCRIPTOR descriptor;
    descriptor.InitialState = true;
    descriptor.OutputChannels = 1;
    descriptor.pEffect = pXAPO;
    
  4. 使用資料填入 XAUDIO2_EFFECT_CHAIN 結構。

    XAUDIO2_EFFECT_CHAIN chain;
    chain.EffectCount = 1;
    chain.pEffectDescriptors = &descriptor;
    
  5. 使用 SetEffectChain 函式將效果鏈結套用至 XAudio2 語音。

    pVoice->SetEffectChain(&chain);
    

    注意

    藉由將鏈結當作參數傳遞至 IXAudio2::CreateSourceVoiceIXAudio2::CreateSubmixVoiceIXAudio2::CreateMasteringVoice,也可以將效果鏈結套用至語音。

     

  6. 使用 IUnknown::Release 釋放效果。

    當您建立 XAPO 時,其參考計數會是 1。 當 XAPO 傳遞至 具有 SetEffectChain的 XAudio2 時,XAudio2 會遞增 XAPO 上的參考計數。 釋放用戶端對 XAPO 的參考,可讓 XAudio2 取得 XAPO 的擁有權。 如果 XAudio2 只有 XAPO 的參考,當 XAudio2 不再使用時,將會加以處置。 如果用戶端程式代碼需要維護 XAPO 的參考,以供稍後重複使用,您應該略過此步驟。

    pXAPO->Release();
    
  7. 如果有任何與效果相關聯的參數結構,請填入參數結構。 在此情況下,應該套用效果的完整強度百分比。

    XAPO_PARAMETERS XAPOParameters;
    XAPOParameters.Level = 0.75;
    
  8. 藉由在附加效果的語音上呼叫 SetEffectParameters 函式,將效果參數結構傳遞至效果。

    hr = pVoice->SetEffectParameters( 0, &XAPOParameters, sizeof( XAPO_PARAMETERS ) );
    

音訊效果

XAPO 概觀

XAudio2 程式設計指南