docs: record Phase 7 resilience state and re-scope

This commit is contained in:
2026-09-08 16:54:09 +02:00
parent 943596da6d
commit 74b3f04082
3 changed files with 48 additions and 7 deletions
+16
View File
@@ -71,6 +71,22 @@ loopback; current phase is Phase 7.
No application changes needed — the receiver already announces on all
interfaces. nmcli property syntax validated against NM 1.58 with a
disposable profile; AP bring-up itself can only be validated on the Pi.
- **Phase 7 resilience shipped** (pending Pi-side hw-decode run):
- PLI over signaling: `SessionPli` message; the depacketizer now returns
`DepacketizeResult{access_unit, frame_dropped}`; the receiver
rate-limits PLIs to 1/500 ms; the sender keeps the signaling channel
open and calls `SenderPipeline::request_keyframe()` (thread-safe
atomic → run-loop → encoder). Validated end-to-end with a probe that
drops a mid-keyframe packet: receiver logs "frame damaged",
PLI arrives with the session id.
- `RtpJitterBuffer` (rtp_packet.h): sequence reordering, 16 pkt/60 ms,
straggler discard via serial-number arithmetic, overflow flush for
genuine loss. Zero added latency on in-order streams.
- Hardware decode probe in DecoderFactory (`DecoderConfig.hardware_accel`,
default true): h264_v4l2m2m first, software fallback, `--swdecode` opts
out. On the desktop the probe fails cleanly ("Could not find a valid
device") and falls back; on the Pi it should pick the VideoCore m2m
device — NEEDS THE USER'S PI RUN to confirm.
- **REAL-HARDWARE VALIDATION (desktop → Pi Zero 2 W over Wi-Fi)**: the full
chain works on two machines: mDNS discovery → signaling negotiation →
RTP over Wi-Fi → software H.264 decode → fullscreen KMSDRM letterboxed