Xaudio2 で SharpDX VolumeMeter を使用しようとしています。SetEffectParameters を使用して VolumeMeterLevels オブジェクトを渡したいのですが、オブジェクトには public int ChannelCount しかなく、MSDN セクションに記載されている 2 つのポインターはありません。API はそれらを内部としてリストします。
pPeakLevels と pRMSLevels の 2 つのポインターを渡す必要があります。これどうやってするの?
コードで更新。以下では、新しい VolumeMeter、MasteringVoice、および VolumeMeterDescriptor を作成します。MasteringVoiceのエフェクトチェーンにVolumeMeterをセットしました。
Xaudio2Engine = new XAudio2();
Xaudio2Engine.StartEngine();
MVoice = new MasteringVoice(Xaudio2Engine, XAudio2.DefaultChannels, XAudio2.DefaultSampleRate, DIString);
VMeter = new VolumeMeter();
EffectDescriptor VMeterDescriptor = new EffectDescriptor(VMeter, MVoice.VoiceDetails.InputChannelCount);
MVoice.SetEffectChain(VMeterDescriptor);
問題は、VolumeMeter に API ( http://sharpdx.org/documentation/api/t-sharpdx-xaudio2-fx-volumemeterlevels ) に従って、アプリケーションによって割り当てられる必要がある 2 つの非公開プロパティ PeakLevelPointer と RmsLevelsPointer があることです。次に、VolumeMeter は、メーターを機能させるためにポインタが指す float 配列を埋めます。問題は、2 つの非パブリック ポインターを渡すにはどうすればよいかということです。