]> code.delx.au - pulseaudio/commitdiff
tests: Adjust latency test calibration
authorArun Raghavan <arun.raghavan@collabora.co.uk>
Wed, 22 May 2013 10:29:24 +0000 (15:59 +0530)
committerArun Raghavan <arun.raghavan@collabora.co.uk>
Mon, 3 Jun 2013 19:08:44 +0000 (00:38 +0530)
This makes the test more robust by:

1. Decreasing the '1' threshold during calibration - the RMS value for
   the sine wave will be 0.5, so the previous code was making us take
   the ALSA mixer past 0dB.

2. Using the difference rather than absolute value for 0->1 transitions,
   so that we're somewhat independent noise in our calculations.

src/tests/lo-latency-test.c

index c22affcaecded36a8adf284bd6626c37728d6fd4..8f3b04d4d8f9f323d07959ebe2ab924a38a3e274 100644 (file)
@@ -158,7 +158,7 @@ static void read_cb(pa_stream *s, size_t nbytes, void *userdata) {
          * straddle the 0->1 transition, raising the average power. We keep the
          * definition of 1 tight in this case and detect the transition in the
          * next round. */
-        if (last < 0.5f && cur > 0.8f) {
+        if (cur - last > 0.4f) {
             pa_gettimeofday(&tv_in);
             fprintf(stderr, "Latency %llu\n", (unsigned long long) pa_timeval_diff(&tv_in, &tv_out));
         }
@@ -234,8 +234,8 @@ static void calibrate_read_cb(pa_stream *s, size_t nbytes, void *userdata) {
 
     switch (cal_state) {
         case CALIBRATION_ONE:
-            /* Try to detect the sine wave */
-            if (rms(in, nsamp) < 0.8f) {
+            /* Try to detect the sine wave. RMS is 0.5, */
+            if (rms(in, nsamp) < 0.40f) {
                 confirm = 0;
                 v += 0.02f;