Repository navigation
feat(ajm): decode Opus surround mapping family - #3831
Merged
oneandonlydean merged 2 commits intoOct 12, 2026
Merged
Conversation
Contributor
|
@eljackjoestar-cmd Wolverine data point for this PR. Marvel's Wolverine (PPSA03671), Windows 11, RTX 3070, Release. Main
I did not check the decoded surround audio itself, only that initialization and decoding no longer stop the title. AI-assisted: yes (Claude Code) |
eljackjoestar-cmd
force-pushed
the
codex/opus-surround
branch
from
October 11, 2026 22:29
64687c3 to
9a0c595
Compare
eljackjoestar-cmd
marked this pull request as ready for review
October 11, 2026 22:31
10 tasks done
9 tasks done
11 tasks done
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.
What
Lost Soul Aside (PPSA26358) submits the AJM Opus initialization tuple
4, 48000, 1. Main rejects the nonzero third word. Interpret it as the channel mapping family and provide FFmpeg with the conventional family-1 multistream layout through an OpusHead header. This enables actual surround packet decoding instead of dropping the restriction while leaving the decoder unable to open.The parameter name follows KytyPS5's initialize structure. Header fields follow RFC 7845 section 5.1; the implicit stream allocation follows libopus 1.5.2's surround layout. The header has zero gain and pre-skip; existing AJM gapless controls retain responsibility for skipping. PCM stays in FFmpeg's native speaker order. These console ABI assumptions are recorded in TechnicalDebt. Other mapping families and sample rates still throw; family 0 rejects more than two channels.
Open PR searches for Opus, mapping family and sceAjmBatchJobInitialize found no duplicate. #3626 concerns the separate libSceOpusCeltDec API.
Tested
Windows 11 x86-64, Ryzen 7 7800X3D, 32 GB RAM, RTX 5070, WinLibs GCC 15.2.0, Release, BUILD_TESTING=ON.
libsandguest_ajm_teststargets.guest_ajmpasses in approximately 0.05 s, including the existing decoding, control and resampling tests.tools/check_conventions.py --base origin/mainandgit diff --checkpass.buffer descriptor uses an unsupported typeduring level loading. Audio output and gameplay are not claimed as verified. That run did not enable the correctly named AJM trace option, so further title tracing remains necessary.Rebased onto main
5aaf26bd3. The Opus change is9a0c59570. Windows main did not compile becauseHostPollwas defined only on Unix but called from unguarded branches; this branch includes #4021's121b16fb4fix with its original author, asac4954c6e, without resubmitting that fix. The updated local integration build passesguest_ajm,guest_sce_net, masked-select, graphics, and both focused layered-volume tests. Broader integration testing has failures and a hanging layered-volume submission test; the full suite is not claimed green. Local title testing additionally used #3391, #3739, #3633, #1077, #3763, #425 and #3523; those graphics changes are excluded from this PR. Linux and macOS were not run. Console PCM comparison and the implicit surround layout remain unverified.Checklist
main; no other open PR implements the same functions