libmpeg2 is a library for decoding MPEG-2 and MPEG-1 video. Its main development goals 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.
- Speed: With typical video streams as found on DVD's, and doing only decoding with no display, you should be able to get 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.
- Reuseability: libmpeg2 doesn't include any project-specific code, but it should still include enough features to be used by very diverse projects.