diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/audio_format.c | 9 |
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; |