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. |