MPEG Video Software Decoder
(Version 1.1; Nov 25,1992)
Lawrence A. Rowe, Ketan Patel, and Brian Smith
Computer Science Division-EECS, Univ. of Calif. at Berkeley
This directory contains a public domain MPEG video software
decoder. The decoder is implemented as a library that will
take a video stream and display it in an X window on an 8, 24
or 32 bit deep display. The main routine is supplied to
demonstrate the use of the decoder library. Several dithering
algorithms are supplied based on the Floyd-Steinberg, ordered
dither, and half-toning algorithms that tradeoff quality and
performance. Neither the library nor the main routine handle
real-time synchronization or audio streams.
The decoder implements the standard described in the Committee
Draft ISO/IEC CD 11172 dated December 6, 1991 which is
sometimes refered to as "Paris Format." The code has been
compiled and tested on the following platforms:
HP PA-RISC (HP/UX 8.X, X11R4) (i.e., HP 9000/7XX and 9000/3XX)
Sun Sparc (SunOS 4.X, X11R5)
DECstation 5000 and Alpha
Silicon Graphics Indigo
MIPS RISC/os 4.51
If you decide to port the code to a new architecture, please let
us know so that we can incorporate the changes into our sources.
This directory contains everything required to build and
display video. We have included source code, a makefile,
installation instructions, and a man page. Data files can
be obtained from the same ftp site this was located in.
See the INSTALL file for instructions on how to
compile and run the decoder.
The data files were produced by XING. XING data does not take
advantage of P or B frames (ie, frames with motion compensation).
Performance of the player on XING data is significantly slower
(half or less) than the performance when motion compensated MPEG
data is decoded. We are very interested in running the software
on other MPEG streams. Please contact us if you have a stream
that does not decode correctly. Also, please send us new streams
produced by others that do utilize P and B frames.
NOTE: One particular XING data file: raiders.mpg, is not a
valid MPEG stream since it does not contain a sequence
We have established several mailing lists for messages about
the decoder:[email protected]
General information on the decoder for everyone interested
should be sent to this list. This should become active after
Requests to join or leave the list should be sent to this
address. The subject line should contain the single word
ADD or DELETE.[email protected]
Problems, questions, or patches should be sent to this address.
Our future plans include porting the decoder to run on other
platforms, integrating it into a video playback system that
supports real-time synchronization and audio streams, and
further experiments to improve the performance of the
decoder. Vendors or other organizations interested in supporting
this research or discussing other aspects of this project should
contact Larry Rowe at [email protected]
We also plan on producing an MPEG encoder. The encoder will NOT be
a real time digitizer, but will be intended for offline processing
of video data.
We gratefully thank Hewlett-Packard, Fujitsu, the Semiconductor
Research Corporation for financial support.
We also want to thank the following people for their help:
Tom Lane of the Independent JPEG Group provided us with
the basic inverse DCT code used by our player.
Reid Judd of Sun Microsystems provided advise and assistance.
Todd Brunhoff of NVR provided advise and assistance.
MPEG translator and player V0.00
This is the 286 version of the MPEG traslation and playback routines.
I would like to thank Giampero Caprino for providing the VGA routines and
the authors of the Mpeg standard Unix distribution for most of this code.
To play back an animation you first must translate it to a raw data file.
To do this type
mpeg input-file output-file
You will see it counting off the frames as it runs. When it is finished
Where input-file to playback corresponds to the output-file of mpeg.exe.
The delay value defaults to 0, but this is probably too fast.
On a 486sx with no delay, I get just over 20 frames per second.
Try values between 0 and 200.
Note that several dithering options are not supported: 2x2, hybrid2,
and gray. Perhaps I will fix this in the future.
Also please note that if the MPEG animation loops, the translator will
happily write a file as big as your disk drive. Hit CTRL-C to stop it.
This program is freeware.
I have included the original Unix man page and docs for the MPEG player.