summaryrefslogtreecommitdiff
path: root/libavfilter/vf_paletteuse.c
diff options
context:
space:
mode:
authorClément Bœsch <u@pkh.me>2022-12-27 17:47:41 +0100
committerClément Bœsch <u@pkh.me>2023-01-03 17:18:55 +0100
commit6c7b54e9622b304db4230bcd8136c7daf47b6a6a (patch)
tree61af54c18600891c1296dc5d54f3e81e846b7a02 /libavfilter/vf_paletteuse.c
parentc9084cd0e2d7d3a56f2ae32b01f4cecc9c4d4597 (diff)
avfilter/paletteuse: use lowbias32 for color hashing
Impact is more negligible than previous commit but still faster (1.02x).
Diffstat (limited to 'libavfilter/vf_paletteuse.c')
-rw-r--r--libavfilter/vf_paletteuse.c8
1 files changed, 2 insertions, 6 deletions
diff --git a/libavfilter/vf_paletteuse.c b/libavfilter/vf_paletteuse.c
index 65c89ff0bf..0179a399f2 100644
--- a/libavfilter/vf_paletteuse.c
+++ b/libavfilter/vf_paletteuse.c
@@ -70,8 +70,7 @@ struct color_node {
int left_id, right_id;
};
-#define NBITS 5
-#define CACHE_SIZE (1<<(3*NBITS))
+#define CACHE_SIZE (1<<15)
struct cached_color {
uint32_t color;
@@ -347,10 +346,7 @@ static av_always_inline int color_get(PaletteUseContext *s, uint32_t color,
{
int i;
struct color_info clrinfo;
- const uint8_t rhash = (color>>16) & ((1<<NBITS)-1);
- const uint8_t ghash = (color>> 8) & ((1<<NBITS)-1);
- const uint8_t bhash = color & ((1<<NBITS)-1);
- const unsigned hash = rhash<<(NBITS*2) | ghash<<NBITS | bhash;
+ const uint32_t hash = ff_lowbias32(color) & (CACHE_SIZE - 1);
struct cache_node *node = &s->cache[hash];
struct cached_color *e;