]> git.alsa-project.org Git - alsa-lib.git/commitdiff
A small cleanup to 32-bit mix routine as Abramo suggested
authorJaroslav Kysela <perex@perex.cz>
Wed, 19 Mar 2003 13:16:21 +0000 (13:16 +0000)
committerJaroslav Kysela <perex@perex.cz>
Wed, 19 Mar 2003 13:16:21 +0000 (13:16 +0000)
src/pcm/pcm_dmix.c

index 41c4b526ba3f829b8a44e85beb249157e21431ef..b38849b960ee3dfa7ef02d94c5c1b3f2f0405a89 100644 (file)
@@ -197,7 +197,7 @@ static void mix_areas2(unsigned int size,
        register signed int sample, old_sample;
 
        while (size-- > 0) {
-               sample = *src >> 8;
+               sample = *src / 256;
                old_sample = *sum;
                if (*dst == 0)
                        sample -= old_sample;
@@ -205,12 +205,12 @@ static void mix_areas2(unsigned int size,
                do {
                        old_sample = *sum;
                        if (old_sample > 0x7fffff)
-                               sample = 0x7fffff;
+                               sample = 0x7fffffff;
                        else if (old_sample < -0x800000)
-                               sample = -0x800000;
+                               sample = -0x80000000;
                        else
-                               sample = old_sample;
-                       *dst = sample << 8;
+                               sample = old_sample * 256;
+                       *dst = sample;
                } while (*sum != old_sample);
                ((char *)src) += src_step;
                ((char *)dst) += dst_step;
@@ -709,7 +709,7 @@ static snd_pcm_sframes_t snd_pcm_dmix_forward(snd_pcm_t *pcm, snd_pcm_uframes_t
 {
        snd_pcm_sframes_t avail;
 
-       avail = snd_pcm_mmap_avail(pcm);
+       avail = snd_pcm_mmap_playback_avail(pcm);
        if (avail < 0)
                return 0;
        if (frames > (snd_pcm_uframes_t)avail)