Пример #1
0
        internal void StreamCallback(IntPtr stream, IntPtr input, IntPtr output,
            int frames, double time, ulong position, bool timeValid, ulong error, IntPtr u) {

            XtFormat format = GetFormat();
            bool interleaved = IsInterleaved();
            object inData = raw ? (object)input : input == IntPtr.Zero ? null : interleaved ? inputInterleaved : inputNonInterleaved;
            object outData = raw ? (object)output : output == IntPtr.Zero ? null : interleaved ? outputInterleaved : outputNonInterleaved;

            if (!raw && inData != null)
                if (interleaved)
                    CopyInterleavedBufferFromNative(format.mix.sample, input, (Array)inData, format.inputs, frames);
                else
                    CopyNonInterleavedBufferFromNative(format.mix.sample, input, (Array)inData, format.inputs, frames);

            try {
                streamCallback(this, inData, outData, frames, time, position, timeValid, error, user);
            } catch (Exception e) {
                if (XtAudio.trace != null)
                    XtAudio.trace(XtLevel.Fatal, string.Format("Exception caught in xrun callback: {0}.", e));
                Console.WriteLine(e);
                Console.WriteLine(e.StackTrace);
                Environment.FailFast("Exception caught in stream callback.", e);
            }

            if (!raw && outData != null)
                if (interleaved)
                    CopyInterleavedBufferToNative(format.mix.sample, (Array)outData, output, format.outputs, frames);
                else
                    CopyNonInterleavedBufferToNative(format.mix.sample, (Array)outData, output, format.outputs, frames);
        }
Пример #2
0
 internal void XRunCallback(int index, IntPtr user) {
     try {
         xRunCallback(index, this.user);
     } catch (Exception e) {
         if (XtAudio.trace != null)
             XtAudio.trace(XtLevel.Fatal, string.Format("Exception caught in xrun callback: {0}.", e));
         Console.WriteLine(e);
         Console.WriteLine(e.StackTrace);
         Environment.FailFast("Exception caught in stream callback.", e);
     }
 }