From a52cae1dba188db8bc7c72102cbb1ef57639b843 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Fri, 17 Jan 2014 23:57:30 +0100 Subject: [PATCH] pcm/Volume: make DSD a no-op Kludge to work around DSD playback failure because the ReplayGainFilterPlugin is always in the filter chain. --- src/pcm/Volume.cxx | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/pcm/Volume.cxx b/src/pcm/Volume.cxx index 64394a202..b12d8fd41 100644 --- a/src/pcm/Volume.cxx +++ b/src/pcm/Volume.cxx @@ -103,7 +103,6 @@ PcmVolume::Open(SampleFormat _format, Error &error) switch (_format) { case SampleFormat::UNDEFINED: - case SampleFormat::DSD: error.Format(pcm_domain, "Software volume for %s is not implemented", sample_format_to_string(_format)); @@ -115,6 +114,10 @@ PcmVolume::Open(SampleFormat _format, Error &error) case SampleFormat::S32: case SampleFormat::FLOAT: break; + + case SampleFormat::DSD: + // TODO: implement this; currently, it's a no-op + break; } format = _format; @@ -139,7 +142,6 @@ PcmVolume::Apply(ConstBuffer src) switch (format) { case SampleFormat::UNDEFINED: - case SampleFormat::DSD: assert(false); gcc_unreachable(); @@ -177,6 +179,10 @@ PcmVolume::Apply(ConstBuffer src) src.size / sizeof(float), pcm_volume_to_float(volume)); break; + + case SampleFormat::DSD: + // TODO: implement this; currently, it's a no-op + return src; } return { data, src.size };