This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit f2a88ef228f0e68b0c2953b07a5677fca636b0ff Author: Niklas Haas <[email protected]> AuthorDate: Sat Nov 7 14:22:43 2026 +0100 Commit: Niklas Haas <[email protected]> CommitDate: Sun Nov 8 01:48:12 2026 +0000 swscale/uops_tmpl: parametrize CONTINUE() by size of priv data So that CONTINUE() can, in a following commit, start skipping over the data that each kernel consumes. Signed-off-by: Niklas Haas <[email protected]> --- libswscale/uops_tmpl.c | 53 +++++++++++++++++++++++++------------------------- libswscale/uops_tmpl.h | 5 +++-- 2 files changed, 30 insertions(+), 28 deletions(-) diff --git a/libswscale/uops_tmpl.c b/libswscale/uops_tmpl.c index 67a989baa8..84e2022e62 100644 --- a/libswscale/uops_tmpl.c +++ b/libswscale/uops_tmpl.c @@ -83,7 +83,7 @@ DECL_READ(read_planar, const SwsCompMask mask) if (Z) iter->in[2] += SIZEOF_BLOCK; if (W) iter->in[3] += SIZEOF_BLOCK; - CONTINUE(x, y, z, w); + CONTINUE(0, x, y, z, w); } DECL_READ(read_packed, const SwsCompMask mask) @@ -99,7 +99,7 @@ DECL_READ(read_packed, const SwsCompMask mask) } iter->in[0] += SIZEOF_BLOCK * elems; - CONTINUE(x, y, z, w); + CONTINUE(0, x, y, z, w); } DECL_WRITE(write_planar, const SwsCompMask mask) @@ -153,7 +153,7 @@ DECL_READ(read_bit, const SwsCompMask mask) } iter->in[0] += SIZEOF_BLOCK >> 3; - CONTINUE(x, y, z, w); + CONTINUE(0, x, y, z, w); } DECL_READ(read_nibble, const SwsCompMask mask) @@ -168,7 +168,7 @@ DECL_READ(read_nibble, const SwsCompMask mask) } iter->in[0] += SIZEOF_BLOCK >> 1; - CONTINUE(x, y, z, w); + CONTINUE(0, x, y, z, w); } DECL_READ(read_palette, const SwsCompMask mask) @@ -186,7 +186,7 @@ DECL_READ(read_palette, const SwsCompMask mask) } iter->in[0] += SIZEOF_BLOCK; - CONTINUE(x, y, z, w); + CONTINUE(0, x, y, z, w); } DECL_WRITE(write_bit, const SwsCompMask mask) @@ -308,7 +308,7 @@ DECL_READ(read_planar_fv, const SwsCompMask mask, const SwsPixelType type) if (Z) iter->in[2] += SIZEOF_BLOCK; if (W) iter->in[3] += SIZEOF_BLOCK; - CONTINUE(&xs, &ys, &zs, &ws); + CONTINUE(sizeof(SwsFilterPriv), &xs, &ys, &zs, &ws); } DECL_SETUP(setup_filter_h, params, out) @@ -367,7 +367,7 @@ DECL_READ(read_planar_fh, const SwsCompMask mask, const SwsPixelType type) weights += filter_size; } - CONTINUE(&xs, &ys, &zs, &ws); + CONTINUE(sizeof(SwsFilterPriv), &xs, &ys, &zs, &ws); } SWS_FOR(PX, READ_PLANAR_FV, DECL_IMPL_READ, read_planar_fv) @@ -393,7 +393,8 @@ DECL_FUNC(permute, const SwsCompMask mask, int num_moves, /* The unneeded registers may still alias the used ones, so point them * back at the stack to avoid collisions */ block_t xx, yy, zz, ww; - CONTINUE(X ? ptr[1] : xx.px, + CONTINUE(0, + X ? ptr[1] : xx.px, Y ? ptr[2] : yy.px, Z ? ptr[3] : zz.px, W ? ptr[4] : ww.px); @@ -421,7 +422,7 @@ DECL_FUNC(copy, const SwsCompMask mask, int num_moves, memcpy(z, &data[3].px, block_size); memcpy(w, &data[4].px, block_size); - CONTINUE(x, y, z, w); + CONTINUE(0, x, y, z, w); } SWS_FOR(PX, PERMUTE, DECL_IMPL, permute) @@ -446,7 +447,7 @@ SWS_FOR_STRUCT(PX, COPY, DECL_ENTRY) if (W) ww.dst[i] = w[i]; \ } \ \ - CONTINUE(&xx, &yy, &zz, &ww); \ + CONTINUE(0, &xx, &yy, &zz, &ww); \ } \ \ SWS_FOR(PX, TO_##DST, DECL_IMPL, to_##dst) \ @@ -472,7 +473,7 @@ DECL_FUNC(lshift, const SwsCompMask mask, const uint8_t amount) if (W) w[i] <<= amount; } - CONTINUE(x, y, z, w); + CONTINUE(0, x, y, z, w); } DECL_FUNC(rshift, const SwsCompMask mask, const uint8_t amount) @@ -485,7 +486,7 @@ DECL_FUNC(rshift, const SwsCompMask mask, const uint8_t amount) if (W) w[i] >>= amount; } - CONTINUE(x, y, z, w); + CONTINUE(0, x, y, z, w); } #endif @@ -506,7 +507,7 @@ DECL_FUNC(swap_bytes, const SwsCompMask mask) if (W) w[i] = PIXEL_SWAP(w[i]); } - CONTINUE(x, y, z, w); + CONTINUE(0, x, y, z, w); } #endif /* PIXEL_SWAP */ @@ -524,7 +525,7 @@ DECL_FUNC(expand_bit, const SwsCompMask mask) if (W) w[i] = w[i] ? PIXEL_MAX : 0; } - CONTINUE(x, y, z, w); + CONTINUE(0, x, y, z, w); } #endif @@ -541,7 +542,7 @@ DECL_FUNC(expand_pair, const SwsCompMask mask) if (W) w16.u16[i] = w[i] << 8 | w[i]; } - CONTINUE(&x16, &y16, &z16, &w16); + CONTINUE(0, &x16, &y16, &z16, &w16); } DECL_FUNC(expand_quad, const SwsCompMask mask) @@ -556,7 +557,7 @@ DECL_FUNC(expand_quad, const SwsCompMask mask) if (W) w32.u32[i] = (uint32_t) w[i] << 24 | w[i] << 16 | w[i] << 8 | w[i]; } - CONTINUE(&x32, &y32, &z32, &w32); + CONTINUE(0, &x32, &y32, &z32, &w32); } #endif /* BIT_DEPTH == 8 */ @@ -595,7 +596,7 @@ DECL_FUNC(unpack, const SwsCompMask mask, if (W) w[i] = (val >> sw) & mw; } - CONTINUE(x, y, z, w); + CONTINUE(0, x, y, z, w); } DECL_FUNC(pack, const SwsCompMask mask, @@ -617,7 +618,7 @@ DECL_FUNC(pack, const SwsCompMask mask, x[i] = val; } - CONTINUE(x, y, z, w); + CONTINUE(0, x, y, z, w); } #endif /* !IS_FLOAT */ @@ -649,7 +650,7 @@ DECL_FUNC(clear, const SwsCompMask mask, const SwsCompMask one, if (W) w[i] = cw; } - CONTINUE(x, y, z, w); + CONTINUE(sizeof(pixel_t[4]), x, y, z, w); } #endif @@ -672,7 +673,7 @@ DECL_FUNC(scale, const SwsCompMask mask) if (W) w[i] *= scale; } - CONTINUE(x, y, z, w); + CONTINUE(sizeof(pixel_t), x, y, z, w); } DECL_FUNC(add, const SwsCompMask mask) @@ -685,7 +686,7 @@ DECL_FUNC(add, const SwsCompMask mask) if (W) w[i] += impl->priv.px[3]; } - CONTINUE(x, y, z, w); + CONTINUE(sizeof(pixel_t[4]), x, y, z, w); } DECL_FUNC(min, const SwsCompMask mask) @@ -698,7 +699,7 @@ DECL_FUNC(min, const SwsCompMask mask) if (W) w[i] = FFMIN(w[i], impl->priv.px[3]); } - CONTINUE(x, y, z, w); + CONTINUE(sizeof(pixel_t[4]), x, y, z, w); } DECL_FUNC(max, const SwsCompMask mask) @@ -711,7 +712,7 @@ DECL_FUNC(max, const SwsCompMask mask) if (W) w[i] = FFMAX(w[i], impl->priv.px[3]); } - CONTINUE(x, y, z, w); + CONTINUE(sizeof(pixel_t[4]), x, y, z, w); } SWS_FOR(PX, SCALE, DECL_IMPL, scale) @@ -784,7 +785,7 @@ DECL_FUNC(dither, const SwsCompMask mask, if (W) w[i] += row3[i]; } - CONTINUE(x, y, z, w); + CONTINUE(sizeof(pixel_t *), x, y, z, w); } SWS_FOR(PX, DITHER, DECL_IMPL, dither) @@ -854,7 +855,7 @@ DECL_FUNC(linear, const SwsCompMask mask, const uint32_t one, const uint32_t zer if (W) LIN_ROW(3, w); } - CONTINUE(x, y, z, w); + CONTINUE(sizeof(void *), x, y, z, w); } SWS_FOR(PX, LINEAR, DECL_IMPL, linear) @@ -1019,7 +1020,7 @@ DECL_FUNC(lut3d, const SwsCompMask mask, const int dynamic) z[i] = c.z; } - CONTINUE(x, y, z, w); + CONTINUE(sizeof(SwsLut3D *), x, y, z, w); } #endif /* IS_FLOAT */ diff --git a/libswscale/uops_tmpl.h b/libswscale/uops_tmpl.h index ba20d5684a..42e0442e15 100644 --- a/libswscale/uops_tmpl.h +++ b/libswscale/uops_tmpl.h @@ -117,8 +117,9 @@ static_assert(alignof(SwsFilterPriv) <= alignof(SwsOpPriv), #define CALL(NAME, ...) fn(NAME)(iter, impl, x, y, z, w, __VA_ARGS__) -/* Helper macro to call into the next continuation with a given type */ -#define CONTINUE(...) \ +/* Helper macro to call into the next continuation with a given type; N gives + * the size of private data consumed by this op */ +#define CONTINUE(N, ...) \ ((void (*)(SwsOpIter *, const SwsOpImpl *, \ void *restrict x, void *restrict y, \ void *restrict z, void *restrict w)) impl[1].func) \ -- 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]
