Epic: #113 · Milestone: MC6 — Media engine
Why
Internet radio, podcasts, self-hosted streams and NAS HTTP shares. The stdlib has hls.zig/dash.zig; HomeOS has an HTTP client (net/http.home, 713 lines, unrun) and a TLS 1.2 record layer on stub crypto (S5). Streaming needs the network stack from #69 and TLS from #107.
Tasks
- HTTP/1.1 client hardening: keep-alive, chunked, range, redirects, timeouts, in-flight cancellation; HTTPS through #107.
- Progressive source with adaptive read-ahead and seek by byte-range (MP4
moovat end handled via range probing). - HLS: master/variant playlists, bandwidth estimator, segment fetcher with a 3-segment buffer, discontinuities, fMP4 and TS, AES-128 segment decryption (S5), live edge + DVR window.
- Internet radio (ICY metadata), podcast RSS parsing for the Music app.
- Bandwidth/latency panel in
perf.
Acceptance
Plays a public HLS test stream (VOD and live) for 30 minutes without stalls on the rig; switches variants when bandwidth is throttled by the host-side proxy (rpx can shape).