Compartilhar via


Como: Usar um XAPO no XAudio2

Este tópico mostra como usar um efeito criado com a API XAPO em uma cadeia de efeitos XAudio2.

  1. Crie o XAPO conforme descrito em Como criar um XAPO.

    Você também pode implementar a funcionalidade de parâmetro em tempo de execução, conforme descrito em Como adicionar suporte a parâmetros em tempo de execução a um XAPO.

  2. Crie uma instância do XAPO.

    IUnknown * pXAPO;
    pXAPO = new SimpleXAPO();
    
  3. Preencha uma estrutura de XAUDIO2_EFFECT_DESCRIPTOR com dados.

    XAUDIO2_EFFECT_DESCRIPTOR descriptor;
    descriptor.InitialState = true;
    descriptor.OutputChannels = 1;
    descriptor.pEffect = pXAPO;
    
  4. Preencha uma estrutura XAUDIO2_EFFECT_CHAIN com dados.

    XAUDIO2_EFFECT_CHAIN chain;
    chain.EffectCount = 1;
    chain.pEffectDescriptors = &descriptor;
    
  5. Aplique a cadeia de efeitos a uma voz XAudio2 com a função SetEffectChain .

    pVoice->SetEffectChain(&chain);
    

    Observação

    Uma cadeia de efeitos também pode ser aplicada a uma voz quando a voz é criada passando a cadeia como um parâmetro para IXAudio2::CreateSourceVoice, IXAudio2::CreateSubmixVoice ou IXAudio2::CreateMasteringVoice.

     

  6. Libere o efeito com IUnknown::Release.

    Quando você criar um XAPO, ele terá uma contagem de referência de 1. Quando o XAPO é passado para XAudio2 com SetEffectChain, XAudio2 incrementa a contagem de referência no XAPO. Liberar a referência do cliente ao XAPO permite que XAudio2 se aproprie do XAPO. Se xAudio2 tiver a única referência ao XAPO, ele será descartado quando não estiver mais sendo usado pelo XAudio2. Se o código do cliente precisar manter uma referência ao XAPO para reutilização posterior, por exemplo, você deverá ignorar esta etapa.

    pXAPO->Release();
    
  7. Preencha a estrutura de parâmetros, se houver, associada ao efeito . Nesse caso, a porcentagem de força total na qual o efeito deve ser aplicado.

    XAPO_PARAMETERS XAPOParameters;
    XAPOParameters.Level = 0.75;
    
  8. Passe a estrutura do parâmetro de efeito para o efeito chamando a função SetEffectParameters na voz à qual o efeito está anexado.

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

Efeitos de áudio

Visão geral do XAPO

Guia de Programação em XAudio2