This commit is contained in:
2025-12-28 13:55:10 -08:00
commit 9b4219aa67
131 changed files with 32853 additions and 0 deletions

48
study/create_matrix.py Executable file
View File

@ -0,0 +1,48 @@
#!/usr/bin/env python3
import sys
def usage():
print("usage: Kr Kg Kb full|limited")
print("examples:")
print(" create_matrix.py 0.2126 0.7152 0.0722 full")
print(" create_matrix.py 0.2126 0.7152 0.0722 limited")
exit(1)
def a(v):
if v >= 0:
return " %f" % v
else:
return "%f" % v
def main(argv):
if len(argv) != 5:
usage()
Kr = float(sys.argv[1])
Kg = float(sys.argv[2])
Kb = float(sys.argv[3])
color_range = sys.argv[4]
luma_offset = 0.0
transform_range = 1.0
if color_range == "full":
pass
elif color_range == "limited":
transform_range = (235.0 - 16.0) / 255.0
luma_offset = 16.0 / 255.0
matrix = [
[Kr, Kg, Kb],
[-0.5 * (Kr / (1.0 - Kb)), -0.5 * (Kg / (1.0 - Kb)), 0.5],
[0.5, -0.5 * (Kg / (1.0 - Kr)), -0.5 * (Kb / (1.0 -Kr))],
[0.0, 0.5, 0.5]
]
# Transform from row major to column major for glsl
print("const mat4 RGBtoYUV = mat4(%f, %s, %s, %f," % (matrix[0][0] * transform_range, a(matrix[1][0] * transform_range), a(matrix[2][0] * transform_range), 0.0))
print(" %f, %s, %s, %f," % (matrix[0][1] * transform_range, a(matrix[1][1] * transform_range), a(matrix[2][1] * transform_range), 0.0))
print(" %f, %s, %s, %f," % (matrix[0][2] * transform_range, a(matrix[1][2] * transform_range), a(matrix[2][2] * transform_range), 0.0))
print(" %f, %s, %s, %f);" % (matrix[3][0] + luma_offset, a(matrix[3][1]), a(matrix[3][2]), 1.0))
main(sys.argv)