winmm wave test
Robert Reif
reif at earthlink.net
Sun Apr 25 19:28:18 CDT 2004
Francois Gouget wrote:
>On Sun, 25 Apr 2004, Robert Reif wrote:
>
>
>
>>Francois Gouget wrote:
>>
>>
>>
>>> Some Windows sound drivers allow wild frequencies such as the 2MHz
>>>one.
>>>
>>>
>>>
>>Is this a windows driver bug? Is the test really valid and it's just
>>finding a real bug in the windows driver for that specific sound card?
>>
>>I know it makes the test fail on bad windows drivers but is that bad?
>>
>>
>
>It might be a buggy sound driver or it may siomply be that Windows does
>not specify the behavior. After all it's always possible to remap a 2MHz
>sampling rate to 44.1kHz...
>
>So in doubt it seems best to just remove that test. Or currently just
>modify it to check for invalid bits per sample values in the hope it's a
>more robust test. If not we could also remove the test altogether.
>
>
>
How about something like this:
Adds test for illegal bits per sample.
Fixes format printing.
Since we are opening the device in WAVE_FORMAT_DIRECT mode, the wave
mapper is not involved so it should fail unless the hardware really
supports 2MHz
(which is highly unlikely).
-------------- next part --------------
Index: dlls/winmm/tests/wave.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/tests/wave.c,v
retrieving revision 1.16
diff -u -r1.16 wave.c
--- dlls/winmm/tests/wave.c 27 Mar 2004 20:42:57 -0000 1.16
+++ dlls/winmm/tests/wave.c 26 Apr 2004 00:18:45 -0000
@@ -312,7 +312,7 @@
}
/* Try an invalid format to test error handling */
- trace("Testing invalid 2MHz format\n");
+ trace("Testing invalid format: 2MHz sample rate\n");
format.wFormatTag=WAVE_FORMAT_PCM;
format.nChannels=2;
format.wBitsPerSample=16;
@@ -322,7 +322,7 @@
format.cbSize=0;
oformat=format;
rc=waveOutOpen(&wout,d,&format,0,0,CALLBACK_NULL|WAVE_FORMAT_DIRECT);
- ok(rc==WAVERR_BADFORMAT,
+ ok(rc==WAVERR_BADFORMAT || rc==MMSYSERR_INVALFLAG,
"waveOutOpen: opening the device at 2MHz should fail %d: rc=%d\n",d,rc);
if (rc==MMSYSERR_NOERROR) {
trace(" got %ldx%2dx%d for %ldx%2dx%d\n",
@@ -333,22 +333,25 @@
waveOutClose(wout);
}
+ /* try an unsupported bit size */
+ trace("Testing invalid format: 11 bits per sample\n");
format.wFormatTag=WAVE_FORMAT_PCM;
format.nChannels=2;
- format.wBitsPerSample=16;
- format.nSamplesPerSec=2000000; /* 2MHz! */
+ format.wBitsPerSample=11;
+ format.nSamplesPerSec=22050;
format.nBlockAlign=format.nChannels*format.wBitsPerSample/8;
format.nAvgBytesPerSec=format.nSamplesPerSec*format.nBlockAlign;
format.cbSize=0;
+ oformat=format;
rc=waveOutOpen(&wout,d,&format,0,0,CALLBACK_NULL|WAVE_FORMAT_DIRECT);
ok(rc==WAVERR_BADFORMAT || rc==MMSYSERR_INVALFLAG,
- "waveOutOpen: opening the device at 2MHz should fail %d: rc=%d\n",d,rc);
+ "waveOutOpen: opening the device in 11 bit mode should fail %d: rc=%d\n",d,rc);
if (rc==MMSYSERR_NOERROR) {
- trace(" got %ldx%2dx%d for %dx%2dx%d\n",
+ trace(" got %ldx%2dx%d for %ldx%2dx%d\n",
format.nSamplesPerSec, format.wBitsPerSample,
format.nChannels,
- win_formats[f][1], win_formats[f][2],
- win_formats[f][3]);
+ oformat.nSamplesPerSec, oformat.wBitsPerSample,
+ oformat.nChannels);
waveOutClose(wout);
}
}
@@ -519,7 +522,7 @@
}
/* Try an invalid format to test error handling */
- trace("Testing invalid 2MHz format\n");
+ trace("Testing invalid format: 2MHz sample rate\n");
format.wFormatTag=WAVE_FORMAT_PCM;
format.nChannels=2;
format.wBitsPerSample=16;
@@ -529,7 +532,7 @@
format.cbSize=0;
oformat=format;
rc=waveInOpen(&win,d,&format,0,0,CALLBACK_NULL|WAVE_FORMAT_DIRECT);
- ok(rc==WAVERR_BADFORMAT,
+ ok(rc==WAVERR_BADFORMAT || rc==MMSYSERR_INVALFLAG,
"waveInOpen: opening the device at 2MHz should fail %d: rc=%d\n",d,rc);
if (rc==MMSYSERR_NOERROR) {
trace(" got %ldx%2dx%d for %ldx%2dx%d\n",
@@ -540,22 +543,25 @@
waveInClose(win);
}
+ /* try an unsupported bit size */
+ trace("Testing invalid format: 11 bits per sample\n");
format.wFormatTag=WAVE_FORMAT_PCM;
format.nChannels=2;
- format.wBitsPerSample=16;
- format.nSamplesPerSec=2000000; /* 2MHz! */
+ format.wBitsPerSample=11;
+ format.nSamplesPerSec=22050;
format.nBlockAlign=format.nChannels*format.wBitsPerSample/8;
format.nAvgBytesPerSec=format.nSamplesPerSec*format.nBlockAlign;
format.cbSize=0;
+ oformat=format;
rc=waveInOpen(&win,d,&format,0,0,CALLBACK_NULL|WAVE_FORMAT_DIRECT);
ok(rc==WAVERR_BADFORMAT || rc==MMSYSERR_INVALFLAG,
- "waveInOpen: opening the device at 2MHz should fail %d: rc=%d\n",d,rc);
+ "waveInOpen: opening the device in 11 bit mode should fail %d: rc=%d\n",d,rc);
if (rc==MMSYSERR_NOERROR) {
- trace(" got %ldx%2dx%d for %dx%2dx%d\n",
+ trace(" got %ldx%2dx%d for %ldx%2dx%d\n",
format.nSamplesPerSec, format.wBitsPerSample,
format.nChannels,
- win_formats[f][1], win_formats[f][2],
- win_formats[f][3]);
+ oformat.nSamplesPerSec, oformat.wBitsPerSample,
+ oformat.nChannels);
waveInClose(win);
}
}
}
More information about the wine-devel
mailing list