blob: 335a108368cfcbcd1bba64599b8646a10eb550ae [file] [log] [blame]
Guido van Rossum7268c931992-08-18 21:11:18 +00001CMIF video tools
2================
Guido van Rossume4bddea1991-10-30 11:52:48 +00003
Guido van Rossum7268c931992-08-18 21:11:18 +00004This directory contains Python and C programs to manipulate files
5containing digitized video in the "CMIF video format".
6
7
8History
9-------
Guido van Rossumb2e82281992-08-18 16:01:19 +000010
11We started this in October 1991, when we had a large framegrabber
Guido van Rossum7268c931992-08-18 21:11:18 +000012board on loan from SGI for a few weeks: we developed a movie recording
13program (camcorder.py) and added numerous features, including still
14frame capture and synchronous sound recording using a second machine
15(the machine holding the framegrabber board didn't have audio).
Guido van Rossumb2e82281992-08-18 16:01:19 +000016
Guido van Rossum7268c931992-08-18 21:11:18 +000017During the following months, when we started using and processing the
18recorded film fragments, the "CMIF video format" was revised several
19times, and we eventually created an object-oriented interface for
20reading and writing various incarnations of these files, called VFile.
21(This module is also used by our flagship application, the CMIF
22editor, not in this directory but in /ufs/guido/mm/.)
Guido van Rossumb2e82281992-08-18 16:01:19 +000023
Guido van Rossum7268c931992-08-18 21:11:18 +000024When we got our own Indigo entry-level video board (in June 1992) and
25a version of the Irix video library that supported capturing PAL
26format (in August 1992), Sjoerd added an interface to the video
Guido van Rossum815adc91992-08-20 11:54:00 +000027library to Python (sv) and Guido wrote Vrec.py (based upon a
Guido van Rossum7268c931992-08-18 21:11:18 +000028still frame grabber by Sjoerd, in turn based upon SGI demo code in C)
Guido van Rossume1783321992-09-07 09:35:23 +000029to record a movie using it. Vrec was soon followed by modernized
30versions of the other programs (Vinfo, Vplay, Vtime) and an
31interactive editor (Vedit). Finally, VFile was rewritten for more
32modularity, functionality and robustness.
Guido van Rossumb2e82281992-08-18 16:01:19 +000033
Guido van Rossum7268c931992-08-18 21:11:18 +000034 Guido van Rossum
35 Jack Jansen
36 Sjoerd Mullender
Guido van Rossume4bddea1991-10-30 11:52:48 +000037
Guido van Rossum96059b31991-11-04 14:31:31 +000038
Guido van Rossum7268c931992-08-18 21:11:18 +000039Overview of files
40-----------------
41
Guido van Rossume1783321992-09-07 09:35:23 +000042cmif-film.ms description of the CMIF video file format
43
44
45These are programs with a command line interface:
46
47Vrec.py record video movies using the Indigo video library and
48 board
49
50Vplay.py play video movies
51
52Vinfo.py show statistics on movies
53
54Vtime.py (unrelated to vtime!!!) Copy a video file,
55 manipulating the time codes (e.g. faster/slower, or
56 regenerate time codes, or drop frames too close apart)
57
58Vedit.py interactive video editing program
59
60
61These modules are used by the above programs:
62
63VFile.py classes that read and write CMIF video files
64
65Viewer.py two viewer classes used by Vedit
66
67
68The following are C programs, either for efficiency or because they
69need to link with a C library:
70
71squash.c make a movie smaller by averaging pixels
72 usage: squash factor [bits] <moviefile >newmoviefile
73 factor x and y compression factor
74 bits #bits left per sample in result (default 8)
75
76squash2.c make a movie smaller by dropping pixels
77 usage: squash2 factor <moviefile >newmoviefile
78 factor x and y compression factor
79
80tomono.c like squash2 but outputs a monochrome movie
81
82v2i.c convert the first frame of a movie file to SGI .rgb format
83 link with -limage
84
85i2v.c convert an rgb file to "lrectwrite" format (this was
86 used one time by the CMIF editor)
87
88
89These programs are obsolete, but kept around for sentimental reasons.
90Most either don't work any more because they don't use VFile and hence
91haven't followed the frequent changes in the CMIF video file format;
92or they are dependent upon hardware we don't have (SGI's previous
93generation framegrabber). Except for cam.py / tv.py, their
94functionality is present in the suite of programs whose name begins
95with 'V' listed above.
96
Guido van Rossume4bddea1991-10-30 11:52:48 +000097cam.py network real-time tv broadcast; see tv.py
98 usage: cam [packfactor [host]]
99 specifying 'all' for host broadcasts
100
101camcorder.py record video movies or make snapshots (in movie format)
Guido van Rossum96059b31991-11-04 14:31:31 +0000102 usage: camcorder [-c] [-a audiohost [-s]] [-p pf] [moviefile]
103 -c color (equivalent to -p 0)
Guido van Rossume4bddea1991-10-30 11:52:48 +0000104 -a audiohost syncaudio is running on audiohost
105 -s start syncaudio (on audiohost)
Guido van Rossum96059b31991-11-04 14:31:31 +0000106 -p packfactor packfactor (default 2; 0 records color)
Guido van Rossume4bddea1991-10-30 11:52:48 +0000107 moviefile (default film.video)
108 keyboard commands:
109 s stop grabbing (single step if already stopped)
110 c continuous grabbing
111 r start recording
112 p pause recording (record single frame if paused)
113 ESC quit
114
115statit.py various statistics operations on movie files
116
117syncaudio.py record audio synchronized with camcorder -a
118 usage: syncaudio videohost soundfile
Guido van Rossum96059b31991-11-04 14:31:31 +0000119 soundfile format: 16 bits/sample, 16000 samples/sec, 1 channel
120 (actually, you'd better set the sampling rate to 16000
121 with the audio panel)
Guido van Rossume4bddea1991-10-30 11:52:48 +0000122
123tv.py receiver for transmissions from cam.py
124
Guido van Rossum7caf6111991-11-04 15:55:01 +0000125vcopy.py selectively write frames from one movie file to another
126 usage: vcopy infile outfile
127 commands: 'n' gets next frame; 'w' writes current frame
128
Guido van Rossume4bddea1991-10-30 11:52:48 +0000129video.py player for movies recorded by camcorder.py
Guido van Rossum7385d581991-11-22 14:03:57 +0000130 usage: video [-l] [-p pf] [-m mag] [-F]
131 [moviefile [soundfile [skipbytes]]]
Guido van Rossum228381e1991-11-04 18:04:47 +0000132 -p pf override packfactor (to zoom)
133 -l looping -- restart movie when done
Guido van Rossum7385d581991-11-22 14:03:57 +0000134 -m mag magnification
135 -F run at max speed
Guido van Rossum228381e1991-11-04 18:04:47 +0000136 moviefile default is film.video
137 soundfile default is none (no sound)
138 skipbytes byte offset in soundfile where sound starts
Guido van Rossume4bddea1991-10-30 11:52:48 +0000139
Guido van Rossumeda5dfd1991-11-06 16:13:25 +0000140vinfo.py print summary of movie file(s)
141 usage: vinfo [-d] moviefile ...
142 -d print delta times (default: print abs times)
Guido van Rossume4bddea1991-10-30 11:52:48 +0000143
Guido van Rossum96059b31991-11-04 14:31:31 +0000144vpregs.py definition of VP registers
145
Guido van Rossume4bddea1991-10-30 11:52:48 +0000146vtime.py virtual time module imported by syncaudio.py and camcorder.py
147
Guido van Rossume1783321992-09-07 09:35:23 +0000148colorsys.py color system conversions (now part of std python lib)