summaryrefslogtreecommitdiffstats
path: root/Demo/sgi/video/video2rgb.py
diff options
context:
space:
mode:
Diffstat (limited to 'Demo/sgi/video/video2rgb.py')
-rwxr-xr-xDemo/sgi/video/video2rgb.py159
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]'