README 6.73 KB
Newer Older
Michel Lespinasse's avatar
Michel Lespinasse committed
1 2


Michel Lespinasse's avatar
Michel Lespinasse committed
3
ABOUT LIBMPEG2
Michel Lespinasse's avatar
Michel Lespinasse committed
4

Michel Lespinasse's avatar
Michel Lespinasse committed
5 6
libmpeg2 is a free library for decoding mpeg-2 and mpeg-1 video
streams. It is released under the terms of the GPL license.
Michel Lespinasse's avatar
Michel Lespinasse committed
7

Michel Lespinasse's avatar
Michel Lespinasse committed
8
The main goals in libmpeg2 development are:
Michel Lespinasse's avatar
Michel Lespinasse committed
9

Michel Lespinasse's avatar
Michel Lespinasse committed
10 11 12 13 14 15 16
      *	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.
Michel Lespinasse's avatar
Michel Lespinasse committed
17

Michel Lespinasse's avatar
Michel Lespinasse committed
18 19 20 21 22 23 24 25 26
      *	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 !
Michel Lespinasse's avatar
Michel Lespinasse committed
27

Michel Lespinasse's avatar
Michel Lespinasse committed
28 29 30 31 32 33 34 35 36 37
      *	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.
Michel Lespinasse's avatar
Michel Lespinasse committed
38

Michel Lespinasse's avatar
Michel Lespinasse committed
39 40 41 42 43
      *	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 !
Michel Lespinasse's avatar
Michel Lespinasse committed
44

Michel Lespinasse's avatar
Michel Lespinasse committed
45
The project homepage is at http://libmpeg2.sourceforge.net/
Michel Lespinasse's avatar
Michel Lespinasse committed
46 47


Michel Lespinasse's avatar
Michel Lespinasse committed
48
MPEG2DEC
Michel Lespinasse's avatar
Michel Lespinasse committed
49

Michel Lespinasse's avatar
Michel Lespinasse committed
50 51 52 53 54 55
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.
Michel Lespinasse's avatar
Michel Lespinasse committed
56

Michel Lespinasse's avatar
Michel Lespinasse committed
57 58
The libmpeg2 source code is always distributed in the mpeg2dec
package, to make it easier for people to test it.
Michel Lespinasse's avatar
Michel Lespinasse committed
59

Michel Lespinasse's avatar
Michel Lespinasse committed
60 61
The basic usage is to just type "mpeg2dec file" where file is a
demultiplexed mpeg video file.
Michel Lespinasse's avatar
Michel Lespinasse committed
62

Michel Lespinasse's avatar
Michel Lespinasse committed
63 64 65
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.
Michel Lespinasse's avatar
Michel Lespinasse committed
66

Michel Lespinasse's avatar
Michel Lespinasse committed
67 68 69
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.
Michel Lespinasse's avatar
Michel Lespinasse committed
70

Michel Lespinasse's avatar
Michel Lespinasse committed
71 72 73
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.
Michel Lespinasse's avatar
Michel Lespinasse committed
74

Michel Lespinasse's avatar
Michel Lespinasse committed
75
The "-c" option is used to disable all optimizations.
Michel Lespinasse's avatar
Michel Lespinasse committed
76 77


Michel Lespinasse's avatar
Michel Lespinasse committed
78
OTHER PROJECTS USING LIBMPEG2
Michel Lespinasse's avatar
Michel Lespinasse committed
79

Michel Lespinasse's avatar
Michel Lespinasse committed
80
libmpeg2 is being used by various other projects, including:
Michel Lespinasse's avatar
Michel Lespinasse committed
81

Michel Lespinasse's avatar
Michel Lespinasse committed
82 83 84
      *	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.
Michel Lespinasse's avatar
Michel Lespinasse committed
85

