From b607592be28eae636607cd3457b409903fb52d47 Mon Sep 17 00:00:00 2001 From: Meta Vens Date: Tue, 29 Sep 2026 16:02:33 +0200 Subject: [PATCH] Correct keyframe, GOP, and provenance claims in the media docs Co-Authored-By: Claude Sonnet 5 --- docs/muninn-media-streaming.md | 3 ++- docs/teardown-map.md | 11 ++++++----- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/docs/muninn-media-streaming.md b/docs/muninn-media-streaming.md index e2f411b..0eefb53 100644 --- a/docs/muninn-media-streaming.md +++ b/docs/muninn-media-streaming.md @@ -239,7 +239,8 @@ Recommended first LAN profile: - Profile id: `muninn.rudp.low_latency_h264_lan.v1`. - Video: H.264 NVENC, `p5` (`main.rs:10279`), ultra-low-latency tune, CBR high enough that LAN bandwidth is not the constraint, no B-frames, no lookahead, short GOP or - intra-refresh, periodic IDR/keyframe on feedback pressure. + intra-refresh, keyframe actuation on feedback pressure (not built: keyframe requests are only + counted and logged today; Cut 6 builds it). - VBV: derive `bufsize` from roughly one frame of bitrate (`bitrate_kbps / framerate`) instead of a large fixed encoder reservoir. The point is bounded latency, not hoarding compressed video in a nicer hat. diff --git a/docs/teardown-map.md b/docs/teardown-map.md index 5cd5629..69356c3 100644 --- a/docs/teardown-map.md +++ b/docs/teardown-map.md @@ -609,13 +609,13 @@ Three repos where there was one crate, and a contract neither of them owns. | Repo | Role | State | |---|---|---| -| CultLib `main` `05e0925` at the time of writing (media contract unchanged since `c2a9a6e`; `main` is now `069ecc3`) | the contract | media records, wire envelope, validation, channel delivery | +| CultLib `main` `05e0925` at the time of writing (media contract unchanged since `c2a9a6e`) | the contract | media records, wire envelope, validation, channel delivery | | Muninn | producer | speaks the shared contract; blocked on one pin (below) | | Ratatoskr | consumer | decodes the envelope; builds clean, no conflicts | ### The one thing blocking a clean Muninn build (history; resolved) -Resolved 2026-09-11 (see the Raven section below): `Cargo.lock` is tracked (`60ed6b2`) and the pins are the build. The build resolves `odin-core` from Odin `3e96c6c`, which no Odin branch holds; only the tag `attic/claude-cultlib-pin-c2a9a6e` keeps it reachable. The text below is the state on 2026-09-10. +Resolved 2026-09-11 (see the Raven section below): `Cargo.lock` is tracked (`70d267f`) and the pins are the build. The build resolves `odin-core` from Odin `3e96c6c`, which no Odin branch holds; only the tag `attic/claude-cultlib-pin-c2a9a6e` keeps it reachable. The text below is the state on 2026-09-10. `odin-core` pins CultLib `c13b6ba`; Muninn needs `05e0925`. Cargo resolves two `cultcache-rs` copies and `DatabaseEntry` from one is not `DatabaseEntry` from @@ -656,7 +656,7 @@ one once the patch is gone. Muninn-specific `obs_stream_catalog` / `capture_stream_command` stay published beside them until nothing reads them. The old plugin's CLI shell-out and `.cc` snapshot are not ported. The connection direction was - inverted the same day (section above). Exercised live 2026-09-10/11 on `bc43e1b` and later + inverted the same day (section above). First live frames on `58e8663` (2026-09-10); exercised through 2026-09-11 on `bc43e1b` and later (measurements below); the 2026-09-10 note that Raven ran a pre-b679fc2 Muninn is history. 3. **Opus.** Unblocked and measured at 16.8x. `-f aac` in the receiver becomes codec-driven; framing follows the `aac-adts-padded-v1` precedent (2-byte @@ -666,8 +666,9 @@ one once the patch is gone. live counterpart. `build_receiver_feedback` moved to CultLib (34c8ea7) and stopped implying a keyframe request from missing chunks (4160ab5): a repair request is the alternative to one. The sender counts keyframe requests and logs them; - it does not force an IDR (`main.rs:3036-3048`). Recovery today is the fixed all-IDR GOP - of `framerate/4` frames. + it does not force an IDR (`main.rs:3036-3048`). Recovery today is the fixed GOP: + every GOP keyframe is an IDR, at a GOP of `framerate/4` frames (`-forced-idr 1`, `-g`, + `-keyint_min`, `main.rs:10405-10410`); not every frame. ### Deliberate breaks, both recorded as passing tests