blob: 6f8b54341ec9fa7f13af801c900ce6f4ef2ee227 [file] [log] [blame]
Guido van Rossume4bddea1991-10-30 11:52:48 +00001from gl import *
2from GL import *
3from DEVICE import *
4import time
5import sys
Guido van Rossum6f00a311991-11-06 16:13:02 +00006import getopt
Guido van Rossume4bddea1991-10-30 11:52:48 +00007
8class Struct(): pass
9epoch = Struct()
10EndOfFile = 'End of file'
11bye = 'bye'
12
Guido van Rossum27cb9911991-11-04 14:30:51 +000013def openvideo(filename):
14 f = open(filename, 'r')
15 line = f.readline()
16 if not line: raise EndOfFile
Guido van Rossumf47d0481992-02-11 14:50:22 +000017 if line[:4] == 'CMIF': line = f.readline()
Guido van Rossum27cb9911991-11-04 14:30:51 +000018 x = eval(line[:-1])
Guido van Rossumf47d0481992-02-11 14:50:22 +000019 if len(x) == 3: w, h, pf = x
Guido van Rossum27cb9911991-11-04 14:30:51 +000020 else: w, h = x; pf = 2
21 return f, w, h, pf
22
23def loadframe(f, w, h, pf):
24 line = f.readline()
Guido van Rossumf47d0481992-02-11 14:50:22 +000025 if line == '':
Guido van Rossume4bddea1991-10-30 11:52:48 +000026 raise EndOfFile
Guido van Rossum27cb9911991-11-04 14:30:51 +000027 x = eval(line[:-1])
Guido van Rossumf47d0481992-02-11 14:50:22 +000028 if type(x) == type(0) or type(x) == type(0.0):
Guido van Rossum27cb9911991-11-04 14:30:51 +000029 tijd = x
Guido van Rossumf47d0481992-02-11 14:50:22 +000030 if pf == 0:
Guido van Rossum27cb9911991-11-04 14:30:51 +000031 size = w*h*4
32 else:
33 size = (w/pf) * (h/pf)
34 else:
35 tijd, size = x
36 f.seek(size, 1)
Guido van Rossume4bddea1991-10-30 11:52:48 +000037 return tijd
Guido van Rossum27cb9911991-11-04 14:30:51 +000038
Guido van Rossume4bddea1991-10-30 11:52:48 +000039def saveframe(name, w, h, tijd, data):
40 f = open(name, 'w')
41 f.write(`w,h` + '\n')
42 f.write(`tijd` + '\n')
43 f.write(data)
44 f.close()
Guido van Rossum27cb9911991-11-04 14:30:51 +000045
Guido van Rossume4bddea1991-10-30 11:52:48 +000046def main():
Guido van Rossum6f00a311991-11-06 16:13:02 +000047 delta = 0
48 opts, names = getopt.getopt(sys.argv[1:], 'd')
49 for opt, arg in opts:
Guido van Rossumf47d0481992-02-11 14:50:22 +000050 if opt == '-d': delta = 1
51 if names == []:
Guido van Rossume4bddea1991-10-30 11:52:48 +000052 names = ['film.video']
53 for name in names:
Guido van Rossum6f00a311991-11-06 16:13:02 +000054 try:
55 f, w, h, pf = openvideo(name)
56 except:
57 sys.stderr.write(name + ': cannot open\n')
58 continue
Guido van Rossum27cb9911991-11-04 14:30:51 +000059 print name, ':', w, 'x', h, '; pf =', pf
Guido van Rossume4bddea1991-10-30 11:52:48 +000060 num = 0
61 try:
Guido van Rossum6f00a311991-11-06 16:13:02 +000062 otijd = 0
Guido van Rossume4bddea1991-10-30 11:52:48 +000063 while 1:
64 try:
Guido van Rossum27cb9911991-11-04 14:30:51 +000065 tijd = loadframe(f, w, h, pf)
Guido van Rossum6f00a311991-11-06 16:13:02 +000066 if delta: print '\t', tijd-otijd,
67 else: print '\t', tijd,
68 otijd = tijd
Guido van Rossume4bddea1991-10-30 11:52:48 +000069 num = num + 1
Guido van Rossumf47d0481992-02-11 14:50:22 +000070 if num % 8 == 0:
Guido van Rossume4bddea1991-10-30 11:52:48 +000071 print
72 except EndOfFile:
73 raise bye
74 except bye:
75 pass
76 if num % 8 <> 0:
77 print
78 f.close()
79
80main()