mirror of
https://repo.dec05eba.com/gpu-screen-recorder
synced 2026-03-31 09:07:13 +09:00
Add support for hdr capture on amd/intel
Nvidia support will be added in the future. Note that hdr metadata is missing from the output file as amd and intel both have bugged drivers that dont add hdr metadata to the output file. Need to find a workaround for this (patching the video bitstream?). Add -cr limited|full, to set color range
This commit is contained in:
BIN
study/color_space_transform_matrix.png
Normal file
BIN
study/color_space_transform_matrix.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 7.0 KiB |
42
study/create_matrix.py
Executable file
42
study/create_matrix.py
Executable file
@@ -0,0 +1,42 @@
|
||||
#!/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 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("%f, %f, %f, %f" % (matrix[0][0] * transform_range, matrix[1][0] * transform_range, matrix[2][0] * transform_range, 0.0))
|
||||
print("%f, %f, %f, %f" % (matrix[0][1] * transform_range, matrix[1][1] * transform_range, matrix[2][1] * transform_range, 0.0))
|
||||
print("%f, %f, %f, %f" % (matrix[0][2] * transform_range, matrix[1][2] * transform_range, matrix[2][2] * transform_range, 0.0))
|
||||
print("%f, %f, %f, %f" % (matrix[3][0] + luma_offset, matrix[3][1], matrix[3][2], 1.0))
|
||||
|
||||
main(sys.argv)
|
||||
Reference in New Issue
Block a user