7.1 KiB
libSceAvPlayer technical debt
Silent stubs
- libSceAvPlayer:
sceAvPlayerSetLogCallbackaccepts a callback that is never called, as the player produces no log messages, andsceAvPlayerSetAvailableBandwidthhas no effect, as it governs HLS sources, whichsceAvPlayerAddSourcedoes not implement; after a source is added it returnsOPERATION_FAILED, as prosper's reading of the module describes. - sceAvPlayerSetTrickSpeed (libSceAvPlayer) with a negative speed runs the clock backwards but delivers no frames; when a forward speed is set again, playback resumes from the rewound time. With a source, a zero speed returns
INVALID_PARAMSbefore theOPERATION_FAILEDof a stopped, finished or failed player, the order AnyPS5 had before; that order is unmeasured. In prosper's reading of the module, only the missing source is checked first. A zero speed is refused withNOT_SUPPORTED, with every other speed from -399 to 399 except 100, and no player state is checked.
Unknown function info
-
AvPlayer loop warnings are queued when the first audio or video frame of a loop is delivered, following KytyPS5's playback boundary tracking. The console's exact callback timing is unverified. Decode-ahead does not announce a loop while the caller is consuming the previous pass.
-
sceAvPlayerAddSource (libSceAvPlayer) - requests up to 4 additional decode-ahead video framebuffers from the memory replacement beyond
num_output_video_framebufferswhen memory is available; the console's internal buffering behaviour is unknown -
sceAvPlayerInit / sceAvPlayerInitEx (libSceAvPlayer) - behaviour without a memory replacement unknown; frame and sample buffers then come from the guest heap. None of the six titles disassembled for this entry takes that path: PPSA01494, PPSA18194, PPSA21564, PPSA30839, PPSA31162 and PPSA36591 store all four allocator callbacks before each of their nine
sceAvPlayerInitandsceAvPlayerInitExcalls. -
sceAvPlayerInitEx (libSceAvPlayer) - the PS5 init data layout (
this_size0x230: auto start at 0x74, nine 0x30-byte thread parameter blocks from 0x78, output video frame buffer count at 0x228) follows KytyPS5, prosper, SharpProspero and sharpemu, which agree on it. PPSA25063 fills the same fields, writes auto start 0 and starts playback withsceAvPlayerStart; a title that sets auto start has not been seen. A smallerthis_sizeis read with the PS4 offsets. The thread parameters are ignored -
AvPlayer auto start (libSceAvPlayer) - the auto start that
sceAvPlayerAddSourcequeues for a player with auto start or without an event callback starts the player only while it is still ready: a title that starts the player itself before the auto start runs keeps its playback and the frames it holds. Not confirmed on a title. -
Paused initial video (libSceAvPlayer) keeps the first picture available when audio has already established the playback epoch before the caller pauses. Further pictures of that epoch stay blocked, as after a paused jump. The console's exact initial preparation ordering has not been measured.
Functional
-
HTTP file sources remain unverified on PS5, and HLS remains unimplemented. Remote MP4/WebM inputs follow SharpProspero's source types; host HTTP byte ranges and redirects follow RFC 9110, framing RFC 9112. Unsupported URL forms, TLS, encodings, proxy, cookie, authentication and console HTTP-context integration remain gaps in the shared libSceHttp host client.
-
HTTP source lifecycle still has no synchronous source-open deadline and cannot interrupt host DNS. Source opening waits for the shared client's initial response and known size, including full buffering of chunked, connection-close or ignored-range 200 responses. Stop cancels socket polling; failed reads use FFmpeg's existing demux-error path. Console timeout and network-error mapping remain unverified; transport validator and buffering limitations are listed in libSceHttp.
-
sceAvPlayerGetStreamInfo / sceAvPlayerGetStreamInfoEx (libSceAvPlayer) - every player reports audio streams as type 2 (video 1), whether it was made by
sceAvPlayerInitor bysceAvPlayerInitExof anythis_size. No module, SDK header or console measurement was used; the rule is inferred from titles. PPSA02433 makes its logo players withsceAvPlayerInitand its READY callback (app.elf 0x1509d50) enables type 2 as audio and type 1 as video and ignores other types, so type 0 left the logos silent; the PPSA02508 and PPSA03706 players made with the 0x230-bytesceAvPlayerInitExlayout enable type 2 as well. Unverified: whether the console library reports a different value for some init path or SDK version, and the values of other stream types (timed text). No title expecting audio type 0 is known -
sceAvPlayerGetVideoData / sceAvPlayerGetVideoDataEx (libSceAvPlayer) - delivers a video frame up to 0.75 × frame duration ahead of its timestamp in default sync mode to accommodate presentation loops that poll slightly before the refresh boundary; the console's exact presentation tolerance is unverified.
-
sceAvPlayerGetVideoData (libSceAvPlayer) in sync mode
SCE_AVPLAYER_AV_SYNC_MODE_NONEskips queued frames that the audio clock has already passed while the title pulls audio, so a title that requests video slower than the film's frame rate keeps the picture with the sound. Whether the console hands out every frame in this mode is unknown. PPSA12544 requests 7-19 frames per second for a 30 fps cinematic