1.12x faster overall in palettegen on my machine. --- libavfilter/vf_palettegen.c | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-)
diff --git a/libavfilter/vf_palettegen.c b/libavfilter/vf_palettegen.c index 6301cf6358..97e12f7274 100644 --- a/libavfilter/vf_palettegen.c +++ b/libavfilter/vf_palettegen.c @@ -63,8 +63,7 @@ enum { NB_STATS_MODE }; -#define NBITS 5 -#define HIST_SIZE (1<<(3*NBITS)) +#define HIST_SIZE (1<<15) typedef struct PaletteGenContext { const AVClass *class; @@ -387,27 +386,13 @@ static AVFrame *get_palette_frame(AVFilterContext *ctx) return out; } -/** - * Hashing function for the color. - * It keeps the NBITS least significant bit of each component to make it - * "random" even if the scene doesn't have much different colors. - */ -static inline unsigned color_hash(uint32_t color) -{ - const uint8_t r = color >> 16 & ((1<<NBITS)-1); - const uint8_t g = color >> 8 & ((1<<NBITS)-1); - const uint8_t b = color & ((1<<NBITS)-1); - - return r << (NBITS * 2) | g << NBITS | b; -} - /** * Locate the color in the hash table and increment its counter. */ static int color_inc(struct hist_node *hist, uint32_t color) { int i; - const unsigned hash = color_hash(color); + const uint32_t hash = ff_lowbias32(color) & (HIST_SIZE - 1); struct hist_node *node = &hist[hash]; struct color_ref *e; -- 2.39.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".