blob: 7f98237a97433532e43cfed017cb8d0f4d2edf9c [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):
Guido van Rossumedb3a5f1992-05-06 17:58:34 +000014 f = open(filename, 'r')
15 line = f.readline()
16 if not line: raise EndOfFile
17 if line[:4] == 'CMIF': line = f.readline()
18 x = eval(line[:-1])
19 if len(x) == 3: w, h, pf = x
20 else: w, h = x; pf = 2
21 return f, w, h, pf
Guido van Rossum27cb9911991-11-04 14:30:51 +000022
23def loadframe(f, w, h, pf):
Guido van Rossumedb3a5f1992-05-06 17:58:34 +000024 line = f.readline()
25 if line == '':
26 raise EndOfFile
27 x = eval(line[:-1])
28 if type(x) == type(0) or type(x) == type(0.0):
29 tijd = x
30 if pf == 0:
31 size = w*h*4
32 else:
33 size = (w/pf) * (h/pf)
34 else:
35 tijd, size = x
36 f.seek(size, 1)
37 return tijd
Guido van Rossum27cb9911991-11-04 14:30:51 +000038
Guido van Rossume4bddea1991-10-30 11:52:48 +000039def main():
Guido van Rossum6f00a311991-11-06 16:13:02 +000040 delta = 0
Guido van Rossumedb3a5f1992-05-06 17:58:34 +000041 short = 0
42 try:
43 opts, names = getopt.getopt(sys.argv[1:], 'ds')
44 except getopt.error, msg:
45 sys.stderr.write(msg + '\n')
46 sys.stderr.write('usage: vinfo [-d] [-s] [file] ...\n')
47 sys.exit(2)
Guido van Rossum6f00a311991-11-06 16:13:02 +000048 for opt, arg in opts:
Guido van Rossumedb3a5f1992-05-06 17:58:34 +000049 if opt == '-d': delta = 1 # print delta between frames
50 elif opt == '-s': short = 1 # short: don't print times
Guido van Rossumf47d0481992-02-11 14:50:22 +000051 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 Rossumedb3a5f1992-05-06 17:58:34 +000059 if pf == 0:
60 size = w*h*4
61 else:
62 size = (w/pf) * (h/pf)
63 print name, ':', w, 'x', h, '; pf =', pf, ', size =', size,
Guido van Rossumfa3de511992-05-07 15:21:52 +000064 if pf == 0:
65 print '(color)',
66 else:
67 print '(' + `(w/pf)` + 'x' + `(h/pf)` + ')',
68 if (w/pf)%4 <> 0: print '!!!',
Guido van Rossumedb3a5f1992-05-06 17:58:34 +000069 print
Guido van Rossume4bddea1991-10-30 11:52:48 +000070 num = 0
71 try:
Guido van Rossum6f00a311991-11-06 16:13:02 +000072 otijd = 0
Guido van Rossumedb3a5f1992-05-06 17:58:34 +000073 while not short:
Guido van Rossume4bddea1991-10-30 11:52:48 +000074 try:
Guido van Rossum27cb9911991-11-04 14:30:51 +000075 tijd = loadframe(f, w, h, pf)
Guido van Rossumedb3a5f1992-05-06 17:58:34 +000076 if delta: print '\t' + `tijd-otijd`,
77 else: print '\t' + `tijd`,
Guido van Rossum6f00a311991-11-06 16:13:02 +000078 otijd = tijd
Guido van Rossume4bddea1991-10-30 11:52:48 +000079 num = num + 1
Guido van Rossumf47d0481992-02-11 14:50:22 +000080 if num % 8 == 0:
Guido van Rossume4bddea1991-10-30 11:52:48 +000081 print
82 except EndOfFile:
83 raise bye
84 except bye:
85 pass
86 if num % 8 <> 0:
87 print
88 f.close()
89
90main()