aboutsummaryrefslogtreecommitdiffstats
path: root/libavfilter
diff options
context:
space:
mode:
authorClément Bœsch <u@pkh.me>2022-12-27 17:38:10 +0100
committerClément Bœsch <u@pkh.me>2023-01-03 17:18:55 +0100
commit3cafbdc083914d3a921fb241625ca8b6ccae1297 (patch)
treeeb371d2713df2a1f2d099bb4ff5b0e5aedf83e90 /libavfilter
parent051926868c9d901d719c6a41ae7653f4190aae77 (diff)
downloadffmpeg-3cafbdc083914d3a921fb241625ca8b6ccae1297.tar.gz
avfilter/palette: add lowbias32 hashing
Diffstat (limited to 'libavfilter')
-rw-r--r--libavfilter/palette.c10
-rw-r--r--libavfilter/palette.h5
2 files changed, 15 insertions, 0 deletions
diff --git a/libavfilter/palette.c b/libavfilter/palette.c
index e3a27fc51e..bba136408c 100644
--- a/libavfilter/palette.c
+++ b/libavfilter/palette.c
@@ -207,3 +207,13 @@ uint32_t ff_oklab_int_to_srgb_u8(struct Lab c)
return r<<16 | g<<8 | b;
}
+
+uint32_t ff_lowbias32(uint32_t x)
+{
+ x ^= x >> 16;
+ x *= 0x7feb352d;
+ x ^= x >> 15;
+ x *= 0x846ca68b;
+ x ^= x >> 16;
+ return x;
+}
diff --git a/libavfilter/palette.h b/libavfilter/palette.h
index 6839bf6fc6..d3acc854ba 100644
--- a/libavfilter/palette.h
+++ b/libavfilter/palette.h
@@ -55,4 +55,9 @@ struct Lab ff_srgb_u8_to_oklab_int(uint32_t srgb);
*/
uint32_t ff_oklab_int_to_srgb_u8(struct Lab c);
+/*
+ * lowbias32 hashing from https://nullprogram.com/blog/2018/07/31/
+ */
+uint32_t ff_lowbias32(uint32_t x);
+
#endif /* AVFILTER_PALETTE_H */