[babl] babl: detect sRGB profiles from matrix



commit 3060252e660c679163e72f971e5fa181bad766df
Author: Øyvind Kolås <pippin gimp org>
Date:   Sun Sep 3 01:00:49 2017 +0200

    babl: detect sRGB profiles from matrix
    
    When TRCs also are matching, return internal sRGB instead of creating a
    duplicate.

 babl/babl-icc.c |   19 ++++++++++++++++++-
 1 files changed, 18 insertions(+), 1 deletions(-)
---
diff --git a/babl/babl-icc.c b/babl/babl-icc.c
index 07ec1e7..a79f21b 100644
--- a/babl/babl-icc.c
+++ b/babl/babl-icc.c
@@ -756,7 +756,22 @@ babl_space_from_icc (const char *icc_data,
      wY = icc_read (s15f16, offset + 8 + 4);
      wZ = icc_read (s15f16, offset + 8 + 4 * 2);
 
-     babl_free (state);
+     if (trc_red == babl_trc ("sRGB") &&
+         trc_green == babl_trc ("sRGB") &&
+         trc_blue == babl_trc ("sRGB") &&
+         fabs(rx - 0.436042) < 0.001 &&
+         fabs(ry - 0.222492) < 0.001 &&
+         fabs(rz - 0.013916) < 0.001 &&
+         fabs(gx - 0.385122) < 0.001 &&
+         fabs(gy - 0.716915) < 0.001 &&
+         fabs(gz - 0.097063) < 0.001 &&
+         fabs(bx - 0.143053) < 0.001 &&
+         fabs(by - 0.060609) < 0.001 &&
+         fabs(bz - 0.713939) < 0.001)
+     {
+        babl_free (state);
+        return babl_space ("sRGB");
+     }
 
      {
        Babl *ret = (void*)babl_space_from_rgbxyz_matrix (NULL,
@@ -767,6 +782,8 @@ babl_space_from_icc (const char *icc_data,
                 trc_red, trc_green, trc_blue);
        ret->space.description = descr;
        ret->space.copyright = copyright;
+
+       babl_free (state);
        return ret;
      }
   }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]