Subversion Repositories shark

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

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