XAudio2'de XAPO Kullanımı Nasıl Yapılır?
Bu konu, XAudio2 efekt zincirinde XAPO API'siyle oluşturulan bir efektin nasıl kullanılacağını gösterir.
Nasıl Yapılır: XAPOoluşturma bölümünde açıklandığı gibi XAPO'yu yaratın.
Ayrıca, Nasıl yapılır: XAPO'ya Çalışma Zamanı Parametresi Desteği Eklemebölümünde açıklandığı gibi çalışma zamanı parametresi işlevselliğini uygulayabilirsiniz.
XAPO'nun bir örneğini oluşturun.
IUnknown * pXAPO; pXAPO = new SimpleXAPO();
XAUDIO2_EFFECT_DESCRIPTOR yapısını verilerle doldurun.
XAUDIO2_EFFECT_DESCRIPTOR descriptor; descriptor.InitialState = true; descriptor.OutputChannels = 1; descriptor.pEffect = pXAPO;
XAUDIO2_EFFECT_CHAIN yapısını verilerle doldurun.
XAUDIO2_EFFECT_CHAIN chain; chain.EffectCount = 1; chain.pEffectDescriptors = &descriptor;
SetEffectChain işleviyle efekt zincirini XAudio2 sesine uygulayın.
pVoice->SetEffectChain(&chain);
Not
Bir efekt zinciri, IXAudio2::CreateSourceVoice, IXAudio2::CreateSubmixVoiceveya IXAudio2::CreateMasteringVoiceiçin parametre olarak geçirilerek ses oluşturulduğunda sese de uygulanabilir.
Etkiyi IUnknown::Release ile serbest bırakın.
XAPO oluşturduğunuzda, referans sayısı 1 olur. XAPO, SetEffectChainile XAudio2'ye geçirildiğinde XAudio2, XAPO'da başvuru sayısını artırır. İstemcinin XAPO referansının serbest bırakılması, XAudio2'nin XAPO'nun sahipliğini almasını sağlar. XAudio2, XAPO'ya tek başvuruya sahipse, XAudio2 tarafından artık kullanılmadığında atılır. İstemci kodunun, örneğin daha sonra yeniden kullanmak için XAPO'ya bir referans tutması gerekiyorsa, bu adımı atlamalısınız.
pXAPO->Release();
Etkiyle ilişkili parametre yapısını (varsa) doldurun. Bu durumda, efektin uygulanması gereken tam kuvvetin yüzdesi.
XAPO_PARAMETERS XAPOParameters; XAPOParameters.Level = 0.75;
Efektin eklendiği seste SetEffectParameters işlevini çağırarak efekt parametresi yapısını efekte geçirin.
hr = pVoice->SetEffectParameters( 0, &XAPOParameters, sizeof( XAPO_PARAMETERS ) );
İlgili konular