[pulseaudio-discuss] [PATCH 00/25] raop2 support for module-raop-sink

Hajime Fujita crisp.fujita at nifty.com
Sat Sep 7 09:34:49 PDT 2013


This patch set adds a support for UDP version of RAOP (so called
raop2). Most of the RAOP devices (e.g. AppleTV, AirportExpress,
third party AV receivers) today use UDP version, so this patch
set is expected to support those devices.

While there are still some remaining issues, and testing has not
been done thoroughly, we'd like to have a review so that we can
discuss some design/style issues as early as possible.

A brief project description is here.
http://hfujita.github.io/pulseaudio-raop2/

Also this raop issue is actively discussed in this thread.
https://bugs.freedesktop.org/show_bug.cgi?id=42804

This patch set corresponds to the following branch on github.
https://github.com/hfujita/pulseaudio-raop2/tree/raop2-for-merge1

Current status (as of 9/5/2013)

* Plays back music on Pioneer VSX-43 (AV receiver) and some other
  devices (see below for tested device list).
* Expected to support both TCP (original raop module) an UDP
  protocols. However, TCP protocol is not tested at all because we
  don't own a device.

Known issues (as of 9/5/2013)

* May not work with the latest AppleTV
* Sound test (launched from the GNOME sound setting dialog) does
  not work (no sound heard).
* Works reasonably with VLC/Totem/Rhythmbox but when playing music
  from Flash player, quite rough sound is heard.
* There's a huge latency. Okay for music player but absolutely
  terrible for movies/voice chat.
* Volume calculation is wrong
  (https://bugs.freedesktop.org/show_bug.cgi?id=42804#c43)

Some comments on code structure

* At this moment we intentionally tried not to fuse TCP code and
UDP code too much. This is because we currently don't own a
device that talks TCP version of RAOP, we were afraid that
excessive code modification for TCP path could ruin its original
functionality (and we can't detect it).


Hajime Fujita (15):
  raop: Recognize transport protocol type
  raop: Rename client functions
  raop: Introduce sink_get_latency for latency calculation
  raop: Move RTSP announce to an external function
  raop: Code renaming for protocol specific IDs
  raop: Add dummy handler for RTSP OPTIONS
  raop: Use two port numbers for timing/control port
  raop: Honor encryption capability given by a remote device
  raop: Resume smoother for correct latency calculation
  raop: Set precise wake up timer for rtpoll
  raop: Set poll timer when entering the RUNNING state
  raop: Cleanup pollfd when the RTSP state enters TEARDOWN
  raop: Honor memchunk index when encoding chunks
  raop: Refactor UDP packet send path
  raop: More precise thread wakeup clock calculation

Martin Blanchard (9):
  raop: Cosmetic fixes / Match coding style
  raop: Add pulsecore/core-utils a pa_str_in_list function
  raop: Parse server capabilities on discovery
  rtp: New pa_rtsp_options function
  rtp: Allow transport parameters to be ovewritten
  rtp: Random seq number at the beginning of the session
  raop: Use server name to construct a sink name
  raop: Add UDP protocol handling
  raop: Support for devices capable with both TCP and UDP

Matthias Wabersich (1):
  raop: Packet retransmission support for UDP

 src/Makefile.am                         |    3 +-
 src/modules/raop/base64.c               |   28 +-
 src/modules/raop/base64.h               |    6 +-
 src/modules/raop/module-raop-discover.c |  247 ++++---
 src/modules/raop/module-raop-sink.c     |  500 +++++++++++--
 src/modules/raop/raop_client.c          | 1177 +++++++++++++++++++++++++++----
 src/modules/raop/raop_client.h          |   46 +-
 src/modules/raop/raop_packet_buffer.c   |  160 +++++
 src/modules/raop/raop_packet_buffer.h   |   41 ++
 src/modules/rtp/rtsp_client.c           |   92 ++-
 src/modules/rtp/rtsp_client.h           |   34 +-
 src/pulsecore/core-util.c               |   20 +
 src/pulsecore/core-util.h               |    5 +-
 13 files changed, 2001 insertions(+), 358 deletions(-)
 create mode 100644 src/modules/raop/raop_packet_buffer.c
 create mode 100644 src/modules/raop/raop_packet_buffer.h

-- 
1.8.1.2



More information about the pulseaudio-discuss mailing list