我正在尝试在 Xaudio2 中使用 SharpDX VolumeMeter。我想使用 SetEffectParameters 传递一个 VolumeMeterLevels 对象,但该对象只有一个公共 int ChannelCount 而不是 MSDN 部分中提到的两个指针。API 将它们列为内部。
我需要传递 pPeakLevels 和 pRMSLevels 的两个指针。我怎样才能做到这一点?
用代码更新。下面我创建一个新的 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 有两个非公共属性 PeakLevelPointer 和 RmsLevelsPointer 根据 API ( http://sharpdx.org/documentation/api/t-sharpdx-xaudio2-fx-volumemeterlevels ) 必须由应用程序分配。VolumeMeter 然后将填充指针指向的浮点数组以使仪表工作。问题是:如何传递两个非公共指针?