Commit a86aaef4 authored by Max Kellermann's avatar Max Kellermann

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.
parent e463244d
...@@ -52,6 +52,8 @@ ver 0.19 (not yet released) ...@@ -52,6 +52,8 @@ ver 0.19 (not yet released)
- mp4v2: support playback of MP4 files. - mp4v2: support playback of MP4 files.
* encoder: * encoder:
- shine: new encoder plugin - shine: new encoder plugin
* output
- alsa: support native DSD playback
* threads: * threads:
- the update thread runs at "idle" priority - the update thread runs at "idle" priority
- the output thread runs at "real-time" priority - the output thread runs at "real-time" priority
......
...@@ -22,6 +22,7 @@ ...@@ -22,6 +22,7 @@
#include "../OutputAPI.hxx" #include "../OutputAPI.hxx"
#include "mixer/MixerList.hxx" #include "mixer/MixerList.hxx"
#include "pcm/PcmExport.hxx" #include "pcm/PcmExport.hxx"
#include "config/ConfigError.hxx"
#include "util/Manual.hxx" #include "util/Manual.hxx"
#include "util/Error.hxx" #include "util/Error.hxx"
#include "util/Domain.hxx" #include "util/Domain.hxx"
...@@ -32,6 +33,11 @@ ...@@ -32,6 +33,11 @@
#include <string> #include <string>
#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 const char default_device[] = "default";
static constexpr unsigned MPD_ALSA_BUFFER_TIME_US = 500000; static constexpr unsigned MPD_ALSA_BUFFER_TIME_US = 500000;
...@@ -236,8 +242,14 @@ get_bitformat(SampleFormat sample_format) ...@@ -236,8 +242,14 @@ get_bitformat(SampleFormat sample_format)
{ {
switch (sample_format) { switch (sample_format) {
case SampleFormat::UNDEFINED: case SampleFormat::UNDEFINED:
return SND_PCM_FORMAT_UNKNOWN;
case SampleFormat::DSD: case SampleFormat::DSD:
#ifdef HAVE_ALSA_DSD
return SND_PCM_FORMAT_DSD_U8;
#else
return SND_PCM_FORMAT_UNKNOWN; return SND_PCM_FORMAT_UNKNOWN;
#endif
case SampleFormat::S8: case SampleFormat::S8:
return SND_PCM_FORMAT_S8; return SND_PCM_FORMAT_S8;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment