1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-11-26 19:01:44 +02:00
FFmpeg/libavcodec/arm
James Cowgill 50a4dff69f avcodec/arm/sbcenc: avoid callee preserved vfp registers
When compiling FFmpeg with GCC-9, some very random segfaults were
observed in code which had previously called down into the SBC encoder
NEON assembly routines. This was caused by these functions clobbering
some of the vfp callee saved registers (d8 - d15 aka q4 - q7). GCC was
using these registers to save local variables, but after these
functions returned, they would contain garbage.

Fix by reallocating the registers in the two affected functions in
the following way:
 ff_sbc_analyze_4_neon: q2-q5 => q8-q11, then q1-q4 => q8-q11
 ff_sbc_analyze_8_neon: q2-q9 => q8-q15

The reason for using these replacements is to keep closely related
sets of registers consecutively numbered which hopefully makes the
code more easy to follow. Since this commit only reallocates
registers, it should have no performance impact.

Signed-off-by: James Cowgill <jcowgill@debian.org>
Signed-off-by: Martin Storsjö <martin@martin.st>
2022-09-13 09:51:51 +03:00
..
aac.h
aacpsdsp_init_arm.c
aacpsdsp_neon.S
ac3dsp_arm.S
ac3dsp_armv6.S
ac3dsp_init_arm.c
ac3dsp_neon.S
asm-offsets.h
audiodsp_arm.h
audiodsp_init_arm.c
audiodsp_init_neon.c
audiodsp_neon.S
blockdsp_arm.h
blockdsp_init_arm.c
blockdsp_init_neon.c
blockdsp_neon.S
cabac.h
dca.h
fft_init_arm.c arm/fft: disable NEON optimizations for 131072pt transforms 2022-08-29 07:13:43 +02:00
fft_neon.S
fft_vfp.S
flacdsp_arm.S
flacdsp_init_arm.c avcodec/flacdsp: Split encoder-only parts into a ctx of its own 2022-08-05 03:28:45 +02:00
fmtconvert_init_arm.c
fmtconvert_neon.S
fmtconvert_vfp.S
g722dsp_init_arm.c
g722dsp_neon.S
h264chroma_init_arm.c avcodec/h264chroma: Constify src in h264_chroma_mc_func 2022-08-05 03:02:13 +02:00
h264cmc_neon.S avcodec/h264chroma: Constify src in h264_chroma_mc_func 2022-08-05 03:02:13 +02:00
h264dsp_init_arm.c
h264dsp_neon.S
h264idct_neon.S
h264pred_init_arm.c
h264pred_neon.S
h264qpel_init_arm.c
h264qpel_neon.S
hevcdsp_arm.h
hevcdsp_deblock_neon.S
hevcdsp_idct_neon.S
hevcdsp_init_arm.c
hevcdsp_init_neon.c avcodec/hevcdsp: Constify src pointers 2022-08-05 02:54:04 +02:00
hevcdsp_qpel_neon.S Revert "arm: hevc_qpel: Fix the assembly to work with non-multiple of 8 widths" 2022-01-04 14:31:48 +01:00
hevcdsp_sao_neon.S
hpeldsp_arm.h
hpeldsp_arm.S
hpeldsp_armv6.S
hpeldsp_init_arm.c
hpeldsp_init_armv6.c
hpeldsp_init_neon.c
hpeldsp_neon.S
idct.h
idctdsp_arm.h
idctdsp_arm.S
idctdsp_armv6.S
idctdsp_init_arm.c
idctdsp_init_armv5te.c
idctdsp_init_armv6.c
idctdsp_init_neon.c
idctdsp_neon.S
int_neon.S
jrevdct_arm.S
lossless_audiodsp_init_arm.c
lossless_audiodsp_neon.S
Makefile avcodec/flacdsp: Split encoder-only parts into a ctx of its own 2022-08-05 03:28:45 +02:00
mathops.h
mdct_neon.S
mdct_vfp.S
me_cmp_armv6.S
me_cmp_init_arm.c avcodec/me_cmp: Constify me_cmp_func buffer parameters 2022-07-31 03:31:53 +02:00
mlpdsp_armv5te.S
mlpdsp_armv6.S
mlpdsp_init_arm.c
mpegaudiodsp_fixed_armv6.S
mpegaudiodsp_init_arm.c
mpegvideo_arm.c
mpegvideo_arm.h
mpegvideo_armv5te_s.S
mpegvideo_armv5te.c
mpegvideo_neon.S
mpegvideoencdsp_armv6.S
mpegvideoencdsp_init_arm.c avcodec/mpegvideoencdsp: Allow pointers to const where possible 2022-07-31 03:32:40 +02:00
neon.S
neontest.c
pixblockdsp_armv6.S
pixblockdsp_init_arm.c
pixblockdsp_neon.S
rdft_init_arm.c
rdft_neon.S
rv34dsp_init_arm.c
rv34dsp_neon.S
rv40dsp_init_arm.c arm: rv40dsp: Change stride parameters to ptrdiff_t 2022-09-02 23:04:58 +03:00
rv40dsp_neon.S
sbcdsp_armv6.S
sbcdsp_init_arm.c
sbcdsp_neon.S avcodec/arm/sbcenc: avoid callee preserved vfp registers 2022-09-13 09:51:51 +03:00
sbrdsp_init_arm.c
sbrdsp_neon.S
simple_idct_arm.S
simple_idct_armv5te.S
simple_idct_armv6.S
simple_idct_neon.S
startcode_armv6.S
startcode.h
synth_filter_init_arm.c
synth_filter_neon.S
synth_filter_vfp.S
vc1dsp_init_arm.c
vc1dsp_init_neon.c arm: vc1sdp: Change stride parameters to ptrdiff_t 2022-09-02 23:04:55 +03:00
vc1dsp_neon.S avcodec/vc1: Arm 32-bit NEON unescape fast path 2022-04-01 10:03:34 +03:00
vc1dsp.h
videodsp_arm.h
videodsp_armv5te.S
videodsp_init_arm.c
videodsp_init_armv5te.c avcodec/videodsp: Constify buf in VideoDSPContext.prefetch 2022-07-31 03:14:34 +02:00
vorbisdsp_init_arm.c
vorbisdsp_neon.S
vp3dsp_init_arm.c
vp3dsp_neon.S
vp6dsp_init_arm.c
vp6dsp_neon.S
vp8_armv6.S avcodec/vp56: Move VP5-9 range coder functions to a header of their own 2022-07-28 03:49:54 +02:00
vp8.h avcodec/vp56: Move VP5-9 range coder functions to a header of their own 2022-07-28 03:49:54 +02:00
vp8dsp_armv6.S avcodec/vp8dsp: Constify src in vp8_mc_func 2022-09-11 20:57:51 +02:00
vp8dsp_init_arm.c
vp8dsp_init_armv6.c
vp8dsp_init_neon.c
vp8dsp_neon.S
vp8dsp.h avcodec/vp8dsp: Constify src in vp8_mc_func 2022-09-11 20:57:51 +02:00
vp9dsp_init_10bpp_arm.c
vp9dsp_init_12bpp_arm.c
vp9dsp_init_16bpp_arm_template.c
vp9dsp_init_arm.c
vp9dsp_init.h
vp9itxfm_16bpp_neon.S
vp9itxfm_neon.S
vp9lpf_16bpp_neon.S
vp9lpf_neon.S
vp9mc_16bpp_neon.S
vp9mc_neon.S
vpx_arith.h avcodec/vp56: Move VP5-9 range coder functions to a header of their own 2022-07-28 03:49:54 +02:00