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): |
| 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 |
| 22 | |
| 23 | def loadframe(f, w, h, pf): |
| 24 | line = f.readline() |
| 25 | if line = '': |
Guido van Rossum | e4bddea | 1991-10-30 11:52:48 +0000 | [diff] [blame] | 26 | raise EndOfFile |
Guido van Rossum | 27cb991 | 1991-11-04 14:30:51 +0000 | [diff] [blame] | 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) |
Guido van Rossum | e4bddea | 1991-10-30 11:52:48 +0000 | [diff] [blame] | 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 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 Rossum | 27cb991 | 1991-11-04 14:30:51 +0000 | [diff] [blame] | 45 | |
Guido van Rossum | e4bddea | 1991-10-30 11:52:48 +0000 | [diff] [blame] | 46 | def main(): |
Guido van Rossum | 6f00a31 | 1991-11-06 16:13:02 +0000 | [diff] [blame^] | 47 | delta = 0 |
| 48 | opts, names = getopt.getopt(sys.argv[1:], 'd') |
| 49 | for opt, arg in opts: |
| 50 | if opt = '-d': delta = 1 |
| 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 | 27cb991 | 1991-11-04 14:30:51 +0000 | [diff] [blame] | 59 | print name, ':', w, 'x', h, '; pf =', pf |
Guido van Rossum | e4bddea | 1991-10-30 11:52:48 +0000 | [diff] [blame] | 60 | num = 0 |
| 61 | try: |
Guido van Rossum | 6f00a31 | 1991-11-06 16:13:02 +0000 | [diff] [blame^] | 62 | otijd = 0 |
Guido van Rossum | e4bddea | 1991-10-30 11:52:48 +0000 | [diff] [blame] | 63 | while 1: |
| 64 | try: |
Guido van Rossum | 27cb991 | 1991-11-04 14:30:51 +0000 | [diff] [blame] | 65 | tijd = loadframe(f, w, h, pf) |
Guido van Rossum | 6f00a31 | 1991-11-06 16:13:02 +0000 | [diff] [blame^] | 66 | if delta: print '\t', tijd-otijd, |
| 67 | else: print '\t', tijd, |
| 68 | otijd = tijd |
Guido van Rossum | e4bddea | 1991-10-30 11:52:48 +0000 | [diff] [blame] | 69 | num = num + 1 |
| 70 | if num % 8 = 0: |
| 71 | print |
| 72 | except EndOfFile: |
| 73 | raise bye |
| 74 | except bye: |
| 75 | pass |
| 76 | if num % 8 <> 0: |
| 77 | print |
| 78 | f.close() |
| 79 | |
| 80 | main() |