blob: 3d207195d3e7cf916e02d528d3c2290b7f22f0ca (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
#include <iostream>
#include <cmath>
#include "xyz_srgb_lut.h"
using namespace libdcp;
LUTCache<XYZsRGBLUT> XYZsRGBLUT::cache;
XYZsRGBLUT::XYZsRGBLUT(int bits, float gamma)
: LUT<int> (bits, gamma)
{
int const bit_length = pow(2, bits);
for (int i = 0; i < bit_length; ++i) {
float v = float(i) / (bit_length - 1);
if (v < (0.04045 / 12.92)) {
v *= 12.92;
} else {
v = (1.055 * pow (v, (1 / gamma))) - 0.055;
}
_lut[i] = int(v * 255);
}
}
|