Commit 3c76ec031b for ffmpeg
commit 3c76ec031b044f559e4d70cb566b281ff2f290e7
Author: Niklas Haas <git@haasn.dev>
Date: Tue Nov 3 21:13:35 2026 +0100
swscale/x86/ops: pack the remaining private data
Signed-off-by: Niklas Haas <git@haasn.dev>
diff --git a/libswscale/x86/ops.c b/libswscale/x86/ops.c
index 1e518a3f03..3bb1e2fd99 100644
--- a/libswscale/x86/ops.c
+++ b/libswscale/x86/ops.c
@@ -269,12 +269,16 @@ static int setup_filter_h_4x4(const SwsImplParams *params, SwsImplResult *out)
static int setup_scale(const SwsImplParams *params, SwsImplResult *out)
{
- const SwsUOp *uop = params->uop;
- switch (uop->type) {
- case SWS_PIXEL_U8: out->priv.u32[0] = uop->data.scalar.u8; break; /* for movd */
- case SWS_PIXEL_U16: out->priv.u16[0] = uop->data.scalar.u16; break;
- case SWS_PIXEL_U32: out->priv.u32[0] = uop->data.scalar.u32; break;
- case SWS_PIXEL_F32: out->priv.f32[0] = uop->data.scalar.f32; break;
+ const SwsPixel scalar = params->uop->data.scalar;
+ switch (params->uop->type) {
+ case SWS_PIXEL_U8: {
+ const uint32_t u32 = scalar.u8; /* for movd */
+ SWS_OP_PRIV_PACK(out, u32);
+ break;
+ }
+ case SWS_PIXEL_U16: SWS_OP_PRIV_PACK(out, scalar.u16); break;
+ case SWS_PIXEL_U32: SWS_OP_PRIV_PACK(out, scalar.u32); break;
+ case SWS_PIXEL_F32: SWS_OP_PRIV_PACK(out, scalar.f32); break;
default: return AVERROR(EINVAL);
}
@@ -285,13 +289,13 @@ static int setup_clear(const SwsImplParams *params, SwsImplResult *out)
{
const SwsUOp *uop = params->uop;
for (int i = 0; i < 4; i++)
- out->priv.u32[i] = uop->data.vec4[i].u32;
+ SWS_OP_PRIV_PACK(out, uop->data.vec4[i].u32);
return 0;
}
static int setup_dither(const SwsImplParams *params, SwsImplResult *out)
{
- out->ref = out->priv.ptr = av_refstruct_ref(params->uop->data.ptr);
+ ff_sws_op_priv_pack_refptr(out, av_refstruct_ref(params->uop->data.ptr));
return 0;
}
@@ -316,17 +320,18 @@ static int setup_linear(const SwsImplParams *params, SwsImplResult *out)
{
const SwsUOp *uop = params->uop;
if (uop->type == SWS_PIXEL_F32) {
- out->ref = out->priv.ptr = av_refstruct_allocz(sizeof(uop->data.mat4x5));
- if (!out->priv.ptr)
+ float *mat = av_refstruct_allocz(sizeof(uop->data.mat4x5));
+ if (!mat)
return AVERROR(ENOMEM);
- memcpy(out->priv.ptr, uop->data.mat4x5, sizeof(uop->data.mat4x5));
+ memcpy(mat, uop->data.mat4x5, sizeof(uop->data.mat4x5));
+ ff_sws_op_priv_pack_refptr(out, mat);
return 0;
}
uint8_t *mat = av_refstruct_allocz(4 * 5 * 16); /* one lane per component */
if (!mat)
return AVERROR(ENOMEM);
- out->ref = out->priv.ptr = mat;
+ ff_sws_op_priv_pack_refptr(out, mat);
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 5; j++) {