diff options
author | Tim Mayberry <mojofunk@gmail.com> | 2015-08-23 17:37:14 +1000 |
---|---|---|
committer | Tim Mayberry <mojofunk@gmail.com> | 2015-09-02 12:07:14 +1000 |
commit | 8e0e3fcdee28a7a7a4ba6b3e26505a57c37c6dfa (patch) | |
tree | 7eef5c35eebf85569fdde1cc88e76977268fc356 /libs/backends/portaudio/portaudio_io.cc | |
parent | 58cfd00e5a41d38a49e8672b535a62b7fff3da2d (diff) |
Refactor part of PortAudioIO::pcm_setup into new method
Diffstat (limited to 'libs/backends/portaudio/portaudio_io.cc')
-rw-r--r-- | libs/backends/portaudio/portaudio_io.cc | 43 |
1 files changed, 26 insertions, 17 deletions
diff --git a/libs/backends/portaudio/portaudio_io.cc b/libs/backends/portaudio/portaudio_io.cc index 4cb10c5431..c4711e06b2 100644 --- a/libs/backends/portaudio/portaudio_io.cc +++ b/libs/backends/portaudio/portaudio_io.cc @@ -560,6 +560,31 @@ PortAudioIO::pcm_start() } bool +PortAudioIO::set_sample_rate_and_latency_from_stream () +{ + const PaStreamInfo* nfo_s = Pa_GetStreamInfo(_stream); + + if (nfo_s == NULL) { + return false; + } + + _cur_sample_rate = nfo_s->sampleRate; + _cur_input_latency = nfo_s->inputLatency * _cur_sample_rate; + _cur_output_latency = nfo_s->outputLatency * _cur_sample_rate; + + DEBUG_AUDIO (string_compose ("PA Sample Rate %1 SPS\n", _cur_sample_rate)); + + DEBUG_AUDIO (string_compose ("PA Input Latency %1ms, %2 spl\n", + 1e3 * nfo_s->inputLatency, + _cur_input_latency)); + + DEBUG_AUDIO (string_compose ("PA Output Latency %1ms, %2 spl\n", + 1e3 * nfo_s->outputLatency, + _cur_output_latency)); + return true; +} + +bool PortAudioIO::allocate_buffers_for_blocking_api (uint32_t samples_per_period) { if (_capture_channels > 0) { @@ -592,7 +617,6 @@ PortAudioIO::pcm_setup ( PaError err = paNoError; const PaDeviceInfo *nfo_in = NULL; const PaDeviceInfo *nfo_out = NULL; - const PaStreamInfo *nfo_s = NULL; if (!initialize_pa()) { DEBUG_AUDIO ("PortAudio Initialization Failed\n"); @@ -693,27 +717,12 @@ PortAudioIO::pcm_setup ( return -1; } - nfo_s = Pa_GetStreamInfo (_stream); - if (!nfo_s) { + if (!set_sample_rate_and_latency_from_stream()) { DEBUG_AUDIO ("PortAudio failed to query stream information.\n"); pcm_stop(); return -1; } - _cur_sample_rate = nfo_s->sampleRate; - _cur_input_latency = nfo_s->inputLatency * _cur_sample_rate; - _cur_output_latency = nfo_s->outputLatency * _cur_sample_rate; - - DEBUG_AUDIO (string_compose ("PA Sample Rate %1 SPS\n", _cur_sample_rate)); - - DEBUG_AUDIO (string_compose ("PA Input Latency %1ms, %2 spl\n", - 1e3 * nfo_s->inputLatency, - _cur_input_latency)); - - DEBUG_AUDIO (string_compose ("PA Output Latency %1ms, %2 spl\n", - 1e3 * nfo_s->outputLatency, - _cur_output_latency)); - _state = 0; if (!allocate_buffers_for_blocking_api(samples_per_period)) { |