652463ecc0
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29381 a1c6a512-1295-4272-9138-f99709370657
204 lines
7.4 KiB
Text
204 lines
7.4 KiB
Text
|
|
|
|
ABOUT LIBMPEG2
|
|
|
|
libmpeg2 is a free library for decoding mpeg-2 and mpeg-1 video
|
|
streams. It is released under the terms of the GPL license.
|
|
|
|
The main goals in libmpeg2 development are:
|
|
|
|
* Conformance - libmpeg2 is able to decode all mpeg streams that
|
|
conform to certain restrictions: "constrained parameters" for
|
|
mpeg-1, and "main profile" for mpeg-2. In practice, this is
|
|
what most people are using. For streams that follow these
|
|
restrictions, we believe libmpeg2 is 100% conformant to the
|
|
mpeg standards - and we have a pretty extensive test suite to
|
|
check this.
|
|
|
|
* Speed - there has been huge efforts there, and we believe
|
|
libmpeg2 is the fastest library around for what it
|
|
does. Please tell us if you find a faster one ! With typical
|
|
video streams as found on DVD's, and doing only decoding with
|
|
no display, you should be able to get about 110 fps on a
|
|
PIII/666, or 150 fps on an Athlon/950. This is less than 20
|
|
cycles per output pixel. In a real player program, the display
|
|
routines will probably take as much time as the actual
|
|
decoding !
|
|
|
|
* Portability - most of the code is written in C, and when we
|
|
use platform-specific optimizations (typically assembly
|
|
routines, currently used for the motion compensation and the
|
|
inverse cosine transform stages) we always have a generic C
|
|
routine to fall back on. This should be portable to all
|
|
architectures - at least we have heard reports from people
|
|
running this code on x86, ppc, sparc, arm and
|
|
sh4. Assembly-optimized implementations are available on x86
|
|
(MMX) and ppc (altivec) architectures. Ultrasparc (VIS) is
|
|
probably the next on the list - we'll see.
|
|
|
|
* Reuseability - we do not want libmpeg2 to include any
|
|
project-specific code, but it should still include enough
|
|
features to be used by very diverse projects. We are only
|
|
starting to get there - the best way to help here is to give
|
|
us some feedback !
|
|
|
|
The project homepage is at http://libmpeg2.sourceforge.net/
|
|
|
|
|
|
MPEG2DEC
|
|
|
|
mpeg2dec is a test program for libmpeg2. It decodes mpeg-1 and mpeg-2
|
|
video streams, and also includes a demultiplexer for mpeg-1 and mpeg-2
|
|
program streams. It is purposely kept simple : it does not include
|
|
features like reading files from a DVD, CSS, fullscreen output,
|
|
navigation, etc... The main purpose of mpeg2dec is to have a simple
|
|
test bed for libmpeg2.
|
|
|
|
The libmpeg2 source code is always distributed in the mpeg2dec
|
|
package, to make it easier for people to test it.
|
|
|
|
The basic usage is to just type "mpeg2dec file" where file is a
|
|
demultiplexed mpeg video file.
|
|
|
|
The "-s" option must be used for multiplexed (audio and video) mpeg
|
|
files using the "program stream" format. These files are usualy found
|
|
on the internet or on unencrypted DVDs.
|
|
|
|
The "-t" option must be used for multiplexed (audio and video) mpeg
|
|
files using the "transport stream" format. These files are usualy
|
|
found in digital TV applications.
|
|
|
|
The "-o" option is used to select a given output module - for example
|
|
to redirect the output to a file. This is also used for performance
|
|
testing and conformance testing.
|
|
|
|
The "-c" option is used to disable all optimizations.
|
|
|
|
|
|
OTHER PROJECTS USING LIBMPEG2
|
|
|
|
libmpeg2 is being used by various other projects, including:
|
|
|
|
* xine (http://xine.sourceforge.net/) - started as a simple
|
|
mpeg-2 audio and video decoder, but it since became a
|
|
full-featured DVD and video media player.
|
|
|
|
* VideoLAN (http://www.videolan.org/) - video streaming over an
|
|
ethernet network, can also be used as a standalone player.
|
|
|
|
* MPlayer (http://www.MPlayerHQ.hu) - another good player, it is
|
|
also very robust against damaged streams.
|
|
|
|
* movietime (http://movietime.sourceforge.net/) - still quite
|
|
young, but it looks very promising !
|
|
|
|
* mpeg2decX (http://homepage1.nifty.com/~toku/software_en.html) -
|
|
a graphical interface for mpeg2dec for macintosh osX.
|
|
|
|
* TCVP (http://tcvp.sf.net) - video and music player for unix.
|
|
|
|
* drip (http://drip.sourceforge.net/) - a DVD to DIVX transcoder.
|
|
|
|
* PoMP
|
|
(http://www.dmclab.hanyang.ac.kr/research/project/PoDS/PoDS_sw.htm) -
|
|
a research player optimized to minimize disk power consumption.
|
|
|
|
* OMS (http://www.linuxvideo.org/oms/)
|
|
|
|
* XMPS (http://xmps.sourceforge.net/)
|
|
|
|
* GStreamer (http://www.gstreamer.net/) - a framework for
|
|
streaming media; it has an mpeg2 decoding plugin based on
|
|
libmpeg2.
|
|
|
|
* mpeglib (http://mpeglib.sourceforge.net/) - a video decoding
|
|
library that usess libmpeg2 when decoding mpeg streams.
|
|
|
|
* daphne (http://daphne.rulecity.com/) - a laserdisc arcade game
|
|
simulator.
|
|
|
|
* GOPchop (http://outflux.net/unix/software/GOPchop/) - a
|
|
GOP-accurate editor for MPEG2 streams.
|
|
|
|
If you use libmpeg2 in another project, let us know !
|
|
|
|
|
|
TASKS
|
|
|
|
There are several places where we could easily use some help:
|
|
|
|
* Documentation: libmpeg2 still has no documentation. Every
|
|
project using it has had to figure things out by looking at
|
|
the header files, at the mpeg2dec sample application, and by
|
|
asking questions. Writing down a nice documentation would make
|
|
the code more easily reuseable.
|
|
|
|
* Testing: If you find any stream that does not decode right
|
|
with libmpeg2, let us know ! The best thing would be to mail
|
|
to the libmpeg2-devel mailing list. Also, it would be nice to
|
|
build a stress test so we can make sure libmpeg2 never crashes
|
|
on bad streams.
|
|
|
|
* Coding: There is a small TODO list in the mpeg2dec package,
|
|
you can have a look there ! Most items are pretty terse
|
|
though.
|
|
|
|
* Porting: If you're porting to a new architecture, you might
|
|
want to experiment with the compile flags defined in
|
|
configure.in . When you figure out whats fastest on your
|
|
platform, send us a patch !
|
|
|
|
* Assembly optimizations: We only have x86 and altivec
|
|
optimizations yet, it would be worthwhile writing routines for
|
|
other architectures, especially those that have SIMD
|
|
instruction set extensions ! Also the yuv2rgb x86 routines
|
|
could probably be optimized a lot.
|
|
|
|
|
|
CVS SNAPSHOTS
|
|
|
|
A daily snapshot is created using "make distcheck" every night and
|
|
uploaded to http://libmpeg2.sourceforge.net/files/mpeg2dec-snapshot.tar.gz .
|
|
It is easier to use than the CVS repository, because you do not need
|
|
to have the right versions of automake, autoconf and libtool
|
|
installed. It might be convenient when working on a libmpeg2 port for
|
|
example.
|
|
|
|
|
|
CVS REPOSITORY
|
|
|
|
The latest libmpeg2 and mpeg2dec source code can always be found by
|
|
anonymous CVS:
|
|
|
|
# export CVSROOT=:pserver:anonymous@cvs.libmpeg2.sourceforge.net:/cvsroot/libmpeg2
|
|
# cvs login (Just press Return when prompted for a password)
|
|
# cvs checkout mpeg2dec
|
|
|
|
You can also browse the latest changes online at
|
|
http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/libmpeg2/mpeg2dec/
|
|
|
|
The other CVS modules are mpeg2dec-streams for the test suite, and
|
|
mpeg2dec-livid for the CVS history of the project while it was still
|
|
hosted on the linuxvideo.org servers.
|
|
|
|
|
|
MAILING LISTS
|
|
|
|
See the subscription information at http://libmpeg2.sourceforge.net/lists.html
|
|
|
|
libmpeg2-devel
|
|
|
|
This is the main mailing list for technical discussion about
|
|
libmpeg2. Anyone wanting to work on libmpeg2, or maybe just stay
|
|
informed about the development process, should probably subscribe to
|
|
this list.
|
|
|
|
libmpeg2-checkins
|
|
|
|
All libmpeg2 checkins are announced there. This is a good way to keep
|
|
track of what goes into CVS.
|
|
|
|
libmpeg2-announce
|
|
|
|
This is a very low traffic mailing list, only for announcements of new
|
|
versions of libmpeg2. Only project administrators can post there.
|