[WINMM} add multiple header wave tests

Robert Reif reif at earthlink.net
Sun May 28 15:50:09 CDT 2006


The current wave tests only use a single header for playback.  Tests 
have been added to use multiple headers and to reuse them.  This is how 
streaming applications and direct sound use the wave api.

The tests run without error on XP in interactive mode but produce errors 
on wine with OSS and RH9 sometimes when using multiple headers.
-------------- next part --------------
Index: dlls/winmm/tests/wave.c
===================================================================
RCS file: /home/wine/wine/dlls/winmm/tests/wave.c,v
retrieving revision 1.59
diff -p -u -r1.59 wave.c
--- dlls/winmm/tests/wave.c	23 May 2006 12:48:57 -0000	1.59
+++ dlls/winmm/tests/wave.c	28 May 2006 20:37:53 -0000
@@ -486,8 +486,9 @@ static void check_position(int device, H
               dev_name(device), wave_time_format(mmtime.wType));
     returned = time_to_bytes(&mmtime, pwfx);
     ok(returned == bytes, "waveOutGetPosition(%s): returned %ld ms, "
-       "should be %ld\n", dev_name(device), bytes_to_ms(returned, pwfx),
-       bytes_to_ms(bytes, pwfx));
+       "(%ld bytes), should be %ld (%ld bytes)\n", dev_name(device),
+       bytes_to_ms(returned, pwfx), returned,
+       bytes_to_ms(bytes, pwfx), bytes);
 
     mmtime.wType = TIME_SMPTE;
     rc=waveOutGetPosition(wout, &mmtime, sizeof(mmtime));
