1

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 つの非パブリック ポインターを渡すにはどうすればよいかということです。

4

1 に答える 1

0

SharpDX のサポートに問い合わせました。彼らは現在 VolumeMeter を実装していません。

于 2014-12-19T00:49:12.227 に答える