diff options
| author | Carl Hetherington <cth@carlh.net> | 2013-03-13 16:46:50 +0000 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2013-03-13 16:46:50 +0000 |
| commit | 45625f3116a09d3c8415a54bf8d19fdbb3a3aa9b (patch) | |
| tree | 3619eb2ba2d9e754f9122b367f4eeffe56239bf9 /lut.py | |
| parent | 6e5411a943ef9b3f23cfb8dd9dcc1a756b55bfbe (diff) | |
Compute LUTs at run-time.dynamic-lut
Diffstat (limited to 'lut.py')
| -rw-r--r-- | lut.py | 127 |
1 files changed, 0 insertions, 127 deletions
diff --git a/lut.py b/lut.py deleted file mode 100644 index 9dd4ff20..00000000 --- a/lut.py +++ /dev/null @@ -1,127 +0,0 @@ -from __future__ import print_function -import math - -BIT_DEPTH = 12 -DCI_GAMMA = 2.6 -SRGB_GAMMA = 2.4; -BIT_LENGTH = int(math.pow(2, BIT_DEPTH)) -COLOR_DEPTH = BIT_LENGTH - 1 - -def boilerplate(f): - print("""/* - Copyright (C) 2012 Carl Hetherington <cth@carlh.net> - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - -*/ - - -/* This file is auto-generated by the build scripts; edits will be lost - on ./waf configure. -*/ -""", file=f) - -def make_luts(): - cc = open('src/lut.cc', 'w') - - boilerplate(cc) - - print("#include \"lut.h\"", file=cc) - - print(""" -/* sRGB color matrix for XYZ -> RGB */ -float color_matrix[3][3] = { - { 3.240454836, -1.537138850, -0.498531547}, - {-0.969266390, 1.876010929, 0.041556082}, - { 0.055643420, -0.204025854, 1.057225162} -};\n\n -""", file=cc) - - print(""" -float lut_in[COLOR_DEPTH + 1] = {\n -\t/* Bit depth: %d -\t * Reference white: DCI -\t * Gamma: %f -\t */ -""" % (BIT_DEPTH, DCI_GAMMA), file=cc) - - c = 0 - for i in range(0, BIT_LENGTH): - v = math.pow (i / (BIT_LENGTH - 1.0), DCI_GAMMA); - - if (c == 0): - print(" ", end='', file=cc) - - if i < BIT_LENGTH - 1: - print("%06f, " % v, end="", file=cc) - if c == 12: - c = 0; - print("", file=cc) - else: - c += 1 - else: - print("%06f" % v, file=cc) - - print("};", file=cc) - - print(""" -int lut_out[COLOR_DEPTH + 1] = { -\t/* Bit depth: %d -\t * Reference white: sRGB -\t * Gamma: %f -\t */ -""", file=cc) - - c = 0 - for i in range (0, BIT_LENGTH): - v = i / (BIT_LENGTH - 1.0) - - if (v < (0.04045 / 12.92)): - v *= 12.92 - else: - v = (1.055 * pow (v, (1 / SRGB_GAMMA))) - 0.055 - - v *= 255 - - if c == 0: - print(" ", end="", file=cc) - - if i < BIT_LENGTH - 1: - print("%d, " % v, end="", file=cc) - if c == 12: - c = 0; - print("", file=cc) - else: - c += 1 - else: - print("%d" % v, file=cc) - - print("};", file=cc) - - h = open('src/lut.h', 'w') - - boilerplate(h) - - print(""" -#define COLOR_DEPTH (%d) -#define DCI_COEFFICIENT (48.0/52.37) - -extern float color_matrix[3][3]; -extern int lut_out[COLOR_DEPTH + 1]; -extern float lut_in[COLOR_DEPTH + 1]; -""" % COLOR_DEPTH, file=h) - -if __name__ == "__main__": - make_luts() |
