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’effet XAudio2.
Créez le XAPO comme décrit dans How to : Create a XAPO.
Vous pouvez également implémenter des fonctionnalités de paramètre au moment de l’exécution, comme décrit dans Comment : ajouter la prise en charge des paramètres d’exécution à un XAPO.
Créez une instance de XAPO.
IUnknown * pXAPO; pXAPO = new SimpleXAPO();Remplir une structure de _ _ descripteur d’effet XAUDIO2 avec des données.
XAUDIO2_EFFECT_DESCRIPTOR descriptor; descriptor.InitialState = true; descriptor.OutputChannels = 1; descriptor.pEffect = pXAPO;Remplir une structure de _ _ chaîne d’effet XAUDIO2 avec des données.
XAUDIO2_EFFECT_CHAIN chain; chain.EffectCount = 1; chain.pEffectDescriptors = &descriptor;Appliquez la chaîne d’effet à une voix XAudio2 avec la fonction SetEffectChain .
pVoice->SetEffectChain(&chain);Notes
Une chaîne d’effet 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 :: CreateSubmixVoiceou IXAudio2 :: CreateMasteringVoice.
Libérer l’effet avec IUnknown :: Release.
Lorsque vous créez un XAPO, il aura un nombre de références de 1. Lorsque XAPO est passé à XAudio2 avec SetEffectChain, XAudio2 incrémente le décompte de références sur le XAPO. Le fait de libérer la référence du client au XAPO permet à XAudio2 de prendre possession du XAPO. Si XAudio2 a la seule référence à XAPO, il sera supprimé lorsqu’il n’est plus utilisé par XAudio2. Si le code client doit conserver une référence à XAPO pour une réutilisation ultérieure, par exemple, vous devez ignorer cette étape.
pXAPO->Release();Renseignez la structure de paramètre, le cas échéant, associée à l’effet. Dans ce cas, pourcentage de la puissance totale à laquelle l’effet doit être appliqué.
XAPO_PARAMETERS XAPOParameters; XAPOParameters.Level = 0.75;Transmettez la structure du paramètre Effect à l’effet en appelant la fonction SetEffectParameters sur la voix à laquelle l’effet est attaché.
hr = pVoice->SetEffectParameters( 0, &XAPOParameters, sizeof( XAPO_PARAMETERS ) );