Add gstsink to devicefinder

This commit is contained in:
Jonas Kvinge
2018-06-17 15:07:11 +02:00
parent 416beb6b8e
commit 008c39cd00
6 changed files with 12 additions and 11 deletions

View File

@@ -35,7 +35,7 @@
#include "alsadevicefinder.h" #include "alsadevicefinder.h"
AlsaDeviceFinder::AlsaDeviceFinder() AlsaDeviceFinder::AlsaDeviceFinder()
: DeviceFinder("alsa") { : DeviceFinder("alsa", "alsasink") {
} }
@@ -59,18 +59,20 @@ QList<DeviceFinder::Device> AlsaDeviceFinder::ListDevices() {
if (card < 0) break; if (card < 0) break;
char str[32]; char str[32];
snprintf(str, sizeof(str) - 1, "hw:%d", card);
snd_ctl_t* handle; snd_ctl_t* handle;
snprintf(str, 31, "hw:%d", card);
result = snd_ctl_open(&handle, str, 0); result = snd_ctl_open(&handle, str, 0);
if (result < 0) { if (result < 0) {
qLog(Error) << "Unable to open soundcard" << card << ":" << snd_strerror(result); qLog(Error) << "Unable to open soundcard" << card << ":" << snd_strerror(result);
continue; continue;
} }
BOOST_SCOPE_EXIT(&handle) { snd_ctl_close(handle); }
BOOST_SCOPE_EXIT_END
result = snd_ctl_card_info(handle, cardinfo); result = snd_ctl_card_info(handle, cardinfo);
if (result < 0) { if (result < 0) {
qLog(Error) << "Control hardware failure for card" << card << ":" << snd_strerror(result); qLog(Error) << "Control hardware failure for card" << card << ":" << snd_strerror(result);
BOOST_SCOPE_EXIT(&handle) { snd_ctl_close(handle); }
BOOST_SCOPE_EXIT_END
continue; continue;
} }
@@ -103,8 +105,6 @@ QList<DeviceFinder::Device> AlsaDeviceFinder::ListDevices() {
ret.append(device); ret.append(device);
} }
BOOST_SCOPE_EXIT(&handle) { snd_ctl_close(handle); }
BOOST_SCOPE_EXIT_END
} }
snd_config_update_free_global(); snd_config_update_free_global();

View File

@@ -23,7 +23,7 @@
#include "devicefinder.h" #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) { QString DeviceFinder::GuessIconName(const QString &description) {

View File

@@ -51,12 +51,13 @@ class DeviceFinder {
virtual QList<Device> ListDevices() = 0; virtual QList<Device> ListDevices() = 0;
protected: protected:
explicit DeviceFinder(const QString &name); explicit DeviceFinder(const QString &name, const QString &gstsink);
static QString GuessIconName(const QString &description); static QString GuessIconName(const QString &description);
private: private:
QString name_; QString name_;
QString gstsink_;
}; };

View File

@@ -35,7 +35,7 @@
#include "core/logging.h" #include "core/logging.h"
DirectSoundDeviceFinder::DirectSoundDeviceFinder() DirectSoundDeviceFinder::DirectSoundDeviceFinder()
: DeviceFinder("directsound") { : DeviceFinder("directsound", "directsoundsink") {
} }
QList<DeviceFinder::Device> DirectSoundDeviceFinder::ListDevices() { QList<DeviceFinder::Device> DirectSoundDeviceFinder::ListDevices() {

View File

@@ -62,7 +62,7 @@ std::unique_ptr<T> GetProperty(const AudioDeviceID& device_id, const AudioObject
OsxDeviceFinder::OsxDeviceFinder() OsxDeviceFinder::OsxDeviceFinder()
: DeviceFinder("osxaudio") { : DeviceFinder("osxaudio", "osxaudiosink") {
} }
QList<DeviceFinder::Device> OsxDeviceFinder::ListDevices() { QList<DeviceFinder::Device> OsxDeviceFinder::ListDevices() {

View File

@@ -34,7 +34,7 @@
#include "devicefinder.h" #include "devicefinder.h"
#include "pulsedevicefinder.h" #include "pulsedevicefinder.h"
PulseDeviceFinder::PulseDeviceFinder() : DeviceFinder("pulseaudio"), mainloop_(nullptr), context_(nullptr) { PulseDeviceFinder::PulseDeviceFinder() : DeviceFinder("pulseaudio", "pulsesink"), mainloop_(nullptr), context_(nullptr) {
} }
bool PulseDeviceFinder::Initialise() { bool PulseDeviceFinder::Initialise() {