Skip to content

feat(libSceVoiceQoS): implement endpoints and connections to unblock - #6026

Merged
adriadam10 merged 4 commits into
boykopovar:mainfrom
leorossi2005:feat/voiceqos-endpoints
Oct 17, 2026
Merged

adriadam10 merged 4 commits into
boykopovar:mainfrom
leorossi2005:feat/voiceqos-endpoints

Conversation

@leorossi2005

Copy link
Copy Markdown
Contributor

What

Implements the libSceVoiceQoS endpoint and connection calls that Aliens: Fireteam Elite (PPSA03393) uses on its first load path:

  • sceVoiceQoSCreateLocalEndpoint / sceVoiceQoSDeleteLocalEndpoint
  • sceVoiceQoSCreateRemoteEndpoint / sceVoiceQoSDeleteRemoteEndpoint
  • sceVoiceQoSConnect / sceVoiceQoSDisconnect
  • sceVoiceQoSSetLocalEndpointAttribute

Endpoints and connections are tracked in the library state: ids are unique, a pair connects once, an endpoint that is part of a connection cannot be deleted, unknown ids return ARGUMENT_INVALID, calls before sceVoiceQoSInit return the not-initialized error, and sceVoiceQoSEnd drops every endpoint and connection. Local endpoint attributes are stored as given. Every other endpoint and packet call stays a throwing stub.

On main, PPSA03393 stops right after it registers the local talker:

ColdIron_Online: Registering Local Talker
[libc] unhandled exception 'St13runtime_error' thrown from 00007ffb7257bd53
terminate called after throwing an instance of 'std::runtime_error'
  what():  sceVoiceQoSCreateLocalEndpoint not implemented
FATAL: abort() (SIGABRT) on thread 528

I added the calls one at a time. With any one of the seven left unimplemented, the title stops again on the same path with what(): <function> not implemented:

what(): sceVoiceQoSCreateLocalEndpoint not implemented
what(): sceVoiceQoSDeleteLocalEndpoint not implemented
what(): sceVoiceQoSCreateRemoteEndpoint not implemented
what(): sceVoiceQoSDeleteRemoteEndpoint not implemented
what(): sceVoiceQoSConnect not implemented
what(): sceVoiceQoSDisconnect not implemented
what(): sceVoiceQoSSetLocalEndpointAttribute not implemented

The five other stubs (SetConnectionAttribute, SetRemoteEndpointAttribute, ReadPacket, WritePacket, GetLocalEndpointAttribute) are not reached by this title and stay NotImplemented_nid_no_patch.

Unverified behaviour is recorded in docs/dev/debt/libSceVoiceQoS.md:

  • The signatures are the PS4 libSceVoiceQoS ones, not confirmed on a PS5. The title only shows that these calls are made.
  • The not-initialized error 0x804E0901 is assumed from the 0x804E09xx numbering.
  • Attribute ids and defaults are unknown, so values are stored as given.
  • Whether the console rejects a duplicate connection or the deletion of a connected endpoint is not measured.

Tested

  • Windows: tools/check_conventions.py and tools/check_test_registration.py pass; ctest -R voice_qos (guest_voice_qos, guest_voice_qos_app_type_0x10000000) passes, with core/libs/tests/GuestVoiceQoS.cpp extended.
  • PPSA03393 on Windows: the title gets past VoiceQoS and loads the hub map. It then loops on its loading screen because of a separate socket failure (sceNetEpollControl(ADD) failed, SetNonBlocking failed, NetDriverListenFailure), which this PR does not address.

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 under Silent stubs in their library's technical debt file
  • 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
  • Unblocks: PPSA03393
  • GPUs tested: n/a
  • AI-assisted: yes

@github-actions

github-actions Bot commented Oct 14, 2026 •

Copy link
Copy Markdown

Progress report (40255d7 → b868190)

📈 System libraries: 89.35% (+0.19%, +7 implemented functions)

✅ 7 implemented
Library Name
libSceVoiceQoS sceVoiceQoSConnect
libSceVoiceQoS sceVoiceQoSCreateLocalEndpoint
libSceVoiceQoS sceVoiceQoSCreateRemoteEndpoint
libSceVoiceQoS sceVoiceQoSDeleteLocalEndpoint
libSceVoiceQoS sceVoiceQoSDeleteRemoteEndpoint
libSceVoiceQoS sceVoiceQoSDisconnect
libSceVoiceQoS sceVoiceQoSSetLocalEndpointAttribute

@leorossi2005

Copy link
Copy Markdown
Contributor Author

