From: Jaroslav Kysela Date: Mon, 5 Feb 2018 13:59:12 +0000 (+0100) Subject: pcm: another fix for the snd_pcm_area_silence() fast path X-Git-Tag: v1.1.6~14 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=af531606b73634b56ec0ec73fbea8297a7752172;p=alsa-lib.git pcm: another fix for the snd_pcm_area_silence() fast path The 64-bit fast path can be used only in limited conditions: - destination must be aligned to 64-bit (CPU aligned access) - step must be equal to width - physical with must be different than 24 (cannot be multiplied to 64) Signed-off-by: Jaroslav Kysela --- diff --git a/src/pcm/pcm.c b/src/pcm/pcm.c index 86250970..1be38339 100644 --- a/src/pcm/pcm.c +++ b/src/pcm/pcm.c @@ -2951,7 +2951,9 @@ int snd_pcm_area_silence(const snd_pcm_channel_area_t *dst_area, snd_pcm_uframes * Iterate copying silent sample for sample data aligned to 64 bit. * This is a fast path. */ - if (dst_area->step == (unsigned int) width && (64 % width) == 0) { + if (dst_area->step == (unsigned int) width && + width != 24 && + ((intptr_t)dst & 7) == 0) { unsigned int dwords = samples * width / 64; uint64_t *dstp = (uint64_t *)dst; samples -= dwords * 64 / width;