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.
This commit is contained in:
@@ -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 <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 constexpr unsigned MPD_ALSA_BUFFER_TIME_US = 500000;
|
||||
@@ -236,9 +242,15 @@ get_bitformat(SampleFormat sample_format)
|
||||
{
|
||||
switch (sample_format) {
|
||||
case SampleFormat::UNDEFINED:
|
||||
case SampleFormat::DSD:
|
||||
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;
|
||||
|
||||
|
Reference in New Issue
Block a user