This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit 62173502692d9bc03f1d9725b9ee40167c4bb8ec Author: Niklas Haas <[email protected]> AuthorDate: Tue Jun 9 12:46:20 2026 +0200 Commit: Niklas Haas <[email protected]> CommitDate: Sat Jun 20 14:08:49 2026 +0000 swscale/uops_backend: add SWS_UOP_READ_PALETTE reference implementation This does not actually generate any code yet as the macro is still empty, but that will change once I add support for generated palette reads to the format handling code. This logic merely needs to be in place first to avoid introducing broken intermediate states where palette uops are generated but not implemented by the reference backend. Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas <[email protected]> --- libswscale/uops_backend.c | 1 + libswscale/uops_tmpl.c | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/libswscale/uops_backend.c b/libswscale/uops_backend.c index 56176b1e50..69d607c958 100644 --- a/libswscale/uops_backend.c +++ b/libswscale/uops_backend.c @@ -66,6 +66,7 @@ SWS_FOR(TYPE, READ_PACKED, REF_ENTRY) \ SWS_FOR(TYPE, READ_NIBBLE, REF_ENTRY) \ SWS_FOR(TYPE, READ_BIT, REF_ENTRY) \ + SWS_FOR(TYPE, READ_PALETTE, REF_ENTRY) \ SWS_FOR(TYPE, PERMUTE, REF_ENTRY) \ SWS_FOR(TYPE, COPY, REF_ENTRY) \ SWS_FOR(TYPE, WRITE_PLANAR, REF_ENTRY) \ diff --git a/libswscale/uops_tmpl.c b/libswscale/uops_tmpl.c index 44e8551083..214f7a0ef9 100644 --- a/libswscale/uops_tmpl.c +++ b/libswscale/uops_tmpl.c @@ -163,6 +163,24 @@ DECL_READ(read_nibble, const SwsCompMask mask) CONTINUE(x, y, z, w); } +DECL_READ(read_palette, const SwsCompMask mask) +{ + av_assert2(mask == SWS_COMP_ELEMS(4)); + + SWS_LOOP + for (int i = 0; i < SWS_BLOCK_SIZE; i++) { + const pixel_t index = in0[i]; + const pixel_t *value = &in1[index * 4]; + x[i] = value[0]; + y[i] = value[1]; + z[i] = value[2]; + w[i] = value[3]; + } + + iter->in[0] += SIZEOF_BLOCK; + CONTINUE(x, y, z, w); +} + DECL_WRITE(write_bit, const SwsCompMask mask) { av_assert2(mask == SWS_COMP_ELEMS(1)); @@ -199,6 +217,7 @@ SWS_FOR(PX, READ_PLANAR, DECL_IMPL_READ, read_planar) SWS_FOR(PX, READ_PACKED, DECL_IMPL_READ, read_packed) SWS_FOR(PX, READ_NIBBLE, DECL_IMPL_READ, read_nibble) SWS_FOR(PX, READ_BIT, DECL_IMPL_READ, read_bit) +SWS_FOR(PX, READ_PALETTE, DECL_IMPL_READ, read_palette) SWS_FOR(PX, WRITE_PLANAR, DECL_IMPL_WRITE, write_planar) SWS_FOR(PX, WRITE_PACKED, DECL_IMPL_WRITE, write_packed) SWS_FOR(PX, WRITE_NIBBLE, DECL_IMPL_WRITE, write_nibble) @@ -208,6 +227,7 @@ SWS_FOR_STRUCT(PX, READ_PLANAR, DECL_ENTRY) SWS_FOR_STRUCT(PX, READ_PACKED, DECL_ENTRY) SWS_FOR_STRUCT(PX, READ_NIBBLE, DECL_ENTRY) SWS_FOR_STRUCT(PX, READ_BIT, DECL_ENTRY) +SWS_FOR_STRUCT(PX, READ_PALETTE, DECL_ENTRY) SWS_FOR_STRUCT(PX, WRITE_PLANAR, DECL_ENTRY) SWS_FOR_STRUCT(PX, WRITE_PACKED, DECL_ENTRY) SWS_FOR_STRUCT(PX, WRITE_NIBBLE, DECL_ENTRY) _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
