Xaudio2에서 SharpDX VolumeMeter를 사용하려고합니다. SetEffectParameters를 사용하여 VolumeMeterLevels 객체를 전달하려고하지만 객체에는 공개 int ChannelCount 만 있고 MSDN 섹션에 표시된 두 개의 포인터는 없습니다. API는 이들을 내부로 나열합니다.플로트 배열 포인터를 Volumemeter에 전달하는 방법
나는 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은 API (http://sharpdx.org/documentation/api/t-sharpdx-xaudio2-fx-volumemeterlevels)에 따라 애플리케이션에 의해 할당되어야 할 두 비공개 특성 PeakLevelPointer 및 RmsLevelsPointer를 갖는다는 것이다. 그러면 VolumeMeter는 미터가 작동하도록 포인터가 가리키는 플로트 배열을 채 웁니다. 문제는 두 개의 비공개 포인터를 어떻게 전달할 수 있는가입니다.
질문에 귀하의 코드를 추가하십시오? –
코드로 업데이트 됨 – WJM