This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit 32b9574ae41e2821fab823f56dec45ba1244fc14 Author: romainhedouin <[email protected]> AuthorDate: Fri Oct 16 11:22:25 2026 +0200 Commit: Baptiste Coudurier <[email protected]> CommitDate: Sat Oct 17 18:41:36 2026 +0000 avfilter/vf_drawbox: also hoist loop invariants in draw_region Same as the previous commit, for the planar YUV path. Hoisting only the alpha made 4:2:0 and 4:2:2 about 30% slower on arm64 with clang, so the colour and subsampling reads are hoisted as well. Output is identical: 1794 drawbox/drawgrid combinations, all 256 alpha values in 15 pixel formats, and fate-filter-drawbox pass. Full-frame fill, 1080p, arm64 with clang, CPU time: YUV 4:2:0 -13%, YUV 4:4:4 -23%. Not measured on x86. Found during a code review sweep of ffmpeg using an LLM. Signed-off-by: romainhedouin <[email protected]> --- libavfilter/vf_drawbox.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/libavfilter/vf_drawbox.c b/libavfilter/vf_drawbox.c index d44dc04171..deb117376b 100644 --- a/libavfilter/vf_drawbox.c +++ b/libavfilter/vf_drawbox.c @@ -134,6 +134,12 @@ static void draw_region(AVFrame *frame, DrawBoxContext *ctx, int left, int top, } } } else { + const double alpha = (double)ctx->yuv_color[A] / 255; + const int hsub = ctx->hsub; + const int yc = ctx->yuv_color[Y]; + const int uc = ctx->yuv_color[U]; + const int vc = ctx->yuv_color[V]; + for (y = top; y < down; y++) { ASSIGN_THREE_CHANNELS if (ctx->invert_color) { @@ -142,12 +148,10 @@ static void draw_region(AVFrame *frame, DrawBoxContext *ctx, int left, int top, row[0][x] = 0xff - row[0][x]; } else { for (x = left; x < right; x++) { - double alpha = (double)ctx->yuv_color[A] / 255; - if (pixel_belongs_to_region(ctx, x, y)) { - row[0][x ] = (1 - alpha) * row[0][x ] + alpha * ctx->yuv_color[Y]; - row[1][x >> ctx->hsub] = (1 - alpha) * row[1][x >> ctx->hsub] + alpha * ctx->yuv_color[U]; - row[2][x >> ctx->hsub] = (1 - alpha) * row[2][x >> ctx->hsub] + alpha * ctx->yuv_color[V]; + row[0][x ] = (1 - alpha) * row[0][x ] + alpha * yc; + row[1][x >> hsub] = (1 - alpha) * row[1][x >> hsub] + alpha * uc; + row[2][x >> hsub] = (1 - alpha) * row[2][x >> hsub] + alpha * vc; } } } -- To stop receiving notification emails like this one, please contact [email protected]. _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
