swscale/ops_dispatch: add helper function to clean up SwsCompiledOp

Sponsored-by: Sovereign Tech Fund
Signed-off-by: Niklas Haas <git@haasn.dev>
This commit is contained in:
Niklas Haas
2026-03-06 20:27:37 +01:00
committed by Niklas Haas
parent 8227a21c27
commit adf2d4e90f
3 changed files with 14 additions and 7 deletions

View File

@@ -95,15 +95,21 @@ int ff_sws_ops_compile(SwsContext *ctx, const SwsOpList *ops, SwsCompiledOp *out
return AVERROR(ENOTSUP);
}
void ff_sws_compiled_op_unref(SwsCompiledOp *comp)
{
if (comp->free)
comp->free(comp->priv);
*comp = (SwsCompiledOp) {0};
}
static void op_pass_free(void *ptr)
{
SwsOpPass *p = ptr;
if (!p)
return;
if (p->comp.free)
p->comp.free(p->comp.priv);
ff_sws_compiled_op_unref(&p->comp);
av_free(p);
}

View File

@@ -100,4 +100,6 @@ typedef struct SwsCompiledOp {
void (*free)(void *priv);
} SwsCompiledOp;
void ff_sws_compiled_op_unref(SwsCompiledOp *comp);
#endif /* SWSCALE_OPS_DISPATCH_H */

View File

@@ -241,10 +241,9 @@ static void check_ops(const char *report, const unsigned ranges[NB_PLANES],
bench(comp_new.func, &exec, comp_new.priv, 0, 0, PIXELS / comp_new.block_size, LINES);
}
if (comp_new.func != comp_ref.func && comp_new.free)
comp_new.free(comp_new.priv);
if (comp_ref.free)
comp_ref.free(comp_ref.priv);
if (comp_new.func != comp_ref.func)
ff_sws_compiled_op_unref(&comp_new);
ff_sws_compiled_op_unref(&comp_ref);
sws_free_context(&ctx);
}