summaryrefslogtreecommitdiff
path: root/tests/audioprobe.cpp
diff options
context:
space:
mode:
authorStephen Sinclair <radarsat1@gmail.com>2021-10-11 22:09:37 +0200
committerStephen Sinclair <radarsat1@gmail.com>2021-10-11 23:06:45 +0200
commit37ce19b44c5947d343b4c7ca27f93fdfd01370bf (patch)
tree9ab8cda8d029bb7ea3f7758ceea900f6a11c3eb9 /tests/audioprobe.cpp
parent0d34adfedf92b33707dfe92c21efadc19c541f2f (diff)
audioprobe: list devices for all APIs
Allows to select the API by index or by short name.
Diffstat (limited to 'tests/audioprobe.cpp')
-rw-r--r--tests/audioprobe.cpp47
1 files changed, 28 insertions, 19 deletions
diff --git a/tests/audioprobe.cpp b/tests/audioprobe.cpp
index 00f2f0d..dbe0985 100644
--- a/tests/audioprobe.cpp
+++ b/tests/audioprobe.cpp
@@ -11,33 +11,25 @@
#include <iostream>
#include <map>
-int main()
+std::vector< RtAudio::Api > listApis()
{
- // Create an api map.
- std::map<int, std::string> apiMap;
- apiMap[RtAudio::MACOSX_CORE] = "OS-X Core Audio";
- apiMap[RtAudio::WINDOWS_ASIO] = "Windows ASIO";
- apiMap[RtAudio::WINDOWS_DS] = "Windows DirectSound";
- apiMap[RtAudio::WINDOWS_WASAPI] = "Windows WASAPI";
- apiMap[RtAudio::UNIX_JACK] = "Jack Client";
- apiMap[RtAudio::LINUX_ALSA] = "Linux ALSA";
- apiMap[RtAudio::LINUX_PULSE] = "Linux PulseAudio";
- apiMap[RtAudio::LINUX_OSS] = "Linux OSS";
- apiMap[RtAudio::RTAUDIO_DUMMY] = "RtAudio Dummy";
-
std::vector< RtAudio::Api > apis;
RtAudio :: getCompiledApi( apis );
- std::cout << "\nRtAudio Version " << RtAudio::getVersion() << std::endl;
-
std::cout << "\nCompiled APIs:\n";
- for ( unsigned int i=0; i<apis.size(); i++ )
- std::cout << " " << apiMap[ apis[i] ] << std::endl;
+ for ( size_t i=0; i<apis.size(); i++ )
+ std::cout << i << ". " << RtAudio::getApiDisplayName(apis[i])
+ << " (" << RtAudio::getApiName(apis[i]) << ")" << std::endl;
- RtAudio audio;
+ return apis;
+}
+
+void listDevices(RtAudio::Api api)
+{
+ RtAudio audio(api);
RtAudio::DeviceInfo info;
- std::cout << "\nCurrent API: " << apiMap[ audio.getCurrentApi() ] << std::endl;
+ std::cout << "\nAPI: " << RtAudio::getApiDisplayName(audio.getCurrentApi()) << std::endl;
unsigned int devices = audio.getDeviceCount();
std::cout << "\nFound " << devices << " device(s) ...\n";
@@ -89,6 +81,23 @@ int main()
std::cout << "Preferred sample rate = " << info.preferredSampleRate << std::endl;
}
}
+}
+
+int main(int argc, char *argv[])
+{
+ std::cout << "\nRtAudio Version " << RtAudio::getVersion() << std::endl;
+
+ std::vector< RtAudio::Api > apis = listApis();
+
+ for ( size_t api=0; api < apis.size(); api++ )
+ {
+ errno = 0;
+ char *s;
+ if (argc < 2
+ || apis[api] == RtAudio::getCompiledApiByName(argv[1])
+ || (api == std::strtoul(argv[1], &s, 10) && argv[1] != s && !errno))
+ listDevices(apis[api]);
+ }
std::cout << std::endl;
return 0;