[FFmpeg-devel] [PATCH] avcodec/h264_levels, h265_profile_level: Avoid relocations
Andreas Rheinhardt
andreas.rheinhardt at outlook.com
Fri Sep 3 16:09:42 EEST 2021
Andreas Rheinhardt:
> H.264 and H.265 levels' names are usually of the form "x" or "x.y"
> with x and y being single digits; the one exception are the H.264 1b
> levels. All of those levels' names fit into a char[4] and it is likely
> that this future levels will do so, too.
>
> Therefore this commit changes the H26(4|5)LevelDescriptor structures
> to use such a char [4] instead of a pointer to a const char. This makes
> the structures smaller (when sizeof(char*) == 8) and avoids relocations,
> thereby moving the corresponding arrays from .data.rel.ro into .rodata.
>
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at outlook.com>
> ---
> libavcodec/h264_levels.h | 2 +-
> libavcodec/h265_profile_level.h | 2 +-
> 2 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/libavcodec/h264_levels.h b/libavcodec/h264_levels.h
> index 6bba2e8624..310d79e51a 100644
> --- a/libavcodec/h264_levels.h
> +++ b/libavcodec/h264_levels.h
> @@ -23,7 +23,7 @@
> #include <stdint.h>
>
> typedef struct H264LevelDescriptor {
> - const char *name;
> + char name[4]; // Large enough for all current levels like "4.1"
> uint8_t level_idc;
> uint8_t constraint_set3_flag;
> uint32_t max_mbps;
> diff --git a/libavcodec/h265_profile_level.h b/libavcodec/h265_profile_level.h
> index f1a11f51dc..cd30ac5c50 100644
> --- a/libavcodec/h265_profile_level.h
> +++ b/libavcodec/h265_profile_level.h
> @@ -25,7 +25,7 @@
>
>
> typedef struct H265LevelDescriptor {
> - const char *name;
> + char name[4]; // Large enough for all current levels like "4.1"
> uint8_t level_idc;
>
> // Table A.6.
>
Will apply tomorrow unless there are objections.
- Andreas
More information about the ffmpeg-devel
mailing list