]> git.sesse.net Git - vlc/commitdiff
phonon: Add specific support for PulseAudio.
authorColin Guthrie <cguthrie@mandriva.org>
Sat, 30 Jan 2010 11:52:50 +0000 (11:52 +0000)
committerJean-Baptiste Kempf <jb@videolan.org>
Sat, 30 Jan 2010 19:14:10 +0000 (20:14 +0100)
This uses the PulseSupport class from phonon to allow use to support
PulseAudio nicely (e.g. nice device listings etc.)
(cherry picked from commit bf1ef7158347153310cf4644a66da14f85db38c9)

Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
bindings/phonon/vlc/audiooutput.cpp
bindings/phonon/vlc/backend.cpp
bindings/phonon/vlc/devicemanager.cpp

index ab889ea897bba8f810e606111938294d5e270e1d..48eefba0e110a7a43e65d2db728cb4604a0fed48 100644 (file)
 
 #include "vlcloader.h"
 
+#ifdef PHONON_PULSESUPPORT
+#  include <phonon/pulsesupport.h>
+#endif
+
 namespace Phonon
 {
 namespace VLC {
@@ -70,6 +74,15 @@ bool AudioOutput::setOutputDevice(int device)
     if (i_device == device)
         return true;
 
+#ifdef PHONON_PULSESUPPORT
+    if (PulseSupport::getInstance()->isActive()) {
+        i_device = device;
+        libvlc_audio_output_set(vlc_instance, "pulse");
+        qDebug() << "set aout " << "pulse";
+        return true;
+    }
+#endif
+
     const QList<AudioDevice> deviceList = p_backend->deviceManager()->audioOutputDevices();
     if (device >= 0 && device < deviceList.size()) {
 
index 046372256edf5887ea66f501b79b55c835ae885a..7d2e0101c16c5f70162778095393198341993921 100644 (file)
 #include "vlcloader.h"
 #include "vlcmediaobject.h"
 
+#ifdef PHONON_PULSESUPPORT
+#  include <phonon/pulsesupport.h>
+#endif
+
 #include <QtCore/QSet>
 #include <QtCore/QVariant>
 #include <QtCore/QtPlugin>
@@ -47,6 +51,13 @@ Backend::Backend(QObject *parent, const QVariantList &)
         , m_effectManager(NULL)
         , m_debugLevel(Debug)
 {
+#ifdef PHONON_PULSESUPPORT
+    // Initialise PulseAudio support
+    PulseSupport *pulse = PulseSupport::getInstance();
+    pulse->enable();
+    connect(pulse, SIGNAL(objectDescriptionChanged(ObjectDescriptionType)), SIGNAL(objectDescriptionChanged(ObjectDescriptionType)));
+#endif
+
     bool wasInit = vlcInit();
 
     setProperty("identifier",     QLatin1String("phonon_vlc"));
index 3bea98c7098e2f306a17d4f7c2e7c712f17b6b54..18db2f7292c4f3c4be46847dc0aecc65c6a4e5fa 100644 (file)
 //#include "widgetrenderer.h"
 #include "vlcloader.h"
 
+#ifdef PHONON_PULSESUPPORT
+#  include <phonon/pulsesupport.h>
+#endif
+
 /**
  * This class manages the list of currently active output devices.
  */
@@ -102,13 +106,30 @@ void DeviceManager::updateDeviceList()
     vlcExceptionRaised();
     libvlc_audio_output_t *p_start = p_ao_list;
 
+    bool checkpulse = false;
+#ifdef PHONON_PULSESUPPORT
+    PulseSupport *pulse = PulseSupport::getInstance();
+    checkpulse = pulse->isActive();
+#endif
+    bool haspulse = false;
     while (p_ao_list) {
+        if (checkpulse && 0 == strcmp(p_ao_list->psz_name, "pulse")) {
+            haspulse = true;
+            break;
+        }
         list.append(p_ao_list->psz_name);
         list_hw.append("");
         p_ao_list = p_ao_list->p_next;
     }
     libvlc_audio_output_list_release(p_start);
 
+
+#ifdef PHONON_PULSESUPPORT
+    if (haspulse)
+        return;
+    pulse->enable(false);
+#endif
+
     for (int i = 0 ; i < list.size() ; ++i) {
         QByteArray nameId = list.at(i);
         QByteArray hwId = list_hw.at(i);