Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
e35bc4c to
4475984
Compare
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
MERGE Positive improvement: this is the right seam for platform audio decoders. Mirroring Worth the complexity. The trait surface is small, PLATFORM is empty so there is no dead warn-on-fallback, and delaying a public NAMES list / flush until a consumer needs them keeps the blast radius tight. Backend-reported rate/layout with Consumer remix stays the correct contract for HE-AAC doubling later. Different approach: keeping codec names for This is an automated review, not the maintainer's decision |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 44759844c3
ℹ️ 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".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
Rebased onto The quest list keeps the TS export PCE entry and drops the finished Layout quest and this seam.
Check and Test were still pending. This base has no required checks. (Written by Grok 4.7) |
Problem
moq_audio::decode::Decodermatched on the catalog codec inline, so there was no place for a platform decoder (AudioToolbox, Media Foundation, MediaCodec) to slot in ahead of the software ones.Kind::AutoandKind::Softwarebehaved the same, andKind::Namedmatched codec names, which stop being unique once a second AAC decoder exists.Approach
decode::backendmirrorsmoq-video's seam: a crate-privateBackendtrait (decode,reset,sample_rate,layout,delay,name) and anopenthat walksPLATFORMthenSOFTWAREcandidates, skips any that doesn't advertise the catalogAudioCodec, and refuses when none opens the track.PLATFORMis empty for now.Consumeralready resamples and remixes to the requested output.Error::Mux. Several refusals join into oneError::Unsupportedthat names each backend. An unknown name lists what this build has for the codec.moq playlogs the audio decoder it opened, like it does for video.doc/lib/rs/moq-audio.mdgains the backend table and the Linux gap.doc/bin/cli.mdno longer says audio uses the platform decoder.doc/bin/obs.mdis unchanged: the OBS source decodes audio with FFmpeg, not libmoq.Autopreferring platform, falling back past a refusal,Softwareskipping platform,Namedforcing one without falling back, aggregated refusals, and unknown and wrong-codec names.decode-audiotoolbox.mdnow says to warn whenAutofalls past a platform refusal, and to report priming as the backend's delay.Impact
decode::Decoder::name()anddecode::Consumer::name()are new, mirroringmoq_video::decode. Additive.Kind::Namednow takes backend names"libopus","pcm","symphonia"instead of the codec names"opus","pcm","aac". The old names were never documented, but 0.1.2 accepted them. The type doesn't change, but a caller passing"opus"or"aac"is now refused. I left this as a draft for that decision.Kind::AutoandKind::Softwaredocs now describe platform-first selection. They behave the same until a platform backend lands.Kind.Alternatives
"opus","aac"). That has no behavior change, but"aac"becomes ambiguous once AudioToolbox also decodes AAC, and it breaks moq-video's convention of naming by implementation ("openh264"). A hidden alias is ruled out as a compatibility shim.flush: left out, because no backend here buffers output and the consumer never flushes audio. The first platform backend that holds frames can add it along with the consumer wiring.PLATFORMis empty and that path would be dead code. It's noted in the AudioToolbox quest.NAMESlist like video's: kept private until a consumer, such as CLI completion, needs it.Follow-ups
he-aac-refusal.mdon the same line. This PR only drops that file's links to the deleted quest, so resolve the modify/delete conflict by deleting the file.decode-audiotoolbox.md(m1), and Media Foundation and MediaCodec (m2).(Written by Claude Opus 5.5)
🤖 Generated with Claude Code