Commit 03931ecf authored by Ronald S. Bultje's avatar Ronald S. Bultje Committed by Michael Niedermayer

vf_ssim: remove another obscure double loop.

Reviewed-by: 's avatarPaul B Mahol <onemda@gmail.com>
Signed-off-by: 's avatarMichael Niedermayer <michael@niedermayer.cc>
parent a1f48480
...@@ -85,13 +85,13 @@ static void set_meta(AVDictionary **metadata, const char *key, char comp, float ...@@ -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, static void ssim_4x4xn(const uint8_t *main, int main_stride,
const uint8_t *ref, int ref_stride, const uint8_t *ref, int ref_stride,
int sums[2][4]) int (*sums)[4], int width)
{ {
int x, y, z; 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; uint32_t s1 = 0, s2 = 0, ss = 0, s12 = 0;
for (y = 0; y < 4; y++) { for (y = 0; y < 4; y++) {
...@@ -149,8 +149,7 @@ static float ssim_plane(uint8_t *main, int main_stride, ...@@ -149,8 +149,7 @@ static float ssim_plane(uint8_t *main, int main_stride,
uint8_t *ref, int ref_stride, uint8_t *ref, int ref_stride,
int width, int height, void *temp) int width, int height, void *temp)
{ {
int z = 0; int z = 0, y;
int x, y;
float ssim = 0.0; float ssim = 0.0;
int (*sum0)[4] = temp; int (*sum0)[4] = temp;
int (*sum1)[4] = sum0 + (width >> 2) + 3; int (*sum1)[4] = sum0 + (width >> 2) + 3;
...@@ -161,10 +160,9 @@ static float ssim_plane(uint8_t *main, int main_stride, ...@@ -161,10 +160,9 @@ static float ssim_plane(uint8_t *main, int main_stride,
for (y = 1; y < height; y++) { for (y = 1; y < height; y++) {
for (; z <= y; z++) { for (; z <= y; z++) {
FFSWAP(void*, sum0, sum1); FFSWAP(void*, sum0, sum1);
for (x = 0; x < width; x+=2) ssim_4x4xn(&main[4 * z * main_stride], main_stride,
ssim_4x4x2_core(&main[4 * (x + z * main_stride)], main_stride, &ref[4 * z * ref_stride], ref_stride,
&ref[4 * (x + z * ref_stride)], ref_stride, sum0, width);
&sum0[x]);
} }
ssim += ssim_endn(sum0, sum1, width - 1); ssim += ssim_endn(sum0, sum1, width - 1);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment