Adapted the world to the new VFile.py. Fixed bugs in Vplay.py:
missing -n in help(), bogus frame skipping; and added patch for
weird time jumps. Removed colorsys.py (now in std library).
Fixed "sys.write" error in vcopy.py. Restructured README.
diff --git a/Demo/sgi/video/README b/Demo/sgi/video/README
index 85855a9..335a108 100644
--- a/Demo/sgi/video/README
+++ b/Demo/sgi/video/README
@@ -26,7 +26,10 @@
format (in August 1992), Sjoerd added an interface to the video
library to Python (sv) and Guido wrote Vrec.py (based upon a
still frame grabber by Sjoerd, in turn based upon SGI demo code in C)
-to record a movie using it.
+to record a movie using it. Vrec was soon followed by modernized
+versions of the other programs (Vinfo, Vplay, Vtime) and an
+interactive editor (Vedit). Finally, VFile was rewritten for more
+modularity, functionality and robustness.
Guido van Rossum
Jack Jansen
@@ -36,6 +39,61 @@
Overview of files
-----------------
+cmif-film.ms description of the CMIF video file format
+
+
+These are programs with a command line interface:
+
+Vrec.py record video movies using the Indigo video library and
+ board
+
+Vplay.py play video movies
+
+Vinfo.py show statistics on movies
+
+Vtime.py (unrelated to vtime!!!) Copy a video file,
+ manipulating the time codes (e.g. faster/slower, or
+ regenerate time codes, or drop frames too close apart)
+
+Vedit.py interactive video editing program
+
+
+These modules are used by the above programs:
+
+VFile.py classes that read and write CMIF video files
+
+Viewer.py two viewer classes used by Vedit
+
+
+The following are C programs, either for efficiency or because they
+need to link with a C library:
+
+squash.c make a movie smaller by averaging pixels
+ usage: squash factor [bits] <moviefile >newmoviefile
+ factor x and y compression factor
+ bits #bits left per sample in result (default 8)
+
+squash2.c make a movie smaller by dropping pixels
+ usage: squash2 factor <moviefile >newmoviefile
+ factor x and y compression factor
+
+tomono.c like squash2 but outputs a monochrome movie
+
+v2i.c convert the first frame of a movie file to SGI .rgb format
+ link with -limage
+
+i2v.c convert an rgb file to "lrectwrite" format (this was
+ used one time by the CMIF editor)
+
+
+These programs are obsolete, but kept around for sentimental reasons.
+Most either don't work any more because they don't use VFile and hence
+haven't followed the frequent changes in the CMIF video file format;
+or they are dependent upon hardware we don't have (SGI's previous
+generation framegrabber). Except for cam.py / tv.py, their
+functionality is present in the suite of programs whose name begins
+with 'V' listed above.
+
cam.py network real-time tv broadcast; see tv.py
usage: cam [packfactor [host]]
specifying 'all' for host broadcasts
@@ -54,11 +112,6 @@
p pause recording (record single frame if paused)
ESC quit
-Vrec.py record video movies using the Indigo video library and
- board
-
-colorsys.py color conversions, used by video
-
statit.py various statistics operations on movie files
syncaudio.py record audio synchronized with camcorder -a
@@ -84,43 +137,12 @@
soundfile default is none (no sound)
skipbytes byte offset in soundfile where sound starts
-Vplay.py similar but more modern, using VFile.py
-
vinfo.py print summary of movie file(s)
usage: vinfo [-d] moviefile ...
-d print delta times (default: print abs times)
-Vinfo.py similar but more modern, using VFile.py
-
vpregs.py definition of VP registers
vtime.py virtual time module imported by syncaudio.py and camcorder.py
-Vtime.py (unrelated to vtime!!!) Copy a video file,
- manipulating the time codes (e.g. faster/slower, or
- regenerate time codes, or drop frames too close apart)
-
-Vedit.py interactive video editing program
-
-Viewer.py two viewer classes used by Vedit
-
-
-The following are C programs, either for efficiency or because they
-need to link with a C library:
-
-squash.c make a movie smaller by averaging pixels
- usage: squash factor [bits] <moviefile >newmoviefile
- factor x and y compression factor
- bits #bits left per sample in result (default 8)
-
-squash2.c make a movie smaller by dropping pixels
- usage: squash2 factor <moviefile >newmoviefile
- factor x and y compression factor
-
-tomono.c like squash2 but outputs a monochrome movie
-
-v2i.c convert the first frame of a movie file to SGI .rgb format
- link with -limage
-
-i2v.c convert an rgb file to "lrectwrite" format (this was
- used one time by the CMIF editor)
+colorsys.py color system conversions (now part of std python lib)
diff --git a/Demo/sgi/video/Vinfo.py b/Demo/sgi/video/Vinfo.py
index 341ddbf..cfda32a 100755
--- a/Demo/sgi/video/Vinfo.py
+++ b/Demo/sgi/video/Vinfo.py
@@ -65,13 +65,7 @@
sys.stderr.write(filename + ': EOF in video file\n')
return 1
- 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
+ vin.printinfo()
if quick:
vin.close()
diff --git a/Demo/sgi/video/Vplay.py b/Demo/sgi/video/Vplay.py
index 5f02ef1..facd20f 100755
--- a/Demo/sgi/video/Vplay.py
+++ b/Demo/sgi/video/Vplay.py
@@ -15,6 +15,7 @@
print '-d : write some debug stuff on stderr'
print '-l : loop, playing the movie over and over again'
print '-m delta : drop frames closer than delta msec (default 0)'
+ print '-n : don\'t wait after each file'
print '-q : quiet, no informative messages'
print '-r delta : regenerate input time base delta msec apart'
print '-s speed : speed change factor (default 1.0)'
@@ -137,13 +138,7 @@
return 1
if not quiet:
- 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
+ vin.printinfo()
gl.foreground()
@@ -211,6 +206,8 @@
time.millisleep(100)
tin = 0
+ toffset = 0
+ oldtin = 0
told = 0
nin = 0
nout = 0
@@ -247,11 +244,18 @@
except EOFError:
break
nin = nin+1
+ if tin+toffset < oldtin:
+ print 'Fix reversed time:', oldtin, 'to', tin
+ toffset = oldtin - tin
+ tin = tin + toffset
+ oldtin = tin
if regen: tout = nin * regen
else: tout = tin
tout = int(tout / speed)
if tout - told < mindelta:
nskipped = nskipped + 1
+ if not threading:
+ vin.skipnextframedata(size, csize)
else:
if not threading:
try:
diff --git a/Demo/sgi/video/vcopy.py b/Demo/sgi/video/vcopy.py
index 1842094..fe012ea 100755
--- a/Demo/sgi/video/vcopy.py
+++ b/Demo/sgi/video/vcopy.py
@@ -10,7 +10,7 @@
print 'Frame', iframe, ': t =', time
def usage():
- sys.write('usage: vcopy infile outfile\n')
+ sys.stderr.write('usage: vcopy infile outfile\n')
sys.exit(2)
def help():