Permalink
Browse files

Almost complete rewrite of RAOP server

Let me commend Mark Kendall for his previous implementation. As far as I could tell, his RAOP server was the only one implementing Airtunes v2 functionalities with a/v sync timestamps.
The rewrite serves several purposes. Mainly, I wanted to take ownership of this area of the code, and there were things I couldn't figure out. Most likely because whatever Mark used for AirPort's technical documentation isn't what I got.
Technical description of RAOP came mostly from:
-http://git.zx2c4.com/Airtunes2/about
-http://blog.technologeek.org/airtunes-v2

I found the later to be the most correct.

Main area of focus:
-Audio Quality: Over slow or poor network connectivity (e.g. slow wireless) and with lots of packet drops: audio would have been corrupted (the system played audio packets in the order they were received, and not in the order they were supposed to be). For testing purposes, I simulated a 30% packet drop, and playback remained perfect.
-A/V Sync: Achieving perfect A/V sync across all platforms and with all the different type of audio architecture is almost impossible. However, I believe the results achieved are very good. Playback will automatically adjust itself according to the network latency and the audio hardware latency.

New features:
We now retrieve the media's metadata: Album name, artist name, song title and coverart. This only works when using iTunes. iOS device do not send metadata unless using FairPlay encryption. We only support RSA encryption.
Currently, this information is only shown in the logs, but in the future we'll be able to nicely show them in mythfrontend.

Additional credits:
-http://nto.github.com/AirPlay.html, gave information about how to configure Bonjour in order to receive MetaData from iTunes
-http://code.google.com/p/ytrack/wiki/DMAP : iTunes DMAP metadata structure
  • Loading branch information...
jyavenard committed Apr 30, 2012
1 parent e778f23 commit bd883d7216b497d8193975e3b19cb7134eaff710
Oops, something went wrong.

0 comments on commit bd883d7

Please sign in to comment.