From a86aaef4d0075df581857cdabb624a24885afa2b Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Sat, 23 Aug 2014 16:12:18 +0200 Subject: output/alsa: support native DSD playback Translate SampleFormat::DSD to SND_PCM_FORMAT_DSD_U8, which was added to alsa-lib 1.0.27.1. --- src/output/plugins/AlsaOutputPlugin.cxx | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'src') diff --git a/src/output/plugins/AlsaOutputPlugin.cxx b/src/output/plugins/AlsaOutputPlugin.cxx index d91eeea9f..9f299642e 100644 --- a/src/output/plugins/AlsaOutputPlugin.cxx +++ b/src/output/plugins/AlsaOutputPlugin.cxx @@ -22,6 +22,7 @@ #include "../OutputAPI.hxx" #include "mixer/MixerList.hxx" #include "pcm/PcmExport.hxx" +#include "config/ConfigError.hxx" #include "util/Manual.hxx" #include "util/Error.hxx" #include "util/Domain.hxx" @@ -32,6 +33,11 @@ #include +#if SND_LIB_VERSION >= 0x1001c +/* alsa-lib supports DSD since version 1.0.27.1 */ +#define HAVE_ALSA_DSD +#endif + static const char default_device[] = "default"; static constexpr unsigned MPD_ALSA_BUFFER_TIME_US = 500000; @@ -236,8 +242,14 @@ get_bitformat(SampleFormat sample_format) { switch (sample_format) { case SampleFormat::UNDEFINED: + return SND_PCM_FORMAT_UNKNOWN; + case SampleFormat::DSD: +#ifdef HAVE_ALSA_DSD + return SND_PCM_FORMAT_DSD_U8; +#else return SND_PCM_FORMAT_UNKNOWN; +#endif case SampleFormat::S8: return SND_PCM_FORMAT_S8; -- cgit v1.2.3