Erik Massop edited this page Nov 4, 2017 · 1 revision

Support Apple Lossless Audio Codec (ALAC) and remote streaming to Airport Express in XMMS2


ALAC is an audio codec by Apple that uses lossless compression at low storage and decoding costs. The goal of this project is to 1. Integrate an ALAC decoder for playing ALAC formatted files (.mp4) in XMMS2. 2. Develop an ALAC encoder to stream XMMS2 music to Airport Express.

Project Deliverables

  1. Implement an ALAC encoder and remote streaming to Airport Express This task will require implementing an ALAC encoder based on the decoder in [1]. The xform for this task will be then used to chain into an "output" xform to stream the data to Airport Express. The streaming protocol is called Remote Audio Output Protocol (RAOP) and has been reverse-engineered and implemented in open source tools like [2] and [3]. The main goal of this task is to derive the ALAC encoder from the open source decoder and then implement our own RAOP xform based on the reverse-engineered tools. A second goal is to implement the discovery of Airport Express(es) on local network using Apple's Bonjour service discovery protocol. This can be done using a Bonjour client library [4].

  2. Implement an ALAC decoder in XMMS2 for playback In this task, I will write a Transforms plugin which will take an ALAC formatted file and will decode it into a PCM stream. ALAC is a closed standard but thankfully there is an existing reverse-engineered implementation of the ALAC decoder [1]. The main goal of this task would be to either integrate [1] or to write new code based on [1] (most probably former because [1] has a liberal license).

Why this project?

This project is also borne out of a personal need: I would like to stream my XMMS music library to the Airport Express. There are tools like [2] and [3] which allow you to do that under Linux but they are very hard and unintuitive to use. I would like to have a tool which is integrated in the music player itself (like iTunes). As a side-effect of this work, XMMS2 will also gain the ability to encode/decode ALAC codec. Once finished, I think XMMS2 will be the first media player under Linux to support both these features.


'''20 June 2006 ''': Technical note that describes the Remote Audio Access Protocol (RAOP) used in AirTunes

Proposed Timeline

May 24th - June 15th: Create a design spec for the RAOP xform plugins.

June 16th - June 29th: Get familiar with XMMS2 architecture and the xforms plugin interface.

June 30th - July 10th: Implement and test the RAOP streaming xform plugin.

July 11th - July 17th: Read up on the ALAC decoder [1]. Create a design spec for the ALAC encoder/decoder xforms plugins.

July 18th - August 16th: Implement and test the ALAC decoder.

July 17th - August 22nd: Extend the plugin to handle iTunes authentication and sharing. Implement iTunes share discovery using Bonjour.


[1] [2] [3] [4]

Clone this wiki locally
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.