B3 (#175): pin the AAC arm every ordinary conversion takes #185

Merged
JMR-dev merged 2 commits from test/aac-audio-args into main 2026-09-02 04:12:55 +00:00
JMR-dev commented 2026-09-02 02:50:34 +00:00 (Migrated from github.com)

Closes #175. Stacked on #184.

audioArgs has six arms. Five are named codecs with tests; AAC arrives through the else, so nothing named it — neither "aac" nor "192k" appeared anywhere in FFmpegCommandBuilderTest. It is the audio MP4 and M4A get, which is to say the audio the picker offers first and most conversions actually produce.

mutation result
192k → 128k red
aac → libfdk_aac red

The bitrate is the half worth arguing for: an -b:a that quietly changed would fail nothing, look wrong in no command line, and surface only as files that sound different from the ones the app produced last month.

Asserted through both MP4_H264 and M4A_AAC rather than one, so an AAC arm added above the else later has to keep answering the same way for both.

Deliberately not added here

An ENCODABLE_AUDIO-vs-audioArgs agreement test — the obvious companion to VideoCodecMimeAgreementTest. It would freeze the answer to F1, which is open: ContainerCapabilities.kt:84 says "nothing here emits a Vorbis encoder" and FFmpegCommandBuilder.kt:188 does. docs/coverage-read-findings.md says in terms that the tempting fix there locks in the wrong answer, and that the decision comes first. This PR is the AAC arm only.

Gate

Full gate green. 563 → 564 JVM tests, 0 failures. No production code changed.

🤖 Generated with Claude Code

Closes #175. Stacked on #184. `audioArgs` has six arms. Five are named codecs with tests; **AAC arrives through the `else`**, so nothing named it — neither `"aac"` nor `"192k"` appeared anywhere in `FFmpegCommandBuilderTest`. It is the audio MP4 and M4A get, which is to say the audio the picker offers first and most conversions actually produce. | mutation | result | |---|---| | `192k` → `128k` | **red** | | `aac` → `libfdk_aac` | **red** | The bitrate is the half worth arguing for: an `-b:a` that quietly changed would fail nothing, look wrong in no command line, and surface only as files that sound different from the ones the app produced last month. Asserted through both `MP4_H264` and `M4A_AAC` rather than one, so an AAC arm added above the `else` later has to keep answering the same way for both. ### Deliberately not added here An `ENCODABLE_AUDIO`-vs-`audioArgs` agreement test — the obvious companion to `VideoCodecMimeAgreementTest`. It would freeze the answer to **F1**, which is open: `ContainerCapabilities.kt:84` says *"nothing here emits a Vorbis encoder"* and `FFmpegCommandBuilder.kt:188` does. `docs/coverage-read-findings.md` says in terms that the tempting fix there locks in the wrong answer, and that the decision comes first. This PR is the AAC arm only. ### Gate Full gate green. 563 → 564 JVM tests, 0 failures. No production code changed. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Sign in to join this conversation.