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

2.6 KiB

libSceJxr technical debt

Functional

  • PixelFormatLookup uses pinned public jxrlib through a C bridge and a 56-byte LP64 guest record. BunnyFl reports firmware 13.42 native-PC comparisons: the 68 table entries match public jxrlib, and return values/record fields match across 802 cases repeated three times, except that the module clears padding bytes 28..31 on all 309 successes. This bridge now clears that four-byte range explicitly on success; it does not copy indeterminate C++ padding. This is attributed single-firmware evidence, not an author-run console measurement or proof of the complete Sony ABI/configuration. Module/library versions, other firmware and valid-mode null arguments remain unverified. Modes 0/1 perform forward GUID/reverse TIFF lookup; other modes and misses leave the entire record unchanged. Valid-mode null records and forward null GUIDs remain explicitly unsupported. Success borrows a read-only static GUID while the module is loaded; callers must not free it. Closes when: remaining Sony ABI, version/configuration and invalid-argument behavior are verified by attributable measurements or disassembly

  • PKFree (libSceJxr) follows Microsoft's jxrlib JXRGlue.c, whose four exported names the module shares: a non-null ppv has *ppv released with the guest free and set to null, and the result is always WMP_errSuccess (0) as a 64-bit ERR (long). That the console's module is built from jxrlib, and that its PKFree releases through libc's free, is inferred from the export names and not checked against the console's code. Closes when: the console's PKFree is disassembled or measured on a PS5

  • readIS and writeIS use the non-ARM, LP64 BitIOInfo and WMPStream ABI and packet algorithm from Microsoft's JPEG XR reference implementation. Console structure layouts and execution remain unverified. Profiling callbacks are omitted as in the reference Unix build with DISABLE_PERF_MEASUREMENT; the codec argument is unused. Invalid null state or required callbacks throw instead of dereferencing them. No codec is instantiated by these helpers; callers must supply the reference ring buffer and guest-ABI stream callbacks.