=?UTF-8?Q?J=C3=B6rg=20H=C3=B6hle=20?=: dsound: Vista/ XP SP2 reworked the Speaker Configuration.

Alexandre Julliard julliard at winehq.org
Fri Jan 13 11:44:30 CST 2012


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

Author: Jörg Höhle <hoehle at users.sourceforge.net>
Date:   Sat Sep 24 21:11:45 2011 +0200

dsound: Vista/XP SP2 reworked the Speaker Configuration.

---

 dlls/dsound/dsound.c              |    2 +-
 dlls/winealsa.drv/mmdevdrv.c      |    2 +-
 dlls/winecoreaudio.drv/mmdevdrv.c |    2 +-
 dlls/wineoss.drv/mmdevdrv.c       |    2 +-
 include/dsound.h                  |    5 +++++
 include/ksmedia.h                 |    2 ++
 6 files changed, 11 insertions(+), 4 deletions(-)

diff --git a/dlls/dsound/dsound.c b/dlls/dsound/dsound.c
index fbfb4f8..b3475ad 100644
--- a/dlls/dsound/dsound.c
+++ b/dlls/dsound/dsound.c
@@ -1172,7 +1172,7 @@ static HRESULT DirectSoundDevice_Create(DirectSoundDevice ** ppDevice)
     device->ref            = 1;
     device->priolevel      = DSSCL_NORMAL;
     device->state          = STATE_STOPPED;
-    device->speaker_config = DSSPEAKER_STEREO | (DSSPEAKER_GEOMETRY_NARROW << 16);
+    device->speaker_config = DSSPEAKER_COMBINED(DSSPEAKER_STEREO, DSSPEAKER_GEOMETRY_WIDE);
 
     /* 3D listener initial parameters */
     device->ds3dl.dwSize   = sizeof(DS3DLISTENER);
diff --git a/dlls/winealsa.drv/mmdevdrv.c b/dlls/winealsa.drv/mmdevdrv.c
index 8e79c6e..0cb7b9b 100644
--- a/dlls/winealsa.drv/mmdevdrv.c
+++ b/dlls/winealsa.drv/mmdevdrv.c
@@ -1206,7 +1206,7 @@ static DWORD get_channel_mask(unsigned int channels)
     case 7:
         return KSAUDIO_SPEAKER_5POINT1 | SPEAKER_BACK_CENTER;
     case 8:
-        return KSAUDIO_SPEAKER_7POINT1; /* not 7POINT1_SURROUND */
+        return KSAUDIO_SPEAKER_7POINT1_SURROUND; /* Vista deprecates 7POINT1 */
     }
     FIXME("Unknown speaker configuration: %u\n", channels);
     return 0;
diff --git a/dlls/winecoreaudio.drv/mmdevdrv.c b/dlls/winecoreaudio.drv/mmdevdrv.c
index 19a505c..5d69e3c 100644
--- a/dlls/winecoreaudio.drv/mmdevdrv.c
+++ b/dlls/winecoreaudio.drv/mmdevdrv.c
@@ -700,7 +700,7 @@ static DWORD get_channel_mask(unsigned int channels)
     case 7:
         return KSAUDIO_SPEAKER_5POINT1 | SPEAKER_BACK_CENTER;
     case 8:
-        return KSAUDIO_SPEAKER_7POINT1; /* not 7POINT1_SURROUND */
+        return KSAUDIO_SPEAKER_7POINT1_SURROUND; /* Vista deprecates 7POINT1 */
     }
     FIXME("Unknown speaker configuration: %u\n", channels);
     return 0;
diff --git a/dlls/wineoss.drv/mmdevdrv.c b/dlls/wineoss.drv/mmdevdrv.c
index aaa94ee..89c9adf 100644
--- a/dlls/wineoss.drv/mmdevdrv.c
+++ b/dlls/wineoss.drv/mmdevdrv.c
@@ -657,7 +657,7 @@ static DWORD get_channel_mask(unsigned int channels)
     case 7:
         return KSAUDIO_SPEAKER_5POINT1 | SPEAKER_BACK_CENTER;
     case 8:
-        return KSAUDIO_SPEAKER_7POINT1; /* not 7POINT1_SURROUND */
+        return KSAUDIO_SPEAKER_7POINT1_SURROUND; /* Vista deprecates 7POINT1 */
     }
     FIXME("Unknown speaker configuration: %u\n", channels);
     return 0;
diff --git a/include/dsound.h b/include/dsound.h
index 372fabf..cd284aa 100644
--- a/include/dsound.h
+++ b/include/dsound.h
@@ -301,13 +301,18 @@ typedef struct _DSBPOSITIONNOTIFY
 } DSBPOSITIONNOTIFY,*LPDSBPOSITIONNOTIFY;
 typedef const DSBPOSITIONNOTIFY *LPCDSBPOSITIONNOTIFY;
 
+#define DSSPEAKER_DIRECTOUT     0
 #define DSSPEAKER_HEADPHONE     1
 #define DSSPEAKER_MONO          2
 #define DSSPEAKER_QUAD          3
 #define DSSPEAKER_STEREO        4
 #define DSSPEAKER_SURROUND      5
 #define DSSPEAKER_5POINT1       6
+#define DSSPEAKER_5POINT1_BACK  6
 #define DSSPEAKER_7POINT1       7
+#define DSSPEAKER_7POINT1_WIDE  7
+#define DSSPEAKER_7POINT1_SURROUND  8
+#define DSSPEAKER_5POINT1_SURROUND  9
 
 #define DSSPEAKER_GEOMETRY_MIN      0x00000005  /* 5 degrees */
 #define DSSPEAKER_GEOMETRY_NARROW   0x0000000A  /* 10 degrees */
diff --git a/include/ksmedia.h b/include/ksmedia.h
index 44834bb..dec2866 100644
--- a/include/ksmedia.h
+++ b/include/ksmedia.h
@@ -34,8 +34,10 @@ DEFINE_GUID(KSDATAFORMAT_SUBTYPE_ALAW, 0x00000006, 0x0000, 0x0010, 0x80, 0x00, 0
 #define KSAUDIO_SPEAKER_QUAD (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT)
 #define KSAUDIO_SPEAKER_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | SPEAKER_BACK_CENTER)
 #define KSAUDIO_SPEAKER_5POINT1 (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | SPEAKER_BACK_LEFT | SPEAKER_BACK_RIGHT)
+/* 5:1 SIDE or BACK is not distinguished, only 0x3F shall be used (BACK) */
 #define KSAUDIO_SPEAKER_5POINT1_SURROUND (SPEAKER_FRONT_LEFT | SPEAKER_FRONT_RIGHT | SPEAKER_FRONT_CENTER | SPEAKER_LOW_FREQUENCY | SPEAKER_SIDE_LEFT | SPEAKER_SIDE_RIGHT)
 #define KSAUDIO_SPEAKER_7POINT1 (KSAUDIO_SPEAKER_5POINT1 | SPEAKER_FRONT_LEFT_OF_CENTER | SPEAKER_FRONT_RIGHT_OF_CENTER)
+/* 7:1 home theater 0x63F */
 #define KSAUDIO_SPEAKER_7POINT1_SURROUND (KSAUDIO_SPEAKER_5POINT1 | SPEAKER_SIDE_LEFT | SPEAKER_SIDE_RIGHT)
 
 #ifndef REFERENCE_TIME_DEFINED




More information about the wine-cvs mailing list