aboutsummaryrefslogtreecommitdiffstats
path: root/libavutil/internal.h
diff options
context:
space:
mode:
authorJames Cowgill <jcowgill@debian.org>2019-08-25 09:18:00 +0100
committerMartin Storsjö <martin@martin.st>2022-09-20 11:21:45 +0300
commitc1b8ffbed83e79c2a12a8e3639baae6160a484c5 (patch)
tree2735b13189644f32c38fc8e49f0ec04d20e50dd5 /libavutil/internal.h
parent068faf4f74ec51f0717a8cf5d11341dbfa807b78 (diff)
downloadffmpeg-c1b8ffbed83e79c2a12a8e3639baae6160a484c5.tar.gz
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 50a4dff69f6477b06f00eae1cac2a53ae22fe9a5) Signed-off-by: Martin Storsjö <martin@martin.st>
Diffstat (limited to 'libavutil/internal.h')
0 files changed, 0 insertions, 0 deletions