[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