Commit 791bf247f3 for ffmpeg
commit 791bf247f376eaa964cfb7ba2996baabaeeec136
Author: Niklas Haas <git@haasn.dev>
Date: Thu Oct 8 02:23:57 2026 +0200
swscale/ops: stop nuking output pad metadata on unused output pads
This cleanly separates the forwards and backwards passes - output pad
metadata is set if it *would* be valid, and whether or not it's needed is
tracked explicitly in `dep_out` instead of by resetting these components.
Signed-off-by: Niklas Haas <git@haasn.dev>
diff --git a/libswscale/ops.c b/libswscale/ops.c
index a06fcc2f25..766c7e6475 100644
--- a/libswscale/ops.c
+++ b/libswscale/ops.c
@@ -615,6 +615,9 @@ void ff_sws_op_list_update_comps(SwsOpList *ops)
memcpy(prev, op->outputs, sizeof(prev));
}
+ #undef FORWARD
+ #undef RESET
+
/* Backwards pass, solves for output component dependencies */
SwsCompMask need_out[4] = {0};
@@ -622,11 +625,8 @@ void ff_sws_op_list_update_comps(SwsOpList *ops)
SwsOp *op = &ops->ops[n];
SwsCompMask need_in[4] = {0};
- for (int i = 0; i < 4; i++) {
+ for (int i = 0; i < 4; i++)
op->outputs[i].dep_out = need_out[i];
- if (!need_out[i])
- RESET(i);
- }
switch (op->op) {
case SWS_OP_READ:
@@ -684,9 +684,6 @@ void ff_sws_op_list_update_comps(SwsOpList *ops)
memcpy(need_out, need_in, sizeof(need_in));
}
-
- #undef FORWARD
- #undef RESET
}
static void op_uninit(SwsOp *op)