diff --git a/modules/audio_output/wasapi.c b/modules/audio_output/wasapi.c index ee9baf28e7..6a992799d7 100644 --- a/modules/audio_output/wasapi.c +++ b/modules/audio_output/wasapi.c @@ -43,6 +43,11 @@ DEFINE_GUID(_KSDATAFORMAT_SUBTYPE_IEC61937_DOLBY_DIGITAL, WAVE_FORMAT_DOLBY_AC3_SPDIF, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71); +/* 00000001-0000-0010-8000-00aa00389b71 */ +DEFINE_GUID(_KSDATAFORMAT_SUBTYPE_WAVEFORMATEX, + WAVE_FORMAT_PCM, 0x0000, 0x0010, 0x80, 0x00, + 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71); + /* 00000008-0000-0010-8000-00aa00389b71 */ DEFINE_GUID(_KSDATAFORMAT_SUBTYPE_IEC61937_DTS, WAVE_FORMAT_DTS_MS, 0x0000, 0x0010, 0x80, 0x00, @@ -306,7 +311,13 @@ static void vlc_SpdifToWave(WAVEFORMATEXTENSIBLE *restrict wf, switch (audio->i_format) { case VLC_CODEC_DTS: - wf->SubFormat = _KSDATAFORMAT_SUBTYPE_IEC61937_DTS; + if (audio->i_rate < 48000) + { + /* Wasapi doesn't accept DTS @ 44.1kHz but accept IEC 60958 PCM */ + wf->SubFormat = _KSDATAFORMAT_SUBTYPE_WAVEFORMATEX; + } + else + wf->SubFormat = _KSDATAFORMAT_SUBTYPE_IEC61937_DTS; break; case VLC_CODEC_SPDIFL: case VLC_CODEC_SPDIFB: