=?UTF-8?Q?J=C3=B6rg=20H=C3=B6hle=20?=: mmdevapi: Accept up to 8 channels.

Alexandre Julliard julliard at winehq.org
Wed Sep 7 12:35:30 CDT 2011


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

Author: Jörg Höhle <hoehle at users.sourceforge.net>
Date:   Fri Sep  2 22:49:20 2011 +0200

mmdevapi: Accept up to 8 channels.

---

 dlls/winealsa.drv/mmdevdrv.c      |   24 ++++++++++--------------
 dlls/winecoreaudio.drv/mmdevdrv.c |   22 +++++++++-------------
 dlls/wineoss.drv/mmdevdrv.c       |   22 +++++++++-------------
 3 files changed, 28 insertions(+), 40 deletions(-)

diff --git a/dlls/winealsa.drv/mmdevdrv.c b/dlls/winealsa.drv/mmdevdrv.c
index 180dbc7..e471e2c 100644
--- a/dlls/winealsa.drv/mmdevdrv.c
+++ b/dlls/winealsa.drv/mmdevdrv.c
@@ -1139,25 +1139,21 @@ static DWORD get_channel_mask(unsigned int channels)
     case 0:
         return 0;
     case 1:
-        return SPEAKER_FRONT_CENTER;
+        return KSAUDIO_SPEAKER_MONO;
     case 2:
-        return SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT;
+        return KSAUDIO_SPEAKER_STEREO;
     case 3:
-        return SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT |
-            SPEAKER_LOW_FREQUENCY;
+        return KSAUDIO_SPEAKER_STEREO | SPEAKER_LOW_FREQUENCY;
     case 4:
-        return SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_BACK_LEFT |
-            SPEAKER_BACK_RIGHT;
+        return KSAUDIO_SPEAKER_QUAD;    /* not _SURROUND */
     case 5:
-        return SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_BACK_LEFT |
-            SPEAKER_BACK_RIGHT | SPEAKER_LOW_FREQUENCY;
+        return KSAUDIO_SPEAKER_QUAD | SPEAKER_LOW_FREQUENCY;
     case 6:
-        return SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_BACK_LEFT |
-            SPEAKER_BACK_RIGHT | SPEAKER_LOW_FREQUENCY | SPEAKER_FRONT_CENTER;
+        return KSAUDIO_SPEAKER_5POINT1; /* not 5POINT1_SURROUND */
     case 7:
-        return SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_BACK_LEFT |
-            SPEAKER_BACK_RIGHT | SPEAKER_LOW_FREQUENCY | SPEAKER_FRONT_CENTER |
-            SPEAKER_BACK_CENTER;
+        return KSAUDIO_SPEAKER_5POINT1 | SPEAKER_BACK_CENTER;
+    case 8:
+        return KSAUDIO_SPEAKER_7POINT1; /* not 7POINT1_SURROUND */
     }
     FIXME("Unknown speaker configuration: %u\n", channels);
     return 0;
@@ -1296,7 +1292,7 @@ static HRESULT WINAPI AudioClient_IsFormatSupported(IAudioClient *iface,
         WARN("Unable to get max channels: %d (%s)\n", err, snd_strerror(err));
         goto exit;
     }
