1BERKELEY MPEG TOOLS (Version 1.0, Release 2; August 1995)
2
3Lawrence A. Rowe, Steve Smoot, Ketan Patel, Brian Smith, Kevin Gong,
4Eugene Hung, Doug Banks, Sam Tze-San Fung, Darryl Brown, and Dan Wallach
5
6--------------------
7Changes since release one:
8  mpeg_encode - important bug fixes
9  mpeg_play   - simple user interface added
10  others - small bugfixes
11--------------------
12
13Computer Science Division-EECS University of California at Berkeley
14Berkeley, CA 94720-1776
15
16This distribution is a combined release of tools developed at
17Berkeley and elsewhere for manipulating MPEG-1 video.
18
19This release includes the following tools:
20
21  mpeg_play - software-only MPEG-1 video decoder
22  mpeg_encode - software-only MPEG-1 video encoder
23  mpeg_stat - a bitstream analysis tool
24  mpeg_blocks - an interactive tool to examine macroblock coding
25  mpeg_bits - an interactive tool to examine bit allocation to blocks
26
27The package is available at the URL
28
29  ftp://mm-ftp.cs.berkeley.edu/pub/multimedia/mpeg/bmt1r1.tar.gz
30
31For more information on MPEG standards and other MPEG software and
32hardware, see http://www-plateau.cs.berkeley.edu/mpeg/index.html.
33Other sites where you can find interesting MPEG related software
34and movies are:
35
36  ftp://sunsite.unc.edu/pub/multimedia/utilities
37  ftp://netcom.com:/pub/cf/cfogg/
38  http://www.acm.uiuc.edu/rml/Mpeg
39
40The remainder of this file describes each tool including changes,
41if any, from previous releases and other information about the
42release.  In the descriptions below reference is made to papers
43describing various aspects of these programs.  These papers are
44also available at the Plateau WWW site (http://www-plateau.cs.berkeley.edu/)
45or in our FTP site in the directory pub/multimedia/papers.
46
47
48MPEG_PLAY (V2.3)
49
50This program decodes and displays an MPEG-1 video stream.  The
51program has been written to be portable, which means it has not
52been optimized for specific platforms.  The decoder is implemented
53as a library that will take a video stream and display it in an X
54window on an 8, 24 or 32 bit deep display.  The main routine is
55supplied to demonstrate the use of the decoder library.  Several
56dithering algorithms are supplied based on the Floyd-Steinberg,
57ordered dither, and half-toning algorithms that tradeoff quality
58and performance.  Neither the library nor the main routine handle
59real-time synchronization or audio streams.
60
61A paper published at ACM Multimedia 93 describes the decoder and
62compares the performance of the program on several platforms (see
63pub/multimedia/papers/MM93.ps.Z).  An updated version of this
64comparison is included in the file doc/mpegperf.ps in this
65distribution.  This code has also been included in our Continuous
66Media Player (cmplayer) that plays synchronized audio and video
67across a network.  This system adapts to the decoding performance
68of the destination machine.  A paper describing these algorithms
69and the performance of the system was published at IS&T SPIE 94
70(see /pub/multimedia/papers/CMMPEG-SPIE94.ps.Z).
71
72This release fixes numerous bugs in the player including the motion
73vector problem that caused problems when playing MPEGs generated
74from computer-generated animations, the error in the color space
75equations, some IDCT problems, and a number of minor problems with
76installation on platforms with new OS releases.
77
78New features have also been implemented, chief of which are the ability
79to play system layer MPEG streams (discarding audio), gamma correction, and
80frame rate control.
81
82
83MPEG_ENCODE (V1.5R2)
84
85This program generates an MPEG-1 video bitstream given a sequence
86of images in an acceptable format (e.g., yuv, ppm, jpeg, etc.).
87It can be run on one computer (i.e., sequential) or on several
88computers (i.e., parallel).  Our goal was to produce a portable,
89easy-to-use encoder that can be used to encode video material for
90a variety of desktop applications (e.g., video-on-demand).  The
91parallelism is done on a sequence of pictures.  In other words,
92you can spawn one or more children to encode continuous runs of
93pictures.  The goal is to allow you to encode using multiple
94processors, think spare cycles on workstations, to speed up the
95encoding time.  Although performance depends on the speed of
96individual processors, the file system and network, and the P/B
97frame search methods, we have encoded 3.75 frames/second on 8 HP
98Snakes running in parallel as compared with 0.6 frames/second on
991 Snake when coding CIF size images.  The encoder has also been
100ported to an Intel supercomputer (Paragon) on which it has encoded CCIR
101601 images at 40 frames/second.
102
103A paper describing the parallel encoder and our experiments on a
104network of workstations was published at the 1994 Picture Coding
105Symposium (see /pub/multimedia/papers/mpeg-encode.ps.Z).  A paper
106describing the port to the Intel supercomputer and the performance
107experiments on that system was presented at IS&T SPIE95 (see
108/pub/multimedia/papers/intelsc-mpeg-encode.ps.Z).  This work was
109done jointly with Ed Delp and his student Ke Shen from Purdue.
110You can get a copy of the Intel code from /pub/dist/delp/spie95-coding
111at skynet.ecn.purdue.edu.
112
113This release fixed several bugs and added some new features.
114Specifically, the encoder has been modified to: 1) accept input
115images generated on the fly by another program, 2) generate constant
116bitrate bitstreams, 3) be much more flexible about input formats,
117and 4) allow a priori specification of motion vectors or Qscales on a
118macroblock level, to avoid repetitive motion searches when reencoding.
119
120MPEG_STAT (V2.2R2)
121
122MPEG_STAT has been modified to gather more statistics (e.g., bit
123rate, real Q-scale information, detailed motion vector/cbp information,
124constrained parameter checking, etc.) and fix some bugs. The major
125change (from 2.1) was to add some additional verification checks to help
126determine the validty of a bitstream including illegal motion
127vectors and CPB settings, and speed it up even more.
128
129
130MPEG_BLOCKS (V1.0R2)
131
132This program is a new tool that allows a user to examine how a
133movie has been encoded on a picture-by-picture basis.  It shows
134size statistics on the different frame types and how each macroblock
135was coded.  The program also shows the decoded image so you can
136see the effect of these coding parameters.
137
138The current version of this program only works on systems that
139support the X Windowing System and Tcl/Tk because it provides a
140user-friendly GUI.
141
142
143MPEG_BITS (V1.0R2)
144
145This program is also new in this release.  It is based on the
146MPEG_BLOCKS program, but instead of showing block encoding, it
147shows how many bits were allocated to each block.  It uses the same
148GUI interface.
149
150MPEG_BITS also allows you to specify a range of blocks that should
151receive more bits when recoding the sequence.  The mpeg_encoder
152has not yet been modified to take this specification, but it will
153in a future release.
154
155
156ACKNOWLEDGEMENTS
157
158We gratefully thank Hewlett-Packard, Fujitsu, Hitachi, and Philips who
159provided financial support for this work.  We also want to thank the
160following people and organizations for their help:
161
162    Jef Poskanzer who developed the pbmplus package.
163
164    Eiichi Kowashi of Intel and Avideh Zakhor of U.C. Berkeley who
165    provided valuable suggestions on motion vector searching.
166
167    Chad Fogg of Chromatic Research, Inc. who has helped us understand
168    many issues in MPEG coding and decoding.
169
170    Rainer Menes of the Technical University of Munich who
171    ported previous versions of the Berkeley MPEG encoder and
172    decoder to the Macintosh. He has provided us with many suggestions
173    to improve the code.
174
175    Robert Safranek of ATT for comments, suggestions, and most of
176    the code for custom quantization tables.
177
178    Jim Boucher of Boston University for jmovie2jpeg.
179
180    The San Diego SuperComputing Center for providing facilities
181    to develop some of the code contained within.
182
183    Tom Lane of the Independent JPEG Group who provided us with the basic
184    inverse DCT code used by our player.  (tom_lane@g.gp.cs.cmu.edu)
185
186    Reid Judd of Sun Microsystems who provided advice and assistance.
187
188    Todd Brunhoff of NVR who provided advice and assistance.
189
190    Toshihiko Kawai of Sony who provided advice and assistance.
191