xbmc/xbmc — pull request #5410 by Memphiz (2014-09-24 18:11:50+00:00)
Title: [airplay] - fix broken airplay with ios8 clients

As some might have noticed forum is filling with ios8 airplay breakage reports. With ios8 clients only audio airplay works with current xbmc implementation. This PR fixes this as follows.

1. Add a new settings in the airplay category for ios8 compatibility which defaults to on and is only visible in the highest settings level (expert). I don't have all needed ios client constellations here for testing and there are way to much use cases via airplay these days to risk regressions here. While this PR works for all my test cases i still want a way to fallback to the old airplay behaviour by making this a setting (though i have the feeling won't be needed for 80% of use cases).
2. Based on this setting tweak our zeroconf announcements in a way that ios8 sends us video urls and photos again, by keeping the ability to still stream music as well (this is really tricky and a big thx goes to @DBMandrake who found out how to accomplish that)
3. The tweaked announcements forces us to implement the photo asset cache feature of the airplay protocol (i had implemente this in the ios7 phase already but since i found a different workaround for ios7 i didn't pr it). Its a simple file based cache and apple now fills it with photos for faster switching.
4. Reply with error code when the client wants a fairplay encryption handshake (not sure if it is needed really but it definitly doesn't hurt)
5. Support a different method of extracting the playback url from an /play request (again this is from the ios7 development and was needed for youtube.app which is totally broken forever currently - but who knows what other app uses this way to send the url - can't hurt to support it).

This sounds big somehow - but most of the code was already well tested when we worked on the ios7 airplay breakage.

Definitly helix stuff.

I have tested it successfully with photos, videos (camera roll), videos (youtube from safari) and music (music app and amazon cloud player) on clients with iOS 8.0, iOS 6.0.1, iOS 6.1.2, iOS 5.1.1. Awaiting test results from an iOS7 device aswell (which i don't have atm).

Sadly this won't change the story for android as the zeroconf reannounce hack is still needed for ios8 clients (and is still not available for android).