From: Jaroslav Kysela Date: Wed, 19 Mar 2003 13:16:21 +0000 (+0000) Subject: A small cleanup to 32-bit mix routine as Abramo suggested X-Git-Tag: v1.0.3~195 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=87538939bdf6a2bbc5881b4a31ac00fa1809dd0c;p=alsa-lib.git A small cleanup to 32-bit mix routine as Abramo suggested --- diff --git a/src/pcm/pcm_dmix.c b/src/pcm/pcm_dmix.c index 41c4b526..b38849b9 100644 --- a/src/pcm/pcm_dmix.c +++ b/src/pcm/pcm_dmix.c @@ -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)