aboutsummaryrefslogtreecommitdiff
path: root/src/plugins
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2014-10-08 16:47:01 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2014-10-08 16:47:01 +0000
commit5fb7e3e4b091a1630fc630f192e4af258017bd54 (patch)
treec616a4baaf131b0af4181a0238b2f70a4862fb24 /src/plugins
parente9df66f160846240caae085c631db1f42a08136c (diff)
downloadqmmp-5fb7e3e4b091a1630fc630f192e4af258017bd54.tar.gz
qmmp-5fb7e3e4b091a1630fc630f192e4af258017bd54.tar.bz2
qmmp-5fb7e3e4b091a1630fc630f192e4af258017bd54.zip
fixed legacy alsa support
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@4548 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins')
-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