# Phase 1.0P VideoOut submit analysis Phase 1.0P is an offline postmortem of the consumed Phase-1.0O run. It adds no target source or artifact and performs no device action. The exact runtime evidence remains the M artifact (1,845,208 bytes, SHA-256 `c99a0856309a357ad2667d89b4924e4063ad214cae09c8a419457b0732f583cd`) and the ignored O trace (18,031 bytes, SHA-256 `3d0b8811ae11f5cac2c2d331e252e1789a10588cab0e6045828a6b6af0fe1eb6`). ## Proven call boundary The exact linked SDL overlay source has SHA-256 `9949a280fed40241746788a8c001280455bc629e0566a88f82f16a8634d43025`. Its linker map has SHA-256 `6768ffc7267b9b362c3b953571e5dfeed1e70004a3e19f41ef500c3f26272719` and locates `PS5_VideoInit` at `0xfdc20` and `PS5_PresentEarlyDiagnosticFrame` at `0xfe560`. Disassembly of the exact M ELF proves that the indirect call at `0xfe7bc` loads the VideoOut handle into `edi`, zero into `esi`, one into `edx`, and zero into `ecx`. The corresponding GOT slot is `0x1779b0`. The code tests `eax` and, on failure, reads `errno` before emitting D07. The O trace therefore binds the following facts across source, map, disassembly and runtime: - `sceVideoOutOpen` returned positive handle `0x4e100100`; - `sceVideoOutRegisterBuffers2(handle, 0, 0, buffers, 2, attr, 0, NULL)` returned `0`; - the diagnostic copied pixels into registered buffer zero; - `sceVideoOutSubmitFlip(handle, 0, 1, 0)` returned `-1`; - the immediately saved `errno` was `0`; - no flip-event wait followed the failed submit. The unmodified public SDL source at commit `0baf4ac49382b537ba449901b5b6d0d189bb1fbb` also starts `frame_id` at zero, uses `idx = frame_id % 2`, and calls the same tuple on its first normal frame. The earlier diagnostic-versus-normal first-index mismatch has therefore been eliminated and cannot explain the O result. ## Evidence limits SDK v0.41 commit `d2e2e585740362976a39fdd5ccf390f199a7bc37` exports symbol stubs, but supplies no public VideoOut prototypes, structures, constants or return semantics. The SDL fork is the only local public source for the prototype, the 32-byte buffer descriptor, the opaque 80-byte attribute object and the format constant `0x8000000022000000`. Buffer registration returning zero is useful runtime evidence, but it does not independently validate those opaque semantics. | Question | Classification | Reason | |---|---|---| | exact failure site | PROVEN | source/map/disassembly plus D07 | | raw submit return | PROVEN | D07 is `-1` | | useful errno identity | ABSENT | saved value is `0` | | frame-zero difference from normal path | REJECTED_CURRENT_CAUSE | both paths now use zero | | buffer-zero validity | UNPROVEN | consistent with source, not independently specified | | flip-mode value `1` | UNPROVEN | no local public semantic definition | | frame-ID zero validity | UNPROVEN | used by SDL, not independently specified | | buffer attribute/layout semantics | UNPROVEN | opaque fork-local declaration | | flip-master or active-app ownership | UNPROVEN | export names are not callable ABI evidence | | visible presentation or cleanup | UNPROVEN | no successful submit or terminal proof | Calling `sceVideoOutSetFlipMaster`, a status query, or changing a submit argument based only on an export name would be an ABI guess. Phase 1.0P does not authorize or recommend such a change. Its decision is `VIDEOOUT_SUBMIT_FAILURE_SITE_PROVEN_ROOT_CAUSE_UNRESOLVED`. ## Safe continuation gate Before another target artifact is designed, acceptable public evidence must define the relevant VideoOut signature, arguments, structure layouts, return codes and required ownership/state. If that evidence cannot be obtained, the hardware path remains fail-closed. A later artifact also needs a corrected terminal protocol, separately audited and separately authorized before any device action.