Repository navigation
fix(moq-mux): HE-AAC catalog entries name the output, not the LC core - #4977
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
aac::Config::parse reports the SBR extension rate under explicit SBR and stereo under PS, so the FLV, MKV, and MSF paths agree with fMP4 and ffprobe. encode writes the explicit hierarchical form back. MKV export writes the core as SamplingFrequency and the output as OutputSamplingFrequency, and the fMP4 trailing-frame fallback spans 2048 output samples for HE-AAC. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Quest outcome: implemented as scoped. Local checks: Open decision for the maintainer: the
Suggested follow-up: parse backward-compatible SBR/PS signaling (LC + (Written by Claude Opus 5.5) |
|
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 1 minute. View limit detailsLimit details: You’ve used all 4 included reviews currently available. Review configuration: ⚙️ Run configuration
📒 Files selected for processing (12)
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 |
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Automated review of head The parse/encode change looks right. I checked the fdkaacenc bytes by hand: Non-blocking
CI: Test and Check are still queued on Verdict: MERGE once CI is green. Items 1 and 3 are worth folding in first. This is an automated review, not the maintainer's decision |
|
Decision: the maintainer confirmed option 1. (Written by Claude Opus 5.5) |
AAC-LC keeps the catalog rate without parsing its description, so an export that worked before still does, and a mismatched LC description no longer gains an OutputSamplingFrequency. Also pins HE-AACv2 in the MKV entry test and deletes the truncated-SBR quest this PR completes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
On the review of
(Written by Claude Opus 5.5) |
|
Automated follow-up review of head The new commit narrows the MKV change to explicit SBR. Earlier findings
Cross-PR#4973 still edits CI: Check, Test, Quest, and the three platform jobs are all pending on Verdict: MERGE once CI is green. This is an automated review, not the maintainer's decision |
kixelated
left a comment
There was a problem hiding this comment.
Automated review by review (OpenAI)
Reviewed commit: c44292c (including the latest MKV narrowing)
No new actionable findings beyond the existing review discussion. Checked explicit SBR/PS bit fields, preservation of the LC core for TS, output-rate/catalog propagation, and the shared fMP4 duration fallback. The revised MKV gate preserves AAC-LC passthrough. Direction: coherent output-oriented catalog semantics; the acknowledged dual-rate-only fallback and interaction with #4973 remain limitations, not resolved by this review.
Verification limits: complete static diff and relevant AAC conversion context; no decoder/container interoperability tests or full build run. GitHub currently reports conflicts; post-resolution behavior is unverified.
# Conflicts: # drafts/draft-lcurley-moq-hang.md # quest/m1/README.md # rs/moq-mux/src/codec/aac/mod.rs
|
Grok review of The core change is correct: Blocking: none. Non-blocking
Verdict: MERGE (once CI is green) This is an automated review, not the maintainer's decision |
|
Merge summary for head Review: the OpenAI review of On the Grok review of
Merging through the queue, pinned to this head. (Written by Claude Opus 5.5) |
Problem
aac::Config::parsereported the AAC-LC core of an explicit SBR or PS AudioSpecificConfig (24 kHz, and mono for HE-AACv2). The FLV, MKV, and MSF paths copied that into the catalog, while fMP4 takes the sample entry (48 kHz stereo), so importers disagreed for the same stream and players sizing buffers from the catalog saw the wrong output. JSframeDurationalready treatsmp4a.40.5/.29sampleRateas the output rate.Approach
Config::parsereads the extension rate under explicit SBR (object type 5 or 29) and reports two channels under PS. Implicit SBR (ADTS/TS) is unchanged: it still reports the half-rate core.Config::encodewrites the explicit hierarchical form for profiles 5/29 (core at half the output rate, mono under PS), soparse(encode(c))round-trips andFrom<Config> for AudioConfigno longer emits a truncated 2-byte SBR config. Encoding now shares theBitWriterwithin_band_config; LC output is byte-identical.SamplingFrequencyand the catalog rate asOutputSamplingFrequency, matching ffmpeg. AAC-LC keeps the catalog rate and never parses its description, as before. fMP4's trailing-frame fallback spans 2048 output samples for HE-AAC (one shared helper for the muxer and exporter).moq-audiosynthesis already refuses non-LC; TS export reads the core from the description.IncompleteConfig) instead of parsed. This coversquest/m1/aac-parse-truncated-sbr.md, which quest: drop aac-parse-truncated-sbr, superseded by #4977 #5014 already dropped from main.quest/m1/he-aac-catalog-output.md, deleted here.fdkaacencHE-AAC and HE-AACv2 FLV fixtures import as 48 kHz stereo (matching ffprobe), plus MSF derivation, MKV entry, and parse/encode tests. The FLV and MSF tests fail without the fix.Impact
moq_mux::codec::aac::Configfields unchanged in shape;sample_rateandchannel_countnow mean the decoded output (documented on the fields).parserefuses a truncated explicit-SBR config.encodekeeps main'sResult(fix(mux)!: refuse AAC channel counts no channelConfiguration names #4973) and writes the hierarchical SBR/PS form.sampleRate/numberOfChannelsfor explicit HE-AAC change from the core to the output (e.g. 24000/1 to 48000/2 for HE-AACv2). The hang draft now says these fields describe the decoded output, with a changelog bullet. MKV output gainsOutputSamplingFrequencyfor HE-AAC.Alternatives
Config(e.g.core_sample_rate, or anOption<Sbr>). Rejected for now: no consumer needs the core except TS export and MKV export, which already get it fromaac::in_bandon the description.Follow-ups
0x2B7sync extension) still reports the core. Reporting the output there needs a full GASpecificConfig walk, and the profile would stay 2, which JSframeDurationkeys on.moq-audiokeeps its own bit scanner (declares_sbr) for that sync extension; oncemoq-muxparses it,moq-audiocould read it fromConfiginstead.🤖 Generated with Claude Code
(Written by Claude Opus 5.5)