aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Output/pulseaudio
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2014-10-08 17:13:01 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2014-10-08 17:13:01 +0000
commit5e9b91b6e706216352c7218b7b00b51d2168c03f (patch)
tree6efa148b4236977ce3beffdcd8de85308bfac815 /src/plugins/Output/pulseaudio
parent5fb7e3e4b091a1630fc630f192e4af258017bd54 (diff)
downloadqmmp-5e9b91b6e706216352c7218b7b00b51d2168c03f.tar.gz
qmmp-5e9b91b6e706216352c7218b7b00b51d2168c03f.tar.bz2
qmmp-5e9b91b6e706216352c7218b7b00b51d2168c03f.zip
pulseaudio: added multichannel support
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4549 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Output/pulseaudio')
-rw-r--r--src/plugins/Output/pulseaudio/outputpulseaudio.cpp24
-rw-r--r--src/plugins/Output/pulseaudio/outputpulseaudio.h4
2 files changed, 25 insertions, 3 deletions
diff --git a/src/plugins/Output/pulseaudio/outputpulseaudio.cpp b/src/plugins/Output/pulseaudio/outputpulseaudio.cpp
index 70bf26dd7..4f97eb3bb 100644
--- a/src/plugins/Output/pulseaudio/outputpulseaudio.cpp
+++ b/src/plugins/Output/pulseaudio/outputpulseaudio.cpp
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2006-2012 by Ilya Kotov *
+ * Copyright (C) 2006-2014 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -26,6 +26,18 @@ extern "C"{
OutputPulseAudio::OutputPulseAudio(): Output()
{
m_connection = 0;
+
+ m_pa_channels[Qmmp::CHAN_NULL] = PA_CHANNEL_POSITION_INVALID;
+ m_pa_channels[Qmmp::CHAN_FRONT_CENTER] = PA_CHANNEL_POSITION_MONO;
+ m_pa_channels[Qmmp::CHAN_FRONT_LEFT] = PA_CHANNEL_POSITION_FRONT_LEFT;
+ m_pa_channels[Qmmp::CHAN_FRONT_RIGHT] = PA_CHANNEL_POSITION_FRONT_RIGHT;
+ m_pa_channels[Qmmp::CHAN_REAR_LEFT] = PA_CHANNEL_POSITION_REAR_LEFT;
+ m_pa_channels[Qmmp::CHAN_REAR_RIGHT] = PA_CHANNEL_POSITION_REAR_RIGHT;
+ m_pa_channels[Qmmp::CHAN_FRONT_CENTER] = PA_CHANNEL_POSITION_FRONT_CENTER;
+ m_pa_channels[Qmmp::CHAN_LFE] = PA_CHANNEL_POSITION_LFE;
+ m_pa_channels[Qmmp::CHAN_SIDE_LEFT] = PA_CHANNEL_POSITION_SIDE_LEFT;
+ m_pa_channels[Qmmp::CHAN_SIDE_RIGHT] = PA_CHANNEL_POSITION_SIDE_RIGHT;
+ m_pa_channels[Qmmp::CHAN_REAR_CENTER] = PA_CHANNEL_POSITION_REAR_CENTER;
}
OutputPulseAudio::~OutputPulseAudio()
@@ -58,13 +70,21 @@ bool OutputPulseAudio::initialize(quint32 freq, ChannelMap map, Qmmp::AudioForma
ss.channels = map.count();
ss.rate = freq;
int error;
+
+ pa_channel_map pa_map;
+ pa_map.channels = map.count();
+ for(int i = 0; i < map.count(); i++)
+ {
+ pa_map.map[0] = m_pa_channels[map.value(i)];
+ }
+
m_connection = pa_simple_new(NULL, // Use the default server.
"Qmmp", // Our application's name.
PA_STREAM_PLAYBACK,
NULL, // Use the default device.
"Music", // Description of our stream.
&ss, // Our sample format.
- NULL, // Use default channel map
+ &pa_map, // Our channel map
NULL, // Use default buffering attributes.
&error // Error code.
);
diff --git a/src/plugins/Output/pulseaudio/outputpulseaudio.h b/src/plugins/Output/pulseaudio/outputpulseaudio.h
index 2a8064988..74e0af445 100644
--- a/src/plugins/Output/pulseaudio/outputpulseaudio.h
+++ b/src/plugins/Output/pulseaudio/outputpulseaudio.h
@@ -1,5 +1,5 @@
/***************************************************************************
- * Copyright (C) 2006-2012 by Ilya Kotov *
+ * Copyright (C) 2006-2014 by Ilya Kotov *
* forkotov02@hotmail.ru *
* *
* This program is free software; you can redistribute it and/or modify *
@@ -22,6 +22,7 @@
#define OUTPUTPULSEAUDIO_H
#include <QObject>
+#include <QHash>
extern "C"{
#include <pulse/simple.h>
}
@@ -47,6 +48,7 @@ private:
// helper functions
void uninitialize();
pa_simple *m_connection;
+ QHash <Qmmp::ChannelPosition, pa_channel_position_t> m_pa_channels;
};
#endif // OUTPUTPULSEAUDIO_H