Commit e488f9caec for ffmpeg
commit e488f9caecb5ed95c6c02a551eae7070d33e7443
Author: Niklas Haas <git@haasn.dev>
Date: Tue Nov 3 22:20:39 2026 +0100
swscale/ops_chain: replace SwsImplResult.priv by abstract buffer
Now that all op kernels use ff_op_priv_pack(), we can use a generic buffer
here. Pre-emptively size it at 128 bytes to allow storing linear
kernel data here as well.
Signed-off-by: Niklas Haas <git@haasn.dev>
diff --git a/libswscale/aarch64/ops.c b/libswscale/aarch64/ops.c
index 4d1e8b3345..10eb3e58d6 100644
--- a/libswscale/aarch64/ops.c
+++ b/libswscale/aarch64/ops.c
@@ -193,7 +193,7 @@ static int compile_uops_aarch64(SwsContext *ctx, const SwsUOpList *uops,
if (ret < 0)
goto error;
av_assert1(res.priv_size == aarch64_priv_size(¶ms));
- ret = ff_sws_op_chain_append(chain, func, res.ref, &res.priv, res.priv_size);
+ ret = ff_sws_op_chain_append(chain, func, res.ref, res.priv, res.priv_size);
av_refstruct_unref(&res.ref);
if (ret < 0)
goto error;
diff --git a/libswscale/ops_chain.c b/libswscale/ops_chain.c
index b977c7e69d..ae4595a65e 100644
--- a/libswscale/ops_chain.c
+++ b/libswscale/ops_chain.c
@@ -127,7 +127,7 @@ int ff_sws_uop_lookup(SwsContext *ctx, const SwsUOpTable *const tables[],
}
ret = ff_sws_op_chain_append(chain, res.func ? res.func : match->func,
- res.ref, &res.priv, res.priv_size);
+ res.ref, res.priv, res.priv_size);
av_refstruct_unref(&res.ref);
if (ret < 0)
return ret;
diff --git a/libswscale/ops_chain.h b/libswscale/ops_chain.h
index 3b1d39997e..55df6ca4e2 100644
--- a/libswscale/ops_chain.h
+++ b/libswscale/ops_chain.h
@@ -137,7 +137,7 @@ typedef struct SwsImplResult {
/* Private data for this kernel */
size_t priv_size;
- SwsOpPriv priv;
+ uint8_t priv[128];
} SwsImplResult;
typedef struct SwsUOpEntry {
@@ -161,7 +161,7 @@ int ff_sws_setup_vec4(const SwsImplParams *params, SwsImplResult *out);
static inline void ff_sws_op_priv_pack(SwsImplResult *out, const void *data, size_t size)
{
av_assert0(out->priv_size + size <= sizeof(out->priv));
- memcpy(&out->priv.data[out->priv_size], data, size);
+ memcpy(&out->priv[out->priv_size], data, size);
out->priv_size += size;
}