@@ -536,7 +537,9 @@ static DWORD WINAPI callback_thread(LPVO
 
     while (GetMessage(&msg, 0, 0, 0)) {
         UINT message = msg.message;
-        ok (message == WOM_OPEN || message == WOM_DONE || message == WOM_CLOSE,
+        /* for some reason XP sends a WM_USER message before WOM_OPEN */
+        ok (message == WOM_OPEN || message == WOM_DONE ||
+            message == WOM_CLOSE || message == WM_USER,
             "GetMessage returned unexpected message: %u\n", message);
         if (message == WOM_OPEN || message == WOM_DONE || message == WOM_CLOSE)
             SetEvent((HANDLE)lpParameter);
@@ -546,13 +549,14 @@ static DWORD WINAPI callback_thread(LPVO
 }
 
 static void wave_out_test_deviceOut(int device, double duration,
+                                    int headers, int loops,
                                     LPWAVEFORMATEX pwfx, DWORD format,
                                     DWORD flags, LPWAVEOUTCAPS pcaps,
                                     BOOL interactive, BOOL sine, BOOL pause)
 {
     HWAVEOUT wout;
     HANDLE hevent;
-    WAVEHDR frag;
+    WAVEHDR *frags;
     MMRESULT rc;
     DWORD volume;
     WORD nChannels = pwfx->nChannels;
@@ -564,6 +568,10 @@ static void wave_out_test_deviceOut(int 
     DWORD callback = 0;
     DWORD callback_instance = 0;
     HANDLE thread = 0;
+    BYTE * buffer;
+    DWORD length;
+    DWORD frag_length;
+    int i, j;
 
     hevent=CreateEvent(NULL,FALSE,FALSE,NULL);
     ok(hevent!=NULL,"CreateEvent(): error=%ld\n",GetLastError());
@@ -642,13 +650,12 @@ static void wave_out_test_deviceOut(int 
        pwfx->nSamplesPerSec, pwfx->wBitsPerSample,
        pwfx->nChannels, nSamplesPerSec, wBitsPerSample, nChannels);
 
+    frags = malloc(headers * sizeof(WAVEHDR));
+
     if (sine)
-        frag.lpData=wave_generate_la(pwfx,duration,&frag.dwBufferLength);
+        buffer=wave_generate_la(pwfx,duration / (loops + 1),&length);
     else
-        frag.lpData=wave_generate_silence(pwfx,duration,&frag.dwBufferLength);
-
-    frag.dwFlags=0;
-    frag.dwLoops=0;
+        buffer=wave_generate_silence(pwfx,duration / (loops + 1),&length);
 
     rc=waveOutGetVolume(wout,0);
     ok(rc==MMSYSERR_INVALPARAM,"waveOutGetVolume(%s,0) expected "
@@ -657,15 +664,30 @@ static void wave_out_test_deviceOut(int 
     ok(has_volume ? rc==MMSYSERR_NOERROR : rc==MMSYSERR_NOTSUPPORTED,
        "waveOutGetVolume(%s): rc=%s\n",dev_name(device),wave_out_error(rc));
 
-    rc=waveOutPrepareHeader(wout, &frag, sizeof(frag));
-    ok(rc==MMSYSERR_NOERROR,
-       "waveOutPrepareHeader(%s): rc=%s\n",dev_name(device),wave_out_error(rc));
+    /* make sure fragment length is a multiple of block size */
+    frag_length = ((length / headers) / pwfx->nBlockAlign) * pwfx->nBlockAlign;
+
+    for (i = 0; i < headers; i++) {
+        frags[i].lpData=buffer + (i * frag_length);
+        if (i != (headers-1))
+            frags[i].dwBufferLength=frag_length;
+        else {
+            /* use remainder of buffer for last fragment */
+            frags[i].dwBufferLength=length - (i * frag_length);
+        }
+        frags[i].dwFlags=0;
+        frags[i].dwLoops=0;
+        rc=waveOutPrepareHeader(wout, &frags[i], sizeof(frags[0]));
+        ok(rc==MMSYSERR_NOERROR,
+           "waveOutPrepareHeader(%s): rc=%s\n",dev_name(device),wave_out_error(rc));
+    }
 
     if (interactive && rc==MMSYSERR_NOERROR) {
         DWORD start,end;
-        trace("Playing %g second %s at %5ldx%2dx%d %s %s\n",duration,
+        trace("Playing %g second %s at %5ldx%2dx%d %2d header%s %d loop%s %ld bytes %s %s\n",duration,
               sine ? "440Hz tone" : "silence",pwfx->nSamplesPerSec,
-              pwfx->wBitsPerSample,pwfx->nChannels,
+              pwfx->wBitsPerSample,pwfx->nChannels, headers, headers > 1 ? "s": " ",
+              loops, loops == 1 ? " " : "s", length * (loops + 1),
               get_format_str(pwfx->wFormatTag),
               wave_open_flags(flags));
         if (sine && has_volume && volume == 0)
@@ -684,24 +706,25 @@ static void wave_out_test_deviceOut(int 
            "waveOutSetVolume(%s): rc=%s\n",dev_name(device),wave_out_error(rc));
 
         start=GetTickCount();
-        rc=waveOutWrite(wout, &frag, sizeof(frag));
+
+        rc=waveOutWrite(wout, &frags[0], sizeof(frags[0]));
         ok(rc==MMSYSERR_NOERROR,"waveOutWrite(%s): rc=%s\n",
            dev_name(device),wave_out_error(rc));
 
-        ok(frag.dwFlags==(WHDR_PREPARED|WHDR_INQUEUE),
+        ok(frags[0].dwFlags==(WHDR_PREPARED|WHDR_INQUEUE),
            "WHDR_INQUEUE WHDR_PREPARED expected, got= %s\n",
-           wave_header_flags(frag.dwFlags));
+           wave_header_flags(frags[0].dwFlags));
 
-        rc=waveOutWrite(wout, &frag, sizeof(frag));
+        rc=waveOutWrite(wout, &frags[0], sizeof(frags[0]));
         ok(rc==WAVERR_STILLPLAYING,
            "waveOutWrite(%s): WAVE_STILLPLAYING expected, got %s\n",
            dev_name(device),wave_out_error(rc));
 
-        ok(frag.dwFlags==(WHDR_PREPARED|WHDR_INQUEUE),
+        ok(frags[0].dwFlags==(WHDR_PREPARED|WHDR_INQUEUE),
            "WHDR_INQUEUE WHDR_PREPARED expected, got %s\n",
-           wave_header_flags(frag.dwFlags));
+           wave_header_flags(frags[0].dwFlags));
 
-        if (pause) {
+        if (headers == 1 && loops == 0 && pause) {
             paused = duration / 2;
             Sleep(paused * 1000);
             rc=waveOutPause(wout);
@@ -714,28 +737,44 @@ static void wave_out_test_deviceOut(int 
                dev_name(device),wave_out_error(rc));
         }
 
-        WaitForSingleObject(hevent,INFINITE);
+        for (j = 0; j <= loops; j++) {
+            for (i = 0; i < headers; i++) {
+                /* don't do last one */
+                if (!((j == loops) && (i == (headers - 1)))) {
+                    if (j > 0)
+                        frags[(i+1) % headers].dwFlags = WHDR_PREPARED;
+                    rc=waveOutWrite(wout, &frags[(i+1) % headers], sizeof(frags[0]));
+                    ok(rc==MMSYSERR_NOERROR,"waveOutWrite(%s, header[%d]): rc=%s\n",
+                       dev_name(device),(i+1)%headers,wave_out_error(rc));
+                }
+                WaitForSingleObject(hevent,INFINITE);
+            }
+        }
 
         /* Check the sound duration was between -2% and +10% of the expected value */
         end=GetTickCount();
         actual = (end - start) / 1000.0;
         if (winetest_debug > 1)
             trace("sound duration=%g ms\n",1000*actual);
-        ok((actual > (0.98 * (duration+paused))) &&
+        ok((actual > (0.97 * (duration+paused))) &&
            (actual < (1.1 * (duration+paused))),
            "The sound played for %g ms instead of %g ms\n",
            1000*actual,1000*(duration+paused));
-        ok(frag.dwFlags=(WHDR_DONE|WHDR_PREPARED),
-           "WHDR_DONE WHDR_PREPARED expected, got %s\n",
-           wave_header_flags(frag.dwFlags));
-        check_position(device, wout, frag.dwBufferLength, pwfx);
+        for (i = 0; i < headers; i++) {
+            ok(frags[i].dwFlags=(WHDR_DONE|WHDR_PREPARED),
+               "WHDR_DONE WHDR_PREPARED expected, got %s\n",
+               wave_header_flags(frags[i].dwFlags));
+        }
+        check_position(device, wout, length * (loops + 1), pwfx);
     }
 
-    rc=waveOutUnprepareHeader(wout, &frag, sizeof(frag));
-    ok(rc==MMSYSERR_NOERROR,
-       "waveOutUnprepareHeader(%s): rc=%s\n",dev_name(device),
-       wave_out_error(rc));
-    free(frag.lpData);
+    for (i = 0; i < headers; i++) {
+        rc=waveOutUnprepareHeader(wout, &frags[i], sizeof(frags[0]));
+        ok(rc==MMSYSERR_NOERROR,
+           "waveOutUnprepareHeader(%s): rc=%s\n",dev_name(device),
+           wave_out_error(rc));
+    }
+    free(buffer);
 
     rc=waveOutClose(wout);
     ok(rc==MMSYSERR_NOERROR,"waveOutClose(%s): rc=%s\n",dev_name(device),
@@ -743,6 +782,7 @@ static void wave_out_test_deviceOut(int 
     if ((flags & CALLBACK_TYPEMASK) == CALLBACK_THREAD)
         TerminateThread(thread, 0);
     CloseHandle(hevent);
+    free(frags);
 }
 
 static void wave_out_test_device(int device)
@@ -857,12 +897,18 @@ static void wave_out_test_device(int dev
         format.nBlockAlign=format.nChannels*format.wBitsPerSample/8;
         format.nAvgBytesPerSec=format.nSamplesPerSec*format.nBlockAlign;
         format.cbSize=0;
-        wave_out_test_deviceOut(device,5.0,&format,WAVE_FORMAT_2M08,
+
+        wave_out_test_deviceOut(device,5.0,1,0,&format,WAVE_FORMAT_2M08,
                                 CALLBACK_EVENT,&capsA,TRUE,TRUE,FALSE);
-        wave_out_test_deviceOut(device,5.0,&format,WAVE_FORMAT_2M08,
+        wave_out_test_deviceOut(device,5.0,1,0,&format,WAVE_FORMAT_2M08,
                                 CALLBACK_FUNCTION,&capsA,TRUE,TRUE,FALSE);
-        wave_out_test_deviceOut(device,5.0,&format,WAVE_FORMAT_2M08,
+        wave_out_test_deviceOut(device,5.0,1,0,&format,WAVE_FORMAT_2M08,
                                 CALLBACK_THREAD,&capsA,TRUE,TRUE,FALSE);
+
+        wave_out_test_deviceOut(device,5.0,10,0,&format,WAVE_FORMAT_2M08,
+                                CALLBACK_EVENT,&capsA,TRUE,TRUE,FALSE);
+        wave_out_test_deviceOut(device,5.0,5,1,&format,WAVE_FORMAT_2M08,
+                                CALLBACK_EVENT,&capsA,TRUE,TRUE,FALSE);
     } else {
         format.wFormatTag=WAVE_FORMAT_PCM;
         format.nChannels=1;
@@ -871,18 +917,23 @@ static void wave_out_test_device(int dev
         format.nBlockAlign=format.nChannels*format.wBitsPerSample/8;
         format.nAvgBytesPerSec=format.nSamplesPerSec*format.nBlockAlign;
         format.cbSize=0;
-        wave_out_test_deviceOut(device,1.0,&format,WAVE_FORMAT_2M08,
+        wave_out_test_deviceOut(device,1.0,1,0,&format,WAVE_FORMAT_2M08,
                                 CALLBACK_EVENT,&capsA,TRUE,FALSE,FALSE);
-        wave_out_test_deviceOut(device,1.0,&format,WAVE_FORMAT_2M08,
+        wave_out_test_deviceOut(device,1.0,1,0,&format,WAVE_FORMAT_2M08,
                                 CALLBACK_EVENT,&capsA,TRUE,FALSE,TRUE);
-        wave_out_test_deviceOut(device,1.0,&format,WAVE_FORMAT_2M08,
+        wave_out_test_deviceOut(device,1.0,1,0,&format,WAVE_FORMAT_2M08,
                                 CALLBACK_FUNCTION,&capsA,TRUE,FALSE,FALSE);
-        wave_out_test_deviceOut(device,1.0,&format,WAVE_FORMAT_2M08,
+        wave_out_test_deviceOut(device,1.0,1,0,&format,WAVE_FORMAT_2M08,
                                 CALLBACK_FUNCTION,&capsA,TRUE,FALSE,TRUE);
-        wave_out_test_deviceOut(device,1.0,&format,WAVE_FORMAT_2M08,
+        wave_out_test_deviceOut(device,1.0,1,0,&format,WAVE_FORMAT_2M08,
                                 CALLBACK_THREAD,&capsA,TRUE,FALSE,FALSE);
-        wave_out_test_deviceOut(device,1.0,&format,WAVE_FORMAT_2M08,
+        wave_out_test_deviceOut(device,1.0,1,0,&format,WAVE_FORMAT_2M08,
                                 CALLBACK_THREAD,&capsA,TRUE,FALSE,TRUE);
+
+        wave_out_test_deviceOut(device,1.0,10,0,&format,WAVE_FORMAT_2M08,
+                                CALLBACK_EVENT,&capsA,TRUE,FALSE,FALSE);
+        wave_out_test_deviceOut(device,1.0,5,1,&format,WAVE_FORMAT_2M08,
+                                CALLBACK_EVENT,&capsA,TRUE,FALSE,FALSE);
     }
 
     for (f=0;f<NB_WIN_FORMATS;f++) {
@@ -893,46 +944,68 @@ static void wave_out_test_device(int dev
         format.nBlockAlign=format.nChannels*format.wBitsPerSample/8;
         format.nAvgBytesPerSec=format.nSamplesPerSec*format.nBlockAlign;
         format.cbSize=0;
-        wave_out_test_deviceOut(device,1.0,&format,win_formats[f][0],
+        wave_out_test_deviceOut(device,1.0,1,0,&format,win_formats[f][0],
                                 CALLBACK_EVENT,&capsA,winetest_interactive,
                                 TRUE,FALSE);
-        wave_out_test_deviceOut(device,1.0,&format,win_formats[f][0],
+        wave_out_test_deviceOut(device,1.0,1,0,&format,win_formats[f][0],
                                 CALLBACK_FUNCTION,&capsA,winetest_interactive,
                                 TRUE,FALSE);
-        wave_out_test_deviceOut(device,1.0,&format,win_formats[f][0],
+        wave_out_test_deviceOut(device,1.0,1,0,&format,win_formats[f][0],
                                 CALLBACK_THREAD,&capsA,winetest_interactive,
                                 TRUE,FALSE);
+
+        wave_out_test_deviceOut(device,1.0,10,0,&format,win_formats[f][0],
+                                CALLBACK_EVENT,&capsA,winetest_interactive,
+                                TRUE,FALSE);
+        wave_out_test_deviceOut(device,1.0,5,1,&format,win_formats[f][0],
+                                CALLBACK_EVENT,&capsA,winetest_interactive,
+                                TRUE,FALSE);
+
         if (winetest_interactive) {
-            wave_out_test_deviceOut(device,1.0,&format,win_formats[f][0],
+            wave_out_test_deviceOut(device,1.0,1,0,&format,win_formats[f][0],
                                     CALLBACK_EVENT,&capsA,winetest_interactive,
                                     TRUE,TRUE);
-            wave_out_test_deviceOut(device,1.0,&format,win_formats[f][0],
+            wave_out_test_deviceOut(device,1.0,1,0,&format,win_formats[f][0],
                                     CALLBACK_FUNCTION,&capsA,winetest_interactive,
                                     TRUE,TRUE);
-            wave_out_test_deviceOut(device,1.0,&format,win_formats[f][0],
+            wave_out_test_deviceOut(device,1.0,1,0,&format,win_formats[f][0],
                                     CALLBACK_THREAD,&capsA,winetest_interactive,
                                     TRUE,TRUE);
+
+            wave_out_test_deviceOut(device,1.0,10,0,&format,win_formats[f][0],
+                                    CALLBACK_EVENT,&capsA,winetest_interactive,
+                                    TRUE,TRUE);
+            wave_out_test_deviceOut(device,1.0,5,1,&format,win_formats[f][0],
+                                    CALLBACK_EVENT,&capsA,winetest_interactive,
+                                    TRUE,TRUE);
         }
         if (device != WAVE_MAPPER)
         {
-            wave_out_test_deviceOut(device,1.0,&format,win_formats[f][0],
+            wave_out_test_deviceOut(device,1.0,1,0,&format,win_formats[f][0],
                                     CALLBACK_EVENT|WAVE_FORMAT_DIRECT,&capsA,
                                     winetest_interactive,TRUE,FALSE);
-            wave_out_test_deviceOut(device,1.0,&format,win_formats[f][0],
+            wave_out_test_deviceOut(device,1.0,1,0,&format,win_formats[f][0],
                                     CALLBACK_EVENT|WAVE_MAPPED,&capsA,
                                     winetest_interactive,TRUE,FALSE);
-            wave_out_test_deviceOut(device,1.0,&format,win_formats[f][0],
+            wave_out_test_deviceOut(device,1.0,1,0,&format,win_formats[f][0],
                                     CALLBACK_FUNCTION|WAVE_FORMAT_DIRECT,&capsA,
                                     winetest_interactive,TRUE,FALSE);
-            wave_out_test_deviceOut(device,1.0,&format,win_formats[f][0],
+            wave_out_test_deviceOut(device,1.0,1,0,&format,win_formats[f][0],
                                     CALLBACK_FUNCTION|WAVE_MAPPED,&capsA,
                                     winetest_interactive,TRUE,FALSE);
-            wave_out_test_deviceOut(device,1.0,&format,win_formats[f][0],
+            wave_out_test_deviceOut(device,1.0,1,0,&format,win_formats[f][0],
                                     CALLBACK_THREAD|WAVE_FORMAT_DIRECT,&capsA,
                                     winetest_interactive,TRUE,FALSE);
-            wave_out_test_deviceOut(device,1.0,&format,win_formats[f][0],
+            wave_out_test_deviceOut(device,1.0,1,0,&format,win_formats[f][0],
                                     CALLBACK_THREAD|WAVE_MAPPED,&capsA,
                                     winetest_interactive,TRUE,FALSE);
+
+            wave_out_test_deviceOut(device,1.0,10,0,&format,win_formats[f][0],
+                                    CALLBACK_EVENT|WAVE_FORMAT_DIRECT,&capsA,
+                                    winetest_interactive,TRUE,FALSE);
+            wave_out_test_deviceOut(device,1.0,5,1,&format,win_formats[f][0],
+                                    CALLBACK_EVENT|WAVE_FORMAT_DIRECT,&capsA,
+                                    winetest_interactive,TRUE,FALSE);
         }
     }
 
@@ -954,15 +1027,33 @@ static void wave_out_test_device(int dev
             pwfx->nSamplesPerSec=22050;
             pwfx->nBlockAlign=pwfx->nChannels*pwfx->wBitsPerSample/8;
             pwfx->nAvgBytesPerSec=pwfx->nSamplesPerSec*pwfx->nBlockAlign;
-            wave_out_test_deviceOut(device,1.0,pwfx,WAVE_FORMAT_2M08,
+            wave_out_test_deviceOut(device,1.0,1,0,pwfx,WAVE_FORMAT_2M08,
+                                    CALLBACK_EVENT,&capsA,winetest_interactive,
+                                    TRUE,FALSE);
+            wave_out_test_deviceOut(device,1.0,10,0,pwfx,WAVE_FORMAT_2M08,
+                                    CALLBACK_EVENT,&capsA,winetest_interactive,
+                                    TRUE,FALSE);
+            wave_out_test_deviceOut(device,1.0,5,1,pwfx,WAVE_FORMAT_2M08,
                                     CALLBACK_EVENT,&capsA,winetest_interactive,
                                     TRUE,FALSE);
             if (device != WAVE_MAPPER)
             {
-                wave_out_test_deviceOut(device,1.0,pwfx,WAVE_FORMAT_2M08,
+                wave_out_test_deviceOut(device,1.0,1,0,pwfx,WAVE_FORMAT_2M08,
                                         CALLBACK_EVENT|WAVE_FORMAT_DIRECT,
                                         &capsA,winetest_interactive,TRUE,FALSE);
-                wave_out_test_deviceOut(device,1.0,pwfx,WAVE_FORMAT_2M08,
+                wave_out_test_deviceOut(device,1.0,1,0,pwfx,WAVE_FORMAT_2M08,
+                                        CALLBACK_EVENT|WAVE_MAPPED,&capsA,
+                                        winetest_interactive,TRUE,FALSE);
+                wave_out_test_deviceOut(device,1.0,10,0,pwfx,WAVE_FORMAT_2M08,
+                                        CALLBACK_EVENT|WAVE_FORMAT_DIRECT,
+                                        &capsA,winetest_interactive,TRUE,FALSE);
+                wave_out_test_deviceOut(device,1.0,10,0,pwfx,WAVE_FORMAT_2M08,
+                                        CALLBACK_EVENT|WAVE_MAPPED,&capsA,
+                                        winetest_interactive,TRUE,FALSE);
+                wave_out_test_deviceOut(device,1.0,5,1,pwfx,WAVE_FORMAT_2M08,
+                                        CALLBACK_EVENT|WAVE_FORMAT_DIRECT,
+                                        &capsA,winetest_interactive,TRUE,FALSE);
+                wave_out_test_deviceOut(device,1.0,5,1,pwfx,WAVE_FORMAT_2M08,
                                         CALLBACK_EVENT|WAVE_MAPPED,&capsA,
                                         winetest_interactive,TRUE,FALSE);
             }
@@ -1031,7 +1122,11 @@ static void wave_out_test_device(int dev
        "waveOutOpen(%s): returned %s\n",dev_name(device),wave_out_error(rc));
     if (rc==MMSYSERR_NOERROR) {
         waveOutClose(wout);
-        wave_out_test_deviceOut(device,1.0,&format,0,CALLBACK_EVENT,
+        wave_out_test_deviceOut(device,1.0,1,0,&format,0,CALLBACK_EVENT,
+                                &capsA,winetest_interactive,TRUE,FALSE);
+        wave_out_test_deviceOut(device,1.0,10,0,&format,0,CALLBACK_EVENT,
+                                &capsA,winetest_interactive,TRUE,FALSE);
+        wave_out_test_deviceOut(device,1.0,5,1,&format,0,CALLBACK_EVENT,
                                 &capsA,winetest_interactive,TRUE,FALSE);
     } else
         trace("waveOutOpen(%s): WAVE_FORMAT_MULAW not supported\n",
@@ -1051,7 +1146,11 @@ static void wave_out_test_device(int dev
        "waveOutOpen(%s): returned %s\n",dev_name(device),wave_out_error(rc));
     if (rc==MMSYSERR_NOERROR) {
         waveOutClose(wout);
-        wave_out_test_deviceOut(device,1.0,&format,0,CALLBACK_EVENT,
+        wave_out_test_deviceOut(device,1.0,1,0,&format,0,CALLBACK_EVENT,
+                                &capsA,winetest_interactive,TRUE,FALSE);
+        wave_out_test_deviceOut(device,1.0,10,0,&format,0,CALLBACK_EVENT,
+                                &capsA,winetest_interactive,TRUE,FALSE);
+        wave_out_test_deviceOut(device,1.0,5,1,&format,0,CALLBACK_EVENT,
                                 &capsA,winetest_interactive,TRUE,FALSE);
     } else
         trace("waveOutOpen(%s): WAVE_FORMAT_ADPCM not supported\n",
@@ -1076,7 +1175,13 @@ static void wave_out_test_device(int dev
        "waveOutOpen(%s): returned %s\n",dev_name(device),wave_out_error(rc));
     if (rc==MMSYSERR_NOERROR) {
         waveOutClose(wout);
-        wave_out_test_deviceOut(device,1.0,&wfex.Format,WAVE_FORMAT_2M16,
+        wave_out_test_deviceOut(device,1.0,1,0,&wfex.Format,WAVE_FORMAT_2M16,
+                                CALLBACK_EVENT,&capsA,winetest_interactive,
+                                TRUE,FALSE);
+        wave_out_test_deviceOut(device,1.0,10,0,&wfex.Format,WAVE_FORMAT_2M16,
+                                CALLBACK_EVENT,&capsA,winetest_interactive,
+                                TRUE,FALSE);
+        wave_out_test_deviceOut(device,1.0,5,1,&wfex.Format,WAVE_FORMAT_2M16,
                                 CALLBACK_EVENT,&capsA,winetest_interactive,
                                 TRUE,FALSE);
     } else
@@ -1102,7 +1207,11 @@ static void wave_out_test_device(int dev
        "waveOutOpen(%s): returned %s\n",dev_name(device),wave_out_error(rc));
     if (rc==MMSYSERR_NOERROR) {
         waveOutClose(wout);
-        wave_out_test_deviceOut(device,1.0,&wfex.Format,0,CALLBACK_EVENT,
+        wave_out_test_deviceOut(device,1.0,1,0,&wfex.Format,0,CALLBACK_EVENT,
+                                &capsA,winetest_interactive,TRUE,FALSE);
+        wave_out_test_deviceOut(device,1.0,10,0,&wfex.Format,0,CALLBACK_EVENT,
+                                &capsA,winetest_interactive,TRUE,FALSE);
+        wave_out_test_deviceOut(device,1.0,5,1,&wfex.Format,0,CALLBACK_EVENT,
                                 &capsA,winetest_interactive,TRUE,FALSE);
     } else
         trace("waveOutOpen(%s): 4 channels not supported\n",
@@ -1127,7 +1236,13 @@ static void wave_out_test_device(int dev
        "waveOutOpen(%s): returned %s\n",dev_name(device),wave_out_error(rc));
     if (rc==MMSYSERR_NOERROR) {
         waveOutClose(wout);
-        wave_out_test_deviceOut(device,1.0,&wfex.Format,WAVE_FORMAT_2M16,
+        wave_out_test_deviceOut(device,1.0,1,0,&wfex.Format,WAVE_FORMAT_2M16,
+                                CALLBACK_EVENT,&capsA,winetest_interactive,
+                                TRUE,FALSE);
+        wave_out_test_deviceOut(device,1.0,10,0,&wfex.Format,WAVE_FORMAT_2M16,
+                                CALLBACK_EVENT,&capsA,winetest_interactive,
+                                TRUE,FALSE);
+        wave_out_test_deviceOut(device,1.0,5,1,&wfex.Format,WAVE_FORMAT_2M16,
                                 CALLBACK_EVENT,&capsA,winetest_interactive,
                                 TRUE,FALSE);
     } else
@@ -1154,7 +1269,7 @@ static void wave_out_test_device(int dev
        "waveOutOpen(%s): returned %s\n",dev_name(device),wave_out_error(rc));
     if (rc==MMSYSERR_NOERROR) {
         waveOutClose(wout);
-        wave_out_test_deviceOut(device,1.0,&wfex.Format,WAVE_FORMAT_2M16,
+        wave_out_test_deviceOut(device,1.0,1,0,&wfex.Format,WAVE_FORMAT_2M16,
                                 CALLBACK_EVENT,&capsA,winetest_interactive,
                                 TRUE,FALSE);
     } else
@@ -1181,7 +1296,13 @@ static void wave_out_test_device(int dev
        "waveOutOpen(%s): returned %s\n",dev_name(device),wave_out_error(rc));
     if (rc==MMSYSERR_NOERROR) {
         waveOutClose(wout);
-        wave_out_test_deviceOut(device,1.0,&wfex.Format,WAVE_FORMAT_2M16,
+        wave_out_test_deviceOut(device,1.0,1,0,&wfex.Format,WAVE_FORMAT_2M16,
+                                CALLBACK_EVENT,&capsA,winetest_interactive,
+                                TRUE,FALSE);
+        wave_out_test_deviceOut(device,1.0,10,0,&wfex.Format,WAVE_FORMAT_2M16,
+                                CALLBACK_EVENT,&capsA,winetest_interactive,
+                                TRUE,FALSE);
+        wave_out_test_deviceOut(device,1.0,5,1,&wfex.Format,WAVE_FORMAT_2M16,
                                 CALLBACK_EVENT,&capsA,winetest_interactive,
                                 TRUE,FALSE);
     } else
@@ -1207,7 +1328,13 @@ static void wave_out_test_device(int dev
        "waveOutOpen(%s): returned %s\n",dev_name(device),wave_out_error(rc));
     if (rc==MMSYSERR_NOERROR) {
         waveOutClose(wout);
-        wave_out_test_deviceOut(device,1.0,&wfex.Format,WAVE_FORMAT_2M16,
+        wave_out_test_deviceOut(device,1.0,1,0,&wfex.Format,WAVE_FORMAT_2M16,
+                                CALLBACK_EVENT,&capsA,winetest_interactive,
+                                TRUE,FALSE);
+        wave_out_test_deviceOut(device,1.0,10,0,&wfex.Format,WAVE_FORMAT_2M16,
+                                CALLBACK_EVENT,&capsA,winetest_interactive,
+                                TRUE,FALSE);
+        wave_out_test_deviceOut(device,1.0,5,1,&wfex.Format,WAVE_FORMAT_2M16,
                                 CALLBACK_EVENT,&capsA,winetest_interactive,
                                 TRUE,FALSE);
     } else


More information about the wine-patches mailing list