Now the developers of XBMC are going a step further -- they're developing a full-fledged XBMC client for iOS and the second-generation Apple TV. It's not a stripped-down client streamer or transcoder; rather, it has the same sort of programs and features that you can find for XBMC for Mac, Windows or Linux -- and both it and XBMC for ATV2 are available today for jailbroken devices.
I had the chance to talk with Scott Davilla, who has a lengthy history of working with XBMC and Apple TV. He is the author of atv-bootloader and atv-usbcreator. He also developed a kernel extension to enable HD playback on the first-generation Apple TV and is the lead developer for XBMC for Mac OS X.
In the second half of this post, read about what XBMC for iOS will entail, and see exclusive footage of XBMC running on an iPhone, iPad and second-generation Apple TV.
Development on XBMC for the current Apple TV began November 1. At the time, the iOS version was not an option. As that particular client is closer to the current code base, Davilla said many users will not see much of a difference. Proof of concept for the Apple TV was shown in December. The lessons learned while developing the Apple TV version went toward the iOS version.
"Once I had ATV2 up and running, then Edgar (gimli) Hucek joined in for iOS porting with Zeljko (amet) Ametovic doing a lot of non-coder testing under both ATV2 and iOS," Davilla said.
A few weeks after the XBMC devcon, the hardware decode API to get XBMC working properly on iOS was discovered after Davilla stumbled upon the work of Ole André Vadla Ravnås, a GStreamer developer.
XBMC's add-ons and skins will work with XBMC for iOS, Davilla said, as well as Python scripting. Currently, the built-in web server is disabled to focus on the base app. The developers acknowledged that the skin is not optimal and current usability is poor, and having a proper skin with gesture support is next on the group's list. There will be no iOS-specific features at this time, but there are plans to integrate AirPlay into all Apple-oriented (iOS, ATV2 and Mac OS X) versions of XBMC.
The API that Ravnås discovered is labeled VideoToolBox, and it's used for hardware video decoding, encoding and scaling of the video size to match the final display size, Davilla said. VideoToolBox not only works on the Apple TV and iOS, but Mac OS X 10.5 and 10.6 as well.
"It's the API Apple 'should' have exposed instead of VDADecoder," Davilla explained. "VDADecoder is just a thin wrapper around the VideoToolBox API and is how the use of VideoToolBox was discovered."
"This API is going to blow wide open the video decode and encode ability on ATV2, iOS and [Mac] OS X apps. It is a private framework API and the usual warnings about using private frameworks apply. However, given that the API has been stable back to 10.5, it's not going to be changed very much by Apple."
In the iPad video, a 1080p video is being streamed from an SMB server with no transcoding. It's dropping a few frames, something Davilla says they are working on, but he's confident that the A4 chip will be able to do a full 1080p video decode.
There are currently no plans for an App Store submission, although Davilla said that once they get a better handle on the program for Apple TV and iOS, they might consider refactoring XBMC into an App Store-compatible version (noting that there isn't yet an App Store for the Apple TV).
"But since many iOS devices out there seem to be jailbroken in the first place, we are not sure it's worth the effort," Davilla said.