[PR] avutil/opt: Use correct enum size (PR #24014)
mkver via ffmpeg-devel <[email protected]> Wed, 05 Aug 2026 00:00:19 -0000
| Newsgroups | gmane.comp.video.ffmpeg.devel |
|---|---|
| Message-ID | <178588802040.59.8422096433511752520@29965ddac10e> |
PR #24014 opened by mkver URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/24014 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/24014.patch AV_OPT_TYPE_PIXEL_FMT and AV_OPT_TYPE_SAMPLE_FMT are documented to use the corresponding enum type. This matters when using -fshort-enums. Fixes part of #21289. >From be2fe9730d7f26c00560d37dc2e54bdc689b687f Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt <[email protected]> Date: Tue, 4 Aug 2026 23:13:33 +0200 Subject: [PATCH] avutil/opt: Use correct enum size AV_OPT_TYPE_PIXEL_FMT and AV_OPT_TYPE_SAMPLE_FMT are documented to use the corresponding enum type. This matters when using -fshort-enums. Signed-off-by: Andreas Rheinhardt <[email protected]> --- libavutil/opt.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/libavutil/opt.c b/libavutil/opt.c index dd7d7a597c..9a773e8a38 100644 --- a/libavutil/opt.c +++ b/libavutil/opt.c @@ -74,8 +74,8 @@ static const struct { [AV_OPT_TYPE_DICT] = { sizeof(AVDictionary *), "<dictionary>" }, [AV_OPT_TYPE_IMAGE_SIZE] = { sizeof(int[2]), "<image_size>" }, [AV_OPT_TYPE_VIDEO_RATE] = { sizeof(AVRational), "<video_rate>" }, - [AV_OPT_TYPE_PIXEL_FMT] = { sizeof(int), "<pix_fmt>" }, - [AV_OPT_TYPE_SAMPLE_FMT] = { sizeof(int), "<sample_fmt>" }, + [AV_OPT_TYPE_PIXEL_FMT] = { sizeof(enum AVPixelFormat), "<pix_fmt>" }, + [AV_OPT_TYPE_SAMPLE_FMT] = { sizeof(enum AVSampleFormat), "<sample_fmt>" }, [AV_OPT_TYPE_DURATION] = { sizeof(int64_t), "<duration>" }, [AV_OPT_TYPE_COLOR] = { sizeof(uint8_t[4]), "<color>" }, [AV_OPT_TYPE_CHLAYOUT] = { sizeof(AVChannelLayout),"<channel_layout>" }, @@ -577,7 +577,8 @@ fail: } static int set_string_fmt(void *obj, const AVOption *o, const char *val, uint8_t *dst, - int fmt_nb, int ((*get_fmt)(const char *)), const char *desc) + int fmt_nb, int ((*get_fmt)(const char *)), const char *desc, + enum AVOptionType type) { int fmt, min, max; @@ -612,7 +613,11 @@ static int set_string_fmt(void *obj, const AVOption *o, const char *val, uint8_t return AVERROR(ERANGE); } - *(int *)dst = fmt; + switch (type) { + case AV_OPT_TYPE_PIXEL_FMT: *(enum AVPixelFormat *)dst = fmt; break; + case AV_OPT_TYPE_SAMPLE_FMT: *(enum AVSampleFormat*)dst = fmt; break; + default: av_unreachable("set_string_fmt() is only called for pixel and sample formats"); + } return 0; } @@ -624,7 +629,8 @@ static int get_pix_fmt(const char *name) static int set_string_pixel_fmt(void *obj, const AVOption *o, const char *val, uint8_t *dst) { return set_string_fmt(obj, o, val, dst, - AV_PIX_FMT_NB, get_pix_fmt, "pixel format"); + AV_PIX_FMT_NB, get_pix_fmt, + "pixel format", AV_OPT_TYPE_PIXEL_FMT); } static int get_sample_fmt(const char *name) @@ -635,7 +641,8 @@ static int get_sample_fmt(const char *name) static int set_string_sample_fmt(void *obj, const AVOption *o, const char *val, uint8_t *dst) { return set_string_fmt(obj, o, val, dst, - AV_SAMPLE_FMT_NB, get_sample_fmt, "sample format"); + AV_SAMPLE_FMT_NB, get_sample_fmt, + "sample format", AV_OPT_TYPE_SAMPLE_FMT); } static int set_string_dict(void *obj, const AVOption *o, const char *val, uint8_t **dst) -- 2.52.0 _______________________________________________ ffmpeg-devel mailing list -- [email protected] To unsubscribe send an email to [email protected]