This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit 2171f9836cc2edf8951bea396a285ba922f6bec5 Author: Niklas Haas <[email protected]> AuthorDate: Mon Oct 19 15:44:34 2026 +0200 Commit: Niklas Haas <[email protected]> CommitDate: Tue Oct 20 21:33:01 2026 +0000 swscale/ops: add ff_sws_op_prev/next() helpers Signed-off-by: Niklas Haas <[email protected]> --- libswscale/ops.c | 25 +++++++++++++++++++++++++ libswscale/ops.h | 6 ++++++ libswscale/ops_dispatch.c | 5 +++-- 3 files changed, 34 insertions(+), 2 deletions(-) diff --git a/libswscale/ops.c b/libswscale/ops.c index a66832f3e9..caf933bd58 100644 --- a/libswscale/ops.c +++ b/libswscale/ops.c @@ -143,6 +143,31 @@ int ff_sws_rw_op_planes(const SwsOp *op) return 0; } +static inline int op_index(const SwsOp *op) +{ + SwsOpList *ops = op->ops; + av_assert1(op >= ops->ops && op < ops->ops + ops->num_ops); + return op - ops->ops; +} + +const SwsOp *ff_sws_op_prev(const SwsOp *op) +{ + if (!op) + return NULL; + SwsOpList *ops = op->ops; + const int idx = op_index(op); + return idx > 0 ? &ops->ops[idx - 1] : NULL; +} + +const SwsOp *ff_sws_op_next(const SwsOp *op) +{ + if (!op) + return NULL; + SwsOpList *ops = op->ops; + const int idx = op_index(op); + return idx < ops->num_ops - 1 ? &ops->ops[idx + 1] : NULL; +} + /* biased towards `a` */ static AVRational64 av_min_q64(AVRational64 a, AVRational64 b) { diff --git a/libswscale/ops.h b/libswscale/ops.h index aad48660b3..bfb5085ae5 100644 --- a/libswscale/ops.h +++ b/libswscale/ops.h @@ -306,6 +306,12 @@ void ff_sws_op_uninit(SwsOp *op); */ void ff_sws_apply_op_q(const SwsOp *op, AVRational64 x[4]); +/** + * Return the previous/next operation in the list, or NULL if there is none. + */ +const SwsOp *ff_sws_op_prev(const SwsOp *op); +const SwsOp *ff_sws_op_next(const SwsOp *op); + /** * Helper struct for representing a list of operations. */ diff --git a/libswscale/ops_dispatch.c b/libswscale/ops_dispatch.c index d2669d6cbd..2268100154 100644 --- a/libswscale/ops_dispatch.c +++ b/libswscale/ops_dispatch.c @@ -479,7 +479,7 @@ static void op_list_get_plane_copy(const SwsOpList *ops, SwsPass *pass) read->rw.frac != write->rw.frac) return; /* only regular planes can be directly ref'd */ - const SwsOp *prev = &ops->ops[ops->num_ops - 2]; + const SwsOp *prev = ff_sws_op_prev(write); int *plane_copy = pass->output->plane_copy; for (int i = 0; i < write->rw.elems; i++) { SwsCompFlags flags = prev->outputs[i].flags; @@ -729,7 +729,8 @@ static int compile_subpass(const CompileArgs *args, SwsOpList **pops, /* Split off copied and constant planes into a separate subpass, * since these are likely to be handled by the memcpy backend */ av_assert0(ops->num_ops >= 2); - const SwsOp *prev = &ops->ops[ops->num_ops - 2]; + const SwsOp *write = ff_sws_op_list_output(ops); + const SwsOp *prev = ff_sws_op_prev(write); SwsCompMask planes = plane_mask_flags(prev, SWS_COMP_COPY | SWS_COMP_CONST); RET(ff_sws_op_list_split_planes(ops, &rest, planes)); if (rest) { -- 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]
