[babl] babl-icc: detect 2.2 and 1.8 gammas LUTs
- From: Øyvind Kolås <ok src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [babl] babl-icc: detect 2.2 and 1.8 gammas LUTs
- Date: Wed, 23 Aug 2017 20:45:24 +0000 (UTC)
commit 2e1328ab54eb4ac826ff1ef89ae2cf76fa872bf3
Author: Øyvind Kolås <pippin gimp org>
Date: Wed Aug 23 22:43:34 2017 +0200
babl-icc: detect 2.2 and 1.8 gammas LUTs
babl/babl-icc.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++--
1 files changed, 52 insertions(+), 2 deletions(-)
---
diff --git a/babl/babl-icc.c b/babl/babl-icc.c
index f48a9e0..649ed7d 100644
--- a/babl/babl-icc.c
+++ b/babl/babl-icc.c
@@ -311,13 +311,63 @@ static const Babl *babl_trc_lut_find (float *lut, int lut_size)
if (match)
return babl_trc_gamma (1.0);
+ /* look for 2.2 match: */
+ match = 1;
+ if (lut_size > 1024)
+ {
+ for (i = 0; match && i < lut_size; i++)
+ {
+ fprintf (stderr, "%i %f %f\n", i,
+ lut[i],
+ pow ((i / (lut_size-1.0)), 2.2));
+ if (fabs (lut[i] - pow ((i / (lut_size-1.0)), 2.2)) > 0.0001)
+ match = 0;
+ }
+ }
+ else
+ {
+ for (i = 0; match && i < lut_size; i++)
+ {
+ if (fabs (lut[i] - pow ((i / (lut_size-1.0)), 2.2)) > 0.001)
+ match = 0;
+ }
+ }
+ if (match)
+ return babl_trc_gamma(2.2);
+
+
+ /* look for 1.8 match: */
+ match = 1;
+ if (lut_size > 1024)
+ {
+ for (i = 0; match && i < lut_size; i++)
+ {
+ fprintf (stderr, "%i %f %f\n", i,
+ lut[i],
+ pow ((i / (lut_size-1.0)), 1.8));
+ if (fabs (lut[i] - pow ((i / (lut_size-1.0)), 1.8)) > 0.0001)
+ match = 0;
+ }
+ }
+ else
+ {
+ for (i = 0; match && i < lut_size; i++)
+ {
+ if (fabs (lut[i] - pow ((i / (lut_size-1.0)), 1.8)) > 0.001)
+ match = 0;
+ }
+ }
+ if (match)
+ return babl_trc_gamma(2.2);
+
+
/* look for sRGB match: */
match = 1;
if (lut_size > 1024)
{
for (i = 0; match && i < lut_size; i++)
{
- if (fabs (lut[i] - gamma_2_2_to_linear (i / (lut_size-1.0))) > 0.00001)
+ if (fabs (lut[i] - gamma_2_2_to_linear (i / (lut_size-1.0))) > 0.0001)
match = 0;
}
}
@@ -325,7 +375,7 @@ static const Babl *babl_trc_lut_find (float *lut, int lut_size)
{
for (i = 0; match && i < lut_size; i++)
{
- if (fabs (lut[i] - gamma_2_2_to_linear (i / (lut_size-1.0))) > 0.015)
+ if (fabs (lut[i] - gamma_2_2_to_linear (i / (lut_size-1.0))) > 0.001)
match = 0;
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]