From: Thomas Manni Date: Mon, 24 Jun 2019 10:12:38 +0000 (+0200) Subject: babl: performance improvement in model-gray X-Git-Tag: archive/raspbian/1%0.1.106-3+rpi1^2~15^2~11^2~95 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=788564e25e0629858216363b642e918a6f61c136;p=babl.git babl: performance improvement in model-gray Use multiplication by the inverse instead of division in premultiplied to non-premultiplied alpha conversion functions. --- diff --git a/babl/base/model-gray.c b/babl/base/model-gray.c index 2031b22..cfc251e 100644 --- a/babl/base/model-gray.c +++ b/babl/base/model-gray.c @@ -565,10 +565,11 @@ premultiplied_to_non_premultiplied (Babl *conversion, int band; double alpha = *(double *) src[src_bands-1]; double used_alpha = babl_epsilon_for_zero (alpha); + double recip_alpha = 1.0 / used_alpha; for (band = 0; band < src_bands - 1; band++) { - *(double *) dst[band] = *(double *) src[band] / used_alpha; + *(double *) dst[band] = *(double *) src[band] * recip_alpha; } *(double *) dst[dst_bands - 1] = alpha; @@ -1398,10 +1399,11 @@ premultiplied_to_non_premultiplied_float (Babl *conversion, int band; float alpha = *(float *) src[src_bands-1]; float used_alpha = babl_epsilon_for_zero_float (alpha); + float recip_alpha = 1.0f / used_alpha; for (band = 0; band < src_bands - 1; band++) { - *(float *) dst[band] = *(float *) src[band] / used_alpha; + *(float *) dst[band] = *(float *) src[band] * recip_alpha; } *(float *) dst[dst_bands - 1] = alpha;