コード例 #1
0
 internal PaStream(
     IntPtr stream, StreamCallbackContainer streamCallbackContainer,
     PaSampleFormat inputSampleFormat, PaSampleFormat outputSampleFormat,
     int numInputChannels, int numOutputChannels)
 {
     this.stream = stream;
     this.streamCallbackContainer = streamCallbackContainer;
 }
コード例 #2
0
        public PaStream OpenStream(
            PaStreamParameters?inputParameters, PaStreamParameters?outputParameters,
            double sampleRate, int framesPerBuffer, PaStreamFlags streamFlags,
            PaStreamCallback streamCallback, object userData)
        {
            var streamCallbackContainer = new StreamCallbackContainer(
                streamCallback,
                inputParameters.HasValue ? inputParameters.Value.sampleFormat : 0,
                outputParameters.HasValue ? outputParameters.Value.sampleFormat : 0,
                inputParameters.HasValue ? inputParameters.Value.channelCount : 0,
                outputParameters.HasValue ? outputParameters.Value.channelCount : 0,
                userData);
            IntPtr stream;

            unsafe
            {
                PaStreamParameters inputParametersTemp, outputParametersTemp;
                IntPtr             inputParametersPtr = IntPtr.Zero;
                if (inputParameters.HasValue)
                {
                    inputParametersPtr = new IntPtr(&inputParametersTemp);
                    Marshal.StructureToPtr <PaStreamParameters>(inputParameters.Value, inputParametersPtr, false);
                }
                IntPtr outputParametersPtr = IntPtr.Zero;
                if (outputParameters.HasValue)
                {
                    outputParametersPtr = new IntPtr(&outputParametersTemp);
                    Marshal.StructureToPtr <PaStreamParameters>(outputParameters.Value, outputParametersPtr, false);
                }
                PaErrorException.ThrowIfError(Pa_OpenStream(
                                                  new IntPtr(&stream),
                                                  inputParametersPtr, outputParametersPtr,
                                                  sampleRate, (unsigned_long_t)framesPerBuffer, streamFlags,
                                                  streamCallbackContainer.Callback, IntPtr.Zero));
            }
            return(new PaStream(
                       stream, streamCallbackContainer,
                       inputParameters.HasValue ? inputParameters.Value.sampleFormat : 0,
                       outputParameters.HasValue ? outputParameters.Value.sampleFormat : 0,
                       inputParameters.HasValue ? inputParameters.Value.channelCount : 0,
                       outputParameters.HasValue ? outputParameters.Value.channelCount : 0));
        }
コード例 #3
0
        public PaStream OpenDefaultStream(
            int numInputChannels, int numOutputChannels, PaSampleFormat sampleFormat,
            double sampleRate, int framesPerBuffer, PaStreamFlags streamFlags,
            PaStreamCallback streamCallback, object userData)
        {
            var streamCallbackContainer = new StreamCallbackContainer(
                streamCallback,
                sampleFormat, sampleFormat,
                numInputChannels, numOutputChannels, userData);
            IntPtr stream;

            unsafe
            {
                PaErrorException.ThrowIfError(Pa_OpenDefaultStream(
                                                  new IntPtr(&stream),
                                                  numInputChannels, numOutputChannels, sampleFormat,
                                                  sampleRate, (unsigned_long_t)framesPerBuffer, streamFlags,
                                                  streamCallbackContainer.Callback, IntPtr.Zero));
            }
            return(new PaStream(stream, streamCallbackContainer));
        }
コード例 #4
0
 internal PaStream(IntPtr stream, StreamCallbackContainer streamCallbackContainer)
 {
     this.stream = stream;
     this.streamCallbackContainer = streamCallbackContainer;
 }