[FFmpeg-cvslog] videodsp: don't overread edges in vfix3 emu_edge.
Ronald S. Bultje
git at videolan.org
Sun Oct 25 01:52:42 CEST 2015
ffmpeg | branch: release/2.5 | Ronald S. Bultje <rsbultje at gmail.com> | Fri Oct 23 11:11:53 2015 -0400| [11579f7e4e9914a49a44c6f41468f9f017659be3] | committer: Carl Eugen Hoyos
videodsp: don't overread edges in vfix3 emu_edge.
Fixes trac ticket 3226. Also see Andreas' analysis in
https://bugs.debian.org/801745, which was very helpful.
(cherry picked from commit 52f84d82bdf1851ecfcc412c1719e5f6f3396209)
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=11579f7e4e9914a49a44c6f41468f9f017659be3
---
libavcodec/x86/videodsp.asm | 15 +++++++++++----
1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/libavcodec/x86/videodsp.asm b/libavcodec/x86/videodsp.asm
index 25d4364..48f5ac0 100644
--- a/libavcodec/x86/videodsp.asm
+++ b/libavcodec/x86/videodsp.asm
@@ -194,8 +194,12 @@ hvar_fn
%elif (%2-%%off) == 2
mov valw, [srcq+%2-2]
%elifidn %1, body
- mov vald, [srcq+%2-3]
-%else
+ mov valb, [srcq+%2-1]
+ sal vald, 16
+ mov valw, [srcq+%2-3]
+%elifidn %1, bottom
+ movd mm %+ %%mmx_idx, [srcq+%2-4]
+%else ; top
movd mm %+ %%mmx_idx, [srcq+%2-3]
%endif
%endif ; (%2-%%off) >= 1
@@ -251,12 +255,15 @@ hvar_fn
mov [dstq+%2-2], valw
%elifidn %1, body
mov [dstq+%2-3], valw
- shr vald, 16
+ sar vald, 16
mov [dstq+%2-1], valb
%else
movd vald, mm %+ %%mmx_idx
+%ifidn %1, bottom
+ sar vald, 8
+%endif
mov [dstq+%2-3], valw
- shr vald, 16
+ sar vald, 16
mov [dstq+%2-1], valb
%endif
%endif ; (%2-%%off) >= 1
More information about the ffmpeg-cvslog
mailing list