Fix CIEDE script for high bit depth master
authorJosh Holmer <jholmer.in@gmail.com>
Sun, 1 Sep 2019 22:13:18 +0000 (18:13 -0400)
committerNathan E. Egge <negge@dgql.org>
Sun, 1 Sep 2019 22:46:26 +0000 (18:46 -0400)
The Cr plane would not read in the correct data
on high bit depth videos, causing an incorrect result.
This commit fixes the input offset so the correct
values are read.

tools/dump_ciede2000.py

index 388882c..942b294 100755 (executable)
@@ -26,7 +26,7 @@ def decode_y4m_buffer(frame):
     A, Adiv2, div2 = W * H, Hdiv2 * Wdiv2, (Hdiv2, Wdiv2)
     dtype, scale = 'uint8', 1.
     if C.endswith('p10'):
     A, Adiv2, div2 = W * H, Hdiv2 * Wdiv2, (Hdiv2, Wdiv2)
     dtype, scale = 'uint8', 1.
     if C.endswith('p10'):
-        dtype, scale, A = 'uint16', 4., A * 2
+        dtype, scale, A, Adiv2 = 'uint16', 4., A * 2, Adiv2 * 2
     Y = (np.ndarray((H, W), dtype, buf) - 16. * scale) / (219. * scale)
     if C.startswith('420'):
         Cb = (np.ndarray(div2, dtype, buf, A) - 128. * scale) / (224. * scale)
     Y = (np.ndarray((H, W), dtype, buf) - 16. * scale) / (219. * scale)
     if C.startswith('420'):
         Cb = (np.ndarray(div2, dtype, buf, A) - 128. * scale) / (224. * scale)