docs(quest): plan media API stabilization before 0.1 - #3803
Merged
Merged
Conversation
kixelated
marked this pull request as ready for review
September 20, 2026 17:46
Contributor
|
Warning Review limit reachedNext included review available in 17 minutes. View limit detailsLimit details: You’ve used all 4 included reviews currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (54)
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. Comment |
This was referenced Sep 21, 2026
Co-Authored-By: GPT-6 <noreply@openai.com>
Record each audited crate's public surface and the additive-only moq-mux plus unchanged binding boundaries. Co-Authored-By: GPT-5 <noreply@openai.com>
kixelated
force-pushed
the
codex/audit-zero-packages
branch
from
September 21, 2026 01:49
478b7b6 to
bdbab42
Compare
Contributor
|
No issues found. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Problem
The public contracts of
moq-audio,moq-video,moq-transcode, andmoq-nvencshould be settled before their first 0.1 releases. Existing backlog items mixed those API replacements with later backend, optimization, and hardware work, which would either delay stabilization or require another breaking release.mainnow also uses m0 for the Pronto GPU path, so this plan must join that immediate-priority graph without replacing its existing quests.Approach
Add 14 focused media API quests and a final release-review gate to the existing m0 questline. Preserve the three Pronto GPU quests as an independent m0 deliverable, under the combined
m0: immediate mediascope. Keep API-preserving correctness, performance, codec, and hardware-study work in m2/m3, update their dependencies, and remove the obsolete decoder-drain quest because backend flush and consumer/transcode draining already landed.The audit covers configuration, optional native compilation, frames and timing, group structure, codec thread ownership, NVENC resource ownership and fallible loading, publication authority, AEC ownership, playback outcomes, and controls that currently promise behavior they do not provide. It is based on source inspection, not new hardware or benchmark certification.
Public API impact by package
This PR is planning-only and changes no executable API today. The quests plan these pre-0.1 Rust changes:
moq-audio0.0.25: separate source PCM layout/rate from codec settings and subscription/output policy; replace channel counts with an extensible layout contract; establish decoder backend-selection construction; remove ineffectivefec; replaceProducer::trackwith demand authority; make the standaloneResamplerprivate; simplifypublish_capturearoundPublicationOptions; split exclusive AEC attachment from cloneable controls; return a typed accepted/dropped frame outcome from playback writes; and make frame/packet construction extensible.moq-video0.0.25: consolidate conversion entry points and return typed pixels with retained size/color; make frame and encoded records constructor-based and extensible; separate decoder output from consumer subscription policy with explicit native-or-CPU output; make direct synchronous codecs thread-confined while worker-owned sinks remain async; preserve capture timestamps and rational rates; replace integer GOP configuration with an extensible group contract and consistently rename forced boundaries tocut; make OpenH264 optional-but-default, rendering opt-in, and remove thenvenc/nvdecfeature aliases; removeencode::rateafter its shared replacement exists.moq-transcode0.0.19: adopt the rational rate, output, group/cut, and feature contracts in its public configuration and observations; remove thenvenc/nvdecaliases; preserve the validatedLadder, packetizing behavior, and coalescing active cursor.moq-nvenc0.0.5: narrow and seal the safe facade around real consumers; encode resource, session, configuration, and completion lifetimes in owned types; make unsafe escape obligations explicit; and replace panicking driver/function-table initialization with fallible loading and extensible public errors.moq-mux0.9.16: add only the sharedrate::{Policy, Control}namespace. Existing published exports remain source-compatible.moq-ffi,libmoq, and language bindings: implementation callers adapt internally, but published signatures, record layouts, channel-count conventions, sentinel behavior, and C layouts remain unchanged.The
cutrejection point remains an explicit maintainer decision in the quest. The recommended simple contract queuescut()infallibly and reports a backend refusal from the next encode, matching current deferred codec work, unless an immediate acknowledgement requirement is identified.Wire impact
None. The plan changes no MoQ messages, framing, authentication, catalog schema, media container schema, codec packetization, or version negotiation. Removing the ineffective audio FEC flag does not change currently emitted packets. Rational rates and timestamps convert to the existing published representations at binding and catalog boundaries, and current keyframe grouping remains unchanged until separately scoped refresh work.
Alternatives
Frame/Surfacehierarchy and native/wgpu interoperability.Follow-ups
Validation:
nix develop --command just checkpassed after rebasing and reconciling the current m0 graph, including all 418 quest documents and repository Markdown checks. No runtime test suite is selected by this planning-only diff.(written by GPT-5)