]> git.alsa-project.org Git - alsa-lib.git/commitdiff
Maarten de Boer <mdeboer@iua.upf.es>
authorJaroslav Kysela <perex@perex.cz>
Fri, 5 Mar 2004 09:11:13 +0000 (09:11 +0000)
committerJaroslav Kysela <perex@perex.cz>
Fri, 5 Mar 2004 09:11:13 +0000 (09:11 +0000)
The attached patch makes the alsa-lib/test/pmc.c generate_sine code
slightly more simple, efficient and readable (but not less accurate),
taking quite some calculation out of the loop.

test/pcm.c

index 07ea7daf71ce5482ec761235e54b5a795df1a3a3..fec36b51452c9f4f44c858338b155b81327b1551 100644 (file)
@@ -29,9 +29,9 @@ static void generate_sine(const snd_pcm_channel_area_t *areas,
                          snd_pcm_uframes_t offset,
                          int count, double *_phase)
 {
+       static double max_phase = 2. * M_PI;
        double phase = *_phase;
-       double max_phase = 1.0 / freq;
-       double step = 1.0 / (double)rate;
+       double step = max_phase*freq/(double)rate;
        double res;
        signed short *samples[channels];
        int steps[channels];
@@ -53,7 +53,7 @@ static void generate_sine(const snd_pcm_channel_area_t *areas,
        }
        /* fill the channel areas */
        while (count-- > 0) {
-               res = sin((phase * 2 * M_PI) / max_phase - M_PI) * 32767;
+               res = sin(phase) * 32767;
                ires = res;
                for (chn = 0; chn < channels; chn++) {
                        *samples[chn] = ires;