Recording: the encoder the console already drives
105-record, four checks over
libSceVideoRecording. All of them refusals, for the reason
media.c gives and one more: the arities are
assumed. The corpus names a symbol; it does not say how many
arguments it takes, and declaring too few leaves the extra registers
holding whatever was there - harmless until the callee reads one as a
pointer.
So only the plausibly-integer functions are called, with obviously
invalid values. sceVideoRecordingOpen, Open2,
SetInfo and GetInfo take pointers and are
deliberately absent: a check that kills the probe takes the
whole report with it, including every check that had already
passed. Those belong on the command protocol, where ack is
flushed before the call and a fault is a recorded died
rather than a lost report. When a sequence has been established that way
it can come back here, which is what this suite is for - keeping what is
known, not finding it.
Why this library is worth the attention: the console encodes video
continuously for its own share feature, in hardware, and this is the
interface that drives it. It is the cheapest route to encoded frames off
a target - not a capture pipeline written from nothing, but the one
already running. libSceVencCore sits behind it with
sceVencCoreGetAuData, which is where encoded access units
come out.
Two surprises, both recorded as decisions
The documented way to add a check does not cover a mined
name (D202). Step one says to move the name from the census
into platform.h. That works for the curated census, which
has @called-elsewhere; the mined corpus has no equivalent
and mine.rs reads no exclusion list. Following the step
produced four redefinitions in surface.c - the exact
breakage the step exists to prevent, arrived at from the direction it
does not describe.
The registry will hold any order; the report contract will
not (D203). Numbered 170 and placed by dependency, it built
clean and failed make check with sections are out of
order. The numbers carry the layering, not the list position. 105
satisfies both, and it is where the dependency argument had already put
it.
State
make check passes, exit 0. On the host build the section
reports 3 pass, 1 partial against stubs returning
OBS_HOST_NOT_IMPLEMENTED - which is the known-good
implementation this is meant to be run against before believing anything
it says. It has not run on hardware.
Prosperous gained pros supervise in the same session: it
watches the probe's port and re-sends the module through the loader when
it stops answering. docs/PROTOCOL.md names the restarter as
"a person on a console" and that is now optional - which
matters here, because the pointer-taking half of this library is meant
to be explored over the protocol, where each fault costs a re-send.