Table of Contents
mpeg_play - plays mpeg-1 encoded bitstreams using X11
mpeg_play
[ -nob ] [ -nop ] [ -display display_name ] [ -quality {on|off} ] [ -dither dither_option
] [ -loop ] [ -eachstat ] [ -seek offset ] [ -start num ] [ -end num ] [ -gamma
gamma_correction_value ] [ -framerate num ] [ -no_display ] [ -controls {on|off|none}
] [ -shmem_off ] [ -l_range num ] [ -cr_range num ] [ -cb_range num ] [ -quiet
] file_name
mpeg_play decodes and displays mpeg-1 encoded bitstreams
on systems running X11. The player will create a new window, display the
bitstream, and exit. Any error messages or notices are sent to stderr.
- -nob
- : causes the player to ignore and not display any B frames.
- -nop
- : causes
the player to ignore and not display any P and B frames.
- -display display_name
- : causes the player to open the window on the display display_name.
- -quality
{on|off}
- : forces player to choose output quality over speed when on, and
vice versa when off. When quality is on, the player uses a computationally
expensive IDCT and also improves playback through improved handling of
half pixel motion vectors. The default can be set to on if you compile
mpeg_play with the flag -DQUALITY.
- -dither dither_option
- : selects from
a variety of dither options. The possible values are:
- ordered - ordered dither.
- ordered2 - a faster ordered dither. This is the default.
- mbordered - ordered
dithering at the macroblock level. Although there
- is a noticeable decrease
in dither quality, this is the fastest dither available.
- fs4 - Floyd-Steinberg
dithering with 4 error values propagated.
- fs2 - Floyd-Steinberg dithering
with 2 error values propagated.
- fs2fast - Fast Floyd-Steinberg dithering with
2 error values propagated.
- hybrid - Hybrid dithering, a combination of ordered
dithering for the luminance
- channel and Floyd-Steinberg 2 error dithering
for the chrominance channels. Errors are NOT propagated properly and are
dropped all together every two pixels in either direction.
- hybrid2 - Hybrid
dithering as above, but with error propagation among pixels.
- 2x2 - A dithering
technique using a 2x2 pixel area for each pixel. The image displayed
- is
4 times larger than the original image encoded. Random error terms are added
to each pixel to break up contours and gradients.
- gray - Grayscale dithering.
The image is dithered into 128 grayscales. Chrominance
- information is thrown
away.
- gray256 - Grayscale dithering. The image is dithered into 256 grayscales
- (requires private colormap). Chrominance information is thrown away.
- color
- Full color display (only available on 16/24 bit color displays).
- color2
- Full color display with increased size (only available on 16/24
- bit color
displays).
- none - no dithering is done, no image is displayed. Used to time
decoding process.
- mono - Floyd-Steinberg dithering for monochrome displays.
- threshold - Floyd-simple dithering for monochrome displays.
- ppm - Write a PPM
file for each frame.
- -loop
- : makes the player loop back to the beginning
after reaching the end.
- -owncm
- : makes the player use a private colormap
for the window.
- -step
- : requires the user to press return for each new frame.
- -seek offset
- : before playing the movie, seek to the given offset in the
file (useful for large movies). In this case -end is redefined to give the
number of frames to play, and -start has no meaning. The offset should point
to a Sequence or (closed) GOP header, but data will be discarded until
one is found. The initial sequence header will be parsed before the seek.
The skipped sections must not change the quantization matrices or the
results are undefined.
- -start num
- : Waits to start display until this frame
number (previous frames are parsed).
- -end num
- : ends display at this frame
number (except when -seek is used).
- -gamma gamma_correction_param
- : specifies
the amount of gamma correction. Default is 1.0. Use higher values if movie
looks dark and hard to see.
- -framerate num
- : sets the framerate of the playback
to num frames per second. A value of 0 indicates that the stream should
be played as fast as possible. The default is to play at the rate specified
in the stream (if possible). Note this is merely a framerate limiter, it
will not discard frames to meet the rate.
- -controls {on|off|none}
- : determines
the initial interactive X user interface control bar state (if available).
The value on (default) opens the control bar at initialization and enters
pause mode after displaying the first frame. The value off leaves the control
bar initially hidden and begins playback without pausing (similar to the
old behavior). The control bar can be toggled on and off at any time by
clicking in the video display window, unless the -controls none option is
specified, in which case the control bar is unavailable and playback functions
as though the player were built without interactive controls (exactly the
old behavior).
- -quiet
- : suppresses printing of frame numbers, timing information,
and most error messages.
- -eachstat
- : causes statistics to be displayed after
each frame. Only valid when compiled with -DANALYSIS.
- -shmem_off
- : turns shared
memory off.
- -l_range num_colors
- : sets the number of colors assigned to the
luminance component when dithering the image. The product of l_range, cr_range
and cb_range should be less than the number of colors on the display.
- -cr_range
num_colors
- : sets the number of colors assigned to the red component of
the chrominance range when dithering the image. The product of l_range,
cr_range and cb_range should be less than the number of colors on the display.
- -cb_range num_colors
- : sets the number of colors assigned to the blue component
of the chrominance range when dithering the image. The product of l_range,
cr_range and cb_range should be less than the number of colors on the display.
- -no_display
- : dithers, but does not display, usually used for testing and
timing purposes.
The player expects video streams only. It can handle
multiplexed MPEG streams (video+audio streams) by discarding the audio.
Some streams do not end with the proper sequence end code and will probably
generate an "Improper sequence end code." error when done playing.
This player
can play XING data files. Be aware that XING makes no use of temporal redundancy
or motion vector information. In other words, they do not use any P or
B frames in their streams. Instead, XING data is simply a sequence of I
frames. Since I frames take significantly longer to decode, performance
of the player using XING data is not representative of the player's ability.
The player does not play MPEG-1 D-frame streams, but they are a rarity.
If
the player is compiled without the controlbar, then it can play multiple
streams in different windows.
This is version 2.1a, containing some
new features since 2.0, and several bug fixes. It is a major change since
version 1.0.
The only known bug is that multiple mpeg_plays cannot seem
to be run simultaneously on a multiprocessor SPARC 20 or a SparcCenter
2000E using shared memory (in particular: "On a bi-processor Sparc 20/20
sparc-processor 2000E running Solaris 2.3 or 2.4, it is not possible to run
two concurrent 'mpeg_play -loop' on the same bitstream. One of the mpeg_play
dies when it loops." This may be a problem with the X shared memory library
and not our code.)
- Ketan Patel - University of California, Berkeley,
kpatel@cs.berkeley.edu
- Brian Smith - University of California, Berkeley, bsmith@cs.berkeley.edu
- Henry Chi-To Ma - University of California, Berkeley, cma@cs.berkeley.edu
- Kim
Man Liu - University of California, Berkeley, kliu@cs.berkeley.edu
- Steve Smoot
- University of California, Berkeley, smoot@cs.berkeley.edu
- Eugene Hung - University
of California, Berkeley, eyhung@cs.berkeley.edu
Table of Contents