This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit 08a7b714f2107906482875870415a6e3632cf6fa Author: Niklas Haas <[email protected]> AuthorDate: Fri Mar 27 14:17:19 2026 +0100 Commit: Niklas Haas <[email protected]> CommitDate: Sat Mar 28 16:48:13 2026 +0000 swscale/format: move SwsFormat sanitization to helper function Signed-off-by: Niklas Haas <[email protected]> --- libswscale/format.c | 69 ++++++++++++++++++++++++++++------------------------- 1 file changed, 37 insertions(+), 32 deletions(-) diff --git a/libswscale/format.c b/libswscale/format.c index 3464a8af7c..af37ee09c8 100644 --- a/libswscale/format.c +++ b/libswscale/format.c @@ -305,6 +305,42 @@ int sws_isSupportedEndiannessConversion(enum AVPixelFormat pix_fmt) legacy_format_entries[pix_fmt].is_supported_endianness : 0; } +static void sanitize_fmt(SwsFormat *fmt, const AVPixFmtDescriptor *desc) +{ + if (desc->flags & (AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_PAL | AV_PIX_FMT_FLAG_BAYER)) { + /* RGB-like family */ + fmt->csp = AVCOL_SPC_RGB; + fmt->range = AVCOL_RANGE_JPEG; + } else if (desc->flags & AV_PIX_FMT_FLAG_XYZ) { + fmt->csp = AVCOL_SPC_UNSPECIFIED; + fmt->color = (SwsColor) { + .prim = AVCOL_PRI_BT709, /* swscale currently hard-codes this XYZ matrix */ + .trc = AVCOL_TRC_SMPTE428, + }; + } else if (desc->nb_components < 3) { + /* Grayscale formats */ + fmt->color.prim = AVCOL_PRI_UNSPECIFIED; + fmt->csp = AVCOL_SPC_UNSPECIFIED; + if (desc->flags & AV_PIX_FMT_FLAG_FLOAT) + fmt->range = AVCOL_RANGE_UNSPECIFIED; + else + fmt->range = AVCOL_RANGE_JPEG; // FIXME: this restriction should be lifted + } + + switch (av_pix_fmt_desc_get_id(desc)) { + case AV_PIX_FMT_YUVJ420P: + case AV_PIX_FMT_YUVJ411P: + case AV_PIX_FMT_YUVJ422P: + case AV_PIX_FMT_YUVJ444P: + case AV_PIX_FMT_YUVJ440P: + fmt->range = AVCOL_RANGE_JPEG; + break; + } + + if (!desc->log2_chroma_w && !desc->log2_chroma_h) + fmt->loc = AVCHROMA_LOC_UNSPECIFIED; +} + /** * This function also sanitizes and strips the input data, removing irrelevant * fields for certain formats. @@ -346,38 +382,7 @@ SwsFormat ff_fmt_from_frame(const AVFrame *frame, int field) av_assert1(fmt.height > 0); av_assert1(fmt.format != AV_PIX_FMT_NONE); av_assert0(desc); - if (desc->flags & (AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_PAL | AV_PIX_FMT_FLAG_BAYER)) { - /* RGB-like family */ - fmt.csp = AVCOL_SPC_RGB; - fmt.range = AVCOL_RANGE_JPEG; - } else if (desc->flags & AV_PIX_FMT_FLAG_XYZ) { - fmt.csp = AVCOL_SPC_UNSPECIFIED; - fmt.color = (SwsColor) { - .prim = AVCOL_PRI_BT709, /* swscale currently hard-codes this XYZ matrix */ - .trc = AVCOL_TRC_SMPTE428, - }; - } else if (desc->nb_components < 3) { - /* Grayscale formats */ - fmt.color.prim = AVCOL_PRI_UNSPECIFIED; - fmt.csp = AVCOL_SPC_UNSPECIFIED; - if (desc->flags & AV_PIX_FMT_FLAG_FLOAT) - fmt.range = AVCOL_RANGE_UNSPECIFIED; - else - fmt.range = AVCOL_RANGE_JPEG; // FIXME: this restriction should be lifted - } - - switch (frame->format) { - case AV_PIX_FMT_YUVJ420P: - case AV_PIX_FMT_YUVJ411P: - case AV_PIX_FMT_YUVJ422P: - case AV_PIX_FMT_YUVJ444P: - case AV_PIX_FMT_YUVJ440P: - fmt.range = AVCOL_RANGE_JPEG; - break; - } - - if (!desc->log2_chroma_w && !desc->log2_chroma_h) - fmt.loc = AVCHROMA_LOC_UNSPECIFIED; + sanitize_fmt(&fmt, desc); if (frame->flags & AV_FRAME_FLAG_INTERLACED) { fmt.height = (fmt.height + (field == FIELD_TOP)) >> 1; _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
