fresnel-fourier iter5b Phase 6 commit B: state-tracking — request.h field + config.c wire-up

request.h: add last_output_pixelformat to struct request_data, alongside
the existing last_output_{width,height} V4L2 device state cache. Gates
re-S_FMT on codec change in addition to resolution change.

config.c::RequestCreateConfig: wire up object_config->pixelformat
(previously dead field at config.h:46) by calling pixelformat_for_profile
on the active profile. The pixelformat field becomes the source of truth
that surface.c reads in commit C.

Signed-off-by: claude-noether <claude-noether@reauktion.de>
This commit is contained in:
claude-noether
2026-05-12 09:08:33 +00:00
parent ce304ef5af
commit f8256e6c2d
2 changed files with 24 additions and 0 deletions
+14
View File
@@ -96,9 +96,23 @@ struct request_data {
* probes with small surfaces then re-allocates at real
* resolution; we re-set the OUTPUT format whenever this pair
* changes).
*
* iter5b: extended with last_output_pixelformat so the gate
* also fires on codec change (consumer decodes H.264 first,
* HEVC second on the same driver_data). Pre-iter5b the OUTPUT
* pixel format was hardcoded V4L2_PIX_FMT_H264_SLICE in
* CreateSurfaces2, so codec change was silent and HEVC / VP9 /
* VP8 saw the kernel hantro driver substitute MPEG2_DECODER
* codec_mode (when bound to hantro) or rkvdec silently drop
* the decode (when bound to rkvdec). Same bug class as iter4's
* unconditional h264_start_code; both fixes thread the active
* profile into codec-specific kernel state.
*
* 0 = uninitialized; non-zero = FOURCC of current OUTPUT format.
*/
unsigned int last_output_width;
unsigned int last_output_height;
unsigned int last_output_pixelformat;
};
VAStatus VA_DRIVER_INIT_FUNC(VADriverContextP context);