I was trying to find the technical reasons for why H.264 is limited for 4K. Obviously that in terms of bit-rate it becomes less efficient but the encoding itself is limited and for some reason, I couldn't find any public available references.




One of the bits of information associated with a H264 stream is its level. The level informs the decoder the computational resources needed for a successful decode. Turns out that the highest level 5.2 supports upto 9437184 luma samples per frame, which is the number of luma samples needed for a frame of size 4096x2304. So, there may be encoders that can (be forced to) encode higher resolutions but there's no valid level which can be set for the stream, and probably no decoder that can be guaranteed to produce reliable playback.

  • This is not the issue. New levels can be added (5.2 was added in the ITU-T recommendation in 2011-2012). The issue is the coding efficiency. – aergistal Oct 7 '15 at 10:31
  • Of course, new levels can be added. But encoders already out there don't go past the spec at the time of their production. So, what level do you expect an encoder compiled today to set if fed, say, 8K input? – Gyan Oct 7 '15 at 10:35
  • The level is just a flag. Some decoders ignore it completely. – aergistal Oct 7 '15 at 12:19
  • 3
    Here's one real life example why your answer is incomplete: Nvidia NVEC supports H.264 at up to 4096x4096, which falls outside 5.2 developer.nvidia.com/sites/default/files/akamai/cuda/files/… – aergistal Oct 7 '15 at 13:10

H.264/AVC is not limited for 4K in terms of max resolution as it supports DCI 4K (4092x2160) @ 60 fps at Level 5.2. For example Sony already uses XAVC which is exactly 4K AVC.

For a while the max level was 5.1 and 5.2 was introduced later. If needed new levels can be introduced as long there's the hardware to support it.

For eg. the Nvidia NVEC supports H.264 up to 4096x4096: https://developer.nvidia.com/sites/default/files/akamai/cuda/files/CUDADownloads/NVENC_AppNote.pdf

The actual problem with 4K are the bandwidth requirements for streaming, not the hardware support. To do 4K streaming at 12-15 Mbps the encoder needs a 40% efficiency increase.

The problem with H.264 is that it's not efficient enough for this purpose. This is what the new H.265/HEVC (High Efficiency Video Coding) tries to achieve.

  • The resolution you state is lower than the resolution I stated as max. possible under level 5.2. The issue of coding efficiency is germane to viability of H264 as a choice for 4K stream given a bandwidth constraint, not to why an encoder doesn't output higher-res. – Gyan Oct 7 '15 at 10:39
  • The max resolution is not supported at 60 fps on 5.2 and 60 fps is also becoming a requirement. There's no reason why AVC won't work with higher resolutions and it could be used for say, storage. In fact AVC is way faster than HEVC. – aergistal Oct 7 '15 at 12:43
  • I'll post all further comments here. The OP's query is why is encoding "limited". Presumably, this was provoked by an empirical observation. So, the question isn't whether there are theoretical considerations in the spec which prevent 8K H.264 streams, but why don't encoders output greater sizes. Now, the level is just a metadatum and players may ignore it but non-turnkey commercial and FOSS encoders probably try to generate compliant streams, and at present, the spec doesn't allow for it. – Gyan Oct 7 '15 at 13:21
  • The OP asked for technical reasons. The level is conformance, not strictly a technical issue with the underlying codec. Coding efficiency is a technical reason. – aergistal Oct 7 '15 at 14:05
  • But the reason doesn't seem to be functional but legal. This is the reason proffered by the Adobe liaison at forums.creativecow.net/thread/2/1046747 - "Adobe Media Encoder is enforcing the limits on H.264 video that are imposed by the MPEG-4 specification." – Gyan Oct 7 '15 at 14:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.