-    if(max > 7)
+    if(max > 8)
         max = 2;
     if(fmt->nChannels > max){
         hr = S_FALSE;
diff --git a/dlls/winecoreaudio.drv/mmdevdrv.c b/dlls/winecoreaudio.drv/mmdevdrv.c
index a951673..6fd336f 100644
--- a/dlls/winecoreaudio.drv/mmdevdrv.c
+++ b/dlls/winecoreaudio.drv/mmdevdrv.c
@@ -568,25 +568,21 @@ static DWORD get_channel_mask(unsigned int channels)
     case 0:
         return 0;
     case 1:
-        return SPEAKER_FRONT_CENTER;
+        return KSAUDIO_SPEAKER_MONO;
     case 2:
-        return SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT;
+        return KSAUDIO_SPEAKER_STEREO;
     case 3:
-        return SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT |
-            SPEAKER_LOW_FREQUENCY;
+        return KSAUDIO_SPEAKER_STEREO | SPEAKER_LOW_FREQUENCY;
     case 4:
-        return SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_BACK_LEFT |
-            SPEAKER_BACK_RIGHT;
+        return KSAUDIO_SPEAKER_QUAD;    /* not _SURROUND */
     case 5:
-        return SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_BACK_LEFT |
-            SPEAKER_BACK_RIGHT | SPEAKER_LOW_FREQUENCY;
+        return KSAUDIO_SPEAKER_QUAD | SPEAKER_LOW_FREQUENCY;
     case 6:
-        return SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_BACK_LEFT |
-            SPEAKER_BACK_RIGHT | SPEAKER_LOW_FREQUENCY | SPEAKER_FRONT_CENTER;
+        return KSAUDIO_SPEAKER_5POINT1; /* not 5POINT1_SURROUND */
     case 7:
-        return SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_BACK_LEFT |
-            SPEAKER_BACK_RIGHT | SPEAKER_LOW_FREQUENCY | SPEAKER_FRONT_CENTER |
-            SPEAKER_BACK_CENTER;
+        return KSAUDIO_SPEAKER_5POINT1 | SPEAKER_BACK_CENTER;
+    case 8:
+        return KSAUDIO_SPEAKER_7POINT1; /* not 7POINT1_SURROUND */
     }
     FIXME("Unknown speaker configuration: %u\n", channels);
     return 0;
diff --git a/dlls/wineoss.drv/mmdevdrv.c b/dlls/wineoss.drv/mmdevdrv.c
index fe0c1d8..ed3e2ba 100644
--- a/dlls/wineoss.drv/mmdevdrv.c
+++ b/dlls/wineoss.drv/mmdevdrv.c
@@ -592,25 +592,21 @@ static DWORD get_channel_mask(unsigned int channels)
     case 0:
         return 0;
     case 1:
-        return SPEAKER_FRONT_CENTER;
+        return KSAUDIO_SPEAKER_MONO;
     case 2:
-        return SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT;
+        return KSAUDIO_SPEAKER_STEREO;
     case 3:
-        return SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT |
-            SPEAKER_LOW_FREQUENCY;
+        return KSAUDIO_SPEAKER_STEREO | SPEAKER_LOW_FREQUENCY;
     case 4:
-        return SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_BACK_LEFT |
-            SPEAKER_BACK_RIGHT;
+        return KSAUDIO_SPEAKER_QUAD;    /* not _SURROUND */
     case 5:
-        return SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_BACK_LEFT |
-            SPEAKER_BACK_RIGHT | SPEAKER_LOW_FREQUENCY;
+        return KSAUDIO_SPEAKER_QUAD | SPEAKER_LOW_FREQUENCY;
     case 6:
-        return SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_BACK_LEFT |
-            SPEAKER_BACK_RIGHT | SPEAKER_LOW_FREQUENCY | SPEAKER_FRONT_CENTER;
+        return KSAUDIO_SPEAKER_5POINT1; /* not 5POINT1_SURROUND */
     case 7:
-        return SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_BACK_LEFT |
-            SPEAKER_BACK_RIGHT | SPEAKER_LOW_FREQUENCY | SPEAKER_FRONT_CENTER |
-            SPEAKER_BACK_CENTER;
+        return KSAUDIO_SPEAKER_5POINT1 | SPEAKER_BACK_CENTER;
+    case 8:
+        return KSAUDIO_SPEAKER_7POINT1; /* not 7POINT1_SURROUND */
     }
     FIXME("Unknown speaker configuration: %u\n", channels);
     return 0;




More information about the wine-cvs mailing list