A primer to H.264 levels and profiles
H.264 is a very complex standard and sometimes it’s very difficult to work with the codecs and their setting. Two important parameters are Level and Profile. Because a lot of people asked me about the meaning of these two parameters, I’d like to underline the most important.
What is the “Profile” ?
H.264 supports some encoding profiles (Baseline, Main, High, High10, Extended). These profiles represent a sub-set of the encoding techniques available in H.264. This is usefull to target decoders with very different decoding capabilities (memory and processing power in primis).
The baseline profile supports only a limited subset of techniques so it is simplier to design, requires less code and less processing power and therefore is aimed at low power mobile devices and the like.
The Main profile supports the majority of encoding techniques so it need more code, more memory and more processing power on the decoder side. Main profile is usually supported by set-top-box and the like.
The High profile supports virtually all the H264’s encoding techniques. It is designed for HD and FullHD (Blueray and HD Satellite broadcast) and it’s usually supported by software decoders too.
The question is: what profile is it better to use ? The good new is that If you target only the Flash Player you can simply use the High profile, but if you target the iPhone, in example, you will need to encode the video targeting the baseline profile.
What is the “Level” ?
Profiles address the problem of code complexity and processing power. Levels address the problem of bandwidth, max resolution, and memory issues on the decoder side. Any given device supports a max profile depending by the memory and the max resoultion available. Lower levels mean lower resolutions, lower allowed max bitrates and lower memory to store reference frames. In example iPhone support video encoded in baseline profile up to the level 3.0.
The question is the same: what level is it better to use ? Again, Flash Player supports all the level upt to 5.1. Usually I use 4.1 which is perfect for SD and HD videos.
I’ll speak about this and other topics at Max Europe 2008 , December 2.