From 008c39cd003f0a25da44ffdc6ac0da98a07221c5 Mon Sep 17 00:00:00 2001 From: Jonas Kvinge Date: Sun, 17 Jun 2018 15:07:11 +0200 Subject: [PATCH] Add gstsink to devicefinder --- src/engine/alsadevicefinder.cpp | 12 ++++++------ src/engine/devicefinder.cpp | 2 +- src/engine/devicefinder.h | 3 ++- src/engine/directsounddevicefinder.cpp | 2 +- src/engine/osxdevicefinder.cpp | 2 +- src/engine/pulsedevicefinder.cpp | 2 +- 6 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/engine/alsadevicefinder.cpp b/src/engine/alsadevicefinder.cpp index b53600e0f..2a7e63e34 100644 --- a/src/engine/alsadevicefinder.cpp +++ b/src/engine/alsadevicefinder.cpp @@ -35,7 +35,7 @@ #include "alsadevicefinder.h" AlsaDeviceFinder::AlsaDeviceFinder() - : DeviceFinder("alsa") { + : DeviceFinder("alsa", "alsasink") { } @@ -59,18 +59,20 @@ QList AlsaDeviceFinder::ListDevices() { if (card < 0) break; char str[32]; + snprintf(str, sizeof(str) - 1, "hw:%d", card); + snd_ctl_t* handle; - snprintf(str, 31, "hw:%d", card); result = snd_ctl_open(&handle, str, 0); if (result < 0) { qLog(Error) << "Unable to open soundcard" << card << ":" << snd_strerror(result); continue; } + BOOST_SCOPE_EXIT(&handle) { snd_ctl_close(handle); } + BOOST_SCOPE_EXIT_END + result = snd_ctl_card_info(handle, cardinfo); if (result < 0) { qLog(Error) << "Control hardware failure for card" << card << ":" << snd_strerror(result); - BOOST_SCOPE_EXIT(&handle) { snd_ctl_close(handle); } - BOOST_SCOPE_EXIT_END continue; } @@ -103,8 +105,6 @@ QList AlsaDeviceFinder::ListDevices() { ret.append(device); } - BOOST_SCOPE_EXIT(&handle) { snd_ctl_close(handle); } - BOOST_SCOPE_EXIT_END } snd_config_update_free_global(); diff --git a/src/engine/devicefinder.cpp b/src/engine/devicefinder.cpp index d9ca3f93f..363104fff 100644 --- a/src/engine/devicefinder.cpp +++ b/src/engine/devicefinder.cpp @@ -23,7 +23,7 @@ #include "devicefinder.h" -DeviceFinder::DeviceFinder(const QString &name): name_(name) { +DeviceFinder::DeviceFinder(const QString &name, const QString &gstsink): name_(name), gstsink_(gstsink) { } QString DeviceFinder::GuessIconName(const QString &description) { diff --git a/src/engine/devicefinder.h b/src/engine/devicefinder.h index eb59921dc..eb806c24f 100644 --- a/src/engine/devicefinder.h +++ b/src/engine/devicefinder.h @@ -51,12 +51,13 @@ class DeviceFinder { virtual QList ListDevices() = 0; protected: - explicit DeviceFinder(const QString &name); + explicit DeviceFinder(const QString &name, const QString &gstsink); static QString GuessIconName(const QString &description); private: QString name_; + QString gstsink_; }; diff --git a/src/engine/directsounddevicefinder.cpp b/src/engine/directsounddevicefinder.cpp index d80862b70..bdec613f7 100644 --- a/src/engine/directsounddevicefinder.cpp +++ b/src/engine/directsounddevicefinder.cpp @@ -35,7 +35,7 @@ #include "core/logging.h" DirectSoundDeviceFinder::DirectSoundDeviceFinder() - : DeviceFinder("directsound") { + : DeviceFinder("directsound", "directsoundsink") { } QList DirectSoundDeviceFinder::ListDevices() { diff --git a/src/engine/osxdevicefinder.cpp b/src/engine/osxdevicefinder.cpp index e23d46e44..73b52e0d3 100644 --- a/src/engine/osxdevicefinder.cpp +++ b/src/engine/osxdevicefinder.cpp @@ -62,7 +62,7 @@ std::unique_ptr GetProperty(const AudioDeviceID& device_id, const AudioObject OsxDeviceFinder::OsxDeviceFinder() - : DeviceFinder("osxaudio") { + : DeviceFinder("osxaudio", "osxaudiosink") { } QList OsxDeviceFinder::ListDevices() { diff --git a/src/engine/pulsedevicefinder.cpp b/src/engine/pulsedevicefinder.cpp index e916f1178..e96ad29c6 100644 --- a/src/engine/pulsedevicefinder.cpp +++ b/src/engine/pulsedevicefinder.cpp @@ -34,7 +34,7 @@ #include "devicefinder.h" #include "pulsedevicefinder.h" -PulseDeviceFinder::PulseDeviceFinder() : DeviceFinder("pulseaudio"), mainloop_(nullptr), context_(nullptr) { +PulseDeviceFinder::PulseDeviceFinder() : DeviceFinder("pulseaudio", "pulsesink"), mainloop_(nullptr), context_(nullptr) { } bool PulseDeviceFinder::Initialise() {