| from gl import * |
| from GL import * |
| from DEVICE import * |
| import time |
| import sys |
| import getopt |
| |
| class Struct(): pass |
| epoch = Struct() |
| EndOfFile = 'End of file' |
| bye = 'bye' |
| |
| def openvideo(filename): |
| f = open(filename, 'r') |
| line = f.readline() |
| if not line: raise EndOfFile |
| if line[:4] == 'CMIF': line = f.readline() |
| x = eval(line[:-1]) |
| if len(x) == 3: w, h, pf = x |
| else: w, h = x; pf = 2 |
| return f, w, h, pf |
| |
| def loadframe(f, w, h, pf): |
| line = f.readline() |
| if line == '': |
| raise EndOfFile |
| x = eval(line[:-1]) |
| if type(x) == type(0) or type(x) == type(0.0): |
| tijd = x |
| if pf == 0: |
| size = w*h*4 |
| else: |
| size = (w/pf) * (h/pf) |
| else: |
| tijd, size = x |
| f.seek(size, 1) |
| return tijd |
| |
| def main(): |
| delta = 0 |
| short = 0 |
| try: |
| opts, names = getopt.getopt(sys.argv[1:], 'ds') |
| except getopt.error, msg: |
| sys.stderr.write(msg + '\n') |
| sys.stderr.write('usage: vinfo [-d] [-s] [file] ...\n') |
| sys.exit(2) |
| for opt, arg in opts: |
| if opt == '-d': delta = 1 # print delta between frames |
| elif opt == '-s': short = 1 # short: don't print times |
| if names == []: |
| names = ['film.video'] |
| for name in names: |
| try: |
| f, w, h, pf = openvideo(name) |
| except: |
| sys.stderr.write(name + ': cannot open\n') |
| continue |
| if pf == 0: |
| size = w*h*4 |
| else: |
| size = (w/pf) * (h/pf) |
| print name, ':', w, 'x', h, '; pf =', pf, ', size =', size, |
| if pf == 0: |
| print '(color)', |
| else: |
| print '(' + `(w/pf)` + 'x' + `(h/pf)` + ')', |
| if (w/pf)%4 <> 0: print '!!!', |
| print |
| num = 0 |
| try: |
| otijd = 0 |
| while not short: |
| try: |
| tijd = loadframe(f, w, h, pf) |
| if delta: print '\t' + `tijd-otijd`, |
| else: print '\t' + `tijd`, |
| otijd = tijd |
| num = num + 1 |
| if num % 8 == 0: |
| print |
| except EndOfFile: |
| raise bye |
| except bye: |
| pass |
| if num % 8 <> 0: |
| print |
| f.close() |
| |
| main() |