Partager via


Procédure : Utiliser un XAPO dans XAudio2

Cette rubrique vous montre comment utiliser un effet créé avec l’API XAPO dans une chaîne d’effets XAudio2.

  1. Créez le XAPO comme décrit dans Guide pratique pour créer un objet XAPO.

    Vous pouvez également implémenter la fonctionnalité de paramètre d’exécution, comme décrit dans Guide pratique pour ajouter la prise en charge des paramètres d’exécution à un objet XAPO.

  2. Créez un instance du XAPO.

    IUnknown * pXAPO;
    pXAPO = new SimpleXAPO();
    
  3. Remplissez une structure de XAUDIO2_EFFECT_DESCRIPTOR avec des données.

    XAUDIO2_EFFECT_DESCRIPTOR descriptor;
    descriptor.InitialState = true;
    descriptor.OutputChannels = 1;
    descriptor.pEffect = pXAPO;
    
  4. Remplissez une structure de XAUDIO2_EFFECT_CHAIN avec des données.

    XAUDIO2_EFFECT_CHAIN chain;
    chain.EffectCount = 1;
    chain.pEffectDescriptors = &descriptor;
    
  5. Appliquez la chaîne d’effets à une voix XAudio2 avec la fonction SetEffectChain .

    pVoice->SetEffectChain(&chain);
    

    Notes

    Une chaîne d’effets peut également être appliquée à une voix lorsque la voix est créée en passant la chaîne en tant que paramètre à IXAudio2::CreateSourceVoice, IXAudio2::CreateSubmixVoice ou IXAudio2::CreateMasteringVoice.

     

  6. Relâchez l’effet avec IUnknown::Release.

    Lorsque vous créez un objet XAPO, il a un nombre de références de 1. Lorsque l’objet XAPO est passé à XAudio2 avec SetEffectChain, XAudio2 incrémente le nombre de références sur le XAPO. La libération de la référence du client à l’objet XAPO permet à XAudio2 de prendre possession du XAPO. Si XAudio2 a la seule référence à l’objet XAPO, il est supprimé lorsqu’il n’est plus utilisé par XAudio2. Si le code client doit conserver une référence à l’objet XAPO pour une réutilisation ultérieure, par exemple, vous devez ignorer cette étape.

    pXAPO->Release();
    
  7. Remplissez la structure de paramètre, le cas échéant, associée à l’effet . Dans ce cas, le pourcentage de puissance totale à laquelle l’effet doit être appliqué.

    XAPO_PARAMETERS XAPOParameters;
    XAPOParameters.Level = 0.75;
    
  8. Passez la structure du paramètre d’effet à l’effet en appelant la fonction SetEffectParameters sur la voix à laquelle l’effet est attaché.

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

Effets audio

Vue d’ensemble de XAPO

Guide de programmation XAudio2