aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/plugins/Output/alsa/outputalsa.cpp10
-rw-r--r--src/plugins/Output/alsa/outputalsa.h2
2 files changed, 10 insertions, 2 deletions
diff --git a/src/plugins/Output/alsa/outputalsa.cpp b/src/plugins/Output/alsa/outputalsa.cpp
index f12f02060..1d3c08b27 100644
--- a/src/plugins/Output/alsa/outputalsa.cpp
+++ b/src/plugins/Output/alsa/outputalsa.cpp
@@ -44,7 +44,7 @@ OutputALSA::OutputALSA() : m_inited(false)
m_prebuf_size = 0;
m_prebuf_fill = 0;
m_can_pause = false;
-
+#if (SND_LIB_VERSION >= 0x01001B)
m_alsa_channels[SND_CHMAP_NA] = Qmmp::CHAN_NULL;
m_alsa_channels[SND_CHMAP_MONO] = Qmmp::CHAN_FRONT_CENTER;
m_alsa_channels[SND_CHMAP_FL] = Qmmp::CHAN_FRONT_LEFT;
@@ -56,6 +56,7 @@ OutputALSA::OutputALSA() : m_inited(false)
m_alsa_channels[SND_CHMAP_SL] = Qmmp::CHAN_SIDE_LEFT;
m_alsa_channels[SND_CHMAP_SR] = Qmmp::CHAN_SIDE_RIGHT;
m_alsa_channels[SND_CHMAP_RC] = Qmmp::CHAN_REAR_CENTER;
+#endif
}
OutputALSA::~OutputALSA()
@@ -215,11 +216,13 @@ bool OutputALSA::initialize(quint32 freq, ChannelMap map, Qmmp::AudioFormat form
qWarning("OutputALSA: Unable to receive current channel map: %s", snd_strerror(err));
return false;
}
+ ChannelMap out_map;
+#if (SND_LIB_VERSION >= 0x01001B)
char tmp[256];
memset(tmp,0,256);
snd_pcm_chmap_print(chmap, 256, tmp);
qDebug("OutputALSA: received channel map: %s",tmp);
- ChannelMap out_map;
+
for(uint i = 0; i < chmap->channels; ++i)
{
if(m_alsa_channels.keys().contains(chmap->pos[i]))
@@ -227,6 +230,9 @@ bool OutputALSA::initialize(quint32 freq, ChannelMap map, Qmmp::AudioFormat form
else
out_map.append(Qmmp::CHAN_NULL);
}
+#else
+ out_map = map;
+#endif
configure(exact_rate, out_map, format); //apply configuration
//create alsa prebuffer;
m_prebuf_size = 2 * snd_pcm_frames_to_bytes(pcm_handle, m_chunk_size); //buffer for two periods
diff --git a/src/plugins/Output/alsa/outputalsa.h b/src/plugins/Output/alsa/outputalsa.h
index d378b813c..074b9ac0a 100644
--- a/src/plugins/Output/alsa/outputalsa.h
+++ b/src/plugins/Output/alsa/outputalsa.h
@@ -65,7 +65,9 @@ private:
qint64 m_prebuf_fill;
bool m_can_pause;
//channel conversions
+#if (SND_LIB_VERSION >= 0x01001B)
QHash <quint16, Qmmp::ChannelPosition> m_alsa_channels;
+#endif
};
class VolumeALSA : public Volume