Lines Matching full:linear
21 // Size of pre-computed table for converting from gamma to linear.
40 // Precompute gamma to linear table. in SharpYuvInitGammaTables()
58 // Precompute linear to gamma table. in SharpYuvInitGammaTables()
147 static float FromLinear709(float linear) { in FromLinear709() argument
148 if (linear < 0.f) { in FromLinear709()
150 } else if (linear < 0.018053968510807f) { in FromLinear709()
151 return linear * 4.5f; in FromLinear709()
152 } else if (linear < 1.f) { in FromLinear709()
153 return 1.09929682680944f * Powf(linear, 0.45f) - 0.09929682680944f; in FromLinear709()
162 static float FromLinear470M(float linear) { in FromLinear470M() argument
163 return Powf(CLAMP(linear, 0.f, 1.f), 1.f / 2.2f); in FromLinear470M()
170 static float FromLinear470Bg(float linear) { in FromLinear470Bg() argument
171 return Powf(CLAMP(linear, 0.f, 1.f), 1.f / 2.8f); in FromLinear470Bg()
185 static float FromLinearSmpte240(float linear) { in FromLinearSmpte240() argument
186 if (linear < 0.f) { in FromLinearSmpte240()
188 } else if (linear < 0.022821585529445f) { in FromLinearSmpte240()
189 return linear * 4.f; in FromLinearSmpte240()
190 } else if (linear < 1.f) { in FromLinearSmpte240()
191 return 1.111572195921731f * Powf(linear, 0.45f) - 0.111572195921731f; in FromLinearSmpte240()
203 static float FromLinearLog100(float linear) { in FromLinearLog100() argument
204 return (linear < 0.01f) ? 0.0f : 1.0f + Log10f(MIN(linear, 1.f)) / 2.0f; in FromLinearLog100()
214 static float FromLinearLog100Sqrt10(float linear) { in FromLinearLog100Sqrt10() argument
215 return (linear < 0.00316227766f) ? 0.0f in FromLinearLog100Sqrt10()
216 : 1.0f + Log10f(MIN(linear, 1.f)) / 2.5f; in FromLinearLog100Sqrt10()
228 static float FromLinearIec61966(float linear) { in FromLinearIec61966() argument
229 if (linear <= -0.018053968510807f) { in FromLinearIec61966()
230 return -1.09929682680944f * Powf(-linear, 0.45f) + 0.09929682680944f; in FromLinearIec61966()
231 } else if (linear < 0.018053968510807f) { in FromLinearIec61966()
232 return linear * 4.5f; in FromLinearIec61966()
234 return 1.09929682680944f * Powf(linear, 0.45f) - 0.09929682680944f; in FromLinearIec61966()
251 static float FromLinearBt1361(float linear) { in FromLinearBt1361() argument
252 if (linear < -0.25f) { in FromLinearBt1361()
254 } else if (linear < 0.f) { in FromLinearBt1361()
255 return -0.27482420670236f * Powf(-4.f * linear, 0.45f) + 0.02482420670236f; in FromLinearBt1361()
256 } else if (linear < 0.018053968510807f) { in FromLinearBt1361()
257 return linear * 4.5f; in FromLinearBt1361()
258 } else if (linear < 1.f) { in FromLinearBt1361()
259 return 1.09929682680944f * Powf(linear, 0.45f) - 0.09929682680944f; in FromLinearBt1361()
274 static float FromLinearPq(float linear) { in FromLinearPq() argument
275 if (linear > 0.f) { in FromLinearPq()
276 const float pow_linear = Powf(linear, 653.f / 4096.f); in FromLinearPq()
288 static float FromLinearSmpte428(float linear) { in FromLinearSmpte428() argument
289 return Powf(0.91655527974030934f * MAX(linear, 0.f), 1.f / 2.6f); in FromLinearSmpte428()
303 static float FromLinearHlg(float linear) { in FromLinearHlg() argument
304 linear = Powf(linear, 1.f / 1.2f); in FromLinearHlg()
305 if (linear < 0.f) { in FromLinearHlg()
307 } else if (linear <= (1.f / 12.f)) { in FromLinearHlg()
308 return sqrtf(3.f * linear); in FromLinearHlg()
310 return 0.17883277f * logf(12.f * linear - 0.28466892f) + 0.55991073f; in FromLinearHlg()
315 float v_float, linear; in SharpYuvGammaToLinear() local
325 linear = ToLinear709(v_float); in SharpYuvGammaToLinear()
328 linear = ToLinear470M(v_float); in SharpYuvGammaToLinear()
331 linear = ToLinear470Bg(v_float); in SharpYuvGammaToLinear()
334 linear = ToLinearSmpte240(v_float); in SharpYuvGammaToLinear()
339 linear = ToLinearLog100(v_float); in SharpYuvGammaToLinear()
342 linear = ToLinearLog100Sqrt10(v_float); in SharpYuvGammaToLinear()
345 linear = ToLinearIec61966(v_float); in SharpYuvGammaToLinear()
348 linear = ToLinearBt1361(v_float); in SharpYuvGammaToLinear()
351 linear = ToLinearPq(v_float); in SharpYuvGammaToLinear()
354 linear = ToLinearSmpte428(v_float); in SharpYuvGammaToLinear()
357 linear = ToLinearHlg(v_float); in SharpYuvGammaToLinear()
361 linear = 0; in SharpYuvGammaToLinear()
364 return (uint32_t)Roundf(linear * ((1 << 16) - 1)); in SharpYuvGammaToLinear()
369 float v_float, linear; in SharpYuvLinearToGamma() local
379 linear = FromLinear709(v_float); in SharpYuvLinearToGamma()
382 linear = FromLinear470M(v_float); in SharpYuvLinearToGamma()
385 linear = FromLinear470Bg(v_float); in SharpYuvLinearToGamma()
388 linear = FromLinearSmpte240(v_float); in SharpYuvLinearToGamma()
393 linear = FromLinearLog100(v_float); in SharpYuvLinearToGamma()
396 linear = FromLinearLog100Sqrt10(v_float); in SharpYuvLinearToGamma()
399 linear = FromLinearIec61966(v_float); in SharpYuvLinearToGamma()
402 linear = FromLinearBt1361(v_float); in SharpYuvLinearToGamma()
405 linear = FromLinearPq(v_float); in SharpYuvLinearToGamma()
408 linear = FromLinearSmpte428(v_float); in SharpYuvLinearToGamma()
411 linear = FromLinearHlg(v_float); in SharpYuvLinearToGamma()
415 linear = 0; in SharpYuvLinearToGamma()
418 return (uint16_t)Roundf(linear * ((1 << bit_depth) - 1)); in SharpYuvLinearToGamma()