This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit 2dfe055dddb3d1b07b224d261876f6c180e854a8 Author: Niklas Haas <[email protected]> AuthorDate: Fri May 15 19:35:21 2026 +0200 Commit: Niklas Haas <[email protected]> CommitDate: Sun May 17 10:41:34 2026 +0000 swscale/tests/sws_ops: print split sub-passes for lists with filters This allows us to inspect exactly the logic that is going on inside the CPU backends (which don't support bare filter passes). rgb24 16x16 -> rgb24 16x32: [ u8 +++X] SWS_OP_READ : 3 elem(s) packed >> 0 min: {0 0 0 _}, max: {255 255 255 _} [ u8 +++X] SWS_OP_FILTER_V : 16 -> 32 point (1 taps) min: {0 0 0 _}, max: {255 255 255 _} [f32 +++X] SWS_OP_CONVERT : f32 -> u8 min: {0 0 0 _}, max: {255 255 255 _} [ u8 XXXX] SWS_OP_WRITE : 3 elem(s) packed >> 0 (X = unused, z = byteswapped, + = exact, 0 = zero) + Retrying with split passes: + [ u8 +++X] SWS_OP_READ : 3 elem(s) packed >> 0 + min: {0 0 0 _}, max: {255 255 255 _} + [ u8 XXXX] SWS_OP_WRITE : 3 elem(s) planar >> 0 + (X = unused, z = byteswapped, + = exact, 0 = zero) + Sub-pass #1: + [ u8 +++X] SWS_OP_READ : 3 elem(s) planar >> 0 + 1 tap point filter (V) + min: {0 0 0 _}, max: {255 255 255 _} + [f32 +++X] SWS_OP_CONVERT : f32 -> u8 + min: {0 0 0 _}, max: {255 255 255 _} + [ u8 XXXX] SWS_OP_WRITE : 3 elem(s) packed >> 0 + (X = unused, z = byteswapped, + = exact, 0 = zero) rgb24 16x16 -> rgb24 32x16: [ u8 +++X] SWS_OP_READ : 3 elem(s) packed >> 0 min: {0 0 0 _}, max: {255 255 255 _} [ u8 +++X] SWS_OP_FILTER_H : 16 -> 32 point (1 taps) min: {0 0 0 _}, max: {255 255 255 _} [f32 +++X] SWS_OP_CONVERT : f32 -> u8 min: {0 0 0 _}, max: {255 255 255 _} [ u8 XXXX] SWS_OP_WRITE : 3 elem(s) packed >> 0 (X = unused, z = byteswapped, + = exact, 0 = zero) + Retrying with split passes: + [ u8 +++X] SWS_OP_READ : 3 elem(s) packed >> 0 + min: {0 0 0 _}, max: {255 255 255 _} + [ u8 XXXX] SWS_OP_WRITE : 3 elem(s) planar >> 0 + (X = unused, z = byteswapped, + = exact, 0 = zero) + Sub-pass #1: + [ u8 +++X] SWS_OP_READ : 3 elem(s) planar >> 0 + 1 tap point filter (H) + min: {0 0 0 _}, max: {255 255 255 _} + [f32 +++X] SWS_OP_CONVERT : f32 -> u8 + min: {0 0 0 _}, max: {255 255 255 _} + [ u8 XXXX] SWS_OP_WRITE : 3 elem(s) packed >> 0 + (X = unused, z = byteswapped, + = exact, 0 = zero) Signed-off-by: Niklas Haas <[email protected]> --- libswscale/tests/sws_ops.c | 22 ++++++++++++++++++++++ tests/ref/fate/sws-ops-list | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/libswscale/tests/sws_ops.c b/libswscale/tests/sws_ops.c index c680561eff..afdbcd1942 100644 --- a/libswscale/tests/sws_ops.c +++ b/libswscale/tests/sws_ops.c @@ -32,10 +32,31 @@ #include <fcntl.h> #endif +static int pass_idx; + static int print_ops(SwsContext *ctx, SwsOpList *ops, SwsCompiledOp *out) { + if (pass_idx > 0) + av_log(NULL, AV_LOG_INFO, " Sub-pass #%d:\n", pass_idx); + ff_sws_op_list_print(NULL, AV_LOG_INFO, AV_LOG_INFO, ops); *out = (SwsCompiledOp) {0}; /* dummy value, will be immediately freed */ + + bool has_filters = false; + for (int i = 0; i < ops->num_ops; i++) { + const SwsOp *op = &ops->ops[i]; + if (op->op == SWS_OP_FILTER_H || op->op == SWS_OP_FILTER_V) { + has_filters = true; + break; + } + } + + if (has_filters) { + av_log(NULL, AV_LOG_INFO, " Retrying with split passes:\n"); + return AVERROR(ENOTSUP); + } + + pass_idx++; return 0; } @@ -63,6 +84,7 @@ static int print_passes(SwsContext *ctx, void *graph, SwsOpList *ops) if (!copy) return AVERROR(ENOMEM); + pass_idx = 0; return ff_sws_compile_pass(graph, &backend_print, ©, 0, NULL, NULL); } diff --git a/tests/ref/fate/sws-ops-list b/tests/ref/fate/sws-ops-list index 6411980b41..68bba31c71 100644 --- a/tests/ref/fate/sws-ops-list +++ b/tests/ref/fate/sws-ops-list @@ -1 +1 @@ -e8d02618e7d3d275e65e9adb8499e6a7 +440662113582c9b7bdb3edbb6310be88 _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
