summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Mayberry <mojofunk@gmail.com>2015-08-04 12:25:46 +1000
committerTim Mayberry <mojofunk@gmail.com>2015-08-05 13:21:26 +1000
commit7295bb645426f471282e415cd8ae3d1c3afe51c4 (patch)
tree4bfb7c2d39a203f59815369f773e1219088b5c08
parent6ca1c8164f6d43588729cd3f7e74c27040920613 (diff)
Refactor methods in PortaudioBackend to get ASIO buffer sizes
-rw-r--r--libs/backends/portaudio/portaudio_io.cc35
-rw-r--r--libs/backends/portaudio/portaudio_io.h6
2 files changed, 34 insertions, 7 deletions
diff --git a/libs/backends/portaudio/portaudio_io.cc b/libs/backends/portaudio/portaudio_io.cc
index 665df97823..c007e29436 100644
--- a/libs/backends/portaudio/portaudio_io.cc
+++ b/libs/backends/portaudio/portaudio_io.cc
@@ -160,7 +160,11 @@ PortAudioIO::available_sample_rates(int device_id, std::vector<float>& sampleRat
#ifdef WITH_ASIO
bool
-PortAudioIO::get_asio_buffer_sizes (int device_id, std::vector<uint32_t>& buffer_sizes)
+PortAudioIO::get_asio_buffer_properties (int device_id,
+ long& min_size_frames,
+ long& max_size_frames,
+ long& preferred_size_frames,
+ long& granularity)
{
// we shouldn't really need all these checks but it shouldn't hurt
const PaDeviceInfo* device_info = Pa_GetDeviceInfo(device_id);
@@ -185,20 +189,37 @@ PortAudioIO::get_asio_buffer_sizes (int device_id, std::vector<uint32_t>& buffer
return false;
}
- long min_size, max_size, preferred_size, granularity;
-
- PaError err = PaAsio_GetAvailableBufferSizes (
- device_id, &min_size, &max_size, &preferred_size, &granularity);
+ PaError err = PaAsio_GetAvailableBufferSizes (device_id,
+ &min_size_frames,
+ &max_size_frames,
+ &preferred_size_frames,
+ &granularity);
if (err != paNoError) {
DEBUG_AUDIO (string_compose (
"Unable to determine available buffer sizes for device %1\n", device_id));
return false;
}
-
- buffer_sizes.push_back(preferred_size);
return true;
}
+
+bool
+PortAudioIO::get_asio_buffer_sizes (int device_id, std::vector<uint32_t>& buffer_sizes)
+{
+ long min_size_frames, max_size_frames, preferred_size_frames, granularity;
+
+ if (!get_asio_buffer_properties (device_id,
+ min_size_frames,
+ max_size_frames,
+ preferred_size_frames,
+ granularity)) {
+ DEBUG_AUDIO (string_compose (
+ "Unable to get device buffer properties from device index %1\n", device_id));
+ return false;
+ }
+
+ buffer_sizes.push_back(preferred_size_frames);
+}
#endif
bool
diff --git a/libs/backends/portaudio/portaudio_io.h b/libs/backends/portaudio/portaudio_io.h
index 1a122e7074..3d52ae6509 100644
--- a/libs/backends/portaudio/portaudio_io.h
+++ b/libs/backends/portaudio/portaudio_io.h
@@ -56,6 +56,12 @@ public:
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,
+ long& max_size_frames,
+ long& preferred_size_frames,
+ long& granularity);
+
bool get_asio_buffer_sizes (int device_id, std::vector<uint32_t>& buffer_size);
#endif