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.

4 thoughts on “A primer to H.264 levels and profiles

  1. Flash player doesn’t somehow equalize the complexities at the time of decoding. The reason the iPhone support only Baseline@3.0 is because of processing power limitations.

    So by stating that Flash player supports all the levels up to 5.1 means absolutely nothing because some computers won’t be able to handle a video encoded using Main@5.1 while other will. Just like the iPad can handle videos encoded using Main@3.1 but an iPhone can’t (the player being the same but hardware differs).

    Also, you’re seem to imply that Flash player somehow bears the brunt of decoding (since you don’t make mention of any hardware) while when you say iPhone, it implies a OS and hardware.

    So frankly I don’t think you’ve answered the question you pose.

  2. Flash Player uses an embedded MainConcept software decoder, HW decoding of H.264 stream is rarely used (supported only with nvidia cards on Windows Vista and only very recently on Mac), so the player can decode High@5.1 period. If the decoding is not good it depends by the processing power but it is alwais performed eventually with frames dropping.

  3. Flash player is not very good for encoding video.Bad not at all.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.

Leave a comment