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 @@
#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()) {
......
......@@ -31,6 +31,10 @@
#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"));
......
......@@ -21,6 +21,10 @@
//#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);
......
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