winealsa 32bit float support

Robert Reif reif at earthlink.net
Tue Aug 24 18:25:37 CDT 2004


Adds 32 bit float support.
-------------- next part --------------
Index: dlls/winmm/winealsa/audio.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/winealsa/audio.c,v
retrieving revision 1.53
diff -u -r1.53 audio.c
--- dlls/winmm/winealsa/audio.c	23 Aug 2004 19:39:49 -0000	1.53
+++ dlls/winmm/winealsa/audio.c	24 Aug 2004 23:07:02 -0000
@@ -329,7 +329,9 @@
     } else if (wf->wFormatTag == WAVE_FORMAT_EXTENSIBLE) {
         WAVEFORMATEXTENSIBLE 	* wfex = (WAVEFORMATEXTENSIBLE *)wf;
 
-        if (wf->cbSize == 22 && IsEqualGUID(&wfex->SubFormat, &KSDATAFORMAT_SUBTYPE_PCM)) {
+        if (wf->cbSize == 22 &&
+            (IsEqualGUID(&wfex->SubFormat, &KSDATAFORMAT_SUBTYPE_PCM) ||
+             IsEqualGUID(&wfex->SubFormat, &KSDATAFORMAT_SUBTYPE_IEEE_FLOAT))) {
             if (wf->nChannels>=1 && wf->nChannels<=6) {
                 if (wf->wBitsPerSample==wfex->Samples.wValidBitsPerSample) {
                     if (wf->wBitsPerSample==8||wf->wBitsPerSample==16||
@@ -340,7 +342,8 @@
                     WARN("wBitsPerSample != wValidBitsPerSample not supported yet\n");
             }
         } else
-            WARN("only KSDATAFORMAT_SUBTYPE_PCM supported\n");
+            WARN("only KSDATAFORMAT_SUBTYPE_PCM and KSDATAFORMAT_SUBTYPE_IEEE_FLOAT "
+                 "supported\n");
     } else if (wf->wFormatTag == WAVE_FORMAT_MULAW || wf->wFormatTag == WAVE_FORMAT_ALAW) {
         if (wf->wBitsPerSample==8)
             return TRUE;
@@ -1686,6 +1689,9 @@
                  (wwo->format.Format.wBitsPerSample == 16) ? SND_PCM_FORMAT_S16_LE :
                  (wwo->format.Format.wBitsPerSample == 24) ? SND_PCM_FORMAT_S24_LE :
                  (wwo->format.Format.wBitsPerSample == 32) ? SND_PCM_FORMAT_S32_LE : -1;
+    } else if ((wwo->format.Format.wFormatTag == WAVE_FORMAT_EXTENSIBLE) &&
+        IsEqualGUID(&wwo->format.SubFormat, &KSDATAFORMAT_SUBTYPE_IEEE_FLOAT)){
+        format = (wwo->format.Format.wBitsPerSample == 32) ? SND_PCM_FORMAT_FLOAT_LE : -1;
     } else if (wwo->format.Format.wFormatTag == WAVE_FORMAT_MULAW) {
         FIXME("unimplemented format: WAVE_FORMAT_MULAW\n");
         snd_pcm_close(pcm);
@@ -3171,6 +3177,9 @@
                  (wwi->format.Format.wBitsPerSample == 16) ? SND_PCM_FORMAT_S16_LE :
                  (wwi->format.Format.wBitsPerSample == 24) ? SND_PCM_FORMAT_S24_LE :
                  (wwi->format.Format.wBitsPerSample == 32) ? SND_PCM_FORMAT_S32_LE : -1;
+    } else if ((wwi->format.Format.wFormatTag == WAVE_FORMAT_EXTENSIBLE) &&
+        IsEqualGUID(&wwi->format.SubFormat, &KSDATAFORMAT_SUBTYPE_IEEE_FLOAT)){
+        format = (wwi->format.Format.wBitsPerSample == 32) ? SND_PCM_FORMAT_FLOAT_LE : -1;
     } else if (wwi->format.Format.wFormatTag == WAVE_FORMAT_MULAW) {
         FIXME("unimplemented format: WAVE_FORMAT_MULAW\n");
         snd_pcm_close(pcm);


More information about the wine-patches mailing list