Licences: MIT for the AES67 core and web page, GPL-3.0 for the rest
- LICENSE (GPL-3.0) at the root; an MIT LICENSE in each components/aes67_* and in web/, so they travel with the code when reused. - THIRD_PARTY.md: third-party code and licences, and the known conflict of the Espressif binary audio libraries with GPL-3.0 (firmware contains cspot). - CLAUDE.md: rule to keep GPL code out of the core; phase 2 item to replace the Espressif binaries (opencore-aacdec, Speex resampler). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -15,6 +15,7 @@ Repo: https://gitea.apointless.space/bsncubed/aes67-ESP32-P4
|
||||
- After every change: `idf.py build`, flash, and check the serial monitor output. Show the relevant log lines.
|
||||
- Don't mark a step done until it has been verified on the board.
|
||||
- Keep core and project separate: `components/aes67_*` must not depend on `main/` (sources/player). Project code plugs in through the config, status and route registries.
|
||||
- Licences: core (`components/aes67_*`) and `web/` are MIT, the rest GPL-3.0-or-later (see THIRD_PARTY.md). Never pull GPL code (cspot, bell, squeezelite) into the core. New third-party code: check its licence first and add it to THIRD_PARTY.md.
|
||||
- `web/index.html`: keep the CORE / PROJECT markers. If the firmware needs an API change, change the doc and the page together.
|
||||
- Small, focused commits per step.
|
||||
|
||||
@@ -83,6 +84,7 @@ Repo: https://gitea.apointless.space/bsncubed/aes67-ESP32-P4
|
||||
- [ ] Mute at 0 % volume: confirm on the board.
|
||||
|
||||
## Phase 2 (parked)
|
||||
- [ ] Replace the Espressif binary audio libraries (GPL-3 conflict, see THIRD_PARTY.md): AAC via opencore-aacdec (Apache-2.0, in bell/external), 44.1 -> 48 kHz via the Speex resampler (BSD). Do together with / right before the clock-drift correction (Speex can steer the ratio).
|
||||
- [ ] Clock-drift correction (do before AirPlay): steer the 44.1 -> 48 kHz converter by a few ppm from the ring level / distance to the live edge, so push sources that run on the sender's clock don't slowly over- or underrun. Closes the HLS clock-drift item in step 7; AirPlay needs the same.
|
||||
- [ ] AirPlay 1 (RAOP) as a source: `_raop._tcp` via our mDNS, RTSP control, AES (mbedTLS), ALAC decode, RTP audio + timing, 44.1 kHz into the existing converter, uses the clock-drift correction. Start from philippe44's RAOP code in squeezelite-esp32 (`components/raop`, checked 2026-09-27 at commit 1d542bd):
|
||||
- Take `raop.c`, `util.c` (MIT, philippe44) and `rtp.c` (MIT, James Laird/shairport); keep their headers. Write our own glue to the player (their `raop_sink.c` has no licence header and the repo has no LICENSE file; it's specific to squeezelite anyway).
|
||||
|
||||
Reference in New Issue
Block a user