]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Added usage message, minor cosmetic changes
authorGuido van Rossum <guido@python.org>
Thu, 24 Dec 1992 11:39:00 +0000 (11:39 +0000)
committerGuido van Rossum <guido@python.org>
Thu, 24 Dec 1992 11:39:00 +0000 (11:39 +0000)
Demo/sgi/video/Vrec.py

index 689e8cf5a8fe46a1f7d16d4010839edac31fff39..d9525669bb9de5b6c60447c21266c4a85a9f6cd9 100755 (executable)
@@ -1,49 +1,50 @@
-#! /ufs/guido/bin/sgi/python-405
 #! /ufs/guido/bin/sgi/python
+#! /ufs/guido/bin/sgi/python-405
 
 # Capture a CMIF movie using the Indigo video library and board
 
+# The CMIF video file format is documented in cmif-film.ms.
+# Audio data is recorded in AIFF format, using the input sampling
+# rate, source and volume set by the audio panel, in mono, 8
+# bits/sample.
+
+
+# Usage and help functions (keep this up-to-date if you change the program!)
+
+def usage():
+       print 'Usage: Vrec [options] [moviefile [audiofile]]'
+       print
+       print 'Options:'
+       print '-a            : record audio as well'
+       print '-q queuesize  : set the capture queue size (default 2)'
+       print '-r rate       : capture 1 out of every "rate" frames', \
+                            '(default and min 2)'
+       print '-w width      : initial window width', \
+                            '(default interactive placement)'
+       print '-n            : Don\'t write to file, only timing info'
+       print '-d            : drop fields if needed'
+       print '-g bits       : greyscale (2, 4 or 8 bits)'
+       print '-G            : 2-bit greyscale dithered'
+       print '-m            : monochrome dithered'
+       print '-M value      : monochrome tresholded with value'
+       print '-f            : Capture fields (in stead of frames)'
+       print '-P frames     : preallocate space for "frames" frames'
+       print 'moviefile     : here goes the movie data (default film.video)'
+       print 'audiofile     : with -a, here goes the audio data', \
+                            '(default film.aiff)'
+
+def help():
+       print 'Press the left mouse button to start recording, release it to'
+       print 'end recording.  You can record as many times as you wish, but'
+       print 'each recording overwrites the output file(s) -- only the last'
+       print 'recording is kept.'
+       print
+       print 'Press ESC or use the window manager Quit or Close window option'
+       print 'to quit.  If you quit before recording anything, the output'
+       print 'file(s) are not touched.'
 
-# Usage:
-#
-# makemovie [-a] [-q queuesize] [-r rate] [-w width] [moviefile [audiofile]]
-
-
-# Options:
-#
-# -a            : record audio as well
-# -q queuesize  : set the capture queue size (default 2)
-# -r rate       : capture 1 out of every 'rate' frames (default and min 2)
-# -w width      : initial window width (default interactive placement)
-# -n            : Don't write to file, only timing info
-# -d           : drop fields if needed
-# -g bits      : greyscale (2, 4 or 8 bits)
-# -G            : 2-bit greyscale dithered
-# -m           : monochrome dithered
-# -M value     : monochrome tresholded with value
-# -f           : Capture fields (in stead of frames)
-# -P frames    : preallocate space for 'frames' frames
-# 
-# moviefile     : here goes the movie data (default film.video);
-#                 the format is documented in cmif-film.ms
-# audiofile     : with -a, here goes the audio data (default film.aiff);
-#                 audio data is recorded in AIFF format, using the
-#                 input sampling rate, source and volume set by the
-#                 audio panel, in mono, 8 bits/sample
-
-
-# User interface:
-#
-# Start the application.  Resize the window to the desired movie size.
-# Press the left mouse button to start recording, release it to end
-# recording.  You can record as many times as you wish, but each time
-# you overwrite the output file(s), so only the last recording is
-# kept.
-#
-# Press ESC or select the window manager Quit or Close window option
-# to quit.  If you quit before recording anything, the output file(s)
-# are not touched.
 
+# Imported modules
 
 import sys
 sys.path.append('/ufs/guido/src/video')
@@ -58,6 +59,7 @@ import string
 import imageop
 import sgi
 
+
 # Main program
 
 def main():
