Thanks to our Google Summer of Code student David Conrad (aka Yuvi), we now have ARM support in x264, along with a significant amount of SIMD acceleration via NEON, available on the Cortex A8 and A9 chips. Yes, that’s right, x264 can now run on an iPhone. Total performance increase from the NEON optimizations (so far) is about 280% on default settings.
With low power becoming more important and ARM chips increasing in speed dramatically (multi-core chips are already hitting silicon), being able to do high quality, high-speed realtime video encoding on ARM chips will become more and more important. Staying ahead of the game as always, x264 will be the premiere encoder on ARM as well.
One situation showing the usefulness of low-power encoding was brought up a month or two ago: a remote-control airplane enthusiast wanted to make his airplane broadcast camera footage over the cell network so that he can remote control it many miles away from his current location. The cell network is generally low bandwidth, so he needs a high-efficiency video encoder. But he can’t afford a powerful system; his airplane is already extremely low power and he needs an encoder that is both low-power and low-weight. The ARM chip is perfect: it uses a fraction of a watt, almost no space, and now, he can run x264 on it.
Special thanks to Mans Rullgard for helping with lots of assembly questions and contributing the NEON deblocking code, originally used in the ffmpeg H.264 decoder.
Want to play with x264 on an ARM? Get a Beagleboard.