MPEG-1 and MPEG-2
MPEG-1 and MPEG-2 have a lot in common, the main difference being their target bandwidth and distribution method. MPEG-1 is aimed at VideoCDs, so defines a data rate up to 1.5Mbits/sec. The standard vertical resolution is up to 480 pixels for the American and Japanese NTSC TV system, and 576 pixels for European PAL, with variable horizontal resolutions. Audio is compressed at up to 192Kbits/sec.
MPEG-2 is an extension of MPEG-1, with support for data rates up to 30Mbits/sec, high definition resolutions, and surround sound audio encoding. However, MPEG-2 is also split into profiles and levels. The Simple Profile defines a GOP structure with no B-frames, so no reordering is required - the frames are read in the order in which they will be displayed. This is good for live video as reordering causes a delay, but at the expense of the extra quality provided by the B-frames.
The Main Profile adds B-frame support, so is the one found in DVDs. There are also SNR and Spatial Profiles, which define encoding methods too complex to cover in this article. All of these use 4:2:0 sampling of the video stream, where colour is sampled one quarter as often as luminance. The 422P and High Profiles add 4:2:2 support, for twice the colour sampling frequency, and are aimed at broadcast production.
The different levels define the maximum for various parameters. MPEG-2 levels above Main support HD resolutions. Although traditionally MPEG has not won favour as an editing medium, except in its I-frame-only format, this is changing. Now that processors are powerful enough to handle the complexity of MPEG decoding and encoding, the MPEG-2's HD capabilities have given it a strong position as the nascent codec for editing at higher resolutions than DV, in particular the new HDV format.
MPEG-2 also comes in different streams, just to really confuse things. Elementary streams are where the audio and video come in two separate files. Program and Transport streams both have the audio and video elementary streams multiplexed together into packets. With the Transport stream, packets are fixed at 188 bytes and more than one program with differing frame rates can be included in one stream, whereas with a Program stream only one program is included and packets can be of variable sizes.