

ABOUT MPEG2DEC

mpeg2dec is an mpeg-1 and mpeg-2 video decoder. It is purposely kept
simple : it does not include features like reading files from a DVD,
output picture scaling, audio decoding, synchronisation, etc... The
main purpose of mpeg2dec is to have a simple test bed for
libmpeg2. mpeg2dec also includes a demultiplexer for mpeg-1 and mpeg-2
program streams, and output routines for a variety of different
interfaces.

mpeg2dec and libmpeg2 are released under the GPL license.

The project homepage is at http://www.linuxvideo.org/mpeg2dec/


LIBMPEG2

libmpeg2 is the heart of the mpeg decoder. It should be 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 sufficient for most applications - I have not heard of any
commercial application actually using the higher mpeg profiles.

Right now we support nearly all of these features : the main ommission
is mpeg-2 field pictures, which we should fix before the 0.2.0
release. For streams that do not use unsupported mpeg features, we are
100% conformant to the mpeg standard. The speed is good too - for most
current systems, the display will actually take more time than the
mpeg-2 decoding. For systems that have hardware color conversion and
scaling (as we can use with the xv extension in Xfree 4), you should
be able to watch DVD streams on a Celeron 400. On a PIII/666 with null
display you should get about 100 frames per second.

The code is mostly written in C, with some time-critical routines
having optimized implementations using assembly language or mlib
calls. It should be portable on all architectures - it has been tested
at least on x86, ppc and sparc. Optimized implementations are only
available for x86 yet, but we'd like to get them for other
architectures soon.


USAGE

The basic usage is to just type "mpeg2dec file" where file is an
mpeg-1 or mpeg-2 video file.

The "-s" option must be used for multiplexed (audio and video)
files. These files are usualy found on the internet or on unencrypted
DVDs.

The "-o" option is used to select a given output layer. By default
mpeg2dec should select the right output layer (x11, sdl, whatever) but
you can try other choices using this option. This is mainly used for
performance testing and conformance testing.


CVS REPOSITORY

The latest mpeg2dec source code can always be found by anonymous CVS
at cvs.linuxvideo.org:/cvs/livid :

# export CVSROOT=:pserver:anonymous@cvs.linuxvideo.org:/cvs/livid
# cvs login (Just press Return when prompted for a password)
# cvs checkout mpeg2dec

You can also browse the latest changes online at
http://www.linuxvideo.org/developer/viewcvs.cgi/mpeg2dec/

There is an mpeg2dec test suite based on the official mpeg2
conformance tests, you can get it in the mpeg2dec-streams CVS module :

# cvs checkout mpeg2dec-streams

Daily mpeg2dec CVS snapshots are also available at
http://www.linuxvideo.org/developer/data/mpeg2dec.tar.gz


OTHER PROJECTS USING LIBMPEG2

OMS (http://www.linuxvideo.org/oms/) is a full-featured DVD player project.

xine (http://xine.sourceforge.net/) is a simple mpeg-2 audio and video
decoder. It has less features than OMS but it is easier to work
with. It is a great test bed for audio/video synchronisation issues
too.


CONTRIBUTORS

Aaron Holtzman <aholtzma@ess.engr.uvic.ca> started the project and
	made the initial working implementation.

Michel Lespinasse <walken@zoy.org> did large changes for speed and
	mpeg conformance and is the current maintainer.

Other contributors include :

	Bruno Barreyra <barreyra@ufl.edu> - build fixes
	Stephen Crowley <stephenc@dns2.digitalpassage.com> - build fixes
	Colin Cross <colin@mit.edu> - 3dfx output code
	Didier Gautheron <dgautheron@magic.fr> - bug fixes
	Ryan C. Gordon <icculus@lokigames.com> - SDL support
	Peter Gubanov <peter@elecard.net.ru> - MMX IDCT scheduling
	H}kan Hjort <d95hjort@dtek.chalmers.se> - Solaris fixes, mlib code
	Gerd Knorr <kraxel@goldbach.in-berlin.de> - Xv support
	David I. Lehn <dlehn@vt.edu> - motion_comp mmx code
	Olie Lho <ollie@sis.com.tw> - MMX yuv2rgb routine
	Rick Niles <niles@scyld.com> - build fixes
	Real Ouellet <realo@sympatico.ca> - g200 fixes
	Bajusz Peter <hyp-x@inf.bme.hu> - motion comp fixes
	Franck Sicard <Franck.Sicard@miniruth.solsoft.fr> - x11 fixes
	Brion Vibber <brion@gizmo.usc.edu> - x11 fixes
	Fredrik Vraalsen <vraalsen@cs.uiuc.edu> - general hackage and stuff

(let me know if I forgot anyone)


HOW TO HELP

We'd like to have optimized routines for more different architectures :
PPC, alpha, sparc... If you can do ASM using the multimedia extensions
on these architectures, we want to hear about you :) We're not too
good at MMX instruction scheduling either, so if you're good at that
we're interested too. There are probably still other ways to improve
the decoder performance too - if you're good at that, just have a look
and tell us what you find.

We also need some people to work on the video output layers.

If you need the mpeg-2 video spec, you can get it on www.wotsit.org.
(search for mpeg2-2.doc)


CONTACTS

If you want to work on mpeg2dec, you should write to walken and aaron
and subscribe to the livid-dev mailing list.

If you just want help about mpeg2dec, please post to the livid-user
mailing list.

Information about these mailing lists is available at
http://www.linuxvideo.org/developer/mailinglists.php3
