The host decodes synchronously, so only the infinite timeout that
sceOpusDecDecode itself passes can be honoured. Other timeouts still
return the argument errors and then report the path as unimplemented,
because on the console the result depends on whether the AJM batch
finishes within the timeout.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01SNqSvnFwRBz3D76n476yw6
Both modules route every decode export through one worker. Its checks
run in this order: state, packet, size, PCM pointer, capacity, then a
priority outside 20..100 (+0xA), then the state check (+1). Decode passes
priority 40.
The float exports decode 16-bit PCM into capacity / 4 * 2 bytes of the
caller's buffer and widen each sample in place, dividing positive
samples by 32767 and the rest by 32768. They return the float byte count.
The OpusDec *AndTimeout exports take a timeout for the AJM batch wait and
a pointer that receives the batch ID only when that wait fails. The host
decode is synchronous, so neither is used; the debt entry records this.
Read from libSceOpusDec.sprx and libSceOpusCeltDec.sprx, firmware 12.00,
not measured on a console.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01SNqSvnFwRBz3D76n476yw6