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]

Reply via email to