Epic: #113 · Milestone: MC6 — Media engine
Why
These are the numbers behind "performant". They run on the HIL rig weekly (#111) and on demand.
Reference corpus (checked into a release asset, hashes in repo)
ref-1080p60-h264-high-aac.mp4(20 Mbit/s, B-frames, 5.1 AAC)ref-1080p24-h264-flac.mkv(with SRT + ASS tracks, chapters)ref-2160p60-hevc-main10-hdr10.mkv(60 Mbit/s)ref-2160p30-hevc-main.mp4ref-ts-broadcast.ts(H.264 + AAC + DVB subs, PCR jitter)- Music: FLAC 24/96, MP3 320 gapless album, Opus, AAC-LC
- Each video has embedded A/V sync markers (flash + beep every 10 s) for capture analysis.
Tasks
scripts/pi/measure-playback.sh <clip>: starts playback via the phone-remote HTTP API (#100) or a serial command, captures HDMI 60 s, computes dropped/repeated frames (frame-counter overlay), A/V offset from markers, CPU/RSS fromperf, watts from the plug.- Thresholds: 1080p60 H.264 — 0 dropped frames, CPU ≤ 60 %; 4K60 HEVC — 0 dropped, CPU ≤ 25 %; A/V offset ≤ 40 ms; RSS growth over 4 h ≤ 5 %; zero kernel panics (serial monitor).
soak-4h: shuffled playlist of the corpus + UI navigation script between items.- Results into
IMPLEMENTATION_STATUS.md(generated) as a "Playback" table.
Acceptance
All thresholds met on two consecutive weekly runs; floors recorded in scripts/perf-floors.json.
Size: M · Depends on: #85, #84, #49, #48 · Blocks: v1 release