Add 'wavemap' support for 48 and 96kHz formats

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




i810 sound cards only support one sound format: 48kHz 16 bit stereo. Any other format must be converted to this format first. The problem is that Wine's wavemaper and msacm libraries did not know abouve the 48kHz formats. With this patch the conversion should be successful and thus applications should be able to play the sound correctly.

Changelog:

Francois Gouget <fgouget@codeweavers.com>

* dlls/msacm/pcmconverter.c,
dlls/winmm/wavemap/wavemap.c

Add support for the 48 and 96kHz formats

--
Francois Gouget
fgouget@codeweavers.com

Index: dlls/msacm/pcmconverter.c
===================================================================
RCS file: /home/wine/wine/dlls/msacm/pcmconverter.c,v
retrieving revision 1.13
diff -u -r1.13 pcmconverter.c
@@ -103,12 +103,14 @@
     {1,  8, 11025}, {2,  8, 11025}, {1, 16, 11025}, {2, 16, 11025},
     {1,  8, 22050}, {2,  8, 22050}, {1, 16, 22050}, {2, 16, 22050},
     {1,  8, 44100}, {2,  8, 44100}, {1, 16, 44100}, {2, 16, 44100},
+    {1,  8, 48000}, {2,  8, 48000}, {1, 16, 48000}, {2, 16, 48000},
+    {1,  8, 96000}, {2,  8, 96000}, {1, 16, 96000}, {2, 16, 96000}
 };
 
 /***********************************************************************
  *           PCM_GetFormatIndex
  */
-static	DWORD	PCM_GetFormatIndex(LPWAVEFORMATEX wfx)
+static DWORD PCM_GetFormatIndex(LPWAVEFORMATEX wfx)
 {
     int i;
 
Index: dlls/winmm/wavemap/wavemap.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/wavemap/wavemap.c,v
retrieving revision 1.24
diff -u -r1.24 wavemap.c
--- dlls/winmm/wavemap/wavemap.c	31 Oct 2002 00:54:27 -0000	1.24
+++ dlls/winmm/wavemap/wavemap.c	12 Dec 2002 03:05:28 -0000
@@ -189,26 +192,34 @@
                         {wom->avgSpeedInner = wfx.nAvgBytesPerSec; goto found;}
 
         for (i = ndlo; i < ndhi; i++) {
             /* first try with same stereo/mono option as source */
             wfx.nChannels = lpDesc->lpFormat->nChannels;
+            TRY(96000, 16);
+            TRY(48000, 16);
             TRY(44100, 16);
             TRY(22050, 16);
             TRY(11025, 16);
 
             /* 2^3 => 1, 1^3 => 2, so if stereo, try mono (and the other way around) */
             wfx.nChannels ^= 3;
+            TRY(96000, 16);
+            TRY(48000, 16);
             TRY(44100, 16);
             TRY(22050, 16);
             TRY(11025, 16);
 
             /* first try with same stereo/mono option as source */
             wfx.nChannels = lpDesc->lpFormat->nChannels;
+            TRY(96000, 8);
+            TRY(48000, 8);
             TRY(44100, 8);
             TRY(22050, 8);
             TRY(11025, 8);
 
             /* 2^3 => 1, 1^3 => 2, so if stereo, try mono (and the other way around) */
             wfx.nChannels ^= 3;
+            TRY(96000, 8);
+            TRY(48000, 8);
             TRY(44100, 8);
             TRY(22050, 8);
             TRY(11025, 8);

[Index of Archives]     [Gimp for Windows]     [Red Hat]     [Samba]     [Yosemite Camping]     [Graphics Cards]     [Wine Home]

  Powered by Linux