Repository navigation
fix(mux): adopt mp4-atom 0.17.1 and commit metadata regressions - #7918
Conversation
Quest-Claim: 6f8ca17e0cc19fea
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 5 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. |
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed head cf41a5624bd3dc70ae68382cd73d7fb5769b45ae against base ac0f04e5dcca9a9a07d15135dc2e904215c494f3.
No actionable finding in the inspected dependency, preflight and colour-handling changes. The upstream 0.17.1 tag contains both count bounds before their affected allocations; the local aggregate sample-group budget remains. The committed CMAF inputs match the referenced reproductions, and the fMP4 variants frame the same atoms for streaming ingest. Multiple colr boxes are consumed in order while codec colour retains precedence, including the added ICC-then-CICP case. The stricter duplicate-box handling is also part of this upstream release.
Verification: GitHub-only static inspection of the upstream tag, local preflight, importer and test corpus, with an independent pass. I did not run Cargo, fuzz regression tests or media interoperability checks, or independently verify the crates.io artifact checksum.
(Written by review (OpenAI))
There was a problem hiding this comment.
✅ No new issues found.
Reviewed changes
- mp4-atom 0.17.1 — workspace requirement and lockfile move to the release carrying the upstream
sgpdentry-count and zero-sizeilocextent bounds; the lockfile checksum matches the published crate. - Preflight guards retired —
metadata.rsdrops the local per-entrysgpd/ilocchecks that duplicated 0.17.1, keeps the aggregate sample-group budget, and moves the focused edge cases to directmp4_atom::Anydecoding. - Repeated
colrboxes — import walks every box in input order, letting CICP fill catalog gaps while ICC profiles are skipped and codec-supplied colour keeps precedence; synthesis still writes at most one box. - Regression corpus — six
sgpd/iref/iloccmaf and fmp4 fixtures added underfuzz/regressionswith README notes on the init-length andmoovwrapping, replayed under the allocation bound. - Quests — both mp4-atom quests removed and their links dropped from the fuzz-findings index.
I verified the crates.io artifact checksum and inspected 0.17.1's iloc and sgpd decoders: both bounds run before the affected allocations, so retiring the local guards is safe. The wrapped fmp4 fixtures still exercise those decoders because Any::decode_maybe decodes the atom before the typed Moov rejects it.
deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏
Takes moq-dev#7918 (mp4-atom 0.17.1) and the rest of main. - mp4-atom: main's 0.17.1 colr handling (every colr entry fills gaps) replaces this branch's first-CICP-entry version; 0.17.1 already makes colr a Vec, so only pssh and Encv/Enca remain this branch's churn. - The [patch.crates-io] fork (mp4-atom#268) has every 0.17.1 fix but says 0.17.0, so the workspace asks for 0.17.0 until moq-dev#268 is released. - New Moof literal in the cmaf-receive bench gains pssh. - workspace-hack: main's file with this branch's uuid serde feature. - MIGRATE notes and test modules from both sides kept. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

Problem
moq-mux used mp4-atom 0.17.0, which lacks the upstream
sgpdentry-count and zero-sizeilocextent bounds. The current metadata preflight already protects these inputs; the dependency should enforce its own bounds too.Approach
sgpd,iref, andilocCMAF reproductions from the fuzz findings, plus fMP4 counterparts for streaming ingest.sgpd/ilocbounds now supplied upstream; keep the aggregate group budget and exercise the dependency directly in the zero-size-entry tests.colrboxes; preserve codec-first colour precedence and test an ICC profile followed by CICP metadata.quest rm, including their links.Verified v0.17.1 contains the sgpd fix and the iloc fix: GitHub compare reports both as ancestors (behind_by=0). The crates.io index lists 0.17.1 as published on 2026-11-04 and not yanked; Cargo resolves its matching checksum.
Impact
Alternatives
Retaining 0.17.0 would rely solely on moq-mux's preflight. Use the released upstream fixes as well.
Choices made without asking
Color boxes fill missing catalog fields in input order, skipping ICC profiles that have no CICP mapping. Synthesis still writes at most one box.
The fMP4 fixtures use a zero write-size selector and wrap the original atoms in
moov, because streaming ingest skips other top-level boxes. The CMAF reproductions stay byte-for-byte unchanged.Validation
quest check --base origin/main: 588 documents pass; both completed quests and their links are removed.quest gate just ci: all 11,691 tests pass (135 skipped), including the allocation-bounded regression corpus, direct mp4-atom zero-size-entry tests, and ICC/CICP colour test. Every selected module passes exceptflake.quest gate just rs test -p moq-mux --features fuzz: 2,061 passed, 3 skipped before removing the duplicate guards; final CI covers the updated guards and corpus.nix flake check --print-build-logsfails buildinggithub-runnerbecauseunsharecannot write/proc/self/uid_map(Operation not permitted). Reproduced unchanged on base0eee916849a57335effff60213d0c473b0193848, with the identical failing derivationk6j6qw86x77lz6dnl2wqbxi86cjy31yw-github-runner.drv. No harness changes or checks disabled.Follow-ups
Repair the host’s Nix runner image-test user namespace permissions so the unmodified flake check can run. This reproduces on base and is outside the dependency bump.
Review
quest review --base origin/main, round 2.cf41a5624bd3dc70ae68382cd73d7fb5769b45ae.(Written by GPT-6.1 Sol with high reasoning effort)