Add new script to partially dump DPX headers.
authorCarl Hetherington <cth@carlh.net>
Wed, 30 Aug 2017 23:20:11 +0000 (00:20 +0100)
committerCarl Hetherington <cth@carlh.net>
Wed, 30 Aug 2017 23:20:11 +0000 (00:20 +0100)
hacks/dump_dpx.py [new file with mode: 0644]

diff --git a/hacks/dump_dpx.py b/hacks/dump_dpx.py
new file mode 100644 (file)
index 0000000..1cab96e
--- /dev/null
@@ -0,0 +1,41 @@
+#!/usr/bin/python3
+
+import sys
+import struct
+
+f = open(sys.argv[1], 'rb')
+
+dpx = f.read(768)
+magic = dpx[0:4]
+if magic == b'XPDS':
+    print('Little-endian')
+    endian = '<'
+elif magic == b'SDPX':
+    print('Big-endian')
+    endian = '>'
+else:
+    print('Unrecognised magic word', file=sys.stderr)
+    sys.exit(1)
+
+image = f.read(640)
+im = dict()
+(im['orientation'],
+ im['number_elements'],
+ im['pixels_per_line'],
+ im['lines_per_element'],
+ im['data_sign'],
+ im['low_data'],
+ im['low_quantity'],
+ im['high_data'],
+ im['high_quantity'],
+ im['descriptor'],
+ im['transfer'],
+ im['colorimetric']) = struct.unpack('%shhiiiififBBB' % endian, image[0:35])
+
+transfer = { 0: 'user-defined', 1: 'printing density', 2: 'linear', 3: 'logarithmic', 4: 'unspecified video', 5: 'SMPTE 240M', 6: 'CCIR 709-1', 7: 'CCIR601-2 system B or G',
+             8: 'CCIR 601-2 system M', 9: 'NTSC composite video', 10: 'PAL composite video', 11: 'Z linear', 12: 'Z homogeneous' }
+
+for k, v in im.items():
+    if k == 'transfer':
+        v = transfer[v]
+    print('%s: %s' % (k, v))