transcoding: video renditions as first-class MUXL tracks

, the audio dual-codec path applied to video. Each rendition the transcoder returns is canonicalized with its video relabelled to a fixed track id (100 + ladder index), signed per GoP as a c2pa.transcoded derivative of the source video under the node's identity, and the signed tracks are appended into an addendum that folds into the live window — each rendition a variant in the live HLS master playlist — and travels to peers over the syndication websocket (framed, verified, fed to their windows), so one node's GPU serves the station. Transcoding is the ingest node's job (gated like recording). Also: the MP4→TS conversion the gateway push uses plugs its audio parser with parsebin instead of a hard-wired opusparse (an RTMP/AAC source never linked and hung every transcode behind the in-flight guard), is bounded at 30s, and the transcoder is handed the Opus presentation so renditions carry audio the WebRTC packetizer accepts; rendition segments carry the source's published flag (viewers were refused them). Verified end to end on a scratch node with an ffmpeg mock gateway: 5 variants for a 1080p source, rendition playlists serving, a 160p segment probing at 214x160, and 160p over WebRTC Claude-Session: https://claude.ai/code/session_014aPQ5yqG9QFxKnbwQfCYKa (cherry picked from commit e1004e24a7e70026b33d9112640b3f4bf7611080)


Author Eli Mallon Date Commit Parent 980f04a3