Although I’ve been an Apple heavy user for a number of years now, it always bugs me when companies misrepresent their products, event if the misrepresentation is a underrating of the actual product. For me, specifications must be as accurate as possible, no matter if it comes from Apple, and understating it’s video decoding capabilities it not on my list of expected weird things, but it does seem to happen.
Today’s case if regarding the iPhone 6s (or 6s Plus), or even the upcoming iPhone 7, video decoding capabilities, and specifically on H.264 profile and level. However, it’s still not possible to actually test on the iPhone 7, the current Apple specs contain the same issue. While looking for material for an upcoming post regarding video compression bandwidth, I gathered some data on how much bandwidth do current smartphones use for video recordings on 4K.
If you have a look at Apple’s iPhone 6s, and 7, website, you’ll run into the following text:
Specifically, the issue with on the “Video formats supported”, as highlighted, which states: H.264 video up to 4K, 30 frames per second, High Profile level 4.2″.
Now, I’m quite familiar with H.264 and reading that Apple is able to do H.264 with Level 4.2, regardless of the profile seems out of spec. Effectively, if you have a look at the H.264 spec (AKA ISO/IEC 14496-part 10) you’ll find that it’s not possible to do such an encoding. For those not willing to spend hours only to find out how to calculate the maximum resolution for L4.2, Wikipedia’s page on H.264 is good enough. Even so, it wouldn’t be wise from my part just to say: “Apple is wrong, I’m right”, so a few evidences would be mandatory. The easiest way to do it is to demonstrate that the iPhone is able to decode it’s own video recordings, which by my theory would not be L4.2. In fact, to be able to encode (and decode) 4K video, you’ll need to support level 5.1, for 30 frames per second, or 5.2 for up to 60 frames per second.
So, looking at an Iphone 6s video though a proper MP4FF decoding tool such as Bento4 one can dig deep into what that recording actually contains and take into evidence. Effectively, using MP4Info from such a file, one can get the following output:
frame rate (computed): 29.674 Sample Description 0 Coding: avc1 (H.264) Width: 3840 Height: 2160 Depth: 24 AVC Profile: 100 (High) AVC Profile Compat: 0 AVC Level: 51 AVC NALU Length Size: 4 AVC SPS: [27640033ac56803c0043e9a808080810] AVC PPS: [28ee3cb0]
This confirms most things from Apple, except the ones I suspected, specifically AVC Level, which is described as 51, or as most people knows it, level 5.1.
So, assuming that the iPhone can decode the same video it encodes, I can say that Apple specs are factually incorrect. All iPhones since 6s do actually support H.264 High Profile up to level 5.1 .