summaryrefslogtreecommitdiff
path: root/libavcodec
diff options
context:
space:
mode:
authorHenrik Gramner <henrik@gramner.com>2016-02-05 21:01:49 +0100
committerHenrik Gramner <henrik@gramner.com>2016-02-05 22:01:38 +0100
commitaa751573fef5a313fd485a74746ab664bd537581 (patch)
treeb26e3c5d65f35906e079a1f0e75b805a494db7c7 /libavcodec
parent6d14e32555ef0b83a354e0e765706f253e0a4505 (diff)
avcodec/h264: Fix segfault in 4:2:2 chroma deblock with 32-bit msvc
Using rNm and x86inc's stack allocation with a negative value at the same time isn't supported, and caused the original stack pointer to be clobbered when using a compiler that doesn't support stack alignment.
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/x86/h264_deblock.asm4
1 files changed, 3 insertions, 1 deletions
diff --git a/libavcodec/x86/h264_deblock.asm b/libavcodec/x86/h264_deblock.asm
index 8f80863fc5..4aabbc0832 100644
--- a/libavcodec/x86/h264_deblock.asm
+++ b/libavcodec/x86/h264_deblock.asm
@@ -867,7 +867,8 @@ ff_chroma_inter_body_mmxext:
%define t5 r4
%define t6 r5
-cglobal deblock_h_chroma422_8, 5, 6, 0, 0-(1+ARCH_X86_64*2)*mmsize
+cglobal deblock_h_chroma422_8, 5, 6
+ SUB rsp, (1+ARCH_X86_64*2)*mmsize
%if ARCH_X86_64
%define buf0 [rsp+16]
%define buf1 [rsp+8]
@@ -907,6 +908,7 @@ cglobal deblock_h_chroma422_8, 5, 6, 0, 0-(1+ARCH_X86_64*2)*mmsize
movq m0, buf0
movq m3, buf1
TRANSPOSE8x4B_STORE PASS8ROWS(t5, r0, r1, t6)
+ ADD rsp, (1+ARCH_X86_64*2)*mmsize
RET
; in: %1=p0 %2=p1 %3=q1