From 3659655750746f33bcf893356bdcc65c5c413400 Mon Sep 17 00:00:00 2001 From: Lovell Fuller Date: Tue, 21 Jul 2020 11:39:06 +0100 Subject: [PATCH] Performance: improve XYZ to LAB conversion by ~15% - VIPS_CLIP is faster than fmin/fmax based library calls - Cast to int to ensure the cubed root LUT is not referenced by NaN --- libvips/colour/XYZ2Lab.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libvips/colour/XYZ2Lab.c b/libvips/colour/XYZ2Lab.c index d9acebd3..6c75ed91 100644 --- a/libvips/colour/XYZ2Lab.c +++ b/libvips/colour/XYZ2Lab.c @@ -133,15 +133,15 @@ vips_XYZ2Lab_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ) nZ = QUANT_ELEMENTS * p[2] / XYZ2Lab->Z0; p += 3; - i = VIPS_FCLIP( 0, nX, QUANT_ELEMENTS - 2 ); + i = VIPS_CLIP( 0, (int) nX, QUANT_ELEMENTS - 2 ); f = nX - i; cbx = cbrt_table[i] + f * (cbrt_table[i + 1] - cbrt_table[i]); - i = VIPS_FCLIP( 0, nY, QUANT_ELEMENTS - 2 ); + i = VIPS_CLIP( 0, (int) nY, QUANT_ELEMENTS - 2 ); f = nY - i; cby = cbrt_table[i] + f * (cbrt_table[i + 1] - cbrt_table[i]); - i = VIPS_FCLIP( 0, nZ, QUANT_ELEMENTS - 2 ); + i = VIPS_CLIP( 0, (int) nZ, QUANT_ELEMENTS - 2 ); f = nZ - i; cbz = cbrt_table[i] + f * (cbrt_table[i + 1] - cbrt_table[i]);