1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-08-04 22:03:09 +02:00

avcodec/mpegvideo: Provide alignment hint to compiler

The underlying element type has always a size of 32B,
so that the pointer is always at least 16B aligned.
Clang uses this to upgrade the (inlined) memset to
aligned stores. GCC doesn't (it does it only when
the alignment hint is provided via __builtin_assume_aligned).

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
This commit is contained in:
Andreas Rheinhardt
2025-06-13 02:50:11 +02:00
parent 32cbadcd74
commit dcd7408c92

View File

@ -504,11 +504,13 @@ void ff_clean_intra_table_entries(MpegEncContext *s)
dc_val[uxy] = dc_val[uxy] =
dc_val[vxy] = 1024; dc_val[vxy] = 1024;
/* ac pred */ /* ac pred */
memset(s->ac_val[0][xy ], 0, 32 * sizeof(int16_t)); int16_t (*ac_val)[16] = s->ac_val[0];
memset(s->ac_val[0][xy + wrap], 0, 32 * sizeof(int16_t)); av_assume(!((uintptr_t)ac_val & 0xF));
memset(ac_val[xy ], 0, 2 * sizeof(*ac_val));
memset(ac_val[xy + wrap], 0, 2 * sizeof(*ac_val));
/* ac pred */ /* ac pred */
memset(s->ac_val[0][uxy], 0, 16 * sizeof(int16_t)); memset(ac_val[uxy], 0, sizeof(*ac_val));
memset(s->ac_val[0][vxy], 0, 16 * sizeof(int16_t)); memset(ac_val[vxy], 0, sizeof(*ac_val));
} }
void ff_init_block_index(MpegEncContext *s){ //FIXME maybe rename void ff_init_block_index(MpegEncContext *s){ //FIXME maybe rename