Esempio n. 1
0
        /// <summary>
        /// Fetches the audio buffer from mupen64plus and pushes it into the
        /// Resampler for audio output
        /// </summary>
        public void DoAudioFrame()
        {
            uint m64pSamplingRate = api.GetSamplingRate();

            if (m64pSamplingRate != SamplingRate)
            {
                SamplingRate = m64pSamplingRate;
            }

            int audioBufferSize = api.GetAudioBufferSize();

            if (audioBuffer.Length < audioBufferSize)
            {
                audioBuffer = new short[audioBufferSize];
            }

            if (audioBufferSize > 0)
            {
                api.GetAudioBuffer(audioBuffer);
                if (RenderSound)
                {
                    Resampler.EnqueueSamples(audioBuffer, audioBufferSize / 2);
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Creates a N64 Audio subsystem
        /// </summary>
        /// <param name="api">Mupen64 api which is used for fetching sound</param>
        public N64Audio(mupen64plusApi core)
        {
            this.api = new mupen64plusAudioApi(core);

            _samplingRate = api.GetSamplingRate();
            Resampler     = new SpeexResampler(6, SamplingRate, 44100,
                                               SamplingRate, 44100);

            core.VInterrupt += DoAudioFrame;
        }