@@ -75,45 +77,73 @@ def main():
        fields = 0
        preallocspace = 0
 
-       opts, args = getopt.getopt(sys.argv[1:], 'aq:r:w:ndg:mM:GfP:')
-       for opt, arg in opts:
-               if opt == '-a':
-                       audio = 1
-               elif opt == '-q':
-                       qsize = string.atoi(arg)
-               elif opt == '-r':
-                       rate = string.atoi(arg)
-                       if rate < 2:
-                               sys.stderr.write('-r rate must be >= 2\n')
-                               sys.exit(2)
-               elif opt == '-w':
-                       width = string.atoi(arg)
-               elif opt == '-n':
-                       norecord = 1
-               elif opt == '-d':
-                       drop = 1
-               elif opt == '-g':
-                       grey = 1
-                       greybits = string.atoi(arg)
-                       if not greybits in (2,4,8):
-                               print 'Only 2, 4 or 8 bit greyscale supported'
-               elif opt == '-G':
-                       grey = 1
-                       greybits = -2
-               elif opt == '-m':
-                       mono = 1
-               elif opt == '-M':
-                       mono = 1
-                       monotreshold = string.atoi(arg)
-               elif opt == '-f':
-                       fields = 1
-               elif opt == '-P':
-                       preallocspace = string.atoi(arg)
-
-       if args[2:]:
-               sys.stderr.write('usage: Vrec [options] [file [audiofile]]\n')
+       # Parse command line
+       try:
+               opts, args = getopt.getopt(sys.argv[1:], 'aq:r:w:ndg:mM:GfP:')
+       except getopt.error, msg:
+               sys.stdout = sys.stderr
+               print 'Error:', msg, '\n'
+               usage()
+               sys.exit(2)
+
+       # Interpret options
+       try:
+               for opt, arg in opts:
+                       if opt == '-a':
+                               audio = 1
+                       elif opt == '-q':
+                               qsize = string.atoi(arg)
+                       elif opt == '-r':
+                               rate = string.atoi(arg)
+                               if rate < 2:
+                                       sys.stderr.write( \
+                                                 '-r rate must be >= 2\n')
+                                       sys.exit(2)
+                       elif opt == '-w':
+                               width = string.atoi(arg)
+                       elif opt == '-n':
+                               norecord = 1
+                       elif opt == '-d':
+                               drop = 1
+                       elif opt == '-g':
+                               grey = 1
+                               greybits = string.atoi(arg)
+                               if not greybits in (2, 4, 8):
+                                       sys.stderr.write( \
+                               'Only 2, 4 or 8 bit greyscale supported\n')
+                                       sys.exit(2)
+                       elif opt == '-G':
+                               grey = 1
+                               greybits = -2
+                       elif opt == '-m':
+                               mono = 1
+                       elif opt == '-M':
+                               mono = 1
+                               monotreshold = string.atoi(arg)
+                       elif opt == '-f':
+                               fields = 1
+                       elif opt == '-P':
+                               preallocspace = string.atoi(arg)
+       except string.atoi_error:
+               sys.stdout = sys.stderr
+               print 'Option', opt, 'requires integer argument'
                sys.exit(2)
 
+       # Check excess arguments
+       # If norecord is on, refuse filename arguments
+       if norecord:
+               if args:
+                       sys.stdout = sys.stderr
+                       print 'With -n, no filename arguments are used\n'
+                       usage()
+                       sys.exit(2)
+       elif args[2:]:
+               sys.stdout = sys.stderr
+               print 'Too many filename arguments\n'
+               usage()
+               sys.exit(2)
+
+       # Process file arguments
        if args:
                filename = args[0]
        else:
@@ -133,6 +163,8 @@ def main():
 
        if norecord:
                filename = audiofilename = ''
+
+       # Open video
        v = sv.OpenVideo()
        # Determine maximum window size based on signal standard
        param = [SV.BROADCAST, 0]
@@ -181,7 +213,7 @@ def main():
        gl.qdevice(DEVICE.WINSHUT)
        gl.qdevice(DEVICE.ESCKEY)
 
-       print 'Press left mouse to start recording, release it to stop'
+       help()
 
        while 1:
                dev, val = gl.qread()