The PS5 module read for #9027 returns 0x80268006 from sceAudioOut2MasteringInit,
sceAudioOut2MasteringInitEx, sceAudioOut2MasteringTerm,
sceAudioOut2MasteringGetState and sceAudioOut2MasteringSetParam before
sceAudioOut2Initialize. #9027 left the check out because AudioOut2
initialization was not tracked; AudioOut2IsInitialized_nid_no_patch now
tracks it, so each of these returns 0x80268006 first, before its own
mastering-state and argument checks, and changes no state. The debt entry
drops the closed gap.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
On PS5 firmware 13.60 a second sceAudioOut2Initialize returns 0x80268004,
also after sceAudioOutInit, and a second sceAudioOutInit returns
0x8026000e. sceAudioOutInit after sceAudioOut2Initialize still returns 0.
sceAudioOut2InitializeEx and sceAudioOut2LoInit keep returning 0; their
repeats were not measured.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
SDL's WASAPI enumeration drops failures silently: EnumAudioEndpoints or
GetCount errors leave the list empty, and a device whose metadata lookup
fails is left out, so an empty list does not prove there is no default
endpoint. The skip now also requires IMMDeviceEnumerator's
GetDefaultAudioEndpoint(eRender, eConsole), the call SDL's default open
makes, to return ERROR_NOT_FOUND. The probe runs only when the wasapi list
is empty.
audio_out_default_open gains wasapi_zero_default (empty WASAPI list, the
probe finds an endpoint, the default is opened) and checks that the probe
runs only for an empty WASAPI list.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
SDL documents that a default open can succeed when SDL_GetNumAudioDevices
returns zero, for instance ALSA whose default PCM works without device
hints. The shortcut now applies only to the wasapi driver, which
enumerates active render endpoints synchronously when the subsystem
starts; with none, its default open has no endpoint to use and fails after
SDL's 8 s retry.
audio_out_default_open runs AudioOut.cpp against a stubbed SDL in four
modes: zero devices on alsa with a working default, zero on wasapi, a
positive count and an unknown count.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
With no audio endpoint, SDL's WASAPI backend retries the default device
for 8 s before it fails. Every port open paid that before falling back
to virtual pacing. Ask SDL for the output device count first and take
the virtual path at once when it is zero.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
`sceAudioOutInit` now initializes AudioOut2, so the extra `sceAudioOut2Initialize()` in the speaker-info test after a legacy init pinned a repeated direct-init result that no run on the console covered; the test keeps the legacy-init to speaker-info success check. The debt file records that a repeated `sceAudioOutInit` returns 0 here against `0x8026000e` on the firmware and that a repeated `sceAudioOut2Initialize` is unmeasured, describes the flag-1 selector as the unidentified per-process libkernel value with BunnyFl's `0x14FFFFF` boundary, and splits the speaker-info entry so no entry passes the length limit.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
In PS5 firmware 3.20 and 4.03 sceAudioOutInit calls sceAudioOut2Initialize, which sets the flag that sceAudioOut2GetSpeakerInfo tests before anything else. A title that only calls sceAudioOutInit got 0x80268006 here. The flag moves next to sceAudioOutInit so the test targets that build only AudioOut.cpp still link.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>
sceAudioOut2SetSystemDebugState accepts only the loudness debug state (id 1, 8-byte param); other ids and sizes return the invalid param error and a null pointer returns the invalid pointer error. The one debug state the console also accepts, id 0x20 with a 4-byte param, throws.
Co-Authored-By: Claude Sonnet 5.5 <[email protected]>