=?UTF-8?Q?J=C3=B6rg=20H=C3=B6hle=20?=: mmdevapi/tests: Fix some render test failures.

Alexandre Julliard julliard at winehq.org
Fri Feb 24 10:47:27 CST 2012


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

Author: Jörg Höhle <hoehle at users.sourceforge.net>
Date:   Tue Feb 21 18:35:05 2012 +0100

mmdevapi/tests: Fix some render test failures.

---

 dlls/mmdevapi/tests/render.c |   31 +++++++++++++++++--------------
 1 files changed, 17 insertions(+), 14 deletions(-)

diff --git a/dlls/mmdevapi/tests/render.c b/dlls/mmdevapi/tests/render.c
index 127f558..0552183 100644
--- a/dlls/mmdevapi/tests/render.c
+++ b/dlls/mmdevapi/tests/render.c
@@ -334,6 +334,7 @@ static void test_audioclient(void)
           (UINT)(t2/10000), (UINT)(t2 % 10000));
     ok(t2 >= t1 || broken(t2 >= t1/2 && pwfx->nSamplesPerSec > 48000),
        "Latency < default period, delta %ldus\n", (long)((t2-t1)/10));
+    /* Native appears to add the engine period to the HW latency in shared mode */
 
     hr = IAudioClient_Initialize(ac, AUDCLNT_SHAREMODE_SHARED, 0, 5000000, 0, pwfx, NULL);
     ok(hr == AUDCLNT_E_ALREADY_INITIALIZED, "Calling Initialize twice returns %08x\n", hr);
@@ -681,7 +682,7 @@ static void test_padding(void)
     IAudioClient *ac;
     IAudioRenderClient *arc;
     WAVEFORMATEX *pwfx;
-    REFERENCE_TIME minp, defp, lat;
+    REFERENCE_TIME minp, defp;
     BYTE *buf;
     UINT32 psize, pad, written;
 
@@ -715,11 +716,6 @@ static void test_padding(void)
     ok(minp != 0, "Minimum period is 0\n");
     ok(minp <= defp, "Mininum period is greater than default period\n");
 
-    hr = IAudioClient_GetStreamLatency(ac, &lat);
-    ok(hr == S_OK, "GetStreamLatency failed: %08x\n", hr);
-    ok(lat >= defp, "Latency is at least period in shared mode\n");
-    /* Native appears to add the engine period to the HW latency in shared mode */
-
     hr = IAudioClient_GetService(ac, &IID_IAudioRenderClient, (void**)&arc);
     ok(hr == S_OK, "GetService failed: %08x\n", hr);
 
@@ -898,13 +894,14 @@ static void test_clock(int share)
     }
 
     /** GetStreamLatency
-     * Shared mode: 1x period + a little
+     * Shared mode: 1x period + a little, but some 192000 devices return 5.3334ms.
      * Exclusive mode: testbot returns 2x period + a little, but
      * some HDA drivers return 1x period, some + a little. */
     hr = IAudioClient_GetStreamLatency(ac, &t2);
     ok(hr == S_OK, "GetStreamLatency failed: %08x\n", hr);
     trace("Latency: %u.%04u ms\n", (UINT)(t2/10000), (UINT)(t2 % 10000));
-    ok(t2 >= period, "Latency < default period, delta %ldus\n", (long)((t2-period)/10));
+    ok(t2 >= period || broken(t2 >= period/2 && share && pwfx->nSamplesPerSec > 48000),
+       "Latency < default period, delta %ldus\n", (long)((t2-period)/10));
 
     /** GetBufferSize
      * BufferSize must be rounded up, maximum 2s says MSDN.
@@ -929,7 +926,7 @@ static void test_clock(int share)
     ok(gbsize == bufsize,
        "BufferSize %u at rate %u\n", gbsize, pwfx->nSamplesPerSec);
     else todo_wine
-    ok(gbsize == parts * fragment,
+    ok(gbsize == parts * fragment || gbsize == MulDiv(bufsize, 1, 1024) * 1024,
        "BufferSize %u misfits fragment size %u at rate %u\n", gbsize, fragment, pwfx->nSamplesPerSec);
 
     /* In shared mode, GetCurrentPadding decreases in multiples of
@@ -1860,13 +1857,19 @@ static void test_volume_dependence(void)
 
     hr = IMMDevice_Activate(dev, &IID_IAudioClient, CLSCTX_INPROC_SERVER,
             NULL, (void**)&ac2);
-    if(SUCCEEDED(hr)){
-        IChannelAudioVolume *cav2;
-        IAudioStreamVolume *asv2;
+    ok(hr == S_OK, "Activation failed with %08x\n", hr);
 
+    if(hr == S_OK){
         hr = IAudioClient_Initialize(ac2, AUDCLNT_SHAREMODE_SHARED,
                 AUDCLNT_STREAMFLAGS_NOPERSIST, 5000000, 0, fmt, &session);
         ok(hr == S_OK, "Initialize failed: %08x\n", hr);
+        if(hr != S_OK)
+            IAudioClient_Release(ac2);
+    }
+
+    if(hr == S_OK){
+        IChannelAudioVolume *cav2;
+        IAudioStreamVolume *asv2;
 
         hr = IAudioClient_GetService(ac2, &IID_IChannelAudioVolume, (void**)&cav2);
         ok(hr == S_OK, "GetService failed: %08x\n", hr);
@@ -2097,8 +2100,8 @@ static void test_worst_case(void)
         ok(hr == S_OK, "Start failed: %08x\n", hr);
 
         for(i = 0; i <= 99; i++){ /* 100 x 10ms = 1 second */
-            r = WaitForSingleObject(event, 70);
-            ok(r == WAIT_OBJECT_0, "Wait gave %x\n", r);
+            r = WaitForSingleObject(event, 60 + defp / 10000);
+            ok(r == WAIT_OBJECT_0, "Wait iteration %d gave %x\n", i, r);
 
             /* the app has nearly one period time to feed data */
             Sleep((i % 10) * defp / 120000);




More information about the wine-cvs mailing list