The first three bytes after the SPS header state the profile, the constraints and the level. A profile lists the coding tools a stream may use; a level sets limits on size and rate.
Profiles
profile_idc | Hex | Profile |
|---|---|---|
| 44 | 2C | CAVLC 4:4:4 Intra |
| 66 | 42 | Baseline; Constrained Baseline with constraint_set1 set |
| 77 | 4D | Main |
| 83 | 53 | Scalable Baseline; Scalable Constrained Baseline with constraint_set5 |
| 86 | 56 | Scalable High; Scalable Constrained High with constraint_set5; Scalable High Intra with constraint_set3 |
| 88 | 58 | Extended |
| 100 | 64 | High; Progressive High with constraint_set4; Constrained High with constraint_set4 and 5 |
| 110 | 6E | High 10; High 10 Intra with constraint_set3 |
| 118 | 76 | Multiview High |
| 122 | 7A | High 4:2:2; High 4:2:2 Intra with constraint_set3 |
| 128 | 80 | Stereo High |
| 134 | 86 | MFC High |
| 135 | 87 | MFC Depth High |
| 138 | 8A | Multiview Depth High |
| 139 | 8B | Enhanced Multiview Depth High |
| 244 | F4 | High 4:4:4 Predictive; High 4:4:4 Intra with constraint_set3 |
Constraint flags
The byte after profile_idc holds six flags and two reserved bits, most
significant first.
| Bit | Name | Use |
|---|---|---|
| 7 | constraint_set0_flag | |
| 6 | constraint_set1_flag | Constrained Baseline |
| 5 | constraint_set2_flag | |
| 4 | constraint_set3_flag | intra profiles; for Baseline, Main and Extended it signals Level 1b when level_idc is 11 |
| 3 | constraint_set4_flag | Progressive High, Constrained High |
| 2 | constraint_set5_flag | Constrained High, scalable constrained profiles |
| 1–0 | reserved_zero_2bits | 0 |
Levels
level_idc is the level number × 10, so 31 is level 3.1. Level 1b is
level_idc 9, except that for the Baseline, Main and Extended profiles it is
level_idc 11 with constraint_set3_flag set.
| Level | level_idc | Max macroblocks/s | Max frame size (macroblocks) | Max bit rate (kbit/s) |
|---|---|---|---|---|
| 1 | 10 | 1,485 | 99 | 64 |
| 1b | 9 or 11 | 1,485 | 99 | 128 |
| 1.1 | 11 | 3,000 | 396 | 192 |
| 1.2 | 12 | 6,000 | 396 | 384 |
| 1.3 | 13 | 11,880 | 396 | 768 |
| 2 | 20 | 11,880 | 396 | 2,000 |
| 2.1 | 21 | 19,800 | 792 | 4,000 |
| 2.2 | 22 | 20,250 | 1,620 | 4,000 |
| 3 | 30 | 40,500 | 1,620 | 10,000 |
| 3.1 | 31 | 108,000 | 3,600 | 14,000 |
| 3.2 | 32 | 216,000 | 5,120 | 20,000 |
| 4 | 40 | 245,760 | 8,192 | 20,000 |
| 4.1 | 41 | 245,760 | 8,192 | 50,000 |
| 4.2 | 42 | 522,240 | 8,704 | 50,000 |
| 5 | 50 | 589,824 | 22,080 | 135,000 |
| 5.1 | 51 | 983,040 | 36,864 | 240,000 |
| 5.2 | 52 | 2,073,600 | 36,864 | 240,000 |
| 6 | 60 | 4,177,920 | 139,264 | 240,000 |
| 6.1 | 61 | 8,355,840 | 139,264 | 480,000 |
| 6.2 | 62 | 16,711,680 | 139,264 | 800,000 |
The bit rates are for the Baseline, Extended and Main profiles. High allows 1.25 times these, High 10 three times, and High 4:2:2 and High 4:4:4 Predictive four times.
Editions
H.264 was approved in 2003 and first published in 2004. The Fidelity Range Extensions, which added the High profiles, were finished in 2004, scalable video coding in 2007 and multiview coding in 2009. Annexes for scalable, multiview and depth coding have been added in later editions.