73 float A,
float B,
float C,
74 float D,
float E,
float F);
79 float K,
float R,
float G,
80 float a,
float b,
float c);
85 float a,
float b,
float c) {
92 , 2413/128.0f, -2392/128.0f, 8192/1305.0f);
97 , 1/0.17883277f, 0.28466892f, 0.55991073f);
242 const int priority[],
int priorities,
248 const int priority[] = {0,1};
250 priority,
sizeof(priority)/
sizeof(*priority),
385 memset(
p, 0,
sizeof(*
p));
393 for (
int i = 0;
i < 3; ++
i) {
394 p->trc[
i].table_entries = 0;
395 p->trc[
i].parametric = *tf;
400 p->has_toXYZD50 =
true;
struct skcms_ICCProfile skcms_ICCProfile
SKCMS_API bool skcms_PrimariesToXYZD50(float rx, float ry, float gx, float gy, float bx, float by, float wx, float wy, skcms_Matrix3x3 *toXYZD50)
struct skcms_A2B skcms_A2B
SKCMS_API bool skcms_AdaptToXYZD50(float wx, float wy, skcms_Matrix3x3 *toXYZD50)
SKCMS_API skcms_Matrix3x3 skcms_Matrix3x3_concat(const skcms_Matrix3x3 *, const skcms_Matrix3x3 *)
@ skcms_PixelFormat_BGRA_ffff
@ skcms_PixelFormat_RGBA_8888_sRGB
@ skcms_PixelFormat_BGRA_hhhh
@ skcms_PixelFormat_RGBA_16161616BE
@ skcms_PixelFormat_RGB_161616LE
@ skcms_PixelFormat_BGR_hhh_Norm
@ skcms_PixelFormat_BGR_101010x_XR
@ skcms_PixelFormat_RGBA_ffff
@ skcms_PixelFormat_BGR_fff
@ skcms_PixelFormat_RGBA_1010102
@ skcms_PixelFormat_BGR_888
@ skcms_PixelFormat_BGRA_8888
@ skcms_PixelFormat_BGRA_10101010_XR
@ skcms_PixelFormat_RGBA_hhhh
@ skcms_PixelFormat_RGB_fff
@ skcms_PixelFormat_RGB_hhh_Norm
@ skcms_PixelFormat_BGR_161616BE
@ skcms_PixelFormat_RGBA_8888
@ skcms_PixelFormat_BGRA_hhhh_Norm
@ skcms_PixelFormat_RGB_hhh
@ skcms_PixelFormat_BGRA_16161616BE
@ skcms_PixelFormat_RGB_888
@ skcms_PixelFormat_BGR_hhh
@ skcms_PixelFormat_BGR_565
@ skcms_PixelFormat_ABGR_4444
@ skcms_PixelFormat_BGRA_8888_sRGB
@ skcms_PixelFormat_ARGB_4444
@ skcms_PixelFormat_BGR_161616LE
@ skcms_PixelFormat_RGB_565
@ skcms_PixelFormat_RGB_161616BE
@ skcms_PixelFormat_BGRA_1010102
@ skcms_PixelFormat_RGBA_hhhh_Norm
@ skcms_PixelFormat_RGBA_10101010_XR
@ skcms_PixelFormat_BGRA_16161616LE
@ skcms_PixelFormat_RGB_101010x_XR
@ skcms_PixelFormat_RGBA_16161616LE
static void skcms_SetXYZD50(skcms_ICCProfile *p, const skcms_Matrix3x3 *m)
static void skcms_SetTransferFunction(skcms_ICCProfile *p, const skcms_TransferFunction *tf)
struct skcms_CICP skcms_CICP
struct skcms_Matrix3x4 skcms_Matrix3x4
SKCMS_API bool skcms_TransferFunction_makePQish(skcms_TransferFunction *, float A, float B, float C, float D, float E, float F)
SKCMS_API bool skcms_AreApproximateInverses(const skcms_Curve *curve, const skcms_TransferFunction *inv_tf)
static bool skcms_Parse(const void *buf, size_t len, skcms_ICCProfile *profile)
SKCMS_API float skcms_TransferFunction_eval(const skcms_TransferFunction *, float)
SKCMS_API bool skcms_MakeUsableAsDestination(skcms_ICCProfile *profile)
SKCMS_API const skcms_TransferFunction * skcms_Identity_TransferFunction(void)
SKCMS_API bool skcms_ParseWithA2BPriority(const void *, size_t, const int priority[], int priorities, skcms_ICCProfile *)
SKCMS_API bool skcms_TransferFunction_invert(const skcms_TransferFunction *, skcms_TransferFunction *)
SKCMS_API bool skcms_GetCHAD(const skcms_ICCProfile *, skcms_Matrix3x3 *)
SKCMS_API bool skcms_Matrix3x3_invert(const skcms_Matrix3x3 *, skcms_Matrix3x3 *)
SKCMS_API const skcms_ICCProfile * skcms_XYZD50_profile(void)
union skcms_Curve skcms_Curve
SKCMS_API const skcms_TransferFunction * skcms_sRGB_TransferFunction(void)
@ skcms_AlphaFormat_Unpremul
@ skcms_AlphaFormat_PremulAsEncoded
@ skcms_AlphaFormat_Opaque
SKCMS_API const skcms_TransferFunction * skcms_sRGB_Inverse_TransferFunction(void)
static bool skcms_TransferFunction_makeHLG(skcms_TransferFunction *tf)
SKCMS_API bool skcms_TransferFunction_makeScaledHLGish(skcms_TransferFunction *, float K, float R, float G, float a, float b, float c)
SKCMS_API const skcms_ICCProfile * skcms_sRGB_profile(void)
SKCMS_API bool skcms_GetWTPT(const skcms_ICCProfile *, float xyz[3])
SKCMS_API bool skcms_MakeUsableAsDestinationWithSingleCurve(skcms_ICCProfile *profile)
static bool skcms_TransferFunction_makeHLGish(skcms_TransferFunction *fn, float R, float G, float a, float b, float c)
SKCMS_API bool skcms_ApproximateCurve(const skcms_Curve *curve, skcms_TransferFunction *approx, float *max_error)
SKCMS_API bool skcms_TransferFunction_isSRGBish(const skcms_TransferFunction *)
SKCMS_API bool skcms_Transform(const void *src, skcms_PixelFormat srcFmt, skcms_AlphaFormat srcAlpha, const skcms_ICCProfile *srcProfile, void *dst, skcms_PixelFormat dstFmt, skcms_AlphaFormat dstAlpha, const skcms_ICCProfile *dstProfile, size_t npixels)
struct skcms_B2A skcms_B2A
SKCMS_API bool skcms_TransferFunction_isHLGish(const skcms_TransferFunction *)
SKCMS_API void skcms_DisableRuntimeCPUDetection(void)
SKCMS_API bool skcms_TransferFunction_isPQish(const skcms_TransferFunction *)
static void skcms_Init(skcms_ICCProfile *p)
static bool skcms_TransferFunction_makePQ(skcms_TransferFunction *tf)
SKCMS_API skcms_TFType skcms_TransferFunction_getType(const skcms_TransferFunction *)
struct skcms_TransferFunction skcms_TransferFunction
SKCMS_API bool skcms_ApproximatelyEqualProfiles(const skcms_ICCProfile *A, const skcms_ICCProfile *B)
struct skcms_Matrix3x3 skcms_Matrix3x3
SKCMS_API bool skcms_TRCs_AreApproximateInverse(const skcms_ICCProfile *profile, const skcms_TransferFunction *inv_tf)
skcms_Curve matrix_curves[3]
skcms_Curve output_curves[3]
skcms_Curve input_curves[4]
skcms_Curve output_curves[4]
skcms_Curve matrix_curves[3]
skcms_Curve input_curves[3]
uint8_t matrix_coefficients
uint8_t video_full_range_flag
uint8_t transfer_characteristics
uint32_t data_color_space
uint32_t alias_of_table_entries
skcms_TransferFunction parametric