mirror of https://git.ffmpeg.org/ffmpeg.git
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 52f84d82bd
)
This commit is contained in:
parent
18f36c70ec
commit
d3af86c867
|
@ -185,8 +185,12 @@ hvar_fn
|
||||||
%elif (%2-%%off) == 2
|
%elif (%2-%%off) == 2
|
||||||
mov valw, [srcq+%2-2]
|
mov valw, [srcq+%2-2]
|
||||||
%elifidn %1, body
|
%elifidn %1, body
|
||||||
mov vald, [srcq+%2-3]
|
mov valb, [srcq+%2-1]
|
||||||
%else
|
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]
|
movd mm %+ %%mmx_idx, [srcq+%2-3]
|
||||||
%endif
|
%endif
|
||||||
%endif ; (%2-%%off) >= 1
|
%endif ; (%2-%%off) >= 1
|
||||||
|
@ -242,12 +246,15 @@ hvar_fn
|
||||||
mov [dstq+%2-2], valw
|
mov [dstq+%2-2], valw
|
||||||
%elifidn %1, body
|
%elifidn %1, body
|
||||||
mov [dstq+%2-3], valw
|
mov [dstq+%2-3], valw
|
||||||
shr vald, 16
|
sar vald, 16
|
||||||
mov [dstq+%2-1], valb
|
mov [dstq+%2-1], valb
|
||||||
%else
|
%else
|
||||||
movd vald, mm %+ %%mmx_idx
|
movd vald, mm %+ %%mmx_idx
|
||||||
|
%ifidn %1, bottom
|
||||||
|
sar vald, 8
|
||||||
|
%endif
|
||||||
mov [dstq+%2-3], valw
|
mov [dstq+%2-3], valw
|
||||||
shr vald, 16
|
sar vald, 16
|
||||||
mov [dstq+%2-1], valb
|
mov [dstq+%2-1], valb
|
||||||
%endif
|
%endif
|
||||||
%endif ; (%2-%%off) >= 1
|
%endif ; (%2-%%off) >= 1
|
||||||
|
|
Loading…
Reference in New Issue