From 03931ecf71710452fc9e89d4f18354f0b5e05395 Mon Sep 17 00:00:00 2001 From: "Ronald S. Bultje" Date: Sat, 11 Jul 2015 19:56:00 -0400 Subject: vf_ssim: remove another obscure double loop. Reviewed-by: Paul B Mahol Signed-off-by: Michael Niedermayer --- libavfilter/vf_ssim.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) (limited to 'libavfilter') diff --git a/libavfilter/vf_ssim.c b/libavfilter/vf_ssim.c index b1c3368bcd..f7a259e2d1 100644 --- a/libavfilter/vf_ssim.c +++ b/libavfilter/vf_ssim.c @@ -85,13 +85,13 @@ static void set_meta(AVDictionary **metadata, const char *key, char comp, float } } -static void ssim_4x4x2_core(const uint8_t *main, int main_stride, - const uint8_t *ref, int ref_stride, - int sums[2][4]) +static void ssim_4x4xn(const uint8_t *main, int main_stride, + const uint8_t *ref, int ref_stride, + int (*sums)[4], int width) { int x, y, z; - for (z = 0; z < 2; z++) { + for (z = 0; z < width; z++) { uint32_t s1 = 0, s2 = 0, ss = 0, s12 = 0; for (y = 0; y < 4; y++) { @@ -149,8 +149,7 @@ static float ssim_plane(uint8_t *main, int main_stride, uint8_t *ref, int ref_stride, int width, int height, void *temp) { - int z = 0; - int x, y; + int z = 0, y; float ssim = 0.0; int (*sum0)[4] = temp; int (*sum1)[4] = sum0 + (width >> 2) + 3; @@ -161,10 +160,9 @@ static float ssim_plane(uint8_t *main, int main_stride, for (y = 1; y < height; y++) { for (; z <= y; z++) { FFSWAP(void*, sum0, sum1); - for (x = 0; x < width; x+=2) - ssim_4x4x2_core(&main[4 * (x + z * main_stride)], main_stride, - &ref[4 * (x + z * ref_stride)], ref_stride, - &sum0[x]); + ssim_4x4xn(&main[4 * z * main_stride], main_stride, + &ref[4 * z * ref_stride], ref_stride, + sum0, width); } ssim += ssim_endn(sum0, sum1, width - 1); -- cgit v1.2.3