From 519f97b91dfcfa7175b6ec49fd456258d9e2cf06 Mon Sep 17 00:00:00 2001 From: Tim Mayberry Date: Sun, 23 Aug 2015 13:12:26 +1000 Subject: Use two private utility functions in PortaudioIO class for default SR's and buffer sizes --- libs/backends/portaudio/portaudio_io.cc | 53 ++++++++++++++++++++++----------- libs/backends/portaudio/portaudio_io.h | 4 ++- 2 files changed, 38 insertions(+), 19 deletions(-) (limited to 'libs/backends/portaudio') diff --git a/libs/backends/portaudio/portaudio_io.cc b/libs/backends/portaudio/portaudio_io.cc index 2d64e63922..28127a1298 100644 --- a/libs/backends/portaudio/portaudio_io.cc +++ b/libs/backends/portaudio/portaudio_io.cc @@ -98,11 +98,23 @@ PortAudioIO::launch_control_app (int device_id) #endif } +void +PortAudioIO::get_default_sample_rates (std::vector& rates) +{ + rates.push_back(8000.0); + rates.push_back(22050.0); + rates.push_back(24000.0); + rates.push_back(44100.0); + rates.push_back(48000.0); + rates.push_back(88200.0); + rates.push_back(96000.0); + rates.push_back(176400.0); + rates.push_back(192000.0); +} + int PortAudioIO::available_sample_rates(int device_id, std::vector& sampleRates) { - static const float ardourRates[] = { 8000.0, 22050.0, 24000.0, 44100.0, 48000.0, 88200.0, 96000.0, 176400.0, 192000.0}; - if (!initialize_pa()) return -1; // TODO use separate int device_input, int device_output ?! @@ -132,20 +144,23 @@ PortAudioIO::available_sample_rates(int device_id, std::vector& sampleRat outputParam.suggestedLatency = 0; outputParam.hostApiSpecificStreamInfo = 0; - for (uint32_t i = 0; i < sizeof(ardourRates)/sizeof(float); ++i) { - if (paFormatIsSupported == Pa_IsFormatSupported( - nfo->maxInputChannels > 0 ? &inputParam : NULL, - nfo->maxOutputChannels > 0 ? &outputParam : NULL, - ardourRates[i])) { - sampleRates.push_back (ardourRates[i]); + std::vector rates; + get_default_sample_rates(rates); + + for (std::vector::const_iterator i = rates.begin(); i != rates.end(); + ++i) { + if (paFormatIsSupported == + Pa_IsFormatSupported(nfo->maxInputChannels > 0 ? &inputParam : NULL, + nfo->maxOutputChannels > 0 ? &outputParam : NULL, + *i)) { + sampleRates.push_back(*i); } } } if (sampleRates.empty()) { // fill in something.. - sampleRates.push_back (44100.0); - sampleRates.push_back (48000.0); + get_default_sample_rates(sampleRates); } return 0; @@ -239,14 +254,16 @@ PortAudioIO::get_asio_buffer_sizes (int device_id, std::vector& buffer } #endif -bool -PortAudioIO::get_default_buffer_sizes (int device_id, std::vector& buffer_sizes) +void +PortAudioIO::get_default_buffer_sizes(std::vector& buffer_sizes) { - static const uint32_t ardourSizes[] = { 64, 128, 256, 512, 1024, 2048, 4096 }; - for(uint32_t i = 0; i < sizeof(ardourSizes)/sizeof(uint32_t); ++i) { - buffer_sizes.push_back (ardourSizes[i]); - } - return true; + buffer_sizes.push_back(64); + buffer_sizes.push_back(128); + buffer_sizes.push_back(256); + buffer_sizes.push_back(512); + buffer_sizes.push_back(1024); + buffer_sizes.push_back(2048); + buffer_sizes.push_back(4096); } int @@ -260,7 +277,7 @@ PortAudioIO::available_buffer_sizes(int device_id, std::vector& buffer } #endif - get_default_buffer_sizes (device_id, buffer_sizes); + get_default_buffer_sizes (buffer_sizes); return 0; } diff --git a/libs/backends/portaudio/portaudio_io.h b/libs/backends/portaudio/portaudio_io.h index 19604d9ae4..21102012f6 100644 --- a/libs/backends/portaudio/portaudio_io.h +++ b/libs/backends/portaudio/portaudio_io.h @@ -60,7 +60,6 @@ public: int available_sample_rates (int device_id, std::vector& sample_rates); int available_buffer_sizes (int device_id, std::vector& buffer_sizes); - bool get_default_buffer_sizes (int device_id, std::vector& buffer_sizes); #ifdef WITH_ASIO bool get_asio_buffer_properties (int device_id, long& min_size_frames, @@ -107,6 +106,9 @@ private: // Methods void add_devices (); std::string get_host_api_name_from_index (PaHostApiIndex index); + static void get_default_sample_rates(std::vector&); + static void get_default_buffer_sizes(std::vector&); + private: // Data int _state; bool _initialized; -- cgit v1.2.3