Change video content scaling so that it either:
[dcpomatic.git] / hacks / dump_dpx.py
1 #!/usr/bin/python3
2
3 import sys
4 import struct
5
6 f = open(sys.argv[1], 'rb')
7
8 dpx = f.read(768)
9 magic = dpx[0:4]
10 if magic == b'XPDS':
11     print('Little-endian')
12     endian = '<'
13 elif magic == b'SDPX':
14     print('Big-endian')
15     endian = '>'
16 else:
17     print('Unrecognised magic word', file=sys.stderr)
18     sys.exit(1)
19
20 image = f.read(640)
21 im = dict()
22 (im['orientation'],
23  im['number_elements'],
24  im['pixels_per_line'],
25  im['lines_per_element'],
26  im['data_sign'],
27  im['low_data'],
28  im['low_quantity'],
29  im['high_data'],
30  im['high_quantity'],
31  im['descriptor'],
32  im['transfer'],
33  im['colorimetric']) = struct.unpack('%shhiiiififBBB' % endian, image[0:35])
34
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',
36              8: 'CCIR 601-2 system M', 9: 'NTSC composite video', 10: 'PAL composite video', 11: 'Z linear', 12: 'Z homogeneous' }
37
38 for k, v in im.items():
39     if k == 'transfer':
40         v = transfer[v]
41     print('%s: %s' % (k, v))