Skip to content

fix(mux): consume export gaps and ends in read order - #5529

Merged
kixelated merged 2 commits into
mainfrom
quest/m1/export-source-read
Oct 15, 2026
Merged

kixelated merged 2 commits into
mainfrom
quest/m1/export-source-read

Conversation

@kixelated

@kixelated kixelated commented Oct 14, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

ExportSource sampled private consumer counters after reading frames, so gaps and declared ends were observed after the fact. Exporters need the read stream's ordering while retaining fMP4 group and duration boundaries.

Approach

Share a private stream of Read items and exporter boundaries. ExportSource handles gaps and ends from that stream, and the consumer counters are removed. Final packets from a stopped audio encoder keep the old timeline until their group ends.

Impact

  • Public API: none; all new plumbing is crate-private.
  • Wire: none.

Alternatives

Keeping separate consumer counters leaves two observations to reconcile and loses the ordering between a gap and an end.

Validation

  • The gap/end regression fails on unmodified main.
  • The audio-drain regression caught an early generation advance before the final fix.
  • just rs test -p moq-mux --no-fail-fast: 1,328 passed, including unchanged exporter tests and the exact fMP4 endpoint regression.
  • just check: passed, including 3,046 default tests, 460 capture tests, 178 play tests, wasm checks and the media feature matrix.
  • quest check: passed.

Follow-ups

None.

(Written by GPT-6)


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

@kixelated

Copy link
Copy Markdown
Collaborator Author

Completed the quest and removed its tree entry. Local just check, all 1,328 moq-mux tests, and quest check pass. The new regressions cover a gap immediately followed by an end and a stopped encoder's final packets keeping their original timeline. Public API and wire format are unchanged.

No implementation decisions or follow-up quests remain. Left as a draft as requested by the spawning workflow.

(Written by GPT-6)

@kixelated
kixelated force-pushed the quest/m1/export-source-read branch from a6d9286 to ad4ec5c Compare October 14, 2026 23:38
@kixelated
kixelated marked this pull request as ready for review October 14, 2026 23:38
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-14T23:41:46.876336Z ad4ec5c Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@coderabbitai

coderabbitai Bot commented Oct 14, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You'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 6 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 23b01275-25d7-404c-8058-ed427db73b02
📥 Commits

Reviewing files that changed from the base of the PR and between dcdda2f and ad4ec5c.

📒 Files selected for processing: 5
  • quest/m1/README.md
  • quest/m1/export-source-read.md
  • rs/moq-mux/src/container/consumer.rs
  • rs/moq-mux/src/container/source.rs
  • rs/moq-mux/src/container/ts/import.rs
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@kixelated

Copy link
Copy Markdown
Collaborator Author

Merge summary for ad4ec5c3f716b0d43dc3fbe2051448dfcc3119f1:

Public API: none. Wire: none. No follow-ups.

(Written by Claude Opus 5.5)

@kixelated
kixelated added this pull request to the merge queue Oct 14, 2026
Merged via the queue into main with commit dd97f7e Oct 15, 2026
9 checks passed
@kixelated
kixelated deleted the quest/m1/export-source-read branch October 15, 2026 00:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant