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()
|