diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2014-10-08 16:47:01 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2014-10-08 16:47:01 +0000 |
| commit | 5fb7e3e4b091a1630fc630f192e4af258017bd54 (patch) | |
| tree | c616a4baaf131b0af4181a0238b2f70a4862fb24 /src/plugins | |
| parent | e9df66f160846240caae085c631db1f42a08136c (diff) | |
| download | qmmp-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.cpp | 10 | ||||
| -rw-r--r-- | src/plugins/Output/alsa/outputalsa.h | 2 |
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 |
