From 6f77af20d0653dd747530078d0c5e7f1928f102b Mon Sep 17 00:00:00 2001
From: Shen-Ta Hsieh <ibmibmibm.tw@gmail.com>
Date: Wed, 2 Dec 2020 08:05:41 +0800
Subject: [PATCH] src/output: Set fallback setting for DSD

---
 src/output/plugins/WasapiOutputPlugin.cxx | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/src/output/plugins/WasapiOutputPlugin.cxx b/src/output/plugins/WasapiOutputPlugin.cxx
index a9bfae83e..e160c1f38 100644
--- a/src/output/plugins/WasapiOutputPlugin.cxx
+++ b/src/output/plugins/WasapiOutputPlugin.cxx
@@ -113,6 +113,13 @@ inline void SetFormat(WAVEFORMATEXTENSIBLE &device_format,
 	}
 }
 
+#ifdef ENABLE_DSD
+void SetDSDFallback(AudioFormat &audio_format) noexcept {
+	audio_format.format = SampleFormat::FLOAT;
+	audio_format.sample_rate = 384000;
+}
+#endif
+
 inline constexpr const unsigned int kErrorId = -1;
 
 } // namespace
@@ -360,6 +367,12 @@ void WasapiOutput::DoOpen(AudioFormat &audio_format) {
 		audio_format.channels = 8;
 	}
 
+#ifdef ENABLE_DSD
+	if (audio_format.format == SampleFormat::DSD) {
+		SetDSDFallback(audio_format);
+	}
+#endif
+
 	if (Exclusive()) {
 		FindExclusiveFormatSupported(audio_format);
 	} else {