API Reference AirPlay v#0.3.2

Copy Markdown View Source

Modules

A pure-Elixir AirPlay (RAOP) audio sender — discover receivers on the LAN and stream lossless audio to them, with no native dependencies (just :crypto, :gen_udp and :gen_tcp).

Pack PCM into uncompressed ALAC frames for AirPlay/RAOP.

Play a PCM buffer to an AirPlay/RAOP receiver, end to end — a small session GenServer exposing play/3, stop/1, set_volume/2.

Stream-decode an audio file to AirPlay frames with bounded memory.

Discover AirPlay/RAOP receivers on the LAN via mDNS (multicast DNS, 224.0.0.251:5353) — the Bonjour service browse Apple devices use. Queries the _raop._tcp.local service and resolves each instance's SRV (host/port) + A (address) from the responses.

NTP 64-bit timestamps for the AirPlay/RAOP timing channel.

Streams ALAC-over-RTP audio to an AirPlay/RAOP receiver after the RTSP handshake. Owns three UDP sockets

RAOP packet builders: audio (PT 0x60), control sync (0xd4), and timing response (0xd3). All multi-byte fields are big-endian.

Minimal RTSP/1.0 client for the AirPlay/RAOP control plane.

Drives the AirPlay/RAOP control handshake against a receiver.

Decode a library track to the PCM format AirPlay/RAOP wants: 44.1 kHz, 16-bit, stereo, little-endian, via ffmpeg. Returns the raw interleaved s16le bytes, which AirPlay.Alac chops into 352-sample frames.

AirPlay 2 cryptographic helpers.

Minimal AirPlay 2 multi-room group player.

AirPlay 2 transient pairing.

Minimal AirPlay 2 file player.

Minimal binary plist writer for AirPlay 2 SETUP bodies.

AirPlay 2 gPTP packet and clock helpers.

AirPlay 2 gPTP BMCA-yield worker.

RTSP client for AirPlay 2.

AirPlay 2 encrypted RTSP control/event channel framing.

AirPlay 2 SETUP request helpers.

AirPlay 2 SRP-6a client proof generation.

AirPlay 2 TLV8 encoder/decoder.