Skip to content

fix(audio): export the sceAudioOutEx bitstream port functions - #2764

Merged
oneandonlydean merged 1 commit into
boykopovar:mainfrom
Get-fix:fix/audioout-ex-exports
Oct 10, 2026
Merged

oneandonlydean merged 1 commit into
boykopovar:mainfrom
Get-fix:fix/audioout-ex-exports

Conversation

@Get-fix

@Get-fix Get-fix commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor

What

Jelly5 (PPSA99505) imports sceAudioOutExGetMonitorInfo (PhnNN0UEV6Y), sceAudioOutExConfigureOutput (VcE+gXSwFXI), sceAudioOutExOpen (6X6dp+07h4U) and sceAudioOutExClose (0TfjSulCV2A) from libSceAudioOut and fails to load because no library exports them. It calls them only for its HDMI bitstream setting, which is off by default (jelly5_bitstream.cpp, settings.h). Their signatures are unconfirmed, so they are exported without an implementation and throw <name> not implemented if called, as ec2bb21 does for sceSaveDataCancel. TechnicalDebt records what Jelly5 and EVO-PLAYER-PS5 use them for. The new audio_out_ex test checks that each call reports not implemented.

This was closed by the intake pause; the same branch and results are in #1578.

Tested

Windows 11 (WinLibs GCC 15.2.0 r7), Release, full build with BUILD_TESTING=ON on main b69270d:

  • ctest -R audio_out --repeat until-fail:5: 8/8. These are the only tests that link libSceAudioOut. With a silent return 0 and a wrong message planted, audio_out_ex fails and names both.
  • tools/check_conventions.py --base origin/main and tools/check_test_registration.py pass.
  • Jelly5 v0.6.1, with the same converted executable and libraries, swapping only libSceAudioOut.prx, two runs each: main stops at FAIL: unresolved ELF import PhnNN0UEV6Y from libSceAudioOut.prx; this branch stops at FAIL: unresolved ELF import oxMp8uPqa+U from libkernel.prx (pthread_set_name_np, feat(libkernel): implement pthread_set_name_np #1872).

Not tested on Linux.

Checklist

  • Based on current main; no other open PR implements the same functions
  • One topic per PR; follow-ups go in a new PR
  • No comments in code except technical debt
  • Unimplemented paths throw (NotImplemented_nid_no_patch); silent stubs are listed in TechnicalDebt
  • No notes, investigation .md files or images added to the repository (attach them to this PR)
  • New third-party code is a submodule built from source
  • Generic behaviour, not specific to one title
  • Depends on: none
  • AI-assisted: yes (Claude Code)

Jelly5 (PPSA99505) imports sceAudioOutExGetMonitorInfo (PhnNN0UEV6Y),
sceAudioOutExConfigureOutput (VcE+gXSwFXI), sceAudioOutExOpen
(6X6dp+07h4U) and sceAudioOutExClose (0TfjSulCV2A) from libSceAudioOut
and fails to load because no library exports them. It calls them only
for its optional HDMI bitstream output, and their signatures are
unconfirmed, so they are exported without an implementation and throw
if they are called, like sceSaveDataCancel.
@github-actions github-actions Bot added the intake paused Closed while PR intake is limited to authors with at least 10 PRs merged into main label Oct 10, 2026
@github-actions

Copy link
Copy Markdown

Thank you for your interest in the project! We are sorry, but we cannot accept more PRs while we work through the existing backlog. This PR has been automatically closed and labeled "intake paused". This is not a judgment of the quality of your changes.

@github-actions github-actions Bot closed this Oct 10, 2026
@github-actions

Copy link
Copy Markdown

Progress report (ba2a0a3 → f2b4bf3)

📉 System libraries: 84.41% (-0.11%, +4 declared functions)

🆕 4 declared as stubs
Library Name
libSceAudioOut sceAudioOutExClose
libSceAudioOut sceAudioOutExConfigureOutput
libSceAudioOut sceAudioOutExGetMonitorInfo
libSceAudioOut sceAudioOutExOpen

@oneandonlydean oneandonlydean removed the intake paused Closed while PR intake is limited to authors with at least 10 PRs merged into main label Oct 10, 2026
@babyhuey

babyhuey commented Oct 10, 2026 •

Copy link
Copy Markdown
Contributor

Linux, since the description says it wasn't tested there. f2b4bf3 merged onto main 9c5d67f (clean), Linux (Ubuntu 24.04, GCC 13) and Windows 11 (MinGW-w64 GCC 15.2 from WinLibs), Release, catalog builds with sce_module/libc.prx unwrapped (#2605).

  • audio_out_ex passes 5/5 on both (--repeat until-fail:5).
  • Jelly5 (PPSA99505) and Emby5 (PPSA99515) stop at PhnNN0UEV6Y on main and both get past it to oxMp8uPqa+U (pthread_set_name_np, feat(libkernel): implement pthread_set_name_np #1872) on both. Linux: app.elf: symbol lookup error: app.elf: undefined symbol: oxMp8uPqa+U.

Surround Sound Studio and Nuvio PS5 import these four as well as the sceAudioOutSys ones in #2887, and EVO Player reaches sceAudioOutExOpen once #2887 is in. With both PRs, Surround Sound Studio clears every audio import (details in #2887).

@oneandonlydean
oneandonlydean merged commit 94416bd into boykopovar:main Oct 10, 2026
26 of 28 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants