diff options
Diffstat (limited to 'src/plugins/Output/alsa/outputalsa.cpp')
| -rw-r--r-- | src/plugins/Output/alsa/outputalsa.cpp | 10 |
1 files changed, 8 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 |
