cpython/Demo/sgi/video/Vinfo.py

95 lines
1.7 KiB
Python
Raw Normal View History

1992-08-18 14:01:02 -03:00
#! /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
1992-08-18 11:16:12 -03:00
import sys
1992-08-18 14:01:02 -03:00
sys.path.append('/ufs/guido/src/video')
1992-08-18 11:16:12 -03:00
import VFile
1992-08-18 14:01:02 -03:00
import getopt
# Global options
short = 0
quick = 0
diffs = 0
# Main program -- mostly command line parsing
1992-08-18 11:16:12 -03:00
def main():
1992-08-18 14:01:02 -03:00
global short, quick, diffs
opts, args = getopt.getopt(sys.argv[1:], 'dqs')
for opt, arg in opts:
if opt == '-q':
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
1992-08-18 11:16:12 -03:00
def process(filename):
vin = VFile.VinFile().init(filename)
print 'File: ', filename
print 'Version: ', vin.version
print 'Size: ', vin.width, 'x', vin.height
print 'Pack: ', vin.packfactor, '; chrom:', vin.chrompack
print 'Bits: ', vin.c0bits, vin.c1bits, vin.c2bits
print 'Format: ', vin.format
print 'Offset: ', vin.offset
1992-08-18 14:01:02 -03:00
if quick:
vin.close()
return
if not short:
print 'Frame times:',
1992-08-18 11:16:12 -03:00
n = 0
t = 0
1992-08-18 14:01:02 -03:00
told = 0
1992-08-18 11:16:12 -03:00
while 1:
try:
t, data, cdata = vin.getnextframe()
except EOFError:
1992-08-18 14:01:02 -03:00
if not short:
print
1992-08-18 11:16:12 -03:00
break
1992-08-18 14:01:02 -03:00
if not short:
if n%8 == 0:
sys.stdout.write('\n')
if delta:
sys.stdout.write('\t' + `t - told`)
told = t
else:
sys.stdout.write('\t' + `t`)
1992-08-18 11:16:12 -03:00
n = n+1
print 'Total', n, 'frames in', t*0.001, 'sec.',
if t:
print '-- average', int(n*10000.0/t)*0.1, 'frames/sec',
print
1992-08-18 14:01:02 -03:00
vin.close()
# Don't forget to call the main program
1992-08-18 11:16:12 -03:00
main()