Guido van Rossum | e4bddea | 1991-10-30 11:52:48 +0000 | [diff] [blame] | 1 | from gl import * |
| 2 | from GL import * |
| 3 | from DEVICE import * |
| 4 | import time |
| 5 | import sys |
Guido van Rossum | 6f00a31 | 1991-11-06 16:13:02 +0000 | [diff] [blame] | 6 | import getopt |
Guido van Rossum | e4bddea | 1991-10-30 11:52:48 +0000 | [diff] [blame] | 7 | |
| 8 | class Struct(): pass |
| 9 | epoch = Struct() |
| 10 | EndOfFile = 'End of file' |
| 11 | bye = 'bye' |
| 12 | |
Guido van Rossum | 27cb991 | 1991-11-04 14:30:51 +0000 | [diff] [blame] | 13 | def openvideo(filename): |
Guido van Rossum | edb3a5f | 1992-05-06 17:58:34 +0000 | [diff] [blame] | 14 | 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 Rossum | 27cb991 | 1991-11-04 14:30:51 +0000 | [diff] [blame] | 22 | |
| 23 | def loadframe(f, w, h, pf): |
Guido van Rossum | edb3a5f | 1992-05-06 17:58:34 +0000 | [diff] [blame] | 24 | 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 Rossum | 27cb991 | 1991-11-04 14:30:51 +0000 | [diff] [blame] | 38 | |
Guido van Rossum | e4bddea | 1991-10-30 11:52:48 +0000 | [diff] [blame] | 39 | def main(): |
Guido van Rossum | 6f00a31 | 1991-11-06 16:13:02 +0000 | [diff] [blame] | 40 | delta = 0 |
Guido van Rossum | edb3a5f | 1992-05-06 17:58:34 +0000 | [diff] [blame] | 41 | 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 Rossum | 6f00a31 | 1991-11-06 16:13:02 +0000 | [diff] [blame] | 48 | for opt, arg in opts: |
Guido van Rossum | edb3a5f | 1992-05-06 17:58:34 +0000 | [diff] [blame] | 49 | if opt == '-d': delta = 1 # print delta between frames |
| 50 | elif opt == '-s': short = 1 # short: don't print times |
Guido van Rossum | f47d048 | 1992-02-11 14:50:22 +0000 | [diff] [blame] | 51 | if names == []: |
Guido van Rossum | e4bddea | 1991-10-30 11:52:48 +0000 | [diff] [blame] | 52 | names = ['film.video'] |
| 53 | for name in names: |
Guido van Rossum | 6f00a31 | 1991-11-06 16:13:02 +0000 | [diff] [blame] | 54 | try: |
| 55 | f, w, h, pf = openvideo(name) |
| 56 | except: |
| 57 | sys.stderr.write(name + ': cannot open\n') |
| 58 | continue |
Guido van Rossum | edb3a5f | 1992-05-06 17:58:34 +0000 | [diff] [blame] | 59 | 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 Rossum | fa3de51 | 1992-05-07 15:21:52 +0000 | [diff] [blame] | 64 | if pf == 0: |
| 65 | print '(color)', |
| 66 | else: |
| 67 | print '(' + `(w/pf)` + 'x' + `(h/pf)` + ')', |
| 68 | if (w/pf)%4 <> 0: print '!!!', |
Guido van Rossum | edb3a5f | 1992-05-06 17:58:34 +0000 | [diff] [blame] | 69 | print |
Guido van Rossum | e4bddea | 1991-10-30 11:52:48 +0000 | [diff] [blame] | 70 | num = 0 |
| 71 | try: |
Guido van Rossum | 6f00a31 | 1991-11-06 16:13:02 +0000 | [diff] [blame] | 72 | otijd = 0 |
Guido van Rossum | edb3a5f | 1992-05-06 17:58:34 +0000 | [diff] [blame] | 73 | while not short: |
Guido van Rossum | e4bddea | 1991-10-30 11:52:48 +0000 | [diff] [blame] | 74 | try: |
Guido van Rossum | 27cb991 | 1991-11-04 14:30:51 +0000 | [diff] [blame] | 75 | tijd = loadframe(f, w, h, pf) |
Guido van Rossum | edb3a5f | 1992-05-06 17:58:34 +0000 | [diff] [blame] | 76 | if delta: print '\t' + `tijd-otijd`, |
| 77 | else: print '\t' + `tijd`, |
Guido van Rossum | 6f00a31 | 1991-11-06 16:13:02 +0000 | [diff] [blame] | 78 | otijd = tijd |
Guido van Rossum | e4bddea | 1991-10-30 11:52:48 +0000 | [diff] [blame] | 79 | num = num + 1 |
Guido van Rossum | f47d048 | 1992-02-11 14:50:22 +0000 | [diff] [blame] | 80 | if num % 8 == 0: |
Guido van Rossum | e4bddea | 1991-10-30 11:52:48 +0000 | [diff] [blame] | 81 | print |
| 82 | except EndOfFile: |
| 83 | raise bye |
| 84 | except bye: |
| 85 | pass |
| 86 | if num % 8 <> 0: |
| 87 | print |
| 88 | f.close() |
| 89 | |
| 90 | main() |