Commit 49aed5c3 authored by Colin Guthrie's avatar Colin Guthrie Committed by Jean-Baptiste Kempf

phonon: Add specific support for PulseAudio.

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: default avatarJean-Baptiste Kempf <jb@videolan.org>
parent 857f35ff
...@@ -28,6 +28,10 @@ ...@@ -28,6 +28,10 @@
#include "vlcloader.h" #include "vlcloader.h"
#ifdef PHONON_PULSESUPPORT
# include <phonon/pulsesupport.h>
#endif
namespace Phonon namespace Phonon
{ {
namespace VLC { namespace VLC {
...@@ -70,6 +74,15 @@ bool AudioOutput::setOutputDevice(int device) ...@@ -70,6 +74,15 @@ bool AudioOutput::setOutputDevice(int device)
if (i_device == device) if (i_device == device)
return true; 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(); const QList<AudioDevice> deviceList = p_backend->deviceManager()->audioOutputDevices();
if (device >= 0 && device < deviceList.size()) { if (device >= 0 && device < deviceList.size()) {
......
...@@ -31,6 +31,10 @@ ...@@ -31,6 +31,10 @@
#include "vlcloader.h" #include "vlcloader.h"
#include "vlcmediaobject.h" #include "vlcmediaobject.h"
#ifdef PHONON_PULSESUPPORT
# include <phonon/pulsesupport.h>
#endif
#include <QtCore/QSet> #include <QtCore/QSet>
#include <QtCore/QVariant> #include <QtCore/QVariant>
#include <QtCore/QtPlugin> #include <QtCore/QtPlugin>
...@@ -47,6 +51,13 @@ Backend::Backend(QObject *parent, const QVariantList &) ...@@ -47,6 +51,13 @@ Backend::Backend(QObject *parent, const QVariantList &)
, m_effectManager(NULL) , m_effectManager(NULL)
, m_debugLevel(Debug) , 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(); bool wasInit = vlcInit();
setProperty("identifier", QLatin1String("phonon_vlc")); setProperty("identifier", QLatin1String("phonon_vlc"));
......
...@@ -21,6 +21,10 @@ ...@@ -21,6 +21,10 @@
//#include "widgetrenderer.h" //#include "widgetrenderer.h"
#include "vlcloader.h" #include "vlcloader.h"
#ifdef PHONON_PULSESUPPORT
# include <phonon/pulsesupport.h>
#endif
/** /**
* This class manages the list of currently active output devices. * This class manages the list of currently active output devices.
*/ */
...@@ -102,13 +106,30 @@ void DeviceManager::updateDeviceList() ...@@ -102,13 +106,30 @@ void DeviceManager::updateDeviceList()
vlcExceptionRaised(); vlcExceptionRaised();
libvlc_audio_output_t *p_start = p_ao_list; 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) { 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.append(p_ao_list->psz_name);
list_hw.append(""); list_hw.append("");
p_ao_list = p_ao_list->p_next; p_ao_list = p_ao_list->p_next;
} }
libvlc_audio_output_list_release(p_start); 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) { for (int i = 0 ; i < list.size() ; ++i) {
QByteArray nameId = list.at(i); QByteArray nameId = list.at(i);
QByteArray hwId = list_hw.at(i); QByteArray hwId = list_hw.at(i);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment