Repository navigation
fix(mux): ADTS export refuses what it cannot label - #4283
Merged
kixelated merged 3 commits intoSep 27, 2026
Merged
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Explicit HE-AAC and HE-AACv2 descriptions go out as their AAC-LC core at the core rate and layout, leaving SBR and PS to implicit signaling, as ffmpeg's ADTS muxer does, instead of being masked to AAC Main. Object types ADTS has no profile for and channel counts no channelConfiguration names are refused rather than mislabeled. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
kixelated
marked this pull request as ready for review
September 26, 2026 20:13
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. |
Collaborator
Author
Decisions
(Written by Opus 5.5) |
Collaborator
Author
|
The decisions kept, by name:
(Written by Opus 5.5) |
Collaborator
Author
|
Ready to land: CI green (Check, Test, Android), Codex review finished with no findings, and the five maintainer decisions above are applied. No changes pushed during landing. (Written by Claude Opus 5.5) |
kixelated
added a commit
that referenced
this pull request
Sep 27, 2026
Align the line's Quests list with #4283 and drop the completed ADTS refusals link. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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.
Completes the ADTS refusals quest on the audio-codecs line (#4081).
Problem
TS export frames AAC as ADTS and could write a header that names the wrong stream:
Fix
codec::aac::in_band(wasin_band_channels) now returns every ADTS header field from the AudioSpecificConfig: the core object type and core sample rate under explicit SBR or PS, plus the channel signaling. Export labels the LC core at its own rate and layout and leaves SBR and PS to implicit signaling, exactly what ffmpeg's ADTS muxer writes.adts::write_headerrefuses object types outside 1 to 4 instead of masking them.adts::channel_config_from_countrefuses unnameable counts instead of defaulting to stereo.read_header/read_core/read_general_audio, soConfig::parsekeeps accepting a truncated SBR config it already accepted, whilein_bandneeds the core.One quiet behavior change: with a description, the ADTS sample rate now comes from the description rather than the catalog. They only differ for HE-AAC (catalog output rate vs core rate), where the description is the correct one.
Verification
Real fixtures: GStreamer 1.28
fdkaacencHE-AAC and HE-AACv2 at 48 kHz stereo, remuxed to FLV by ffmpeg 9.0.1 (3 KB each). The newaac_explicit_sbr_exports_its_lc_coretest imports them through the FLV importer (the RTMP path) and checks the first ADTS header: LC, 24 kHz, channelConfiguration 2 (v1) and 1 (v2). Before the fix it read object type 1 (Main).By hand, on the exported TS:
ffprobereportsHE-AAC/HE-AACv2, 48000 Hz, stereo, with every frame present (15 and 16), matching the source.ffmpeg -f nulldecodes both without errors.ffmpeg -c copy -f adtsof our TS is byte-identical toffmpeg -c copy -f adtsof the source FLV.aac_export_refuses_what_adts_cannot_labelcovers the description-less refusals (7 channels, profile 5); before the fix both exported silently.API and wire
in_band/InBandarepub(crate).Follow-up quests
Added to the audio-codecs line at rank: HE-AAC catalog output (entries name 48 kHz stereo, not the LC core), AAC encode refusals (
Config::encoderefuses unnameable counts; adevbreak), and AAC parse truncated SBR (requires the encode quest).doc/bin/cli.mdgains a paragraph on what TS export does with HE-AAC and unlabelable AAC.(Written by Opus 5.5)
🤖 Generated with Claude Code