[FFmpeg-cvslog] avfilter/paletteuse: use lowbias32 for color hashing
Clément Bœsch
git at videolan.org
Tue Jan 3 18:26:28 EET 2023
ffmpeg | branch: master | Clément Bœsch <u at pkh.me> | Tue Dec 27 17:47:41 2022 +0100| [6c7b54e9622b304db4230bcd8136c7daf47b6a6a] | committer: Clément Bœsch
avfilter/paletteuse: use lowbias32 for color hashing
Impact is more negligible than previous commit but still faster (1.02x).
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=6c7b54e9622b304db4230bcd8136c7daf47b6a6a
---
libavfilter/vf_paletteuse.c | 8 ++------
1 file 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;
More information about the ffmpeg-cvslog
mailing list