blob: 3f54cf5d32215713ea42d3d5e3706f235eff9290 [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 Rossum9e3f3351992-09-29 13:40:47 +000027library to Python (sv) and Guido wrote Vrec.py (based upon a still
28frame grabber by Sjoerd, in turn based upon SGI demo code in C) to
29record a movie using it. Vrec was soon followed by modernized
Guido van Rossume1783321992-09-07 09:35:23 +000030versions of the other programs (Vinfo, Vplay, Vtime) and an
31interactive editor (Vedit). Finally, VFile was rewritten for more
Guido van Rossum9e3f3351992-09-29 13:40:47 +000032modularity, functionality and robustness, and various other tools were
33added as needed.
Guido van Rossumb2e82281992-08-18 16:01:19 +000034
Guido van Rossum7268c931992-08-18 21:11:18 +000035 Guido van Rossum
36 Jack Jansen
37 Sjoerd Mullender
Guido van Rossume4bddea1991-10-30 11:52:48 +000038
Guido van Rossum96059b31991-11-04 14:31:31 +000039
Guido van Rossum7268c931992-08-18 21:11:18 +000040Overview of files
41-----------------
42
Guido van Rossum9e3f3351992-09-29 13:40:47 +000043cmif-film.ms description of the CMIF video file format (a little
44 out of date)
Guido van Rossume1783321992-09-07 09:35:23 +000045
46
47These are programs with a command line interface:
48
49Vrec.py record video movies using the Indigo video library and
50 board
51
52Vplay.py play video movies
53
54Vinfo.py show statistics on movies
55
56Vtime.py (unrelated to vtime!!!) Copy a video file,
57 manipulating the time codes (e.g. faster/slower, or
58 regenerate time codes, or drop frames too close apart)
59
Guido van Rossum9e3f3351992-09-29 13:40:47 +000060Vmkjpeg.py compress an rgb or grey video file to jpeg[grey] format
61
62Vunjpeg.py expand a jpeg[grey] video file to rgb or grey format
63
Guido van Rossumff3da051992-12-09 22:16:35 +000064Vfix.py truncate the scan line width of a video file to
65 a multiple of 4 ('grey' images only)
66
Guido van Rossume1783321992-09-07 09:35:23 +000067Vedit.py interactive video editing program
68
Guido van Rossum67b48951992-09-24 12:54:35 +000069Vsend.py unicast or multicast live video as UDP packets
70
71Vreceive.py receive transmissions from Vsend
72
Guido van Rossume1783321992-09-07 09:35:23 +000073
74These modules are used by the above programs:
75
76VFile.py classes that read and write CMIF video files
77
78Viewer.py two viewer classes used by Vedit
79
Guido van Rossum67b48951992-09-24 12:54:35 +000080LiveVideoIn.py live video input class, used by Vsend
81
82LiveVideoOut.py live video output class, used by Vsend and Vreceive
83
Guido van Rossume1783321992-09-07 09:35:23 +000084
85The following are C programs, either for efficiency or because they
Guido van Rossumff3da051992-12-09 22:16:35 +000086need to link with a C library. (These probably don't work any more
87since the video file format has changed several times since they were
88written. Also, they can now be recoded in Python using the 'imageop'
89and 'imgfile' modules.)
Guido van Rossume1783321992-09-07 09:35:23 +000090
91squash.c make a movie smaller by averaging pixels
92 usage: squash factor [bits] <moviefile >newmoviefile
93 factor x and y compression factor
94 bits #bits left per sample in result (default 8)
95
96squash2.c make a movie smaller by dropping pixels
97 usage: squash2 factor <moviefile >newmoviefile
98 factor x and y compression factor
99
100tomono.c like squash2 but outputs a monochrome movie
101
102v2i.c convert the first frame of a movie file to SGI .rgb format
103 link with -limage
104
105i2v.c convert an rgb file to "lrectwrite" format (this was
106 used one time by the CMIF editor)
107
108
109These programs are obsolete, but kept around for sentimental reasons.
110Most either don't work any more because they don't use VFile and hence
111haven't followed the frequent changes in the CMIF video file format;
112or they are dependent upon hardware we don't have (SGI's previous
Guido van Rossumff3da051992-12-09 22:16:35 +0000113generation framegrabber). Anyway, their functionality is present in
114the suite of programs whose name begins with 'V' listed above.
Guido van Rossume1783321992-09-07 09:35:23 +0000115
Guido van Rossume4bddea1991-10-30 11:52:48 +0000116cam.py network real-time tv broadcast; see tv.py
117 usage: cam [packfactor [host]]
118 specifying 'all' for host broadcasts
119
120camcorder.py record video movies or make snapshots (in movie format)
Guido van Rossum96059b31991-11-04 14:31:31 +0000121 usage: camcorder [-c] [-a audiohost [-s]] [-p pf] [moviefile]
122 -c color (equivalent to -p 0)
Guido van Rossume4bddea1991-10-30 11:52:48 +0000123 -a audiohost syncaudio is running on audiohost
124 -s start syncaudio (on audiohost)
Guido van Rossum96059b31991-11-04 14:31:31 +0000125 -p packfactor packfactor (default 2; 0 records color)
Guido van Rossume4bddea1991-10-30 11:52:48 +0000126 moviefile (default film.video)
127 keyboard commands:
128 s stop grabbing (single step if already stopped)
129 c continuous grabbing
130 r start recording
131 p pause recording (record single frame if paused)
132 ESC quit
133
134statit.py various statistics operations on movie files
135
136syncaudio.py record audio synchronized with camcorder -a
137 usage: syncaudio videohost soundfile
Guido van Rossum96059b31991-11-04 14:31:31 +0000138 soundfile format: 16 bits/sample, 16000 samples/sec, 1 channel
139 (actually, you'd better set the sampling rate to 16000
140 with the audio panel)
Guido van Rossume4bddea1991-10-30 11:52:48 +0000141
142tv.py receiver for transmissions from cam.py
143
Guido van Rossum7caf6111991-11-04 15:55:01 +0000144vcopy.py selectively write frames from one movie file to another
145 usage: vcopy infile outfile
146 commands: 'n' gets next frame; 'w' writes current frame
147
Guido van Rossume4bddea1991-10-30 11:52:48 +0000148video.py player for movies recorded by camcorder.py
Guido van Rossum7385d581991-11-22 14:03:57 +0000149 usage: video [-l] [-p pf] [-m mag] [-F]
150 [moviefile [soundfile [skipbytes]]]
Guido van Rossum228381e1991-11-04 18:04:47 +0000151 -p pf override packfactor (to zoom)
152 -l looping -- restart movie when done
Guido van Rossum7385d581991-11-22 14:03:57 +0000153 -m mag magnification
154 -F run at max speed
Guido van Rossum228381e1991-11-04 18:04:47 +0000155 moviefile default is film.video
156 soundfile default is none (no sound)
157 skipbytes byte offset in soundfile where sound starts
Guido van Rossume4bddea1991-10-30 11:52:48 +0000158
Guido van Rossumeda5dfd1991-11-06 16:13:25 +0000159vinfo.py print summary of movie file(s)
160 usage: vinfo [-d] moviefile ...
161 -d print delta times (default: print abs times)
Guido van Rossume4bddea1991-10-30 11:52:48 +0000162
Guido van Rossum96059b31991-11-04 14:31:31 +0000163vpregs.py definition of VP registers
164
Guido van Rossume4bddea1991-10-30 11:52:48 +0000165vtime.py virtual time module imported by syncaudio.py and camcorder.py