Add comments and options
diff --git a/Demo/sgi/video/Vplay.py b/Demo/sgi/video/Vplay.py
index 1b9c80c..ce82b68 100755
--- a/Demo/sgi/video/Vplay.py
+++ b/Demo/sgi/video/Vplay.py
@@ -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
+sys.path.append('/ufs/guido/src/video')
 import VFile
 import time
 import gl, GL
 from DEVICE import *
+import getopt
+import string
+
+
+# Global options
+
+magnify = 1
+looping = 0
+
+
+# Main program -- mostly command line parsing
 
 def main():
-	if sys.argv[1:]:
-		for filename in sys.argv[1:]:
-			process(filename)
-	else:
-		process('film.video')
+	global magnify, looping
+	opts, args = getopt.getopt(sys.argv[1:], 'lm:')
+	for opt, arg in opts:
+		if opt == '-l':
+			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):
 	vin = VFile.VinFile().init(filename)
@@ -20,9 +68,10 @@
 	print 'Bits:    ', vin.c0bits, vin.c1bits, vin.c2bits
 	print 'Format:  ', vin.format
 	print 'Offset:  ', vin.offset
+	vin.magnify = magnify
 	
 	gl.foreground()
-	gl.prefsize(vin.width, vin.height)
+	gl.prefsize(vin.width * magnify, vin.height * magnify)
 	win = gl.winopen('* ' + filename)
 	vin.initcolormap()
 
@@ -33,25 +82,53 @@
 	t0 = time.millitimer()
 	running = 1
 	data = None
+	t = 0
+	n = 0
 	while 1:
 		if running:
 			try:
 				t, data, chromdata = vin.getnextframe()
+				n = n+1
 			except EOFError:
-				running = 0
+				t1 = time.millitimer()
 				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:
 			dt = t + t0 - time.millitimer()
 			if dt > 0:
 				time.millisleep(dt)
-				vin.showframe(data, chromdata)
+			vin.showframe(data, chromdata)
 		if not running or gl.qtest():
 			dev, val = gl.qread()
 			if dev in (ESCKEY, WINSHUT, WINQUIT):
+				gl.winclose(win)
 				break
 			if dev == REDRAW:
 				gl.reshapeviewport()
 				if data:
 					vin.showframe(data, chromdata)
 
+
+# Don't forget to call the main program
+
 main()