Files
AnyPS5/docs/dev/debt/libSceVoice.md
T

5.1 KiB

libSceVoice technical debt

Functional

  • Voice resource and port state: resource information is eight bytes containing four 16-bit limits selected by initialization mode. Reset, pause and resume use confirmed initialization, range and missing-port errors; repeated pause/resume succeed. GetPortInfo preserves unused output fields and reports native frame sizes, but still reports a constant ready state and does not reproduce stopped-state or snapshot-slot errors. The host has no buffered voice processing or device reset backend, so reset only covers empty software ports and pause flags currently affect no audio. Initialization validates native modes and version 100, but still lacks event callback delivery and backend creation. Port creation enforces recovered format and resource limits, but does not allocate device or codec backends.
  • sceVoiceEnableChat and sceVoiceDisableChat: zero-argument signatures and the not-initialized error are confirmed. Initialized calls throw because the required audio chat backend is not implemented; they no longer report success for a local flag change.

Unknown function info

  • sceVoiceInit, sceVoiceStart, sceVoiceCreatePort, sceVoiceGetPortInfo (libSceVoice) - a second sceVoiceInit returns 0x804E0802, and Start, CreatePort and GetPortInfo return 0x804E0801 before checking any argument while the library is not initialized, as prosper reads them from the shipped module. The other port and lifecycle calls still throw when the library is not initialized, since prosper gives no module address for them. Whether sceVoiceInit checks a null param before its state is unknown, so a null param still throws first, and that sceVoiceEnd returns the library to the not-initialized state is assumed. Closes when: the other entry points are read from the module or measured on a PS5

  • sceVoicePausePortAll, sceVoiceResumePortAll (libSceVoice) - not measured on a PS5: both return 0x804E0801 while the library is not initialized and 0 otherwise, as in shadPS4; prosper reads the same code for sceVoiceStart, and the PS3 calls in RPCS3 make the same check. Like sceVoicePausePort they change nothing that is reported: VitaSDK documents that pausing every port keeps the buffered data and the reported state, and nothing here processes port data

  • sceVoiceInitHQ (libSceVoice) - unknown signature

  • sceVoiceGetMemorySize (libSceVoice) - unknown signature

  • sceVoiceDeviceInCustomerData (libSceVoice) - unknown signature

  • sceVoiceQAEnableRecording (libSceVoice) - unknown signature

  • sceVoiceVADAdjustment (libSceVoice) - unknown signature

  • sceVoiceVADPVTAdjustment (libSceVoice) - unknown signature

  • sceVoiceVADSetVersion (libSceVoice) - unknown signature

  • sceVoiceSetMuteFlagAll (libSceVoice) - unknown signature

  • sceVoiceSetBitRate (libSceVoice) - unknown signature

  • sceVoiceUpdatePort (libSceVoice) - unknown signature

  • sceVoiceGetPortAttr: native initialization, port-range, pointer, attribute-size and port-type validation is implemented. Supported device attributes throw because the host has no device state or voice-activity processing. The former constant-zero voice-activity fallback is removed; failed calls leave output untouched.

  • sceVoiceSetThreadsParams: the 48-byte mode/priority/affinity layout and initialization, null, started-state and mode validation are recovered. Mode 1 throws because worker scheduling is not implemented; mode 0 is the native no-op. The 32-byte event callback union is recovered, but callback delivery and device-state byte semantics remain unimplemented.

  • sceVoiceStart, sceVoiceStop and sceVoiceEnd validate initialization, container presence and native mode-dependent memory sizes, but do not partition guest working memory or run the audio workers. Start/stop currently change software state only; backend failures and active-stream shutdown are not reproduced.