aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/audio_format.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/audio_format.c b/src/audio_format.c
index 658197528..06dee8e0f 100644
--- a/src/audio_format.c
+++ b/src/audio_format.c
@@ -35,6 +35,15 @@ audio_format_mask_apply(struct audio_format *af,
assert(audio_format_valid(af));
assert(audio_format_mask_valid(mask));
+ if (af->format == SAMPLE_FORMAT_DSD &&
+ mask->format == SAMPLE_FORMAT_DSD_OVER_USB &&
+ mask->sample_rate == 0)
+ /* each DSD-over-USB sample contains 2 DSD bytes (16
+ DSD bits), which means the sample rate must be
+ halved; this is not the real 1 bit sample rate, but
+ MPD's point of view */
+ af->sample_rate /= 2;
+
if (mask->sample_rate != 0)
af->sample_rate = mask->sample_rate;