summaryrefslogtreecommitdiff
path: root/libs/backends/portaudio
diff options
context:
space:
mode:
authorTim Mayberry <mojofunk@gmail.com>2015-08-23 13:12:26 +1000
committerTim Mayberry <mojofunk@gmail.com>2015-09-02 12:07:14 +1000
commit519f97b91dfcfa7175b6ec49fd456258d9e2cf06 (patch)
tree68f83b12571b4066e32f79c48f7f09079e2f5a3b /libs/backends/portaudio
parentcc7e97f2966f8b31940ab3382514c58feb2690e2 (diff)
Use two private utility functions in PortaudioIO class for default SR's and buffer sizes
Diffstat (limited to 'libs/backends/portaudio')
-rw-r--r--libs/backends/portaudio/portaudio_io.cc53
-rw-r--r--libs/backends/portaudio/portaudio_io.h4
2 files changed, 38 insertions, 19 deletions
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<float>& 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<float>& 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<float>& 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<float> rates;
+ get_default_sample_rates(rates);
+
+ for (std::vector<float>::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<uint32_t>& buffer
}
#endif
-bool
-PortAudioIO::get_default_buffer_sizes (int device_id, std::vector<uint32_t>& buffer_sizes)
+void
+PortAudioIO::get_default_buffer_sizes(std::vector<uint32_t>& 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<uint32_t>& 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<float>& sample_rates);
int available_buffer_sizes (int device_id, std::vector<uint32_t>& buffer_sizes);
- bool get_default_buffer_sizes (int device_id, std::vector<uint32_t>& 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<float>&);
+ static void get_default_buffer_sizes(std::vector<uint32_t>&);
+
private: // Data
int _state;
bool _initialized;