[gst-devel] RAOP sink

Eoin Hennessy eoin.hennessy at gmail.com
Mon Dec 17 18:34:32 CET 2007

Hello all,

First post. In my spare time I've been working on a sink element for
Apples 'Realtime Audio Output Protocol' (RAOP) for a little while [0].
It's the protocol used to stream audio to Apples AirTunes devices.
It's actually based on RTSP with some added encryption.

I have a working implementation, and being my first stab at gstreamer
development It would be great if someone more knowledgeable than I had
a few minutes to look over the code. I have a git repository available


And gitweb is running here:


The sink structure looks some thing like this:

  | raopsink | => RTPS control channel
  | alacenc | -> | raopenc | -> | tcpclientsink | => RTSP data channel

  alacenc converts the raw audio stream to ALAC (Apples Lossless audio format)
  raopenc encrypts the ALAC stream before pushing it into the RTSP
data connection (tcpclientsink).
  raopsink manages the RTSP control connection

The elements derive from the following classes:
  alacenc -> gstelement
  raopenc -> gstbasetransform
  raopenc -> gstelement

While the sinks currently works, the biggest issue is that is doesn't
respond to any pad queries (position, duration). I'm wondering how
best to roll in this support. Perhaps using GstAudioSink or
GstBaseAudioSink? I also suspect than I'm probably doing some things
that might stand out as silly to a seasoned dev.

Many thanks,

[0] To be clear, I picked this project up from an abandoned attempt here:

More information about the gstreamer-devel mailing list