diff options
author | Tim Mayberry <mojofunk@gmail.com> | 2015-08-28 08:53:10 +1000 |
---|---|---|
committer | Tim Mayberry <mojofunk@gmail.com> | 2015-11-19 10:23:26 +1000 |
commit | f1b336b01e28f499dcd73a1fd65236efe118eb7d (patch) | |
tree | c2437a4f8966396a768945e5376d6713b5b05845 /libs/backends/portaudio/portaudio_io.cc | |
parent | 6c85f976dee68f79e89fc211092fad6fde4b1bba (diff) |
Add support for callback API to portaudio backend but keep blocking API as default
Don't use the callback API for now until further and wider testing.
Diffstat (limited to 'libs/backends/portaudio/portaudio_io.cc')
-rw-r--r-- | libs/backends/portaudio/portaudio_io.cc | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/libs/backends/portaudio/portaudio_io.cc b/libs/backends/portaudio/portaudio_io.cc index 678a59f4f3..f3276cc7ea 100644 --- a/libs/backends/portaudio/portaudio_io.cc +++ b/libs/backends/portaudio/portaudio_io.cc @@ -745,6 +745,49 @@ PortAudioIO::pre_stream_open(int device_input, } PaErrorCode +PortAudioIO::open_callback_stream(int device_input, + int device_output, + double sample_rate, + uint32_t samples_per_period, + PaStreamCallback* callback, + void* data) +{ + PaStreamParameters inputParam; + PaStreamParameters outputParam; + + PaErrorCode error_code = + pre_stream_open(device_input, inputParam, device_output, outputParam); + + if (error_code != paNoError) return error_code; + + PaError err = paNoError; + + DEBUG_AUDIO ("Open Callback Stream\n"); + + err = Pa_OpenStream(&_stream, + _capture_channels > 0 ? &inputParam : NULL, + _playback_channels > 0 ? &outputParam : NULL, + sample_rate, + samples_per_period, + paDitherOff, + callback, + data); + + if (err != paNoError) { + DEBUG_AUDIO ("PortAudio failed to start stream.\n"); + return paInternalError; + } + + if (!set_sample_rate_and_latency_from_stream()) { + DEBUG_AUDIO ("PortAudio failed to query stream information.\n"); + close_stream(); + return paInternalError; + } + + return paNoError; +} + +PaErrorCode PortAudioIO::open_blocking_stream(int device_input, int device_output, double sample_rate, |