示例#1
0
        private unsafe static PaStreamCallbackResult PaStreamCallback(float *input, float *output, uint frameCount, ref PaStreamCallbackTimeInfo timeInfo, PaStreamCallbackFlags statusFlags, IntPtr userData)
        {
            GCHandle gCHandle = GCHandle.FromIntPtr(userData);

            if (!gCHandle.IsAllocated)
            {
                return(PaStreamCallbackResult.PaAbort);
            }
            WaveRecorder waveRecorder = (WaveRecorder)gCHandle.Target;

            try
            {
                if (waveRecorder._bufferAvailable != null)
                {
                    waveRecorder._bufferAvailable(input, (int)frameCount);
                }
            }
            catch
            {
                return(PaStreamCallbackResult.PaAbort);
            }
            return(PaStreamCallbackResult.PaContinue);
        }