This is an automated email from the git hooks/post-receive script.

Git pushed a commit to branch master
in repository ffmpeg.

commit 5163b05552edbbdc98712257bda0353dfc45bb02
Author:     Niklas Haas <[email protected]>
AuthorDate: Tue Jun 9 12:44:41 2026 +0200
Commit:     Niklas Haas <[email protected]>
CommitDate: Sat Jun 20 14:08:49 2026 +0000

    swscale/uops: add SWS_UOP_READ_PALETTE
    
    This commit only adds the uop itself; it does not yet add any 
implementations.
    
    Sponsored-by: Sovereign Tech Fund
    Signed-off-by: Niklas Haas <[email protected]>
---
 libswscale/uops.c        | 5 ++++-
 libswscale/uops.h        | 1 +
 libswscale/uops_macros.h | 8 ++++++++
 3 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/libswscale/uops.c b/libswscale/uops.c
index 3c3edaf9d1..6045dd4bfd 100644
--- a/libswscale/uops.c
+++ b/libswscale/uops.c
@@ -54,6 +54,7 @@ static const struct {
     UOP_NAME(READ_PACKED,       "read_packed"),
     UOP_NAME(READ_NIBBLE,       "read_nibble"),
     UOP_NAME(READ_BIT,          "read_bit"),
+    UOP_NAME(READ_PALETTE,      "read_palette"),
     UOP_NAME(WRITE_PLANAR,      "write_planar"),
     UOP_NAME(WRITE_PACKED,      "write_packed"),
     UOP_NAME(WRITE_NIBBLE,      "write_nibble"),
@@ -500,7 +501,9 @@ static int translate_rw_op(SwsContext *ctx, SwsUOpList 
*ops, SwsUOpFlags flags,
             return AVERROR(ENOTSUP);
         uop.uop = is_read ? SWS_UOP_READ_PACKED : SWS_UOP_WRITE_PACKED;
     } else if (op->rw.mode == SWS_RW_PALETTE) {
-        return AVERROR(ENOTSUP);
+        if (op->rw.frac || !is_read)
+            return AVERROR(ENOTSUP);
+        uop.uop = SWS_UOP_READ_PALETTE;
     } else if (op->rw.frac == 3) {
         uop.uop = is_read ? SWS_UOP_READ_BIT : SWS_UOP_WRITE_BIT;
     } else if (op->rw.frac == 1) {
diff --git a/libswscale/uops.h b/libswscale/uops.h
index b2e9af30a4..533d036ca6 100644
--- a/libswscale/uops.h
+++ b/libswscale/uops.h
@@ -96,6 +96,7 @@ typedef enum SwsUOpType {
     SWS_UOP_READ_PACKED,     /* simple packed byte-aligned read */
     SWS_UOP_READ_NIBBLE,     /* fractional read (4 bits) from single plane */
     SWS_UOP_READ_BIT,        /* fractional read (1 bit) from single plane */
+    SWS_UOP_READ_PALETTE,    /* indexed read from palette in plane 1 */
 
     SWS_UOP_WRITE_PLANAR,    /* simple planar byte-aligned write */
     SWS_UOP_WRITE_PACKED,    /* simple packed byte-aligned write */
diff --git a/libswscale/uops_macros.h b/libswscale/uops_macros.h
index 77a4900248..9166a72850 100644
--- a/libswscale/uops_macros.h
+++ b/libswscale/uops_macros.h
@@ -75,6 +75,8 @@
     MACRO(__VA_ARGS__, u8_read_bit_x                           , SWS_PIXEL_U8 
, SWS_UOP_READ_BIT        , 0x1)
 #define SWS_FOR_STRUCT_U8_READ_BIT(MACRO, ...) \
     MACRO(__VA_ARGS__, u8_read_bit_x                           , .type = 
SWS_PIXEL_U8 , .uop = SWS_UOP_READ_BIT        , .mask = 0x1)
+#define SWS_FOR_U8_READ_PALETTE(MACRO, ...)
+#define SWS_FOR_STRUCT_U8_READ_PALETTE(MACRO, ...)
 #define SWS_FOR_U8_WRITE_PLANAR(MACRO, ...) \
     MACRO(__VA_ARGS__, u8_write_planar_x                       , SWS_PIXEL_U8 
, SWS_UOP_WRITE_PLANAR    , 0x1) \
     MACRO(__VA_ARGS__, u8_write_planar_xy                      , SWS_PIXEL_U8 
, SWS_UOP_WRITE_PLANAR    , 0x3) \
@@ -393,6 +395,8 @@
 #define SWS_FOR_STRUCT_U16_READ_NIBBLE(MACRO, ...)
 #define SWS_FOR_U16_READ_BIT(MACRO, ...)
 #define SWS_FOR_STRUCT_U16_READ_BIT(MACRO, ...)
+#define SWS_FOR_U16_READ_PALETTE(MACRO, ...)
+#define SWS_FOR_STRUCT_U16_READ_PALETTE(MACRO, ...)
 #define SWS_FOR_U16_WRITE_PLANAR(MACRO, ...) \
     MACRO(__VA_ARGS__, u16_write_planar_x                      , 
SWS_PIXEL_U16, SWS_UOP_WRITE_PLANAR    , 0x1) \
     MACRO(__VA_ARGS__, u16_write_planar_xy                     , 
SWS_PIXEL_U16, SWS_UOP_WRITE_PLANAR    , 0x3) \
@@ -681,6 +685,8 @@
 #define SWS_FOR_STRUCT_U32_READ_NIBBLE(MACRO, ...)
 #define SWS_FOR_U32_READ_BIT(MACRO, ...)
 #define SWS_FOR_STRUCT_U32_READ_BIT(MACRO, ...)
+#define SWS_FOR_U32_READ_PALETTE(MACRO, ...)
+#define SWS_FOR_STRUCT_U32_READ_PALETTE(MACRO, ...)
 #define SWS_FOR_U32_WRITE_PLANAR(MACRO, ...) \
     MACRO(__VA_ARGS__, u32_write_planar_x                      , 
SWS_PIXEL_U32, SWS_UOP_WRITE_PLANAR    , 0x1) \
     MACRO(__VA_ARGS__, u32_write_planar_xy                     , 
SWS_PIXEL_U32, SWS_UOP_WRITE_PLANAR    , 0x3) \
@@ -945,6 +951,8 @@
 #define SWS_FOR_STRUCT_F32_READ_NIBBLE(MACRO, ...)
 #define SWS_FOR_F32_READ_BIT(MACRO, ...)
 #define SWS_FOR_STRUCT_F32_READ_BIT(MACRO, ...)
+#define SWS_FOR_F32_READ_PALETTE(MACRO, ...)
+#define SWS_FOR_STRUCT_F32_READ_PALETTE(MACRO, ...)
 #define SWS_FOR_F32_WRITE_PLANAR(MACRO, ...)
 #define SWS_FOR_STRUCT_F32_WRITE_PLANAR(MACRO, ...)
 #define SWS_FOR_F32_WRITE_PACKED(MACRO, ...)

_______________________________________________
ffmpeg-cvslog mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to