diff options
author | Hendrik Leppkes <h.leppkes@gmail.com> | 2012-07-11 18:26:37 +0400 |
---|---|---|
committer | Hendrik Leppkes <h.leppkes@gmail.com> | 2012-07-11 18:26:37 +0400 |
commit | f241c32972c632db89dd461182fa79b1f9ddd72c (patch) | |
tree | fc7c4649059898a626b26b021f7876a42b3575e1 /decoder/LAVAudio | |
parent | f03360501491c0cfba168204537fe169a1aadf46 (diff) |
Validate wValidBitsPerSample in WAVEFORMATEXTENSIBLE.
Audio renderers don't like wrong values for wValidBitsPerSample.
A 24-bit connection may not carry a value below or equal to 16, so just set it to 24 if thats the case, and equally a 32-bit connection does not allow values below 24.
Diffstat (limited to 'decoder/LAVAudio')
-rw-r--r-- | decoder/LAVAudio/LAVAudio.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/decoder/LAVAudio/LAVAudio.cpp b/decoder/LAVAudio/LAVAudio.cpp index f84a0e52..902a8bb8 100644 --- a/decoder/LAVAudio/LAVAudio.cpp +++ b/decoder/LAVAudio/LAVAudio.cpp @@ -1006,7 +1006,11 @@ CMediaType CLAVAudio::CreateMediaType(LAVAudioSampleFormat outputFormat, DWORD n wfex.Format.cbSize = sizeof(wfex) - sizeof(wfex.Format); wfex.dwChannelMask = dwChannelMask; if (wBitsPerSample > 0) { - wfex.Samples.wValidBitsPerSample = wBitsPerSample; + WORD wBpp = wBitsPerSample; + if ( (outputFormat == SampleFormat_24 && wBpp <= 16) + || (outputFormat == SampleFormat_32 && wBpp < 24)) + wBpp = 24; + wfex.Samples.wValidBitsPerSample = wBpp; } else { wfex.Samples.wValidBitsPerSample = wfex.Format.wBitsPerSample; } |