MPEG Library Links    
    Home
Background
Greg's Home
   
    Created: Nov 1998    
    Updated: 19 Mar 2001    

The MPEG Library

Introduction and Background

The MPEG Library is a C library for decoding MPEG-1 video streams and dithering them to a variety of colour schemes. Most of the code in the library comes directly from an old version of the Berkeley MPEG player (mpeg_play), an X11-specific implementation that worked fine, but suffered from minimal documentation and a lack of modularity. (I can't speak for current versions of the Berkeley decoder, as I have not kept up on its development.)

I developed a front end to the Berkeley decoding engine at the Brain Imaging Centre of the Montreal Neurological Institute (MNI) in May/June 1994 to facilitate the development of an MPEG player specifically for Silicon Graphics workstations; the decoding engine together with the MNI front end constitute the MPEG Library. See my MPEG Library background article if you're interested in the full history of the project.

Portability

The MPEG Library should work on all modern Unix and Unix-like platforms with an ANSI C compiler. I have only tested it under IRIX 5.3 and Linux 2.0 (Red Hat 5.1 distribution), though.

Windows Port

Thanks to George Yohng (whereabouts unknown), the MPEG Library now compiles under Microsoft Windows, using either Borland C++ 5.4 or Visual C++ 6.0. Building the library for Windows is even easier than building it for Unix: just run one of the supplied batch files, build_bc.bat or build_msvc.bat. See the README file in the distribution for more details. No, there is not (currently) a binary release for Windows.

Please do not ask me for help with the Windows version, unless you find a bug that obviously affects the library under Unix as well. For compilation problems, you'd be better off asking George directly.

"It's Dead, Jim."

The MPEG Library is basically orphaned software. As an indication of how little interest I have in maintaining or enhancing it, it took me three years to get around to putting out version 1.3.0, a minor bugfix release. I'll try to do better if anyone finds more bugs in this version, but I'm not promising anything. Furthermore, I don't use the library, so any bugs in it will have to be discovered and reported by others. (Of course, it'd be nice if they'd figure out how to fix them and send me patches!)

The good news is that the MPEG Software Simulation Group has released a free MPEG-2 video coder/decoder. If you're interested in writing new MPEG code, I recommend taking a look at their library. Likewise if you have existing code that uses the MPEG Library, and you want new functionality for the MPEG decoder. (Of course, this means you'll have to change your code to use their library. Life is hard.)

Downloading

The current version of the MPEG Library is 1.3.1, released 8 August, 1999. You can download the library here:

I don't know of any mirror sites. If you keep a copy of the MPEG Library, send me email, and I'll add a link to your site here.

The SGI-specific MPEG player that was the MPEG Library's raison d'être is called glmpeg_play. It looks like it has disappeared from the Internet.

Looking for help with anything MPEG?

Sorry, you'll have to look elsewhere. I am not an expert in all things MPEG. In fact, I am not an expert in anything MPEG. My experience in MPEG decoding or encoding software is limited to the hack-up job I did on the Berkeley MPEG player in 1993-94 to produce the MPEG Library that you're now reading about. I have not touched this code in a serious way since 1995. Furthermore, I have never been an MPEG "expert" of any kind, nor do I intend to become one. You might have more luck poking around the mpeg.org web site.