[vlc-devel] commit: Add Remote Audio Output Protocol stream output plugin ( Michael Hanselmann )

git version control git at videolan.org
Fri Dec 19 18:25:07 CET 2008


vlc | branch: master | Michael Hanselmann <public at hansmi.ch> | Tue Dec 16 22:26:10 2008 +0100| [bc9a84781306ab22d2facc636a2f82eb6ba2abd3] | committer: Rémi Denis-Courmont 

Add Remote Audio Output Protocol stream output plugin

Apple AirPort Express devices can play audio streamed over the
network. The Remote Audio Output Protocol was reverse-engineered
by Jon Lech Johansen in 2004. He also released a proof of concept
implementation named JustePort.

The control protocol is similar to interleaved RTSP record mode and
based on HTTP. It is used to negotiate details before sending music
data over an AES encrypted TCP connection. RSA is used to encrypt the
AES key before transfering it via an HTTP header. To this day, only
the public part of the RSA key has been made public while the private
part remains unknown.

VLC uses libgcrypt for encryption. Unfortunately, libgcrypt doesn't
support the OAEP standard as defined in RFC2437 and RAOP demands
OAEP padding for RSA encrypted data. OAEP has been reimplemented from
scratch based on the specification for this plugin. These functions,
MGF1 and AddOaepPadding, can be adopted for libgcrypt at a later time.

All input data must be encoded using the Apple Lossless codec with
44100 Hz and 2 channels. The "transcode" plugin can be used to
reencode input data. Updating the volume while playing is not yet
supported. Except for logging, no use is made of the audio delay
and jack type reported by the device.

Apple's RAOP-compatible devices announce themselves on the network
using Zeroconf, but discovering them is not implemented in this
plugin. The service type is "_raop._tcp".

The "raop" plugin can be used like this:
--sout='#transcode{acodec=alac,channels=2}:raop{host=hostname}'

It also supports a "volume" parameter with a range from 0 to 255.

Signed-off-by: Michael Hanselmann <public at hansmi.ch>
Signed-off-by: Rémi Denis-Courmont <rdenis at simphalempin.com>

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=bc9a84781306ab22d2facc636a2f82eb6ba2abd3
---

 configure.ac                  |   15 +
 modules/stream_out/Modules.am |    1 +
 modules/stream_out/raop.c     | 1508 +++++++++++++++++++++++++++++++++++++++++
 3 files changed, 1524 insertions(+), 0 deletions(-)

Diff:   http://git.videolan.org/gitweb.cgi/vlc.git/?a=commitdiff;h=bc9a84781306ab22d2facc636a2f82eb6ba2abd3



More information about the vlc-devel mailing list