How does the iPhone 6s manage to record 1080p at 120 frames per second? Why is the S7 and even Note 7 unable to do that?
You asked:How does the iPhone 6s manage to record 1080p at 120 frames per second? Why is the S7 unable to do that?The S7 might be able to do it with some extremely clever native programming.There are a couple of problems with doing this, though.It doesn’t pay well to do native programming on AndroidMost Android Apps are not native Apps, they are actually running a Bytecode via the Dalvik engine (to get around Oracle claiming patents on Java). The upshot of this is that they are interpreted, and therefore much slower than they need to be.This is the price Android pays for being able to run on a wide Variety of ARM architectures, rather than a small family of ARM architectures, like the iPhone does.For a recording application to record at the best capability of the actual hardware, you need to run native binaries, instead of interpreted Bytecode. This will tie the application to one or two platforms (read: specific Android devices).Since there’s not a heck of a lot of money in writing Apps which aren’t strictly vertical market Apps for Android phones, most people who write Apps for Android know they will have to sell a lot more units to make the same money they’d be making on an iPhone App that does the same thing. So they try to write as generic an App as possible — and that means they use Bytecode.Vertical markets are another matter: if you are developing in a vertical market, say for a specific company — maybe you are building a point of sale system for Square, or you are building an inventory check-sheet application for a bill of lading for a moving company to record damages to furniture they’re about to move, so they don’t end up paying insurance on an already banged up table — then you can pretty much charge what you want.Everything else: market price — which on Android, is pretty low.Even if you do native programming, it might not be enoughARM architecture is great for a number of things, a long battery life is at the top of the list, being computationally fast — out of cache, anyway — to do signal processing for an SDR (Software Designed Radio), meaning they make good chips for mobile phones is another.ARM memory bandwidth pretty much sucks.This is a problem for displaying things — the more pixels you have, the more data you have to move to fill the screen.It’s also a problem for recording things — the more pixels you have, the higher the frame rate, the more data you have to move.It turns out that doing cameras and graphics tend to be something that ARM processors have historically been incredibly bad at doing.So your ability to support really high resolution video recording comes down to your ability to move data from the CCD (the camera’s Charge Coupled Device), over the memory bus, to memory, then encode it however you’re going to encode it with the ARM processor, and then move a smaller amount of data to storage (usually flash).Oh yeah: they other thing that’s pretty awful about ARM: The MMC, HD, and SDHC interfaces — the parts that connect between memory and mass storage — they also tend to suck.So ARM has a problem moving data from the camera to memory, accessing the memory to encode the data to a different part of memory, and then transferring that memory to long term storage.Can you get around this with clever native programming, and running the ARM as fast as it’s little legs will go? As I said… an S7 might be able to do it with some extremely clever native programming.Why can Apple do it easily, if an S7 can’t?Apple has been banging their head on the memory bandwidth problem. For a long time.This was inevitable: Apple is a pretty graphics intensive company, and has pretty much always been that. They care deeply about memory bandwidth, almost as much as they care about “thin” and about “battery life”.Apple bought P.A. Semi in 2008. There are a couple of reasons for this, but one of them was that the people who worked there were the people who designed the DEC Alpha processor, and they designed the crossbar bus called HYPERchannel (which is still better than Intel’s current token ring design), and between those, they were also mostly responsible for the hardware designs for some groundbreaking network accellerator hardware, too.In other words: the people they bought know how to design high speed memory busses.So Apple is now about 8 years ahead of all the other ARM vendors, like Samsung, who built the ARM chip in their S7, in terms of dealing with the memory bandwidth issue.Apple also uses native Apps, rather than a Bytecode interpreter — you can call it a virtual machine, if you want, but Java’s barely one step past the UCSD p-System from 1978 — but the problem isn’t processing the data fast, it’s getting the data moved around fast.Mostly it’s the memory bandwidth.If other companies want to compete in this area — and frankly: I still think a camera on a phone is something of a gimmick, since a phone is supposed to, first and foremost, make phone calls — then they are going to have to start redesigning their ARM chips memory controllers.Note: Samsung has made some strides in this area, as has nVidia, with their ARM offerings. Neither of them are in the same ballpark as what Apple’s achieve so far, and it’s doubtful Apple will stand still to let them catch up.