aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVardan Margaryan <v.t.margaryan@gmail.com>2022-05-23 19:06:16 +0300
committerAnton Khirnov <anton@khirnov.net>2022-06-06 09:51:17 +0200
commit73302aa193714958afb8262ceb14d9613e9df5ad (patch)
tree03c0d637bfac8c188686c5516602ae8ccb49e4f1
parent72106d6cc310b33ffa5b18367772d74f327acd1e (diff)
downloadffmpeg-73302aa193714958afb8262ceb14d9613e9df5ad.tar.gz
swscale/x86/yuv_2_rgb: fix access to memory past the frame data in yuv to rgb conversion
Y, U, V data is loaded at the end of the current iteration for the next iteration. It results in memory access past the frame data on the last iteration (that data is never used after the loading). So load data at the start of the iteration, so that only useful data is loaded. Signed-off-by: Vardan Margaryan <v.t.margaryan@gmail.com> Signed-off-by: Anton Khirnov <anton@khirnov.net>
-rw-r--r--libswscale/x86/yuv_2_rgb.asm5
1 files changed, 1 insertions, 4 deletions
diff --git a/libswscale/x86/yuv_2_rgb.asm b/libswscale/x86/yuv_2_rgb.asm
index 2f0b4130df..f968b3a0a2 100644
--- a/libswscale/x86/yuv_2_rgb.asm
+++ b/libswscale/x86/yuv_2_rgb.asm
@@ -139,10 +139,10 @@ cglobal %1_420_%2%3, GPR_num, GPR_num, reg_num, parameters
VBROADCASTSD vr_coff, [pointer_c_ditherq + 4 * 8]
%endif
%endif
+.loop0:
movu m_y, [py_2indexq + 2 * indexq]
movh m_u, [pu_indexq + indexq]
movh m_v, [pv_indexq + indexq]
-.loop0:
pxor m4, m4
mova m7, m6
punpcklbw m0, m4
@@ -347,9 +347,6 @@ cglobal %1_420_%2%3, GPR_num, GPR_num, reg_num, parameters
%endif ; PACK RGB15/16
%endif ; PACK RGB15/16/32
-movu m_y, [py_2indexq + 2 * indexq + 8 * time_num]
-movh m_v, [pv_indexq + indexq + 4 * time_num]
-movh m_u, [pu_indexq + indexq + 4 * time_num]
add imageq, 8 * depth * time_num
add indexq, 4 * time_num
js .loop0