diff options
author | Clément Bœsch <u@pkh.me> | 2022-12-27 17:47:41 +0100 |
---|---|---|
committer | Clément Bœsch <u@pkh.me> | 2023-01-03 17:18:55 +0100 |
commit | 6c7b54e9622b304db4230bcd8136c7daf47b6a6a (patch) | |
tree | 61af54c18600891c1296dc5d54f3e81e846b7a02 | |
parent | c9084cd0e2d7d3a56f2ae32b01f4cecc9c4d4597 (diff) | |
download | ffmpeg-6c7b54e9622b304db4230bcd8136c7daf47b6a6a.tar.gz |
avfilter/paletteuse: use lowbias32 for color hashing
Impact is more negligible than previous commit but still faster (1.02x).
-rw-r--r-- | libavfilter/vf_paletteuse.c | 8 |
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; |