The MPEG-4 Standard defines a broad range of video coding tools. The atm most widely used ones are defined under ISO 14496-2, thats why this part of the Standard is also often called MPEG-4 "Part 2", but i will call it from now on MPEG-4 ASP as described below
MPEG-4 Part 2 Profiles
As already mentioned the MPEG-4 Standard aims at multiple applications. Of course for different usages also different coding tools are needed (ie if you want to stream video content at very low bitrates you will use different tools as if you want to make a dvd backup copy at medium or high bitrates)
to cover all these different needs the MPEG-4 Standard defines a lot of different Profiles and Levels. each profile/level is an interoperability/conformance point, ensuring that all products, following a specific profile/level, even if from different vendors, can work together.
these profiles/levels standardise not only what encoding tools can be used but also define for example the allowed bitrate-range, image-sizes, frame-rates aso...
For an overview on available MPEG-4 profiles have a look
here
Advanced Simple Profile (ASP)
When it comes to DVD Backups the Advanced Simple Profile @ Level 5 (ASP@L5) is the one to follow
It allows frame sizes up to 720x576, frame-rates up to 30fps and offers advanced coding tools like B-Frames (B-VOPS), QuarterPixel Motion Estimation (QPEL), Global Motion Compensation (GMC) and MPEG/Custom Quantization, in contrary to the the Simple Profile, which also only allows a max. frame size of 352x288 and 15fps for example
the most important Advanced Simple Profile tools (not available in Simple Profile) are:
B-Frames/B-VOPS/Bi-directional encoding/prediction:
In contrary to I-Frames/Keyframes (which include the entire image and dont depend on other frames) or P-Frames (which include only the changed parts of the image from the previous I- or P-Frame), B-Frames are constructed using data from the previous and next I- or P-Frame. B-Frames can be compressed much more than other frame types, which overall should help quality and compressibility.
Quarter Pixel Motion Search Precision (QPEL):
basically most MPEG-4 codecs by default detect motion between two frames down to half a pixel (HalfPel)
Now with QuarterPel you can detect motion that is only a quarter of a pixel per frame, effectively doubling precision!
practically this means that you will get a much sharper image with QPEL, try it and you will love it (that's my opinion of course )
Global Motion Compensation (GMC):
GMC detects if there is an amount of motion big parts of the frame have in common. If thats the case GMC kicks in, using a single motion vector for all similar parts of the frame instead of multiple ones.
practically this helps saving bits when panning, zoom or rotation occurs (depending on how good the GMC implementation is/offered warppoints), bits which than can be used somewhere else, for example where they bring more sharpness.
MPEG/Custom Quantization:
While with MPEG-4 Simple Profile you can only use the h.263 quantization type, the ASP also allows you to use custom ones
While the h.263 type will bring you a softer image (good for 1CD encodes), the default MPEG matrix is better for higher bitrates, preserving more details
a popular custom matrix is for example hvs_good, also nice for lower bitrates, but there are also many more
Adaptive Quantization:
When encoding with a Variable Bitrate (eg in 2pass) each frame can get compressed with a different quant (the higher the quant the smaller the size/bitrate of the frame). What frame gets what quant (eg compress high motion more) is decided by the "Rate Control".
With Adaptive Quantisation (also available in Simple Profile) the quant can additionally also differ inside each frame (eg high motion/dark parts of the frame get a higher quant/compressed more, faces get a lower quant than background, aso...)
basically MPEG-4 ASP became popular with the famous DivX5 Codec, which name is also often used to describe content following ASP@L5 (like people name all sorts of Cola, even Pepsi, as "Coca-Cola"), but its important to realise that there also exist other MPEG-4 ASP codecs which are not more or less compatible to MPEG-4 as DivX5:
available MPEG-4 ASP Codecs
ASP codecs are available atm from
XviD (
binary),
DivX5,
DivX4/OpenDivX,
ffmpeg/
ffvfw/ffdshow,
3ivx,
Nero Digital,
Skal,
Quicktime,
mpegable,
Envivio,
Sorenson and many more...
doom9's quality comparisons:
1 2
(note that DivX3.11 aka MS MPEG-4, RV9, VP6 and WMV9 are not MPEG-4 compliant!)
XviD
maybe one of the most advanced MPEG-4 ASP codecs, highly tuned for DVD Backups and offering a very broad range of encoding tools (including more than 1 B-Frames, QPEL, GMC (3 warppoints), h.263/MPEG/Custom Quants, Adaptive Quants, Trellis and much more)
XviD is open source (GPL) and THE codec of the Doom9 community, where it also has its own
XviD Forum, where the XviD developers are also often around (as i am sure you know already )
For more infos about XviD visit the official Homepage
XviD.org, read
crusty's FAQ and of course the
XviD Forum on doom9
DivX5
maybe the most popular and most widely used MPEG-4 ASP Codec, mainly living from its name tough. It offers less MPEG-4 ASP features (up to 2 B-Frames, h.263/MPEG Quant, a weak GMC (1 warppoint), QPEL) and some people claim also less quality than XviD
still its THE codec in the business world and the codec which made MPEG-4 ASP popular
For more infos about DivX5 visit the official Homepage
DivX.com and the
DivX Forum on doom9
ffmpeg
ffmpeg (aka libavcodec/format) is surely THE implementation of MPEG-4 when it comes to completeness. ffmpeg is offering as good as all tools imaginable (eg error resilience) and is opensource (LGPL)
still when it comes to encoding it often stands in the shadows of XviD, but it provides good quality and is a very important implementation many other projects are heavily based on (for example the famous
mplayer or
ffdshow use it)
For more infos about ffmpeg visit the official Homepage
ffmpeg.org and the
New Codecs forum on doom9
3ivx
tough one of the oldest MPEG-4 codecs around (the devs claim even older than DivX5), 3ivx became popular in the last months. 3ivx' video codec offers h.263/MPEG Quants, Adaptive Quant., 4MV (but not B-Frames, GMC and QPEL) and was the first to set a PAR
3ivx does not only offer Video Encoding but is an allround implementation of the MPEG-4 Standard including also AAC encoding (FAAC) and maybe one of the best MP4 container tools available
For more infos about 3ivx visit the official Homepage
3ivx.com and the
New Codecs/
Containers forum on doom9 (where you can also find some of the devs sometimes)
Nero Digital
the MPEG-4 ASP codec from nero is maybe the youngest one, but nero is very ambitious in becoming very popular
atm their codec is only available inside
Nero Recode2 (together with a good AAC encoders (HE-AAC, Multichannel...)). ND offers only 1 B-Frame, GMC (3 warppoints), QPEL, h.263/MPEG/Custom Quants, Adaptive Quant. (Psy High) and is one of the fastest codecs around
For more infos about NeroDigital visit the official Homepage
NeroDigital.com and the
New Codecs forum on doom9 (where you can also find some of the devs sometimes)
MPEG-4 ASP on Hardware - DivX/NeroDigital Certification / Private MPEG-4 Profiles
Some first generation hardware decoder chips werent able to handle important tools the ASP offers (ie QPEL and GMC). Today's chips are more powerful and support for example QPEL and 1 Warppoint GMC already (none supports 3WP GMC till now)
For being able to support also players, which uses even the oldest chip, DivXNetworks and Nero created something which can be called private MPEG-4 Profiles, namely the DXN Home Theater Profile (DXN HTP) and the ND Standard Profile (ND StP). Every player who is able as a minimum to handle the DXN HTP and ND StP (next to other stuff) can get a Certification from DivXNetworks and/or Nero
When encoding following the HTP/StP for example you cant use QPEL or GMC and use only 1 B-Frame. therefore basically the HTP/StP are a tradeoff between quality and usability with old hardware decoder chips
of course these private certifications also help DivXNetworks and Nero to establish their brand-names even more
still the correct expression for what we need a player to support is
MPEG-4 ASP@L5, if a player is offering this you should be able to play your encodes following MPEG-4 ASP (no matter what encoder was used) without problems
further documentation
If you want to read more about MPEG-4 Video you can have a look at the page of
MPEG Industry Forum, providing an overview of available
Resources and
Tutorials/Papers
The Specs for the Amendment1 to 14496-2 can be found
here
Also important to mention is the Site of the
Moving Picture Experts Group (MPEG), offering a FAQ especially about
MPEG-4 Video or an overview of the
MPEG-4 Standard (including many Infos on MPEG-4 Video too)
also if you simply search for "MPEG-4" on
google you will find more than a lot of usefull sites too