1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-28 20:53:54 +02:00
FFmpeg/libavcodec/arm
James Cowgill aa28df74ab 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>
(cherry picked from commit 50a4dff69f)
Signed-off-by: Martin Storsjö <martin@martin.st>
2022-09-20 11:22:18 +03:00
..
aac.h
aacpsdsp_init_arm.c lavc/aacpsdsp: use ptrdiff_t for stride in hybrid_analysis 2017-06-28 12:22:39 +02:00
aacpsdsp_neon.S lavc/arm: fix lack of precision in ff_ps_stereo_interpolate_neon 2017-06-28 11:59:34 +02:00
ac3dsp_arm.S
ac3dsp_armv6.S
ac3dsp_init_arm.c ac3enc_fixed: drop unnecessary fixed-point DSP code 2021-01-14 01:44:20 +01:00
ac3dsp_neon.S
asm-offsets.h
audiodsp_arm.h
audiodsp_init_arm.c
audiodsp_init_neon.c Merge commit '12004a9a7f20e44f4da2ee6c372d5e1794c8d6c5' 2017-03-20 22:35:07 +01:00
audiodsp_neon.S Merge commit '12004a9a7f20e44f4da2ee6c372d5e1794c8d6c5' 2017-03-20 22:35:07 +01:00
blockdsp_arm.h
blockdsp_init_arm.c
blockdsp_init_neon.c lavc/arm: fix indent in blockdsp_init_neon 2017-03-20 19:01:25 +01:00
blockdsp_neon.S
cabac.h
dca.h
fft_init_arm.c
fft_neon.S
fft_vfp.S
flacdsp_arm.S
flacdsp_init_arm.c
fmtconvert_init_arm.c Merge commit 'b487add7ecf78efda36d49815f8f8757bd24d4cb' 2017-11-11 23:30:31 -03:00
fmtconvert_neon.S
fmtconvert_vfp.S
g722dsp_init_arm.c
g722dsp_neon.S
h264chroma_init_arm.c Merge commit 'e4a94d8b36c48d95a7d412c40d7b558422ff659c' 2017-03-21 15:20:45 -03:00
h264cmc_neon.S Merge commit 'e4a94d8b36c48d95a7d412c40d7b558422ff659c' 2017-03-21 15:20:45 -03:00
h264dsp_init_arm.c Merge commit '0676de935b1e81bc5b5698fef3e7d48ff2ea77ff' 2019-03-22 16:06:04 -03:00
h264dsp_neon.S Merge commit '0676de935b1e81bc5b5698fef3e7d48ff2ea77ff' 2019-03-22 16:06:04 -03:00
h264idct_neon.S Merge commit '9dde6ab06c48f9447cd16f39bee33569cddb7be4' 2017-11-11 13:44:07 -03:00
h264pred_init_arm.c
h264pred_neon.S
h264qpel_init_arm.c
h264qpel_neon.S
hevcdsp_arm.h Merge commit '0b9a237b2386ff84a6f99716bd58fa27a1b767e7' 2017-10-24 19:10:22 -03:00
hevcdsp_deblock_neon.S arm: hevcdsp: Avoid using macro expansion counters 2018-03-31 21:55:32 +03:00
hevcdsp_idct_neon.S arm/hevc_idct: fix compilation on Android 2017-12-09 21:46:34 +02:00
hevcdsp_init_arm.c hevc: Add hevc_get_pixel_4/8/12/16/24/32/48/64 2017-12-08 23:41:01 +02:00
hevcdsp_init_neon.c avcodec/arm/hevcdsp_sao : add NEON optimization for sao 2018-04-09 03:45:15 +02:00
hevcdsp_qpel_neon.S arm: hevcdsp: Add commas between macro arguments 2018-03-31 21:59:01 +03:00
hevcdsp_sao_neon.S lavc/hevcdec: fix the HEVC decoder crash when memory over-read 2020-04-20 10:28:04 +08:00
hpeldsp_arm.h
hpeldsp_arm.S Merge commit '92c5755a185086067fe49e7e64c23a8e7011be31' 2017-03-21 15:10:46 +01:00
hpeldsp_armv6.S
hpeldsp_init_arm.c
hpeldsp_init_armv6.c
hpeldsp_init_neon.c
hpeldsp_neon.S
idct.h Merge commit '2ec9fa5ec60dcd10e1cb10d8b4e4437e634ea428' 2017-03-21 14:29:52 -03:00
idctdsp_arm.h
idctdsp_arm.S
idctdsp_armv6.S
idctdsp_init_arm.c idct_arm: remove use of ff_put/add_pixels_clamped function pointer. 2017-04-06 10:03:27 -04:00
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 fft: remove 16-bit FFT and MDCT code 2021-01-14 01:44:21 +01:00
mathops.h
mdct_neon.S
mdct_vfp.S
me_cmp_armv6.S
me_cmp_init_arm.c
mlpdsp_armv5te.S
mlpdsp_armv6.S
mlpdsp_init_arm.c
mpegaudiodsp_fixed_armv6.S
mpegaudiodsp_init_arm.c Merge commit '2caa93b813adc5dbb7771dfe615da826a2947d18' 2017-03-21 16:04:22 -03:00
mpegvideo_arm.c
mpegvideo_arm.h
mpegvideo_armv5te_s.S
mpegvideo_armv5te.c
mpegvideo_neon.S
mpegvideoencdsp_armv6.S
mpegvideoencdsp_init_arm.c
neon.S
neontest.c avcodec: add missing FF_API_OLD_ENCDEC wrappers to xmm clobber functions 2021-02-26 19:26:31 -03:00
pixblockdsp_armv6.S
pixblockdsp_init_arm.c libavcodec: arm: Add a NEON implementation of pixblockdsp 2020-05-15 23:37:43 +03:00
pixblockdsp_neon.S libavcodec: arm: Add a NEON implementation of pixblockdsp 2020-05-15 23:37:43 +03:00
rdft_init_arm.c
rdft_neon.S avcodec/rdft: remove sintable 2017-07-11 13:22:02 +07:00
rv34dsp_init_arm.c
rv34dsp_neon.S
rv40dsp_init_arm.c
rv40dsp_neon.S
sbcdsp_armv6.S sbcenc: add armv6 and neon asm optimizations 2018-03-07 22:26:53 +01:00
sbcdsp_init_arm.c lavu/mem: move the DECLARE_ALIGNED macro family to mem_internal on next+1 bump 2021-01-01 14:14:57 +01:00
sbcdsp_neon.S avcodec/arm/sbcenc: avoid callee preserved vfp registers 2022-09-20 11:22:18 +03:00
sbrdsp_init_arm.c
sbrdsp_neon.S avcodec/arm/sbrdsp_neon: Use a free register instead of putting 2 things in one 2018-01-12 22:45:02 +01:00
simple_idct_arm.S
simple_idct_armv5te.S Merge commit '014852e932dab6e9cf2a53e7a17ce8321f3e922c' 2017-03-19 16:12:07 +01:00
simple_idct_armv6.S Merge commit '2ec9fa5ec60dcd10e1cb10d8b4e4437e634ea428' 2017-03-21 14:29:52 -03:00
simple_idct_neon.S Merge commit '2ec9fa5ec60dcd10e1cb10d8b4e4437e634ea428' 2017-03-21 14:29:52 -03:00
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 Merge commit 'd7320ca3ed10f0d35b3740fa03341161e74275ea' 2017-10-30 21:00:51 -03:00
vc1dsp_neon.S Merge commit 'ab05d3934de8e932dbd77979a687e6598e67535c' 2018-03-30 15:47:31 -03:00
vc1dsp.h
videodsp_arm.h
videodsp_armv5te.S
videodsp_init_arm.c
videodsp_init_armv5te.c
vorbisdsp_init_arm.c
vorbisdsp_neon.S
vp3dsp_init_arm.c Merge commit '6892df9294d93322d43255ada299507465bc93c8' 2017-03-19 18:41:26 +01:00
vp3dsp_neon.S
vp6dsp_init_arm.c Merge commit '721d57e608dc4fd6c86f27c5ae76ef559d646220' 2017-03-19 17:15:24 -03:00
vp6dsp_neon.S
vp8_armv6.S
vp8.h
vp8dsp_armv6.S Merge commit '802727b538b484e3f9d1345bfcc4ab24cfea8898' 2017-03-19 15:18:31 -03:00
vp8dsp_init_arm.c
vp8dsp_init_armv6.c
vp8dsp_init_neon.c
vp8dsp_neon.S Merge commit 'cef914e08310166112ac09567e66452a7679bfc8' 2019-03-14 16:19:41 -03:00
vp8dsp.h
vp9dsp_init_10bpp_arm.c
vp9dsp_init_12bpp_arm.c
vp9dsp_init_16bpp_arm_template.c lavu: move LOCAL_ALIGNED from internal.h to mem_internal.h 2021-01-01 14:11:01 +01:00
vp9dsp_init_arm.c lavu: move LOCAL_ALIGNED from internal.h to mem_internal.h 2021-01-01 14:11:01 +01:00
vp9dsp_init.h vp9: re-split the decoder/format/dsp interface header files. 2017-03-28 18:04:26 -04:00
vp9itxfm_16bpp_neon.S arm: vp9itxfm16: Do a simpler half/quarter idct16/idct32 when possible 2017-03-19 22:54:33 +02:00
vp9itxfm_neon.S arm/aarch64: vp9: Fix vertical alignment 2017-03-19 22:53:32 +02:00
vp9lpf_16bpp_neon.S
vp9lpf_neon.S arm/aarch64: vp9: Fix vertical alignment 2017-03-19 22:53:32 +02:00
vp9mc_16bpp_neon.S
vp9mc_neon.S arm: vp9mc: Calculate less unused data in the 4 pixel wide horizontal filter 2017-03-11 13:14:47 +02:00
vp56_arith.h