[vlc-devel] [PATCH 2/2] deinterlace: handle multiple of 16 and 32	widths correctly in arm64 NEON merge asm
    Janne Grunau 
    janne-vlc at jannau.net
       
    Thu Oct 13 01:03:19 CEST 2016
    
    
  
The tests for 32 and 16 pixels remainder were inverted resulting in
uninitialized data (YUV green) of 16,32 or 48 pixels at the right
picture edge or equally large overreads/overwrites in the last line.
Closes #17486
---
 modules/video_filter/deinterlace/merge_arm64.S | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/modules/video_filter/deinterlace/merge_arm64.S b/modules/video_filter/deinterlace/merge_arm64.S
index 827d6f5..a893cc2 100644
--- a/modules/video_filter/deinterlace/merge_arm64.S
+++ b/modules/video_filter/deinterlace/merge_arm64.S
@@ -50,14 +50,14 @@ merge8_arm64_neon:
 	st1		{v2.16b,v3.16b}, [DEST], #32
 	b.gt		1b
 2:
-	tbz		SIZE, #32, 3f
+	tbnz		SIZE, #32, 3f
 	ld1		{v0.16b,v1.16b}, [SRC1], #32
 	ld1		{v4.16b,v5.16b}, [SRC2], #32
 	uhadd		v0.16b, v0.16b, v4.16b
 	uhadd		v1.16b, v1.16b, v5.16b
 	st1		{v0.16b,v1.16b}, [DEST], #32
 3:
-	tbz		SIZE, #16, 4f
+	tbnz		SIZE, #16, 4f
 	ld1		{v0.16b},  [SRC1]
 	ld1		{v4.16b},  [SRC2]
 	uhadd		v0.16b, v0.16b, v4.16b
@@ -85,14 +85,14 @@ merge16_arm64_neon:
 	subs		x5,  x5,  #64
 	b.gt		1b
 2:
-	tbz		SIZE, #32, 3f
+	tbnz		SIZE, #32, 3f
 	ld1		{v0.8h,v1.8h}, [SRC1], #32
 	ld1		{v4.8h,v5.8h}, [SRC2], #32
 	uhadd		v0.8h,  v0.8h,  v4.8h
 	uhadd		v1.8h,  v1.8h,  v5.8h
 	st1		{v0.8h,v1.8h}, [DEST], #32
 3:
-	tbz		SIZE, #16, 4f
+	tbnz		SIZE, #16, 4f
 	ld1		{v0.8h},  [SRC1]
 	ld1		{v4.8h},  [SRC2]
 	uhadd		v0.8h,  v0.8h,  v4.8h
-- 
2.10.1
    
    
More information about the vlc-devel
mailing list