mirror of https://git.ffmpeg.org/ffmpeg.git
x86: lavr: fix stack allocation for 7 and 8 channel downmixing on x86-32
Fixes crashes on Win32 and stack overruns on x86-32 in general.
This commit is contained in:
parent
02738792c5
commit
7a9e65acee
|
@ -272,7 +272,15 @@ cglobal mix_%1_to_%2_%3_flt, 3,in_channels+2,needed_mmregs+matrix_elements_mm, s
|
||||||
and rsp, ~(mmsize-1)
|
and rsp, ~(mmsize-1)
|
||||||
sub rsp, matrix_elements_stack * mmsize
|
sub rsp, matrix_elements_stack * mmsize
|
||||||
%else
|
%else
|
||||||
%assign pad matrix_elements_stack * mmsize + (mmsize - gprsize) - (stack_offset & (mmsize - gprsize))
|
%assign matrix_stack_size matrix_elements_stack * mmsize
|
||||||
|
%assign pad matrix_stack_size + (mmsize - gprsize) - (stack_offset & (mmsize - gprsize))
|
||||||
|
; on x86-32 for 7 and 8 channels we need more stack space for src pointers
|
||||||
|
%if ARCH_X86_32 && in_channels >= 7
|
||||||
|
%assign pad pad + 0x10
|
||||||
|
%define src5m [rsp+matrix_stack_size+0]
|
||||||
|
%define src6m [rsp+matrix_stack_size+4]
|
||||||
|
%define src7m [rsp+matrix_stack_size+8]
|
||||||
|
%endif
|
||||||
SUB rsp, pad
|
SUB rsp, pad
|
||||||
%endif
|
%endif
|
||||||
%endif
|
%endif
|
||||||
|
|
Loading…
Reference in New Issue