Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mpc-hc/LAVFilters.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHendrik Leppkes <h.leppkes@gmail.com>2012-07-11 18:26:37 +0400
committerHendrik Leppkes <h.leppkes@gmail.com>2012-07-11 18:26:37 +0400
commitf241c32972c632db89dd461182fa79b1f9ddd72c (patch)
treefc7c4649059898a626b26b021f7876a42b3575e1 /decoder/LAVAudio
parentf03360501491c0cfba168204537fe169a1aadf46 (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.cpp6
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;
}