Note: I noticed that PR #5877 also touches docs/dev/debt/libSceVoiceQoS.md for PPSA26344. If that PR is merged first, this can be rebased to keep both notes.

@coltken95

Copy link
Copy Markdown

Tested on Linux x86-64 (Release build), with 923d73c merged into main ab9a476:

  • With the PR: guest_voice_qos and guest_voice_qos_app_type_0x10000000 pass.
  • With main's libSceVoiceQoS/Export.cpp: both abort with what(): sceVoiceQoSCreateLocalEndpoint not implemented.

AI-assisted: yes (Claude Code)

@github-actions

github-actions Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Other open pull requests touch the same code. Merging one will break the other, or both implement the same thing. If this one builds on them, list them in Depends on.

Pull request Conflicting files (lines on main) Same exports Same new files
PR 7012 docs/dev/debt/libSceVoiceQoS.md L10

Some comparisons could not be completed because a pull request conflicts with the base branch. Review these shared files manually before concluding that there is no overlap.

Pull request Shared files not compared
PR 907 docs/dev/TechnicalDebt.md
PR 1368 docs/dev/TechnicalDebt.md
PR 1384 docs/dev/TechnicalDebt.md
PR 1395 docs/dev/TechnicalDebt.md
PR 1601 docs/dev/TechnicalDebt.md
PR 1835 docs/dev/TechnicalDebt.md
PR 3986 docs/dev/TechnicalDebt.md
PR 4449 docs/dev/TechnicalDebt.md
PR 5021 docs/dev/TechnicalDebt.md
PR 6039 docs/dev/TechnicalDebt.md
PR 6044 core/libs/tests/GuestVoiceQoS.cpp

This was referenced Oct 15, 2026
@github-actions github-actions Bot added needs rebase Conflicts with main, rebase needed and removed needs rebase Conflicts with main, rebase needed labels Oct 15, 2026
@github-actions github-actions Bot removed the needs rebase Conflicts with main, rebase needed label Oct 16, 2026
@adriadam10 adriadam10 self-assigned this Oct 16, 2026

@adriadam10 adriadam10 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, the build and both guest tests pass here, and they fail without the change. Two points:

  • core/libs/prx/libSceVoiceQoS/Export.cpp:103 sceVoiceQoSCreateLocalEndpoint takes 3 arguments, but fpPS4 (src/ps4_libscevoice.pas, ps4_sceVoiceQoSCreateLocalEndpoint) declares (pLocalId, userId, deviceInId, deviceOutId). Please take the 4-argument form (or say what evidence supports 3) and name the source in docs/dev/debt/libSceVoiceQoS.md instead of "the PS4 signatures". Same file lists no source for the other six signatures; cite whichever reference you used for each, or state that none exists.
  • Export.cpp:55-61, :123-126 and :66: rejecting a duplicate Connect, deleting a connected endpoint, and size <= 0 in SetLocalEndpointAttribute are invented behaviour (the debt note says it was not measured). A title that does one of these would now get an error where it may get success on a console. Either return success for those cases (track nothing the console is not known to enforce), or point to a reference for each rejection, and keep the test (GuestVoiceQoS.cpp:45-61) in line with whichever you choose.

@leorossi2005

Copy link
Copy Markdown
Contributor Author

Updated accordingly:

  • sceVoiceQoSCreateLocalEndpoint now takes the 4-argument signature (int32_t* localId, int32_t userId, int32_t deviceInId, int32_t deviceOutId) citing fpPS4 (src/ps4_libscevoice.pas, ps4_sceVoiceQoSCreateLocalEndpoint) in docs/dev/debt/libSceVoiceQoS.md. The debt note also clarifies that no public references exist for the other six signatures and states that they are assumed from naming and call patterns.
  • Dropped the unverified rejections: duplicate Connect calls succeed with a distinct connection id, deleting an endpoint referenced in an active connection is allowed, and non-positive sizes in SetLocalEndpointAttribute succeed.
  • GuestVoiceQoS.cpp is updated to exercise and assert these behaviors.

@adriadam10 adriadam10 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both points addressed: sceVoiceQoSCreateLocalEndpoint takes the 4-argument form (fpPS4), the unmeasured rejections are gone, and the debt note names its sources. Checked the build, the 36 tests in scope, and that guest_voice_qos / guest_voice_qos_app_type_0x10000000 fail without the change; merging.

@adriadam10
adriadam10 merged commit fce6353 into boykopovar:main Oct 17, 2026
8 checks passed
@leorossi2005
leorossi2005 deleted the feat/voiceqos-endpoints branch October 17, 2026 10:51
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