=?UTF-8?Q?J=C3=B6rg=20H=C3=B6hle=20?=: winealsa: Check ValidBitsPerSample and support SND_PCM_FORMAT_S20_3LE.

Alexandre Julliard julliard at winehq.org
Fri Jan 6 15:31:36 CST 2012


Module: wine
Branch: master
Commit: 49aa7f9f2f78a63a803a57f7d5ea6872eb982eba
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=49aa7f9f2f78a63a803a57f7d5ea6872eb982eba

Author: Jörg Höhle <hoehle at users.sourceforge.net>
Date:   Thu Jan  5 07:07:15 2012 +0100

winealsa: Check ValidBitsPerSample and support SND_PCM_FORMAT_S20_3LE.

---

 dlls/winealsa.drv/mmdevdrv.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/dlls/winealsa.drv/mmdevdrv.c b/dlls/winealsa.drv/mmdevdrv.c
index 09be694..a2a2a7d 100644
--- a/dlls/winealsa.drv/mmdevdrv.c
+++ b/dlls/winealsa.drv/mmdevdrv.c
@@ -736,6 +736,15 @@ static snd_pcm_format_t alsa_format(const WAVEFORMATEX *fmt)
             format = SND_PCM_FORMAT_S32_LE;
         else
             WARN("Unsupported bit depth: %u\n", fmt->wBitsPerSample);
+        if(fmt->wFormatTag == WAVE_FORMAT_EXTENSIBLE &&
+           fmt->wBitsPerSample != fmtex->Samples.wValidBitsPerSample){
+            if(fmtex->Samples.wValidBitsPerSample == 20 && fmt->wBitsPerSample == 24)
+                format = SND_PCM_FORMAT_S20_3LE;
+            else{
+                WARN("Unsupported ValidBits: %u\n", fmtex->Samples.wValidBitsPerSample);
+                format = SND_PCM_FORMAT_UNKNOWN;
+            }
+        }
     }else if(fmt->wFormatTag == WAVE_FORMAT_IEEE_FLOAT ||
             (fmt->wFormatTag == WAVE_FORMAT_EXTENSIBLE &&
              IsEqualGUID(&fmtex->SubFormat, &KSDATAFORMAT_SUBTYPE_IEEE_FLOAT))){




More information about the wine-cvs mailing list