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
6 changes: 2 additions & 4 deletions quest/m1/audio-codecs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,12 @@ mono/stereo.

The core configuration and layout contracts land in main. These quests implement
surround and backend dispatch on that contract; each platform then lands as
its own decode and encode quest so verification stays per host. The
HE-AAC refusal and the PCE parse are defects in what ships today and are
ready now.
its own decode and encode quest so verification stays per host.

## Quests

- [HE-AAC refusal](/quest/m1/audio-codecs/he-aac-refusal.md) - implicit-SBR HE-AAC over TS is refused instead of half-decoded as the LC core
- [AAC PCE](/quest/m1/audio-codecs/aac-pce.md) - a channel_config of 0 parses the program config element instead of guessing stereo
- [TS export PCE](/quest/m1/audio-codecs/ts-export-pce.md) - a TS export of a PCE-described AAC track writes channel_config 0 and the PCE instead of a count-derived config
- [Layout](/quest/m1/audio-codecs/layout.md) - the settled `Layout` carries up to 7.1 through decode, resample, playback, and the FFI
- [Decode seam](/quest/m1/audio-codecs/decode-backend.md) - `decode::backend` selects a platform decoder before symphonia, mirroring moq-video
- [AudioToolbox decode](/quest/m1/audio-codecs/decode-audiotoolbox.md) - macOS and iOS decode HE-AAC, multichannel AAC, and what else the framework offers
Expand Down
34 changes: 0 additions & 34 deletions quest/m1/audio-codecs/aac-pce.md

This file was deleted.

1 change: 0 additions & 1 deletion quest/m1/audio-codecs/he-aac-refusal.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,4 +31,3 @@ does too.
## Related

- [Decode seam](/quest/m1/audio-codecs/decode-backend.md) - the sniff becomes the software backend's contract
- [AAC PCE](/quest/m1/audio-codecs/aac-pce.md) - the other place the catalog lies about an AAC stream
5 changes: 4 additions & 1 deletion quest/m1/audio-codecs/layout.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,10 @@ Keep the representation extensible. Each codec module maps its native
order into it: AAC's `C L R Ls Rs LFE` and Opus's Vorbis `L C R Ls Rs LFE`
both become `L R C LFE Ls Rs`. An unspecified discrete PCM layout remains
valid for passthrough but is refused for spatial remixing; never invent speaker
positions from an arbitrary channel count.
positions from an arbitrary channel count. An AAC stream with
channelConfiguration 0 takes its layout from the program config element's
front, side, back, and LFE elements, which `moq_mux::codec::aac` already parses
for the channel count.

- Reuse the settled PCM descriptors and codec/consumer settings. This quest
adds supported layout behavior rather than replacing public field types.
Expand Down
17 changes: 17 additions & 0 deletions quest/m1/audio-codecs/ts-export-pce.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# [S] TS export carries an AAC track's program config element

## Goal

`moq-mux`'s MPEG-TS export writes an AAC track described by a program config
element (channelConfiguration 0) as ADTS with channel_config 0 and the PCE at
the start of the first raw data block, so a TS round trip keeps the layout.
Today the export derives the ADTS channel_config from the channel count, which
mislabels such a track.

## Plan

Take the PCE from the track's AudioSpecificConfig description with the parser
that reads it on import, and write it as ffmpeg does: once, leading the first
raw data block. Tracks with a nonzero channelConfiguration are unchanged. Test
a round trip of the quad fixture from the PCE import (`aac_quad.ts`): import,
export, and import again, asserting the same description and channel count.
Loading
Loading