]> git.alsa-project.org Git - alsa-utils.git/commitdiff
Fixed calculation of start_delay
authorJaroslav Kysela <perex@perex.cz>
Sat, 2 Feb 2002 19:29:04 +0000 (19:29 +0000)
committerJaroslav Kysela <perex@perex.cz>
Sat, 2 Feb 2002 19:29:04 +0000 (19:29 +0000)
aplay/aplay.c

index 8c48592379bb5767686bba8342ff01cf05cfed1b..9847671b84b7594975dd0ca3c1b382b876d64122 100644 (file)
@@ -787,14 +787,16 @@ static void set_params(void)
                n = (double) rate * avail_min / 1000000;
        err = snd_pcm_sw_params_set_avail_min(handle, swparams, n);
 
-       if (start_delay <= 0) 
-               start_threshold = buffer_size + (double) rate * start_delay / 1000000;
-       else
+       /* round up to closest transfer boundary */
+       n = (buffer_size / xfer_align) * xfer_align;
+       if (start_delay <= 0) {
+               start_threshold = n + (double) rate * start_delay / 1000000;
+       } else
                start_threshold = (double) rate * start_delay / 1000000;
        if (start_threshold < 1)
                start_threshold = 1;
-       if (start_threshold > buffer_size)
-               start_threshold = buffer_size;
+       if (start_threshold > n)
+               start_threshold = n;
        err = snd_pcm_sw_params_set_start_threshold(handle, swparams, start_threshold);
        assert(err >= 0);
        if (stop_delay <= 0)