From: Niklas Haas <g...@haasn.dev> Exactly what it says on the tin.
Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas <g...@haasn.dev> --- libswscale/swscale.h | 6 ++++++ libswscale/utils.c | 14 ++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/libswscale/swscale.h b/libswscale/swscale.h index ba944cdc6f..f544387769 100644 --- a/libswscale/swscale.h +++ b/libswscale/swscale.h @@ -140,6 +140,12 @@ int sws_test_transfer(enum AVColorTransferCharacteristic trc, int output); */ int sws_test_frame(const AVFrame *frame, int output); +/** + * Check if a given conversion is a noop. Returns a positive integer if + * no operation needs to be performed, 0 otherwise. + */ +int sws_is_noop(const AVFrame *dst, const AVFrame *src); + /* values for the flags, the stuff on the command line is different */ #define SWS_FAST_BILINEAR 1 #define SWS_BILINEAR 2 diff --git a/libswscale/utils.c b/libswscale/utils.c index 5339bbe099..5dff3c5476 100644 --- a/libswscale/utils.c +++ b/libswscale/utils.c @@ -2785,3 +2785,17 @@ int sws_test_frame(const AVFrame *frame, int output) return 1; } + +int sws_is_noop(const AVFrame *dst, const AVFrame *src) +{ + for (int field = 0; field < 2; field++) { + SwsFormat dst_fmt = ff_fmt_from_frame(dst, field); + SwsFormat src_fmt = ff_fmt_from_frame(src, field); + if (!ff_fmt_equal(&dst_fmt, &src_fmt)) + return 0; + if (!dst_fmt.interlaced) + break; + } + + return 1; +} -- 2.46.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".