Files
AnyPS5/docs/dev/debt/libSceOpusCeltDec.md
T
hypermoistandClaude Opus 5.5 5b2a101e36 Merge remote-tracking branch 'upstream/main' into feat/opus-dec-ctl
Resolution: kept main's merged float/priority/timeout variants and this PR's Ctl implementation, declarations and debt entries; reworded one debt line to state behaviour only.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-28 00:17:21 +13:00

2.1 KiB

libSceOpusCeltDec technical debt

Unknown function info

  • sceOpusCeltDecCreate (libSceOpusCeltDec) - names and NIDs are present in the PS5 3.20 export inventory, but no credible prototypes were found. They are declared without parameters solely to resolve known imports; this is not an ABI claim.
  • sceOpusCeltDecTerminate: the non-null path forwards the AJM finalization result, but the null path returns without setting the return register. Its source return type cannot be established from this callee alone. The existing integer return is retained.

Functional

  • libSceOpusCeltDec: the supplied module confirms the six exported argument lists, read-only context inputs, 640-byte state allocation, mono/stereo channels, five sample rates, byte-sized decode capacity and byte-count return. The implementation still keeps decoder state outside guest memory and uses host contexts instead of AJM contexts. AJM error propagation, resource ownership and termination with live decoders are not implemented. Wrapper validation errors and their precedence are recovered.
  • sceOpusCeltDecDecode: the original forwards packets to AJM codec 16 without a local CELT-only check. The backend response to SILK/hybrid packets is unresolved; packets whose TOC configuration is below 16 still throw. Decoding uses the bundled libopus decoder of OpusDecoderLibrary and shares its limits. Packet loss concealment and asynchronous AJM execution are not implemented.
  • sceOpusCeltDecCtl: handled with sceOpusDecCtl and has the same unmeasured gain, final range and request -1 gaps, see libSceOpusDec. It accepts 4028, 4029, 4031, 4034/4045 and 4046/4047 only; the phase inversion range error is +0x11 instead of +0x1B.