MPEG-4 Part 10
MPEG-4 Part 10 is a standard for video Compression. MPEG-4 Part 2 (ASP and SP), which includes implementations like DivX and XviD, was originally designed with video conferencing and other relatively primitive types of video. MPEG-4 Part 10 was designed specifically with High Definition (HD) video for home theater applications in mind as one potential application. It also includes specifications for lower quality video for portable devices, allowing a single standard to be compatible across a wide variety of devices and applications.
AVC / H.264
MPEG-4 Part 10, also known as MPEG-4 AVC (Advanced Video Coding), is actually defined in an identical pair of standards maintained by different organizations, together known as the Joint Video Team (JVT). While MPEG-4 Part 10 is a ISO/IEC standard, it was developed in cooperation with the ITU, an organization heavily involved in broadcast television standards. Since the ITU designation for the standard is H.264, you may see MPEG-4 Part 10 video referred to as either AVC or H.264. Both are valid, and refer to the same standard.
Advanced Video Coding
MPEG-4 Part 10 defines video encoding that's equally useful for low resolution/bitrate players like mobile phones and media players, medium resolutions and bitrates comparable to Standard Definition (SD) DVD, to high definition movie encoding for HDTV, Blu-ray, and HD DVD. Like MPEG-2 and MPEG-4 Part 2 video, AVC is divided into a number of profiles, primarily to define what features a particular device or class of devices (like 3G phones for example) supports. Some of the more advanced features require a fair amount of CPU power, and therefore aren't suitable for devices like 3G phones or many portable media players. Other features, like higher resolutions and bitrates, aren't even helpful for many devices.
Codecs
Just because all MPEG-4 AVC encoders are designed to the same standard doesn't mean they're all the same. MPEG-4 Part 10 is a standard that codecs are written to. The codecs are the actual implementation, which my include all or just some of the complete feature set. Lossy encoding is basically a series of estimations and approximations. Even within a single video encoder there will usually be options to trade encoding speed for accuracy. This is possible because many values have an acceptable margin of error, allowing varying levels of precision in the calculations.
Compatibility
Regardless of what encoder was used to create an AVC video stream, as long as it's MPEG-4 Part 10 compliant any decoder equipped to handle the standard features used will be able to play it. This is usually just a matter of supporting the proper Profile and level (see below).
Playback Guides
Multimedia playback with the Xbox 360
How to play mkv files with x264 video and AC3 audio on the Sony PlayStation 3
Standard Features
Although not all of AVC's advanced features can be used in all encoded video, some are inherent to the basic technology. These include
Qpel
Quarter Pixel Precision (Qpel) for Motion Estimation is used to more accurately Track movement across the video Frame. Although entire Pixels must be stored, when calculating locations for a moving object the motion from one frame to the next may be less than a single pixel. MPEG-2 uses Half Pixel Precision.
CAVLC
There are two Lossless Compression methods applied to AVC video before it's actually written to a file (or stream) but after any lossy encoding has occured. The default method, called CAVLC, is the less efficient of the two but also requires the least CPU power to Decode on a computer, and is therefore also appropriate for devices like mobile phones and portable media players, where CPU power is usually not up to the task of the alternative, CABAC. For Baseline and Extended profiles (see below) CABAC isn't even supported. The choice of CAVLC or CABAC is one of encoding/decoding speed vs. size. It has no effect on quality.
In-loop Deblocking
A deblocking Filter can be applied by the encoder to each frame of video. While this helps to avoid the Blocking artifacts often seen on MPEG-2 video, like CABAC it's CPU intensive, both for encoding and decoding.
Multiple Reference Frames
The encoder may select from multiple frames to create a P or B frame in reference to. Most encoders allow you to specify the number of frames to select from. Using this feature will result in slower encoding and decoding, as well as limiting which frames you can edit at to a new type of I Frame called an IDR Frame. Regardless of how many reference frames the encoder is set to allow, no P or B Frames may refer further back than the previous IDR Frame.
Smaller Encoded Block Sizes
MPEG-4 allows smaller block sizes than MPEG-2, which is more efficient for areas of the screen where a 4x4 block size (the smallest size used for AVC) is used, rather than MPEG-2's 8x8 blocks. For areas that would benefit from larger blocks (lots of duplicate or near duplicate pixels), they can also be as large as 16x16.
Macroblock Partitions
When motion estimation is performed by an MPEG-2 encoder it groups pixels into 16x16 macroblocks. MPEG-4 AVC encoders can divide these macroblocks into partitions as small as 4x4, and even of variable size within the same Macroblock. For example, a single macroblock could have 2 4x4 Partitions and one that's 8x4. They must be divisible by 4 in both dimensions.
Partitions allow for more accuracy in motion estimation because areas with high motion can be isolated from those with less movement.
Profiles
For consumer video there are two main profiles used, Main and High, with the lower Baseline and Extended profiles getting used for some mobile devices. There are also higher profiles available, but they aren't used for standard consumer formats.
Baseline Profile
The Baseline profile is the simplest, but due to a lack of B Frame support should be avoided if a higher profile is supported. Baseline profile is suitable for video conferencing, 3G mobile phones and portable media players with AVC support. This profile also includes features for Streaming delivery not available in the Main or High profile, which are primarily intended to be used with more reliable delivery methods like broadcast TV or optical disc. There's no support for interlaced encoding, but due to both the displays you'll be encoding for and the Limited Bitrate this shouldn't be a concern. CABAC encoding isn't supported either, but once again the limitations of the hardware used for playback wouldn't generally support it.
Extended Profile
The Extended profile has more standard AVC features, like interlaced encoding and B Frames, along with the streaming enhancements it shares with the Baseline profile. Aside from the additional streaming support it's nearly identical to the Main profile, except that once again CABAC encoding isn't supported.
Main Profile
Although the Main profile was originally intended to be the standard home theater / DTV profile, by the time AVC began to see widespread adoption the High profile had replaced it for the majority of HD content. For the majority of SD content Main profile is probably still adequate. For HD resolutions High profile is almost always a better choice. Unlike the Baseline and Extended profiles, Main profile allows the use of CABAC encoding. While CABAC offers higher compression at comparable quality to the default CAVLC encoding, it's also more CPU intensive, both for the encoder and decoder. If either the computer you'll be encoding video on or the computer you'll be playing it back on doesn't have enough power you may not want to use it.
High Profile
The High profile is commonly used for HD video. The major differences are High profile's support for both 8x8 and 4x4 blocks to be encoded (compared to just 4x4 for Main profile). High profile also allows for the use of custom quantization matrices, which may be desirable for the content you're encoding or bitrate you're using.
Levels
In addition to Profiles, which define which features are available, and to some extent are designed around particular applications, Levels simply define limits to the features available in a profile. Parameters like bitrate are limited by the Level, although those limits may be different for different profiles. Rather than specify maximum resolutions and framerates for different levels, the maximum number of macroblocks per second is defined instead. These macroblocks can be used for lower resolutions at higher framerates or higher resolutions at lower framerates.
The following is a list of some common Profile and Level combinations, and where applicable standard applications that use them. It also gives standard resolutions and bitrates used with them.
Profile | Level | Resolution | Framerate | |
Baseline | 1 | 176x144 | 15fps | 3G |
High | 2.1 | 480x272 | 23.976fps | PSP |
High | 2.1 | 480x272 | 25fps | PSP |
High | 2.1 | 480x272 | 29.97fps | PSP |
High | 3 | 720x480 | 29.97fps | SDTV |
High | 3 | 720x576 | 25fps | SDTV |
High | 3.1 | 1280x720 | 25fps | HDTV |
High | 3.1 | 1280x720 | 30fps | HDTV |
High | 3.3 | 1280x720 | 50fps | HDTV |
High | 3.3 | 1280x720 | 60fps | HDTV |
High | 3.3 | 1920x1080 | 25fps | HDTV |
High | 3.3 | 1920x1080 | 30fps | HDTV |
High | 4 | 1920x1080 | 24fps | Blu-ray |
High | 4 | 1920x1080 | 25fps | Blu-ray / HD DVD |
High | 4 | 1920x1080 | 29.97fps | Blu-ray / HD DVD |
High | 4 | 1920x1080 | 30fps | Blu-ray / HD DVD |
Return to Introduction to SUPER |
Containers
AVC video is commonly found in a number of containers, largely depending on the application. The official MPEG-4 Container, as defined in MPEG-4 Part 14, is MP4. HDTV transmissions will typically mux it into a MPEG-2 Transport Stream, as do Blu-ray and AVCHD. HD DVD uses a MPEG-2 PS derivitive, similar to the VOB container used for DVD.
Computers and some standalone DVD players can read video from the MP4 container, but support for audio other than the official (MPEG-4 Part3) HE-AAC audio format in that container is somewhat limited. There are many Many people using HTPCs or viewing on their computers who prefer the MKV (Matroska) container for its flexibility. The original AC-3 audio from a DVD or DTV broadcast can easily be muxed into a MKV file and played back on just about any operating system.
MP4 and MOV
The MP4 (official MPEG-4) container format was based on Apple's QuickTime container, which generally uses an extension of MOV. It adds some descriptive data required by MPEG. A modified version of MP4, with the 3GP extension, is used for 3G mobile phones.
Return to ffdshow Installation and Configuration |
Conversion Guides
Convert MKV to DVD with freeware
Convert video files to MP4 for PSP
Convert DVD to 3GP or MP4 mobile phone format using AVS Video Converter
Other Related Guides
Digital Video Fundamentals - Lossy Compression
Synonyms
Related glossary terms
Related software tools
FFDSHOW (Open source)
FFDSHOW is a super-fast DirectShow decoding filter for decompressing DivX, XviD, WMV, MPEG-1 and MPEG-2 movies and supports subtitles as well. If you ever want to watch movies, get this! |
||
FFDSHOW SSE2 (Freeware)
FFDSHOW is a super-fast DirectShow decoding filter for decompressing DivX, XviD, WMV, MPEG-1 and MPEG-2 movies and supports subtitles as well. If you ever want to watch movies, get this! |
||
Haali Media Splitter (Freeware)
Haali Media Splitter is a DirectShow splitter for .MKV (matroska) .MP4 and .AVI |
||
ImTOO 3GP video converter (Adware)
ImTOO 3GP Video Converter is an avi to 3gp converter and a mpeg to 3gp converter. |
||
Media Player Classic (Open source)
Media Player Classic is an extremely light-weight media player for Windows. It looks just like the good-old Media Player v6.4, but has lots of nice extra features. |
||
MediaCoder (Ad-supported)
MediaCoder is an audio/video batch transcoder, putting together lots of excellent audio/video codecs & tools from the open source community into an all-in-one solution. |
||
MeGUI (Freeware)
MeGUI is the most comprehensive GUI based ISO MPEG-4 solution. |
||
StaxRip (Open source)
StaxRip is a software that can easily convert your DVD''s, DVB, DV captures or almost any other source format into the popular video formats DivX, XviD, x264, MPEG-2 and MPEG-4. |
||
SUPER (Ad-supported)
SUPER. Simplified Universal Player Encoder & Renderer. A GUI to ffmpeg, mencoder, mplayer, x264, ffmpeg2theora & the theora/vorbis RealProducer plugIn. |
||
TMPGEnc XPress (Commercial demo)
TMPGEnc XPress is a completely redesigned version of the famous TMPGEnc MPEG encoder |
||
WinAVI 3GP/MP4/PSP/iPod Video Converter (Commercial demo)
WinAVI iPod/PSP/3GP/MP4 Video Converter is software for MP4/3GP file conversion of portable video device such as iPod/PSP |
||
x264 full (Open source)
x264 is a free library for encoding H.264/AVC video streams. |