1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-02 03:06:28 +02:00
FFmpeg/libavutil
Timo Rothenpieler 7945d30e91 avutil/mem: limit alignment to maximum simd align
FFmpeg has instances of DECLARE_ALIGNED(32, ...) in a lot of structs,
which then end up heap-allocated.
By declaring any variable in a struct, or tree of structs, to be 32 byte
aligned, it allows the compiler to safely assume the entire struct
itself is also 32 byte aligned.

This might make the compiler emit code which straight up crashes or
misbehaves in other ways, and at least in one instances is now
documented to actually do (see ticket 10549 on trac).
The issue there is that an unrelated variable in SingleChannelElement is
declared to have an alignment of 32 bytes. So if the compiler does a copy
in decode_cpe() with avx instructions, but ffmpeg is built with
--disable-avx, this results in a crash, since the memory is only 16 byte
aligned.

Mind you, even if the compiler does not emit avx instructions, the code
is still invalid and could misbehave. It just happens not to. Declaring
any variable in a struct with a 32 byte alignment promises 32 byte
alignment of the whole struct to the compiler.

This patch limits the maximum alignment to the maximum possible simd
alignment according to configure.
While not perfect, it at the very least gets rid of a lot of UB, by
matching up the maximum DECLARE_ALIGNED value with the alignment of heap
allocations done by lavu.
2024-02-27 19:41:09 +01:00
..
aarch64 libavutil/aarch64/cpu.c: HWCAPS requires inline asm support. 2023-11-02 21:03:43 +01:00
arm arm: relax byte-swap assembler constraints 2022-09-03 23:54:05 +03:00
avr32
loongarch avutil/la: Add function performance testing 2023-05-25 21:05:21 +02:00
mips mips: fix build fail on MIPS R6 2023-03-26 01:46:39 +01:00
ppc libavutil/ppc/cpu.c: check that AT_HWCAP2 is defined 2023-10-19 20:46:55 +02:00
riscv lavu/fixed_dsp: R-V V fmul_window_scaled 2023-11-23 18:57:18 +02:00
sh4
tests avutil/tests/pixelutils: Remove dead code 2024-02-21 00:23:20 +01:00
x86 x86: Remove inline MMX assembly that clobbers the FPU state 2024-02-09 23:55:52 +02:00
.gitignore
adler32.c Remove unnecessary libavutil/(avutil|common|internal).h inclusions 2022-02-24 12:56:49 +01:00
adler32.h
aes_ctr.c Remove unnecessary libavutil/(avutil|common|internal).h inclusions 2022-02-24 12:56:49 +01:00
aes_ctr.h avutil/aes_ctr: document some missing arguments 2022-10-17 09:56:47 +02:00
aes_internal.h
aes.c avutil/aes: Don't use out-of-bounds index 2022-10-24 16:28:14 +02:00
aes.h avutil/aes: document some missing arguments 2022-10-17 09:56:47 +02:00
ambient_viewing_environment.c avutil: introduce AVAmbientViewingEnvironment side data 2023-01-13 21:26:13 +02:00
ambient_viewing_environment.h avutil: introduce AVAmbientViewingEnvironment side data 2023-01-13 21:26:13 +02:00
attributes_internal.h avutil/attributes_internal: Add visibility pragma 2022-10-10 13:43:59 +02:00
attributes.h avutil/attributes: add support for clang in AV_NOWARN_DEPRECATED 2022-03-16 12:29:37 -03:00
audio_fifo.c avutil/audio_fifo: Constify some pointees 2023-09-12 09:20:13 +02:00
audio_fifo.h avutil/audio_fifo: Constify some pointees 2023-09-12 09:20:13 +02:00
avassert.h lavu/avassert: include config.h 2023-07-12 15:35:37 +02:00
avsscanf.c Remove unnecessary libavutil/(avutil|common|internal).h inclusions 2022-02-24 12:56:49 +01:00
avstring.c avutil/avstring: Remove obsolete version.h inclusion 2023-09-07 00:48:50 +02:00
avstring.h avutil/avstring: Remove obsolete version.h inclusion 2023-09-07 00:48:50 +02:00
avutil.h avutil/avutil: make AV_TIME_BASE_Q available in C++ 2023-09-19 00:52:21 +08:00
avutilres.rc
base64.c Remove unnecessary libavutil/(avutil|common|internal).h inclusions 2022-02-24 12:56:49 +01:00
base64.h
blowfish.c Remove unnecessary libavutil/(avutil|common|internal).h inclusions 2022-02-24 12:56:49 +01:00
blowfish.h
bprint.c avutil/bprint: Allow size == 0 in av_bprint_init_for_buffer() 2023-08-10 08:53:38 +02:00
bprint.h avutil/bprint: Allow size == 0 in av_bprint_init_for_buffer() 2023-08-10 08:53:38 +02:00
bswap.h lavu/riscv: byte-swap operations 2022-09-13 16:50:43 -03:00
buffer_internal.h Remove unnecessary libavutil/(avutil|common|internal).h inclusions 2022-02-24 12:56:49 +01:00
buffer.c avutil/buffer: Never poison returned buffers 2022-08-10 18:49:35 +02:00
buffer.h
camellia.c Remove unnecessary libavutil/(avutil|common|internal).h inclusions 2022-02-24 12:56:49 +01:00
camellia.h avutil/camellia: Fix doxy @param typo 2022-10-17 09:55:19 +02:00
cast5.c avutil/cast5: Avoid undefined shift of uint32_t by 32 places 2022-11-11 12:24:23 +01:00
cast5.h
channel_layout.c avutil/channel_layout: print known layout names in custom layout 2024-02-18 09:59:40 -03:00
channel_layout.h avutil/channel_layout: add FF_CHANNEL_ORDER_NB 2024-02-18 10:43:12 +01:00
colorspace.h
common.h avutil/common: Move includes to the beginning of the file 2024-02-21 00:23:39 +01:00
cpu_internal.h lavu/cpu: detect RISC-V base extensions 2022-09-27 13:19:52 +02:00
cpu.c Revert "all: Don't set AVClass.item_name to its default value" 2024-01-20 10:34:48 +01:00
cpu.h lavu: add/use flag for RISC-V Zba extension 2023-07-19 19:29:35 +03:00
crc.c Remove unnecessary libavutil/(avutil|common|internal).h inclusions 2022-02-24 12:56:49 +01:00
crc.h avutil/crc: Add doxy for missing arguments 2022-10-17 09:56:47 +02:00
csp.c avutil/{color_utils, csp}: merge color_utils into csp and expose API 2023-02-09 15:35:14 +01:00
csp.h avutil/{color_utils, csp}: merge color_utils into csp and expose API 2023-02-09 15:35:14 +01:00
cuda_check.h avutil/log: Don't include avutil.h 2022-02-24 12:56:49 +01:00
des.c Remove unnecessary libavutil/(avutil|common|internal).h inclusions 2022-02-24 12:56:49 +01:00
des.h avutil/des: Add doxy for missing arguments 2022-10-17 09:56:47 +02:00
detection_bbox.c
detection_bbox.h avutil/detection_bbox: Add doxy for missing argument 2022-10-17 09:56:47 +02:00
dict_internal.h avutil/dict: Move avpriv_dict_set_timestamp() to a header of its own 2022-09-03 15:41:44 +02:00
dict.c avutil/mem: Don't include avutil.h 2023-09-07 00:42:10 +02:00
dict.h avutil/dict: Improve documentation 2022-11-06 08:26:50 +01:00
display.c avutil/display: Don't include avutil.h 2022-02-24 12:56:49 +01:00
display.h avutil/display: Add file to doxy group 2022-10-17 09:55:19 +02:00
dovi_meta.c lavu/frame: Add Dolby Vision metadata side data type 2022-01-04 11:59:02 +01:00
dovi_meta.h lavu/frame: Add Dolby Vision metadata side data type 2022-01-04 11:59:02 +01:00
downmix_info.c
downmix_info.h
dynarray.h
emms.h avutil/internal: Don't auto-include emms.h 2023-09-04 11:04:45 +02:00
encryption_info.c avutil/mem: Don't include avutil.h 2023-09-07 00:42:10 +02:00
encryption_info.h
error.c Remove unnecessary libavutil/(avutil|common|internal).h inclusions 2022-02-24 12:56:49 +01:00
error.h
eval.c Revert "all: Don't set AVClass.item_name to its default value" 2024-01-20 10:34:48 +01:00
eval.h apply spelling fixes 2023-11-18 19:55:42 +01:00
executor.c avutil: add thread executor 2023-09-02 02:49:06 +02:00
executor.h avutil: add thread executor 2023-09-02 02:49:06 +02:00
ffmath.h
fifo.c avutil/fifo: Constify AVFifo pointees in peek functions 2023-09-12 09:20:49 +02:00
fifo.h avutil/fifo: Constify AVFifo pointees in peek functions 2023-09-12 09:20:49 +02:00
file_open.c Revert "all: Don't set AVClass.item_name to its default value" 2024-01-20 10:34:48 +01:00
file_open.h avutil/internal: Move avpriv-file API to a header of its own 2022-09-03 15:41:44 +02:00
file.c Revert "all: Don't set AVClass.item_name to its default value" 2024-01-20 10:34:48 +01:00
file.h avutil/file: Add doxy for missing arguments 2022-10-17 09:56:47 +02:00
film_grain_params.c
film_grain_params.h
fixed_dsp.c lavu/fixed_dsp: add missing av_restrict qualifiers 2022-10-04 10:56:12 +02:00
fixed_dsp.h lavu/fixeddsp: RISC-V V butterflies_fixed 2022-09-27 13:19:52 +02:00
float2half.c avutil/half2float: use native _Float16 if available 2022-08-19 22:09:36 +02:00
float2half.h avutil/half2float: use native _Float16 if available 2022-08-19 22:09:36 +02:00
float_dsp.c lavu/floatdsp: RISC-V V vector_fmul_scalar 2022-09-27 13:19:52 +02:00
float_dsp.h lavu/floatdsp: RISC-V V vector_fmul_scalar 2022-09-27 13:19:52 +02:00
frame.c avutil/imgutils: Add wrapper for av_image_copy() to avoid casts 2023-09-12 09:42:27 +02:00
frame.h lavu: add video_hint API 2023-08-08 09:46:11 +02:00
getenv_utf8.h libavutil: Add wchartoutf8(), wchartoansi(), utf8toansi(), getenv_utf8(), freeenv_utf8() and getenv_dup() 2022-06-21 13:27:46 +03:00
half2float.c avutil/half2float: use native _Float16 if available 2022-08-19 22:09:36 +02:00
half2float.h avutil/half2float: use native _Float16 if available 2022-08-19 22:09:36 +02:00
hash.c avutil/mem: Don't include avutil.h 2023-09-07 00:42:10 +02:00
hash.h
hdr_dynamic_metadata.c avutil/hdr_dynamic_metadata: allow av_dynamic_hdr_plus_to_t35() to accept an existing buffer 2023-04-05 09:47:12 -03:00
hdr_dynamic_metadata.h avutil/hdr_dynamic_metadata: allow av_dynamic_hdr_plus_to_t35() to accept an existing buffer 2023-04-05 09:47:12 -03:00
hdr_dynamic_vivid_metadata.c avutil: support for CUVA Vivid HDR metadata 2022-03-01 09:08:43 +08:00
hdr_dynamic_vivid_metadata.h libavutil/hdr_dynamic_vivid_metadata: fix three spline params 2023-03-17 18:51:16 +08:00
hmac.c avutil/mem: Don't include avutil.h 2023-09-07 00:42:10 +02:00
hmac.h
hwcontext_cuda_internal.h
hwcontext_cuda.c libavutil/hwcontext_cuda: don't destroy external context when using current CUDA context 2023-09-29 19:42:11 +02:00
hwcontext_cuda.h avutil/hwcontext_cuda: add option to use current device context 2023-09-28 19:23:51 +02:00
hwcontext_d3d11va.c lavu/hwcontext_d3d11va: Add option vendor_id 2023-12-07 10:32:16 +08:00
hwcontext_d3d11va.h
hwcontext_d3d12va_internal.h libavutil: add hwcontext_d3d12va and AV_PIX_FMT_D3D12 2023-12-21 16:15:23 +08:00
hwcontext_d3d12va.c avutil/hwcontext_d3d12va: Use av_image_copy() wrapper 2024-01-24 15:48:54 +01:00
hwcontext_d3d12va.h libavutil: add hwcontext_d3d12va and AV_PIX_FMT_D3D12 2023-12-21 16:15:23 +08:00
hwcontext_drm.c
hwcontext_drm.h
hwcontext_dxva2.c avutil/imgutils: Add wrapper for av_image_copy() to avoid casts 2023-09-12 09:42:27 +02:00
hwcontext_dxva2.h
hwcontext_internal.h libavutil: add hwcontext_d3d12va and AV_PIX_FMT_D3D12 2023-12-21 16:15:23 +08:00
hwcontext_mediacodec.c avutil/hwcontext_mediacodec: fix backward compatibility 2023-01-26 23:31:37 +08:00
hwcontext_mediacodec.h avutil/hwcontext_mediacodec: fix backward compatibility 2023-01-26 23:31:37 +08:00
hwcontext_opencl.c avutil/hwcontext_opencl: Use proper OpenCLFramesContext 2024-02-13 15:33:30 +01:00
hwcontext_opencl.h
hwcontext_qsv.c lavu/hwcontext_qsv: Make sure hardware vendor is Intel for qsv on d3d11va 2023-12-07 10:32:16 +08:00
hwcontext_qsv.h lavu/hwcontext_qsv: add loader field to AVQSVDeviceContext 2022-08-12 10:43:39 +08:00
hwcontext_stub.c )hwcontext: add a stub implementation for Vulkan functions 2022-07-05 15:20:08 +02:00
hwcontext_vaapi.c avutil/hwcontext_vaapi: Allocate pub and priv frames hwctx together 2024-02-20 19:08:23 +01:00
hwcontext_vaapi.h
hwcontext_vdpau.c
hwcontext_vdpau.h
hwcontext_videotoolbox.c avutil/hwcontext_vt: add pixel format map for full range YUV420P 2024-01-12 10:49:36 +08:00
hwcontext_videotoolbox.h avutil/hwcontext_videotoolbox: add frame hwctx to specify color range 2024-01-04 17:31:49 +08:00
hwcontext_vulkan.c hwcontext_vulkan: guard unistd.h include 2023-12-11 16:36:56 +01:00
hwcontext_vulkan.h hwcontext_vulkan: rewrite to support multiplane surfaces 2023-05-29 00:41:49 +02:00
hwcontext.c avutil/hwcontext: Don't check before av_buffer_unref() 2024-02-25 02:42:04 +01:00
hwcontext.h libavutil: add hwcontext_d3d12va and AV_PIX_FMT_D3D12 2023-12-21 16:15:23 +08:00
iamf.c all: use designated initializers for AVOption.unit 2024-02-14 14:53:41 +01:00
iamf.h avutil/iamf: add some more doxy to structs 2024-01-15 18:16:07 -03:00
imgutils_internal.h
imgutils.c Revert "all: Don't set AVClass.item_name to its default value" 2024-01-20 10:34:48 +01:00
imgutils.h avutil/imgutils: add new function av_image_fill_color() 2023-12-13 18:51:32 +01:00
integer.c avutil/integer: Use '|' instead of '+' where it is more natural 2022-10-24 20:11:20 +02:00
integer.h avutil/integer: Don't include common.h 2022-02-24 12:56:49 +01:00
internal.h avutil/internal: Don't auto-include emms.h 2023-09-04 11:04:45 +02:00
intfloat.h
intmath.c
intmath.h lavu/riscv: add <intmath.h> optimisations 2022-09-13 16:50:43 -03:00
intreadwrite.h avutil/intreadwrite: Remove obsolete warning 2024-02-20 00:09:05 +01:00
lfg.c
lfg.h avutil/lfg: Minor doxy improvements 2022-10-17 09:56:47 +02:00
libavutil.v
libm.h
lls.c all: Replace if (ARCH_FOO) checks by #if ARCH_FOO 2022-06-15 04:56:37 +02:00
lls.h
log2_tab.c
log.c lavu/log: do not assume AVClass.item_name is always set 2023-11-09 11:25:17 +01:00
log.h avutil/log: Don't include avutil.h 2022-02-24 12:56:49 +01:00
lzo.c Remove unnecessary libavutil/(avutil|common|internal).h inclusions 2022-02-24 12:56:49 +01:00
lzo.h
macos_kperf.c macos_kperf: fix incomplete prototype 2023-07-22 21:35:15 +03:00
macos_kperf.h
macros.h
Makefile libavutil: add hwcontext_d3d12va and AV_PIX_FMT_D3D12 2023-12-21 16:15:23 +08:00
mastering_display_metadata.c
mastering_display_metadata.h
mathematics.c Move bessel_i0() from swresample/resample to avutil/mathematics 2023-05-29 00:45:28 +02:00
mathematics.h Move bessel_i0() from swresample/resample to avutil/mathematics 2023-05-29 00:45:28 +02:00
md5.c avutil/mem: Don't include avutil.h 2023-09-07 00:42:10 +02:00
md5.h
mem_internal.h avutil/mem: limit alignment to maximum simd align 2024-02-27 19:41:09 +01:00
mem.c avutil/mem: limit alignment to maximum simd align 2024-02-27 19:41:09 +01:00
mem.h avutil/mem: Don't include avutil.h 2023-09-07 00:42:10 +02:00
motion_vector.h
murmur3.c avutil/mem: Don't include avutil.h 2023-09-07 00:42:10 +02:00
murmur3.h
objc.h avutil: add obj-c helpers into header-only include 2021-12-18 11:55:47 -08:00
opt.c avutil/opt: Use correct function pointer type 2024-02-25 02:19:18 +01:00
opt.h Revert "all: Don't set AVClass.item_name to its default value" 2024-01-20 10:34:48 +01:00
parseutils.c avutil/parseutils: use quadhd for Quad HD 2022-01-12 13:42:26 +08:00
parseutils.h avutil/parseutils: Use inline code and properly escape 2022-10-17 09:56:47 +02:00
pca.c
pca.h
pixdesc.c avutil/pixfmt: fix AV_PIX_FMT_RGB8 description 2024-01-16 01:34:57 +01:00
pixdesc.h avutil/pixdesc: add AV_PIX_FMT_FLAG_XYZ 2023-10-31 15:46:07 +01:00
pixelutils.c Remove unnecessary libavutil/(avutil|common|internal).h inclusions 2022-02-24 12:56:49 +01:00
pixelutils.h avutil/pixelutils: Don't include common.h 2022-02-24 12:56:49 +01:00
pixfmt.h avutil/pixfmt: Add AV_VIDEO_MAX_PLANES 2024-02-16 21:34:38 +01:00
qsort.h Remove unnecessary libavutil/(avutil|common|internal).h inclusions 2022-02-24 12:56:49 +01:00
random_seed.c avutil/random_seed: turn off buffering when reading from random 2023-07-16 11:48:31 +02:00
random_seed.h avutil/random_seed: include stddef.h 2023-07-05 10:25:12 -07:00
rational.c avutil/rational: increase av_d2q precision 2024-02-04 20:04:18 +01:00
rational.h avutil/rational: Document what is to be expected from av_d2q() of doubles representing rational numbers 2024-02-12 00:50:46 +01:00
rc4.c Remove unnecessary libavutil/(avutil|common|internal).h inclusions 2022-02-24 12:56:49 +01:00
rc4.h avutil/rc4: Add doxy for missing arguments 2022-10-17 09:56:47 +02:00
replaygain.h
reverse.c
reverse.h
ripemd.c Remove unnecessary libavutil/(avutil|common|internal).h inclusions 2022-02-24 12:56:49 +01:00
ripemd.h
samplefmt.c avutil/samplefmt: Constify some pointees 2023-09-12 09:17:28 +02:00
samplefmt.h avutil/samplefmt: Constify some pointees 2023-09-12 09:17:28 +02:00
sfc64.h avutil/eval: Use even better PRNG 2024-01-16 01:34:57 +01:00
sha512.c Remove unnecessary libavutil/(avutil|common|internal).h inclusions 2022-02-24 12:56:49 +01:00
sha512.h
sha.c Remove unnecessary libavutil/(avutil|common|internal).h inclusions 2022-02-24 12:56:49 +01:00
sha.h
slicethread.c slicethread: Limit the automatic number of threads to 16 2022-09-06 18:46:44 +03:00
slicethread.h
softfloat_ieee754.h
softfloat_tables.h
softfloat.h avutil/softfloat: Basic documentation for av_sincos_sf() 2023-06-23 02:06:46 +02:00
spherical.c avutil/avstring: Remove obsolete version.h inclusion 2023-09-07 00:48:50 +02:00
spherical.h avutil/spherical: Add file to doxy group 2022-10-17 09:55:19 +02:00
stereo3d.c Remove unnecessary libavutil/(avutil|common|internal).h inclusions 2022-02-24 12:56:49 +01:00
stereo3d.h avutil/stereo3d: Add file to doxy group 2022-10-17 09:55:19 +02:00
tablegen.h
tea.c Remove unnecessary libavutil/(avutil|common|internal).h inclusions 2022-02-24 12:56:49 +01:00
tea.h
thread.h avutil/thread: fix pthread_setname_np parameters for NetBSD and Apple 2024-02-05 09:42:30 +01:00
threadmessage.c avutil/mem: Don't include avutil.h 2023-09-07 00:42:10 +02:00
threadmessage.h
time_internal.h
time.c
time.h
timecode.c avutil/timecode: use timecode fps for number of frame digits 2022-04-22 22:54:58 +02:00
timecode.h libavutil/timecode: fix parameter order in documentation 2024-01-14 14:58:57 +01:00
timer.h timer: don't leak perf FD if zero 2023-07-22 21:35:15 +03:00
timestamp.h avutil/mem: Don't include avutil.h 2023-09-07 00:42:10 +02:00
tree.c
tree.h
twofish.c Remove unnecessary libavutil/(avutil|common|internal).h inclusions 2022-02-24 12:56:49 +01:00
twofish.h avutil/twofish: Fix doxy @param typo 2022-10-17 09:51:47 +02:00
tx_double.c
tx_float.c
tx_int32.c
tx_priv.h avutil/mem: Don't include avutil.h 2023-09-07 00:42:10 +02:00
tx_template.c avutil/tx_template: fix integer ovberflwo in fft3() 2023-10-27 18:10:47 +02:00
tx.c avutil/tx: print debug log at trace level 2024-02-22 00:29:59 -03:00
tx.h lavu/tx: add DCT-I and DST-I transforms 2023-09-01 23:59:10 +02:00
utils.c lib*/version: Move library version functions into files of their own 2022-05-10 06:49:32 +02:00
uuid.c avutil/uuid: add utility library for manipulating UUIDs as specified in RFC 4122 2022-06-12 18:34:28 +10:00
uuid.h avutil/uuid: Remove bogus doxy return doc 2022-10-17 09:56:47 +02:00
version_major.h Fix libversion.sh for split version headers, to unbreak shared library builds 2022-03-17 11:11:17 +02:00
version.c avutil/version: Remove outdated checks 2024-02-21 01:07:03 +01:00
version.h avutil/pixfmt: Add AV_VIDEO_MAX_PLANES 2024-02-16 21:34:38 +01:00
video_enc_params.c lavu/video_enc_params: Avoid relying on an undefined C construct 2023-01-31 14:22:54 +02:00
video_enc_params.h avutil/video_enc_params: fix doxy for av_video_enc_params_block() 2023-10-30 10:30:05 -03:00
video_hint.c lavu: add video_hint API 2023-08-08 09:46:11 +02:00
video_hint.h lavu: add video_hint API 2023-08-08 09:46:11 +02:00
vulkan_functions.h vulkan: enable VK_KHR_cooperative_matrix 2023-08-26 23:14:53 +02:00
vulkan_loader.h vulkan: enable VK_KHR_cooperative_matrix 2023-08-26 23:14:53 +02:00
vulkan.c vulkan: return VK_NOT_READY when no queries are available 2023-10-28 21:16:15 +02:00
vulkan.h vulkan: return VK_NOT_READY when no queries are available 2023-10-28 21:16:15 +02:00
wchar_filename.h avutil/mem: Don't include avutil.h 2023-09-07 00:42:10 +02:00
xga_font_data.c
xga_font_data.h
xtea.c Remove unnecessary libavutil/(avutil|common|internal).h inclusions 2022-02-24 12:56:49 +01:00
xtea.h