libavfilter/x86/vf_gblur: correct the order of loop step
authorWu Jianhua <jianhua.wu@intel.com>
Thu, 16 Sep 2021 07:34:08 +0000 (15:34 +0800)
committerPaul B Mahol <onemda@gmail.com>
Sat, 18 Sep 2021 10:38:01 +0000 (12:38 +0200)
The problem was caused by if the width of the processed block
minus 1 is a multiple of the aligned number the instruction
jle .bscale_scalar would skip the Optimized Loop Step, which
will lead to an incorrect sampling when specifying steps more
than 1. Move the Optimized Loop Step after .bscale_scalar to
ensure the loop step is enabled.

Signed-off-by: Wu Jianhua <jianhua.wu@intel.com>
libavfilter/x86/vf_gblur.asm

index 64c0675..16e802e 100644 (file)
@@ -524,9 +524,8 @@ cglobal horiz_slice, 4, 9, 9, ptr, width, height, steps, nu, bscale, x, y, step,
         cmp xq,        0
         jg .loop_x_scalar
 
         cmp xq,        0
         jg .loop_x_scalar
 
-    OPTIMIZED_LOOP_STEP
-
     .bscale_scalar:
     .bscale_scalar:
+        OPTIMIZED_LOOP_STEP
         sub ptrq, 4
         sub localbufq, mmsize
         mulps m3, m1
         sub ptrq, 4
         sub localbufq, mmsize
         mulps m3, m1