[FFmpeg-devel] [PATCH 3/4] vf_ssim: remove another obscure double loop.
Paul B Mahol
onemda at gmail.com
Sun Jul 12 12:58:30 CEST 2015
Dana 12. 7. 2015. 01:57 osoba "Ronald S. Bultje" <rsbultje at gmail.com>
napisala je:
>
> ---
> libavfilter/vf_ssim.c | 18 ++++++++----------
> 1 file changed, 8 insertions(+), 10 deletions(-)
>
> diff --git a/libavfilter/vf_ssim.c b/libavfilter/vf_ssim.c
> index b1c3368..f7a259e 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);
> --
> 2.1.2
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
Ok if results are same and pure C speed is not slower.
More information about the ffmpeg-devel
mailing list