Add support for both ALSA hw and plughw
This commit is contained in:
@@ -99,10 +99,13 @@ QList<DeviceFinder::Device> AlsaDeviceFinder::ListDevices() {
|
||||
|
||||
Device device;
|
||||
device.description = QString("%1 %2").arg(snd_ctl_card_info_get_name(cardinfo)).arg(snd_pcm_info_get_name(pcminfo));
|
||||
device.value = QString("hw:%1,%2").arg(card).arg(dev);
|
||||
device.iconname = GuessIconName(device.description);
|
||||
device.card = card;
|
||||
device.device = dev;
|
||||
|
||||
device.value = QString("hw:%1,%2").arg(card).arg(dev);
|
||||
ret.append(device);
|
||||
device.value = QString("plughw:%1,%2").arg(card).arg(dev);
|
||||
ret.append(device);
|
||||
|
||||
}
|
||||
|
||||
@@ -93,6 +93,7 @@ public:
|
||||
virtual bool ValidOutput(const QString &output) = 0;
|
||||
virtual QString DefaultOutput() = 0;
|
||||
virtual bool CustomDeviceSupport(const QString &output) = 0;
|
||||
virtual bool ALSADeviceSupport(const QString &output) = 0;
|
||||
|
||||
// Plays a media stream represented with the URL 'u' from the given 'beginning' to the given 'end' (usually from 0 to a song's length).
|
||||
// Both markers should be passed in nanoseconds. 'end' can be negative, indicating that the real length of 'u' stream is unknown.
|
||||
|
||||
@@ -27,37 +27,33 @@
|
||||
namespace Engine {
|
||||
|
||||
Engine::EngineType EngineTypeFromName(QString enginename) {
|
||||
|
||||
QString lower = enginename.toLower();
|
||||
|
||||
if (lower == "xine") return Engine::Xine;
|
||||
else if (lower == "gstreamer") return Engine::GStreamer;
|
||||
else if (lower == "phonon") return Engine::Phonon;
|
||||
else if (lower == "vlc") return Engine::VLC;
|
||||
else return Engine::None;
|
||||
|
||||
if (lower == "xine") return Engine::Xine;
|
||||
else if (lower == "gstreamer") return Engine::GStreamer;
|
||||
else if (lower == "phonon") return Engine::Phonon;
|
||||
else if (lower == "vlc") return Engine::VLC;
|
||||
else return Engine::None;
|
||||
}
|
||||
|
||||
QString EngineName(Engine::EngineType enginetype) {
|
||||
switch (enginetype) {
|
||||
case Engine::Xine: return QObject::tr("xine");
|
||||
case Engine::GStreamer: return QObject::tr("gstreamer");
|
||||
case Engine::Phonon: return QObject::tr("phonon");
|
||||
case Engine::VLC: return QObject::tr("vlc");
|
||||
case Engine::Xine: return QString("xine");
|
||||
case Engine::GStreamer: return QString("gstreamer");
|
||||
case Engine::Phonon: return QString("phonon");
|
||||
case Engine::VLC: return QString("vlc");
|
||||
case Engine::None:
|
||||
default: return QObject::tr("None");
|
||||
|
||||
default: return QString("None");
|
||||
}
|
||||
}
|
||||
|
||||
QString EngineDescription(Engine::EngineType enginetype) {
|
||||
switch (enginetype) {
|
||||
case Engine::Xine: return QObject::tr("Xine");
|
||||
case Engine::GStreamer: return QObject::tr("GStreamer");
|
||||
case Engine::Phonon: return QObject::tr("Phonon");
|
||||
case Engine::VLC: return QObject::tr("VLC");
|
||||
case Engine::Xine: return QString("Xine");
|
||||
case Engine::GStreamer: return QString("GStreamer");
|
||||
case Engine::Phonon: return QString("Phonon");
|
||||
case Engine::VLC: return QString("VLC");
|
||||
case Engine::None:
|
||||
default: return QObject::tr("None");
|
||||
default: return QString("None");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -402,6 +402,10 @@ bool GstEngine::CustomDeviceSupport(const QString &output) {
|
||||
return (output == kALSASink || output == kOpenALSASink || output == kOSSSink || output == kOSS4Sink || output == kPulseSink || output == kA2DPSink || output == kAVDTPSink);
|
||||
}
|
||||
|
||||
bool GstEngine::ALSADeviceSupport(const QString &output) {
|
||||
return (output == kALSASink);
|
||||
}
|
||||
|
||||
void GstEngine::ReloadSettings() {
|
||||
|
||||
Engine::Base::ReloadSettings();
|
||||
|
||||
@@ -87,6 +87,7 @@ class GstEngine : public Engine::Base, public GstBufferConsumer {
|
||||
bool ValidOutput(const QString &output);
|
||||
QString DefaultOutput() { return kAutoSink; }
|
||||
bool CustomDeviceSupport(const QString &output);
|
||||
bool ALSADeviceSupport(const QString &output);
|
||||
|
||||
void EnsureInitialised() { initialising_.waitForFinished(); }
|
||||
void InitialiseGStreamer();
|
||||
|
||||
@@ -189,3 +189,7 @@ bool PhononEngine::ValidOutput(const QString &output) {
|
||||
bool PhononEngine::CustomDeviceSupport(const QString &output) {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool PhononEngine::ALSADeviceSupport(const QString &output) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -66,6 +66,7 @@ class PhononEngine : public Engine::Base {
|
||||
QString DefaultOutput() { return ""; }
|
||||
bool ValidOutput(const QString &output);
|
||||
bool CustomDeviceSupport(const QString &output);
|
||||
bool ALSADeviceSupport(const QString &output);
|
||||
|
||||
protected:
|
||||
void SetVolumeSW( uint percent );
|
||||
|
||||
@@ -238,6 +238,10 @@ bool VLCEngine::CustomDeviceSupport(const QString &output) {
|
||||
return (output == "auto" ? false : true);
|
||||
}
|
||||
|
||||
bool VLCEngine::ALSADeviceSupport(const QString &output) {
|
||||
return (output == "alsa");
|
||||
}
|
||||
|
||||
uint VLCEngine::position() const {
|
||||
|
||||
if (!Initialised()) return (0);
|
||||
|
||||
@@ -64,6 +64,7 @@ class VLCEngine : public Engine::Base {
|
||||
bool ValidOutput(const QString &output);
|
||||
QString DefaultOutput() { return ""; }
|
||||
bool CustomDeviceSupport(const QString &output);
|
||||
bool ALSADeviceSupport(const QString &output);
|
||||
|
||||
private:
|
||||
libvlc_instance_t *instance_;
|
||||
|
||||
@@ -345,6 +345,10 @@ bool XineEngine::CustomDeviceSupport(const QString &output) {
|
||||
return (output == "alsa" || output == "oss" || output == "jack" || output == "pulseaudio");
|
||||
}
|
||||
|
||||
bool XineEngine::ALSADeviceSupport(const QString &output) {
|
||||
return (output == "alsa");
|
||||
}
|
||||
|
||||
void XineEngine::ReloadSettings() {
|
||||
|
||||
Engine::Base::ReloadSettings();
|
||||
|
||||
@@ -87,6 +87,7 @@ class XineEngine : public Engine::Base {
|
||||
bool ValidOutput(const QString &output);
|
||||
QString DefaultOutput() { return "auto"; }
|
||||
bool CustomDeviceSupport(const QString &output);
|
||||
bool ALSADeviceSupport(const QString &output);
|
||||
|
||||
void ReloadSettings();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user