[FFmpeg-cvslog] avcodec/h264_levels, h265_profile_level: Avoid relocations
Andreas Rheinhardt
git at videolan.org
Sat Sep 4 10:26:02 EEST 2021
ffmpeg | branch: master | Andreas Rheinhardt <andreas.rheinhardt at outlook.com> | Wed Sep 1 16:15:54 2021 +0200| [0172deccc4e229e0b22f3e776f71e6e4b5a08e35] | committer: Andreas Rheinhardt
avcodec/h264_levels, h265_profile_level: Avoid relocations
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>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0172deccc4e229e0b22f3e776f71e6e4b5a08e35
---
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.
More information about the ffmpeg-cvslog
mailing list