Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions quest/m1/audio-codecs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ its own decode and encode quest so verification stays per host.

- [AudioToolbox decode](/quest/m1/audio-codecs/decode-audiotoolbox.md) - macOS and iOS decode HE-AAC, multichannel AAC, and what else the framework offers
- [Opus surround](/quest/m1/audio-codecs/opus-surround.md) - mapping family 1 decodes on every host through the multistream decoder
- [ADTS refusals](/quest/m1/audio-codecs/adts-refusals.md) - the ADTS writer refuses channel counts and object types it cannot label instead of mislabeling them
- [AudioToolbox encode](/quest/m1/audio-codecs/encode-audiotoolbox.md) - macOS and iOS encode AAC-LC

## Related
Expand Down
25 changes: 25 additions & 0 deletions quest/m1/audio-codecs/adts-refusals.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# [S] ADTS export refuses what it cannot label

## Goal

`moq-mux`'s ADTS writer never labels an AAC track with the wrong layout or
object type. A channel count ADTS cannot name is refused, not silently written
as stereo, and an explicit SBR or PS description is written with the object
type ADTS can carry or refused, not masked to two bits into a wrong profile.

## Plan

- `channel_config_from_count` falls back to stereo for counts it cannot
represent; refuse instead, the same way #4178 made channelConfiguration 11 to
14 refuse.
- The ADTS header masks the object type to two bits, so an explicit HE-AAC
(object type 5) or HE-AACv2 (29) description is mislabeled. Decide per case:
signal the backward-compatible AAC-LC core (implicit SBR) when the description
allows it, otherwise refuse.
- Tests for both with real fixtures, checked against ffprobe.

Public API: none. Wire: none; TS output changes only for inputs it mislabeled.

## Related

- [#4178](https://github.com/moq-dev/moq/pull/4178) - the PCE export that found these
Loading