[babl] babl: only care about single precision for TRC
- From: Øyvind Kolås <ok src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [babl] babl: only care about single precision for TRC
- Date: Wed, 30 Aug 2017 15:57:28 +0000 (UTC)
commit 1791ed0bacd4394491a51924a8635241cd9f2803
Author: Øyvind Kolås <pippin gimp org>
Date: Wed Aug 30 17:54:44 2017 +0200
babl: only care about single precision for TRC
babl/babl-internal.h | 23 +---------------
babl/babl-trc.c | 30 +++++++--------------
babl/babl-trc.h | 70 +++++++------------------------------------------
3 files changed, 22 insertions(+), 101 deletions(-)
---
diff --git a/babl/babl-internal.h b/babl/babl-internal.h
index b5a7532..59e484a 100644
--- a/babl/babl-internal.h
+++ b/babl/babl-internal.h
@@ -338,10 +338,6 @@ void babl_init_db (void);
void babl_store_db (void);
int _babl_max_path_len (void);
-double babl_trc_from_linear (const Babl *trc, double value);
-double babl_trc_to_linear (const Babl *trc, double value);
-float babl_trc_from_linearf (const Babl *trc, float value);
-float babl_trc_to_linearf (const Babl *trc, float value);
const Babl *
babl_trc_new (const char *name,
@@ -355,30 +351,15 @@ babl_trc_new (const char *name,
*
* Makes linear data non-linear according to the trc.
*/
-double babl_trc_from_linear (const Babl *trc, double value);
+float babl_trc_from_linear (const Babl *trc, float value);
/**
* babl_trc_from_linear:
*
* Makes non-linear data with the TRC linear data.
*/
-double babl_trc_to_linear (const Babl *trc, double value);
+float babl_trc_to_linear (const Babl *trc, float value);
-/**
- * babl_trc_from_linearf:
- *
- * Makes linear data non-linear according to the trc, single precision float,
- * a little bit faster than the double version.
- */
-float babl_trc_from_linearf (const Babl *trc, float value);
-
-/**
- * babl_trc_from_linearf:
- *
- * Makes non-linear data with the TRC linear data, single precision float
- * alittle bit faster than the double version.
- */
-float babl_trc_to_linearf (const Babl *trc, float value);
void babl_space_to_xyz (const Babl *space, const double *rgb, double *xyz);
void babl_space_from_xyz (const Babl *space, const double *xyz, double *rgb);
diff --git a/babl/babl-trc.c b/babl/babl-trc.c
index cabd64d..b133f8d 100644
--- a/babl/babl-trc.c
+++ b/babl/babl-trc.c
@@ -103,20 +103,20 @@ babl_trc_new (const char *name,
switch (trc_db[i].type)
{
case BABL_TRC_LINEAR:
- trc_db[i].fun_to_linear = _babl_trc_linearf;
- trc_db[i].fun_from_linear = _babl_trc_linearf;
+ trc_db[i].fun_to_linear = _babl_trc_linear;
+ trc_db[i].fun_from_linear = _babl_trc_linear;
break;
case BABL_TRC_GAMMA:
- trc_db[i].fun_to_linear = _babl_trc_gamma_to_linearf;
- trc_db[i].fun_from_linear = _babl_trc_gamma_from_linearf;
+ trc_db[i].fun_to_linear = _babl_trc_gamma_to_linear;
+ trc_db[i].fun_from_linear = _babl_trc_gamma_from_linear;
break;
case BABL_TRC_SRGB:
- trc_db[i].fun_to_linear = _babl_trc_srgb_to_linearf;
- trc_db[i].fun_from_linear = _babl_trc_srgb_from_linearf;
+ trc_db[i].fun_to_linear = _babl_trc_srgb_to_linear;
+ trc_db[i].fun_from_linear = _babl_trc_srgb_from_linear;
break;
case BABL_TRC_LUT:
- trc_db[i].fun_to_linear = babl_trc_lut_to_linearf;
- trc_db[i].fun_from_linear = babl_trc_lut_from_linearf;
+ trc_db[i].fun_to_linear = babl_trc_lut_to_linear;
+ trc_db[i].fun_from_linear = babl_trc_lut_from_linear;
break;
}
return (Babl*)&trc_db[i];
@@ -162,26 +162,16 @@ babl_trc_class_init (void)
babl_trc_new ("linear", BABL_TRC_LINEAR, 1.0, 0, NULL);
}
-double babl_trc_from_linear (const Babl *trc_, double value)
+float babl_trc_from_linear (const Babl *trc_, float value)
{
return _babl_trc_from_linear (trc_, value);
}
-double babl_trc_to_linear (const Babl *trc_, double value)
+float babl_trc_to_linear (const Babl *trc_, float value)
{
return _babl_trc_to_linear (trc_, value);
}
-float babl_trc_from_linearf (const Babl *trc_, float value)
-{
- return _babl_trc_from_linearf (trc_, value);
-}
-
-float babl_trc_to_linearf (const Babl *trc_, float value)
-{
- return _babl_trc_to_linearf (trc_, value);
-}
-
const Babl *babl_trc_lut_find (float *lut, int lut_size)
{
int i;
diff --git a/babl/babl-trc.h b/babl/babl-trc.h
index 3f36dac..779ec97 100644
--- a/babl/babl-trc.h
+++ b/babl/babl-trc.h
@@ -44,7 +44,7 @@ typedef struct
} BablTRC;
-static inline float babl_trc_lut_from_linearf (const Babl *trc_, float value)
+static inline float babl_trc_lut_from_linear (const Babl *trc_, float value)
{
BablTRC *trc = (void*)trc_;
int entry = value * trc->lut_size + 0.5;
@@ -56,7 +56,7 @@ static inline float babl_trc_lut_from_linearf (const Babl *trc_, float value)
return ret;
}
-static inline float babl_trc_lut_to_linearf (const Babl *trc_, float value)
+static inline float babl_trc_lut_to_linear (const Babl *trc_, float value)
{
BablTRC *trc = (void*)trc_;
int entry = value * trc->lut_size + 0.5;
@@ -68,90 +68,40 @@ static inline float babl_trc_lut_to_linearf (const Babl *trc_, float value)
return ret;
}
-static inline double babl_trc_lut_from_linear (const Babl *trc_, double value)
-{
- BablTRC *trc = (void*)trc_;
- int entry = value * trc->lut_size + 0.5;
- double ret = trc->inv_lut[
- (entry >= 0 && entry < trc->lut_size) ?
- entry :
- trc->lut_size-1];
- /* XXX: fixme, do linear interpolation */
- return ret;
-}
-
-static inline double babl_trc_lut_to_linear (const Babl *trc_, double value)
-{
- BablTRC *trc = (void*)trc_;
- int entry = value * trc->lut_size + 0.5;
- double ret = trc->lut[
- (entry >= 0 && entry < trc->lut_size) ?
- entry :
- trc->lut_size-1];
- /* XXX: fixme, do linear interpolation */
- return ret;
-}
-
-static inline double _babl_trc_from_linear (const Babl *trc_, double value)
-{
- BablTRC *trc = (void*)trc_;
- switch (trc->type)
- {
- case BABL_TRC_LINEAR: return value;
- case BABL_TRC_GAMMA: return pow (value, 1.0/trc->gamma);
- case BABL_TRC_SRGB: return babl_linear_to_gamma_2_2 (value);
- case BABL_TRC_LUT: return babl_trc_lut_from_linear (trc_, value);
- }
- return value;
-}
-
-static inline double _babl_trc_to_linear (const Babl *trc_, double value)
-{
- BablTRC *trc = (void*)trc_;
- switch (trc->type)
- {
- case BABL_TRC_LINEAR: return value;
- case BABL_TRC_GAMMA: return pow (value, trc->gamma);
- case BABL_TRC_SRGB: return babl_gamma_2_2_to_linear (value);
- case BABL_TRC_LUT: return babl_trc_lut_to_linear (trc_, value);
- }
- return value;
-}
-
-static inline float _babl_trc_linearf (const Babl *trc_, float value)
+static inline float _babl_trc_linear (const Babl *trc_, float value)
{
return 1.0;
}
-static inline float _babl_trc_gamma_to_linearf (const Babl *trc_, float value)
+static inline float _babl_trc_gamma_to_linear (const Babl *trc_, float value)
{
BablTRC *trc = (void*)trc_;
return powf (value, trc->gamma);
}
-static inline float _babl_trc_gamma_from_linearf (const Babl *trc_, float value)
+static inline float _babl_trc_gamma_from_linear (const Babl *trc_, float value)
{
BablTRC *trc = (void*)trc_;
return powf (value, 1.0f/trc->gamma);
}
-static inline float _babl_trc_srgb_to_linearf (const Babl *trc_, float value)
+static inline float _babl_trc_srgb_to_linear (const Babl *trc_, float value)
{
- return babl_gamma_2_2_to_linearf (value);
+ return babl_gamma_2_2_to_linear (value);
}
-static inline float _babl_trc_srgb_from_linearf (const Babl *trc_, float value)
+static inline float _babl_trc_srgb_from_linear (const Babl *trc_, float value)
{
return babl_linear_to_gamma_2_2f (value);
}
-static inline float _babl_trc_from_linearf (const Babl *trc_, float value)
+static inline float _babl_trc_from_linear (const Babl *trc_, float value)
{
BablTRC *trc = (void*)trc_;
return trc->fun_from_linear (trc_, value);
}
-static inline float _babl_trc_to_linearf (const Babl *trc_, float value)
+static inline float _babl_trc_to_linear (const Babl *trc_, float value)
{
BablTRC *trc = (void*)trc_;
return trc->fun_to_linear (trc_, value);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]