Add comments and options

This commit is contained in:
Guido van Rossum 1992-08-18 17:01:02 +00:00
parent bc0eb9967d
commit 82534fd828
2 changed files with 151 additions and 18 deletions

View File

@ -1,12 +1,53 @@
#! /usr/local/python
# Print some info about a CMIF movie file
# Usage:
#
# Vinfo [-d] [-q] [-s] [file] ...
# Options:
#
# -d : print deltas between frames instead of frame times
# -q : quick: don't read the frames
# -s : don't print times (but do count frames and print the total)
# file ... : file(s) to inspect; default film.video
import sys import sys
sys.path.append('/ufs/guido/src/video')
import VFile import VFile
import getopt
# Global options
short = 0
quick = 0
diffs = 0
# Main program -- mostly command line parsing
def main(): def main():
if sys.argv[1:]: global short, quick, diffs
for filename in sys.argv[1:]: opts, args = getopt.getopt(sys.argv[1:], 'dqs')
process(filename) for opt, arg in opts:
else: if opt == '-q':
process('film.video') quick = 1
elif opt == '-d':
diffs = 1
elif opt == '-s':
short = 1
if not args:
args = ['film.video']
for filename in args:
process(filename)
# Process one file
def process(filename): def process(filename):
vin = VFile.VinFile().init(filename) vin = VFile.VinFile().init(filename)
@ -17,22 +58,37 @@ def process(filename):
print 'Bits: ', vin.c0bits, vin.c1bits, vin.c2bits print 'Bits: ', vin.c0bits, vin.c1bits, vin.c2bits
print 'Format: ', vin.format print 'Format: ', vin.format
print 'Offset: ', vin.offset print 'Offset: ', vin.offset
print 'Frame times:', if quick:
vin.close()
return
if not short:
print 'Frame times:',
n = 0 n = 0
t = 0 t = 0
told = 0
while 1: while 1:
try: try:
t, data, cdata = vin.getnextframe() t, data, cdata = vin.getnextframe()
except EOFError: except EOFError:
print if not short:
print
break break
if n%8 == 0: if not short:
sys.stdout.write('\n') if n%8 == 0:
sys.stdout.write('\t' + `t`) sys.stdout.write('\n')
if delta:
sys.stdout.write('\t' + `t - told`)
told = t
else:
sys.stdout.write('\t' + `t`)
n = n+1 n = n+1
print 'Total', n, 'frames in', t*0.001, 'sec.', print 'Total', n, 'frames in', t*0.001, 'sec.',
if t: if t:
print '-- average', int(n*10000.0/t)*0.1, 'frames/sec', print '-- average', int(n*10000.0/t)*0.1, 'frames/sec',
print print
vin.close()
# Don't forget to call the main program
main() main()

View File

@ -1,15 +1,63 @@
#! /usr/local/python
# Play CMIF movie files
# Usage:
#
# Vplay [-l] [-m maginfy] [file] ...
# Options:
#
# -l : loop, playing the movie over and over again
# -m magnify : magnify the image by the given factor
# file ... : file(s) to play; default film.video
# User interface:
#
# Place the windo where you want it. The size is determined by the
# movie file and the -m option.
#
# Press ESC or select the window manager Quit or Close window option
# to close a window; if more files are given the window for the next
# file now pops up.
import sys import sys
sys.path.append('/ufs/guido/src/video')
import VFile import VFile
import time import time
import gl, GL import gl, GL
from DEVICE import * from DEVICE import *
import getopt
import string
# Global options
magnify = 1
looping = 0
# Main program -- mostly command line parsing
def main(): def main():
if sys.argv[1:]: global magnify, looping
for filename in sys.argv[1:]: opts, args = getopt.getopt(sys.argv[1:], 'lm:')
process(filename) for opt, arg in opts:
else: if opt == '-l':
process('film.video') looping = 1
elif opt == '-m':
magnify = string.atoi(arg)
if not args:
args = ['film.video']
for filename in args:
process(filename)
# Process one file
def process(filename): def process(filename):
vin = VFile.VinFile().init(filename) vin = VFile.VinFile().init(filename)
@ -20,9 +68,10 @@ def process(filename):
print 'Bits: ', vin.c0bits, vin.c1bits, vin.c2bits print 'Bits: ', vin.c0bits, vin.c1bits, vin.c2bits
print 'Format: ', vin.format print 'Format: ', vin.format
print 'Offset: ', vin.offset print 'Offset: ', vin.offset
vin.magnify = magnify
gl.foreground() gl.foreground()
gl.prefsize(vin.width, vin.height) gl.prefsize(vin.width * magnify, vin.height * magnify)
win = gl.winopen('* ' + filename) win = gl.winopen('* ' + filename)
vin.initcolormap() vin.initcolormap()
@ -33,25 +82,53 @@ def process(filename):
t0 = time.millitimer() t0 = time.millitimer()
running = 1 running = 1
data = None data = None
t = 0
n = 0
while 1: while 1:
if running: if running:
try: try:
t, data, chromdata = vin.getnextframe() t, data, chromdata = vin.getnextframe()
n = n+1
except EOFError: except EOFError:
running = 0 t1 = time.millitimer()
gl.wintitle(filename) gl.wintitle(filename)
print 'Recorded:', n,
print 'frames in', t*0.001, 'sec.',
if t:
print '-- average',
print int(n*10000.0/t)*0.1,
print 'frames/sec',
print
t = t1-t0
print 'Played:', n,
print 'frames in', t*0.001, 'sec.',
if t:
print '-- average',
print int(n*10000.0/t)*0.1,
print 'frames/sec',
print
if looping and n > 0:
vin.rewind()
vin.magnify = magnify
continue
else:
running = 0
if running: if running:
dt = t + t0 - time.millitimer() dt = t + t0 - time.millitimer()
if dt > 0: if dt > 0:
time.millisleep(dt) time.millisleep(dt)
vin.showframe(data, chromdata) vin.showframe(data, chromdata)
if not running or gl.qtest(): if not running or gl.qtest():
dev, val = gl.qread() dev, val = gl.qread()
if dev in (ESCKEY, WINSHUT, WINQUIT): if dev in (ESCKEY, WINSHUT, WINQUIT):
gl.winclose(win)
break break
if dev == REDRAW: if dev == REDRAW:
gl.reshapeviewport() gl.reshapeviewport()
if data: if data:
vin.showframe(data, chromdata) vin.showframe(data, chromdata)
# Don't forget to call the main program
main() main()