PR #23396 opened by mkver URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23396 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/23396.patch
This has led to the failing build in #22455 (the bump PR). Also perform other minor improvements. >From 9791c4d1837364fffd27bdb76d2b536496c0b0d1 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt <[email protected]> Date: Sun, 7 Jun 2026 07:56:00 +0200 Subject: [PATCH 1/6] avcodec/liboapvenc: Don't set AVCodec.pix_fmts directly Instead use CODEC_PIXFMTS. Avoids deprecation warnings from Clang and simplifies the removal of AVCodec.pix_fmts. Signed-off-by: Andreas Rheinhardt <[email protected]> --- libavcodec/liboapvenc.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/libavcodec/liboapvenc.c b/libavcodec/liboapvenc.c index 2b4da37b7d..12b8383c30 100644 --- a/libavcodec/liboapvenc.c +++ b/libavcodec/liboapvenc.c @@ -570,17 +570,6 @@ static av_cold int liboapve_close(AVCodecContext *avctx) #define OFFSET(x) offsetof(ApvEncContext, x) #define VE AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_ENCODING_PARAM -static const enum AVPixelFormat supported_pixel_formats[] = { - AV_PIX_FMT_GRAY10, - AV_PIX_FMT_YUV422P10, - AV_PIX_FMT_YUV422P12, - AV_PIX_FMT_YUV444P10, - AV_PIX_FMT_YUV444P12, - AV_PIX_FMT_YUVA444P10, - AV_PIX_FMT_YUVA444P12, - AV_PIX_FMT_NONE -}; - static const AVOption liboapv_options[] = { { "preset", "Encoding preset for setting encoding speed (optimization level control)", OFFSET(preset_id), AV_OPT_TYPE_INT, { .i64 = OAPV_PRESET_DEFAULT }, OAPV_PRESET_FASTEST, OAPV_PRESET_PLACEBO, VE, .unit = "preset" }, { "fastest", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = OAPV_PRESET_FASTEST }, INT_MIN, INT_MAX, VE, .unit = "preset" }, @@ -620,7 +609,10 @@ const FFCodec ff_liboapv_encoder = { .defaults = liboapve_defaults, .p.capabilities = AV_CODEC_CAP_OTHER_THREADS | AV_CODEC_CAP_DR1, .p.wrapper_name = "liboapv", - .p.pix_fmts = supported_pixel_formats, .p.profiles = NULL_IF_CONFIG_SMALL(ff_apv_profiles), .caps_internal = FF_CODEC_CAP_INIT_CLEANUP | FF_CODEC_CAP_AUTO_THREADS | FF_CODEC_CAP_NOT_INIT_THREADSAFE, + CODEC_PIXFMTS(AV_PIX_FMT_GRAY10, + AV_PIX_FMT_YUV422P10, AV_PIX_FMT_YUV422P12, + AV_PIX_FMT_YUV444P10, AV_PIX_FMT_YUV444P12, + AV_PIX_FMT_YUVA444P10, AV_PIX_FMT_YUVA444P12), }; -- 2.52.0 >From 67855a723441116a96f2ac0e3a3839c6cae07658 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt <[email protected]> Date: Sun, 7 Jun 2026 09:06:23 +0200 Subject: [PATCH 2/6] avcodec/liboapvenc: Use av_unreachable for unreachable default cases Signed-off-by: Andreas Rheinhardt <[email protected]> --- libavcodec/liboapvenc.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libavcodec/liboapvenc.c b/libavcodec/liboapvenc.c index 12b8383c30..371ead3938 100644 --- a/libavcodec/liboapvenc.c +++ b/libavcodec/liboapvenc.c @@ -121,7 +121,7 @@ static inline int get_color_format(enum AVPixelFormat pix_fmt) cf = OAPV_CF_YCBCR4444; break; default: - av_assert0(cf != OAPV_CF_UNKNOWN); + av_unreachable("Already checked via CODEC_PIXFMTS"); } return cf; @@ -148,7 +148,7 @@ static inline int get_chroma_format_idc(enum AVPixelFormat pix_fmt) cfi = APV_CHROMA_FORMAT_4444; break; default: - av_assert0(cfi >= 0); + av_unreachable("Already checked via CODEC_PIXFMTS"); } return cfi; @@ -181,7 +181,7 @@ static inline int get_min_profile(enum AVPixelFormat pix_fmt) profile = AV_PROFILE_APV_4444_12; break; default: - av_assert0(profile != AV_PROFILE_UNKNOWN); + av_unreachable("Already checked via CODEC_PIXFMTS"); } return profile; -- 2.52.0 >From 80ea2d14872b991109fe5539dd4c8c0822f28e87 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt <[email protected]> Date: Sun, 7 Jun 2026 09:15:46 +0200 Subject: [PATCH 3/6] avcodec/liboapvenc: Return directly when possible Signed-off-by: Andreas Rheinhardt <[email protected]> --- libavcodec/liboapvenc.c | 108 +++++++++++++++------------------------- 1 file changed, 39 insertions(+), 69 deletions(-) diff --git a/libavcodec/liboapvenc.c b/libavcodec/liboapvenc.c index 371ead3938..d39dd57d24 100644 --- a/libavcodec/liboapvenc.c +++ b/libavcodec/liboapvenc.c @@ -96,95 +96,65 @@ static int apv_imgb_getref(oapv_imgb_t * imgb) */ static inline int get_color_format(enum AVPixelFormat pix_fmt) { - int cf = OAPV_CF_UNKNOWN; - switch (pix_fmt) { - case AV_PIX_FMT_GRAY10: - cf = OAPV_CF_YCBCR400; - break; - case AV_PIX_FMT_YUV422P10: - cf = OAPV_CF_YCBCR422; - break; - case AV_PIX_FMT_YUV422P12: - cf = OAPV_CF_YCBCR422; - break; - case AV_PIX_FMT_YUV444P10: - cf = OAPV_CF_YCBCR444; - break; - case AV_PIX_FMT_YUV444P12: - cf = OAPV_CF_YCBCR444; - break; - case AV_PIX_FMT_YUVA444P10: - cf = OAPV_CF_YCBCR4444; - break; - case AV_PIX_FMT_YUVA444P12: - cf = OAPV_CF_YCBCR4444; - break; default: av_unreachable("Already checked via CODEC_PIXFMTS"); + case AV_PIX_FMT_GRAY10: + return OAPV_CF_YCBCR400; + case AV_PIX_FMT_YUV422P10: + return OAPV_CF_YCBCR422; + case AV_PIX_FMT_YUV422P12: + return OAPV_CF_YCBCR422; + case AV_PIX_FMT_YUV444P10: + return OAPV_CF_YCBCR444; + case AV_PIX_FMT_YUV444P12: + return OAPV_CF_YCBCR444; + case AV_PIX_FMT_YUVA444P10: + return OAPV_CF_YCBCR4444; + case AV_PIX_FMT_YUVA444P12: + return OAPV_CF_YCBCR4444; } - - return cf; } static inline int get_chroma_format_idc(enum AVPixelFormat pix_fmt) { - int cfi = -1; - switch (pix_fmt) { - case AV_PIX_FMT_GRAY10: - cfi = APV_CHROMA_FORMAT_400; - break; - case AV_PIX_FMT_YUV422P10: - case AV_PIX_FMT_YUV422P12: - cfi = APV_CHROMA_FORMAT_422; - break; - case AV_PIX_FMT_YUV444P10: - case AV_PIX_FMT_YUV444P12: - cfi = APV_CHROMA_FORMAT_444; - break; - case AV_PIX_FMT_YUVA444P10: - case AV_PIX_FMT_YUVA444P12: - cfi = APV_CHROMA_FORMAT_4444; - break; default: av_unreachable("Already checked via CODEC_PIXFMTS"); + case AV_PIX_FMT_GRAY10: + return APV_CHROMA_FORMAT_400; + case AV_PIX_FMT_YUV422P10: + case AV_PIX_FMT_YUV422P12: + return APV_CHROMA_FORMAT_422; + case AV_PIX_FMT_YUV444P10: + case AV_PIX_FMT_YUV444P12: + return APV_CHROMA_FORMAT_444; + case AV_PIX_FMT_YUVA444P10: + case AV_PIX_FMT_YUVA444P12: + return APV_CHROMA_FORMAT_4444; } - - return cfi; } static inline int get_min_profile(enum AVPixelFormat pix_fmt) { - int profile = AV_PROFILE_UNKNOWN; - switch (pix_fmt) { - case AV_PIX_FMT_GRAY10: - profile = AV_PROFILE_APV_400_10; - break; - case AV_PIX_FMT_YUV422P10: - profile = AV_PROFILE_APV_422_10; - break; - case AV_PIX_FMT_YUV422P12: - profile = AV_PROFILE_APV_422_12; - break; - case AV_PIX_FMT_YUV444P10: - profile = AV_PROFILE_APV_444_10; - break; - case AV_PIX_FMT_YUV444P12: - profile = AV_PROFILE_APV_444_12; - break; - case AV_PIX_FMT_YUVA444P10: - profile = AV_PROFILE_APV_4444_10; - break; - case AV_PIX_FMT_YUVA444P12: - profile = AV_PROFILE_APV_4444_12; - break; default: av_unreachable("Already checked via CODEC_PIXFMTS"); + case AV_PIX_FMT_GRAY10: + return AV_PROFILE_APV_400_10; + case AV_PIX_FMT_YUV422P10: + return AV_PROFILE_APV_422_10; + case AV_PIX_FMT_YUV422P12: + return AV_PROFILE_APV_422_12; + case AV_PIX_FMT_YUV444P10: + return AV_PROFILE_APV_444_10; + case AV_PIX_FMT_YUV444P12: + return AV_PROFILE_APV_444_12; + case AV_PIX_FMT_YUVA444P10: + return AV_PROFILE_APV_4444_10; + case AV_PIX_FMT_YUVA444P12: + return AV_PROFILE_APV_4444_12; } - - return profile; } static int profile_is_compatible(enum AVPixelFormat pix_fmt, int profile) -- 2.52.0 >From bf47563bd8205c912d650c857e1fe812dab48812 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt <[email protected]> Date: Sun, 7 Jun 2026 09:24:31 +0200 Subject: [PATCH 4/6] avcodec/liboapvenc: Remove always-false checks Already checked in encode_preinit_video(). Signed-off-by: Andreas Rheinhardt <[email protected]> --- libavcodec/liboapvenc.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/libavcodec/liboapvenc.c b/libavcodec/liboapvenc.c index d39dd57d24..c4051844f8 100644 --- a/libavcodec/liboapvenc.c +++ b/libavcodec/liboapvenc.c @@ -287,11 +287,8 @@ static int get_conf(AVCodecContext *avctx, oapve_cdesc_t *cdsc) } /* read options from AVCodecContext */ - if (avctx->width > 0) - cdsc->param[FRM_IDX].w = avctx->width; - - if (avctx->height > 0) - cdsc->param[FRM_IDX].h = avctx->height; + cdsc->param[FRM_IDX].w = avctx->width; + cdsc->param[FRM_IDX].h = avctx->height; if (avctx->framerate.num > 0) { cdsc->param[FRM_IDX].fps_num = avctx->framerate.num; -- 2.52.0 >From 0faa43ae6c93e964279d3d64d6de300fe8af3eb0 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt <[email protected]> Date: Sun, 7 Jun 2026 09:31:25 +0200 Subject: [PATCH 5/6] avcodec/liboapvenc: Use av_image_copy2() to avoid cast Signed-off-by: Andreas Rheinhardt <[email protected]> --- libavcodec/liboapvenc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/liboapvenc.c b/libavcodec/liboapvenc.c index c4051844f8..b09c5d1077 100644 --- a/libavcodec/liboapvenc.c +++ b/libavcodec/liboapvenc.c @@ -456,8 +456,8 @@ static int liboapve_encode(AVCodecContext *avctx, AVPacket *avpkt, return AVERROR(EINVAL); } - av_image_copy((uint8_t **)imgb->a, imgb->s, (const uint8_t **)frame->data, frame->linesize, - frame->format, frame->width, frame->height); + av_image_copy2((uint8_t **)imgb->a, imgb->s, frame->data, frame->linesize, + frame->format, frame->width, frame->height); imgb->ts[0] = frame->pts; -- 2.52.0 >From bb49197ede88e7b31b690ad3e6c5320c63e2abe4 Mon Sep 17 00:00:00 2001 From: Andreas Rheinhardt <[email protected]> Date: Sun, 7 Jun 2026 09:34:31 +0200 Subject: [PATCH 6/6] avcodec/liboapvenc: Remove dimension change check If this were to be checked, it should be checked generically, not in every single encoder. Signed-off-by: Andreas Rheinhardt <[email protected]> --- libavcodec/liboapvenc.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/libavcodec/liboapvenc.c b/libavcodec/liboapvenc.c index b09c5d1077..92640b74a3 100644 --- a/libavcodec/liboapvenc.c +++ b/libavcodec/liboapvenc.c @@ -451,11 +451,6 @@ static int liboapve_encode(AVCodecContext *avctx, AVPacket *avpkt, oapv_imgb_t *imgb = frm->imgb; int ret; - if (avctx->width != frame->width || avctx->height != frame->height || avctx->pix_fmt != frame->format) { - av_log(avctx, AV_LOG_ERROR, "Dimension changes are not supported\n"); - return AVERROR(EINVAL); - } - av_image_copy2((uint8_t **)imgb->a, imgb->s, frame->data, frame->linesize, frame->format, frame->width, frame->height); -- 2.52.0 _______________________________________________ ffmpeg-devel mailing list -- [email protected] To unsubscribe send an email to [email protected]
