diff options
Diffstat (limited to 'Demo/sgi/video/video2rgb.py')
-rwxr-xr-x | Demo/sgi/video/video2rgb.py | 159 |
1 files changed, 0 insertions, 159 deletions
diff --git a/Demo/sgi/video/video2rgb.py b/Demo/sgi/video/video2rgb.py deleted file mode 100755 index bbfa6b8..0000000 --- a/Demo/sgi/video/video2rgb.py +++ /dev/null @@ -1,159 +0,0 @@ -#! /usr/bin/env python - -# Convert CMIF movie file(s) to a sequence of rgb images - - -# Help function - -def help(): - print 'Usage: video2rgb [options] [file] ...' - print - print 'Options:' - print '-q : quiet, no informative messages' - print '-m : create monochrome (greyscale) image files' - print '-f prefix : create image files with names "prefix0000.rgb"' - print 'file ... : file(s) to convert; default film.video' - - -# Imported modules - -import sys -sys.path.append('/ufs/jack/src/av/video') # Increase chance of finding VFile -import VFile -import time -import getopt -import string -import imgfile -import imgconv - - -# Global options - -quiet = 0 -prefix = 'film' -seqno = 0 -mono = 0 - - -# Main program -- mostly command line parsing - -def main(): - global quiet, prefix, mono - - # Parse command line - try: - opts, args = getopt.getopt(sys.argv[1:], 'qmf:') - except getopt.error, msg: - sys.stdout = sys.stderr - print 'Error:', msg, '\n' - help() - sys.exit(2) - - # Interpret options - try: - for opt, arg in opts: - if opt == '-q': quiet = 1 - if opt == '-f': prefix = arg - if opt == '-m': mono = 1 - except string.atoi_error: - sys.stdout = sys.stderr - print 'Option', opt, 'requires integer argument' - sys.exit(2) - - # Process all files - if not args: args = ['film.video'] - sts = 0 - for filename in args: - sts = (process(filename) or sts) - - # Exit with proper exit status - sys.exit(sts) - - -# Process one movie file - -def process(filename): - try: - vin = VFile.VinFile(filename) - except IOError, msg: - sys.stderr.write(filename + ': I/O error: ' + `msg` + '\n') - return 1 - except VFile.Error, msg: - sys.stderr.write(msg + '\n') - return 1 - except EOFError: - sys.stderr.write(filename + ': EOF in video header\n') - return 1 - - if not quiet: - vin.printinfo() - - width, height = int(vin.width), int(vin.height) - - try: - if mono: - cf = imgconv.getconverter(vin.format, 'grey') - else: - cf = imgconv.getconverter(vin.format, 'rgb') - except imgconv.error: - print 'Sorry, no converter available for type',vin.format - return - - if mono: - depth = 1 - bpp = 1 - else: - depth = 3 - bpp = 4 - - convert(vin, cf, width, height, depth, bpp, vin.packfactor) - -def convert(vin, cf, width, height, depth, bpp, pf): - global seqno - - if type(pf) == type(()): - xpf, ypf = pf - elif pf == 0: - xpf = ypf = 1 - else: - xpf = ypf = pf - while 1: - try: - time, data, cdata = vin.getnextframe() - except EOFError: - return - if cdata: - print 'Film contains chromdata!' - return - data = cf(data, width/xpf, height/abs(ypf)) - if pf: - data = applypackfactor(data, width, height, pf, bpp) - s = `seqno` - s = '0'*(4-len(s)) + s - fname = prefix + s + '.rgb' - seqno = seqno + 1 - if not quiet: - print 'Writing',fname,'...' - imgfile.write(fname, data, width, height, depth) - -def applypackfactor(image, w, h, pf, bpp): - import imageop - if type(pf) == type(()): - xpf, ypf = pf - elif pf == 0: - xpf = ypf = 1 - else: - xpf = ypf = pf - w1 = w/xpf - h1 = h/abs(ypf) - if ypf < 0: - ypf = -ypf - image = imageop.crop(image, bpp, w1, h1, 0, h1-1, w1-1, 0) - return imageop.scale(image, bpp, w1, h1, w, h) - -# Don't forget to call the main program - -try: - main() -except KeyboardInterrupt: - print '[Interrupt]' |