Procédure : utiliser un XAPOFX dans XAudio2
Cette rubrique vous montre comment utiliser l’un des effets inclus dans XAPOFX dans une chaîne d’effet XAudio2.
Pour utiliser un effet à partir de XAPOFX dans une chaîne d’effet XAudio2
Créez l’effet en passant le CLSID d’un effet XAPOFX à la fonction CreateFX .
Dans ce cas, l’effet de réverbération simplifié FXReverb est créé.
IUnknown * pXAPO; CreateFX(__uuidof(FXReverb),&pXAPO);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
Vous pouvez également appliquer une chaîne d’effet à une voix quand vous créez la voix 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, cette référence est supprimée lorsqu’elle n’est plus utilisée par XAudio2. Si le code client doit conserver une référence à XAPO, par exemple, pour une réutilisation ultérieure, vous pouvez ignorer cette étape.
pXAPO->Release();Renseignez la structure de paramètre, le cas échéant, associée à l’effet.
Dans ce cas, la structure de _ paramètres FXREVERB est utilisée pour définir la diffusion et la taille de la salle que l’effet de réverbération doit utiliser.
FXREVERB_PARAMETERS XAPOParameters; XAPOParameters.Diffusion = FXREVERB_DEFAULT_DIFFUSION; XAPOParameters.RoomSize = FXREVERB_DEFAULT_ROOMSIZE;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( FXREVERB_PARAMETERS ) );