Michel Lespinasse's avatar
.  
Michel Lespinasse committed
86 87 88
      *	VideoLAN (http://www.videolan.org/) - video streaming over an
	ethernet network, can also be used as a standalone player.

Michel Lespinasse's avatar
Michel Lespinasse committed
89 90
      *	MPlayer (http://www.MPlayerHQ.hu) - another good player, it is
	also very robust against damaged streams.
Michel Lespinasse's avatar
Michel Lespinasse committed
91

Michel Lespinasse's avatar
Michel Lespinasse committed
92 93
      *	movietime (http://movietime.sourceforge.net/) - still quite
	young, but it looks very promising !
Michel Lespinasse's avatar
Michel Lespinasse committed
94

Michel Lespinasse's avatar
Michel Lespinasse committed
95
      *	mpeg2decX (http://homepage1.nifty.com/~toku/software_en.html) -
Michel Lespinasse's avatar
Michel Lespinasse committed
96 97
	a graphical interface for mpeg2dec for macintosh osX.

Michel Lespinasse's avatar
.  
Michel Lespinasse committed
98 99
      *	TCVP (http://tcvp.sf.net) - video and music player for unix.

Michel Lespinasse's avatar
Michel Lespinasse committed
100 101
      *	drip (http://drip.sourceforge.net/) - a DVD to DIVX transcoder.

Michel Lespinasse's avatar
.  
Michel Lespinasse committed
102 103 104 105
      *	PoMP
	(http://www.dmclab.hanyang.ac.kr/research/project/PoDS/PoDS_sw.htm) -
	a research player optimized to minimize disk power consumption.

Michel Lespinasse's avatar
Michel Lespinasse committed
106
      *	OMS (http://www.linuxvideo.org/oms/)
Michel Lespinasse's avatar
Michel Lespinasse committed
107

Michel Lespinasse's avatar
Michel Lespinasse committed
108 109 110 111 112 113 114 115 116 117 118 119 120 121
      *	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.
Michel Lespinasse's avatar
Michel Lespinasse committed
122

Michel Lespinasse's avatar
Michel Lespinasse committed
123
If you use libmpeg2 in another project, let us know !
Michel Lespinasse's avatar
Michel Lespinasse committed
124 125


Michel Lespinasse's avatar
Michel Lespinasse committed
126
TASKS
Michel Lespinasse's avatar
Michel Lespinasse committed
127

Michel Lespinasse's avatar
Michel Lespinasse committed
128
There are several places where we could easily use some help:
Michel Lespinasse's avatar
Michel Lespinasse committed
129

Michel Lespinasse's avatar
Michel Lespinasse committed
130 131 132 133 134
      *	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.
Michel Lespinasse's avatar
Michel Lespinasse committed
135

Michel Lespinasse's avatar
Michel Lespinasse committed
136 137 138 139 140
      *	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.
Michel Lespinasse's avatar
Michel Lespinasse committed
141

Michel Lespinasse's avatar
Michel Lespinasse committed
142 143 144
      *	Coding: There is a small TODO list in the mpeg2dec package,
	you can have a look there ! Most items are pretty terse
	though.
Michel Lespinasse's avatar
Michel Lespinasse committed
145

Michel Lespinasse's avatar
Michel Lespinasse committed
146 147 148 149
      *	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 !
Michel Lespinasse's avatar
Michel Lespinasse committed
150

Michel Lespinasse's avatar
Michel Lespinasse committed
151 152 153 154 155
      *	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.
Michel Lespinasse's avatar
Michel Lespinasse committed
156 157


158
SUBVERSION REPOSITORY
Michel Lespinasse's avatar
Michel Lespinasse committed
159 160

The latest libmpeg2 and mpeg2dec source code can always be found by
161
anonymous Subversion:
Michel Lespinasse's avatar
Michel Lespinasse committed
162

163
$ svn checkout svn://svn.videolan.org/libmpeg2/trunk libmpeg2
Michel Lespinasse's avatar
Michel Lespinasse committed
164 165

You can also browse the latest changes online at
166
https://trac.videolan.org/libmpeg2/browser
Michel Lespinasse's avatar
Michel Lespinasse committed
167 168


Michel Lespinasse's avatar
Michel Lespinasse committed
169
MAILING LISTS
Michel Lespinasse's avatar
Michel Lespinasse committed
170

Michel Lespinasse's avatar
Michel Lespinasse committed
171
See the subscription information at http://libmpeg2.sourceforge.net/lists.html
Michel Lespinasse's avatar
Michel Lespinasse committed
172

Michel Lespinasse's avatar
Michel Lespinasse committed
173
libmpeg2-devel
Michel Lespinasse's avatar
Michel Lespinasse committed
174

Michel Lespinasse's avatar
Michel Lespinasse committed
175 176 177 178
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.
Michel Lespinasse's avatar
Michel Lespinasse committed
179

Michel Lespinasse's avatar
Michel Lespinasse committed
180
libmpeg2-checkins
Michel Lespinasse's avatar
Michel Lespinasse committed
181

Michel Lespinasse's avatar
Michel Lespinasse committed
182 183
All libmpeg2 checkins are announced there. This is a good way to keep
track of what goes into CVS.
Michel Lespinasse's avatar
Michel Lespinasse committed
184

Michel Lespinasse's avatar
Michel Lespinasse committed
185
libmpeg2-announce
Michel Lespinasse's avatar
Michel Lespinasse committed
186

Michel Lespinasse's avatar
Michel Lespinasse committed
187 188
This is a very low traffic mailing list, only for announcements of new
versions of libmpeg2. Only project administrators can post there.