fresnel-fourier iter5b-β Phase 6 commit B: config.c — wire object_config->pixelformat

Populate the previously-dead pixelformat field at config.h:46 from
pixelformat_for_profile(profile). The switch at lines 54-88 already
rejects unsupported profiles, so by the time we reach the assignment
at line 98, pixelformat_for_profile returns non-zero.

Commit C reads this field at CreateContext to set the V4L2 OUTPUT
format correctly per profile (the β architectural fix for Bug 2 —
HEVC/VP9/VP8 currently dispatch through the pre-iter5b H264_SLICE
hardcode at surface.c:173 because surface.c has no config_id to look
up the profile).

Signed-off-by: claude-noether <claude-noether@reauktion.de>
This commit is contained in:
claude-noether
2026-05-12 14:11:32 +00:00
parent 1c548b136a
commit cc077a0c06
+11
View File
@@ -36,6 +36,7 @@
#include <hevc-ctrls.h> #include <hevc-ctrls.h>
#include "codec.h"
#include "utils.h" #include "utils.h"
#include "v4l2.h" #include "v4l2.h"
@@ -97,6 +98,16 @@ VAStatus RequestCreateConfig(VADriverContextP context, VAProfile profile,
config_object->profile = profile; config_object->profile = profile;
config_object->entrypoint = entrypoint; config_object->entrypoint = entrypoint;
/*
* iter5b-β: cache the V4L2 OUTPUT-side FOURCC for this profile so
* context.c::RequestCreateContext can read it without re-running
* the profile→pixelformat mapping. Wires up the previously-dead
* pixelformat field at config.h:46. The switch above already
* rejected unsupported profiles via VA_STATUS_ERROR_UNSUPPORTED_PROFILE,
* so pixelformat_for_profile here returns non-zero for every
* profile that reaches this assignment.
*/
config_object->pixelformat = pixelformat_for_profile(profile);
config_object->attributes[0].type = VAConfigAttribRTFormat; config_object->attributes[0].type = VAConfigAttribRTFormat;
config_object->attributes[0].value = VA_RT_FORMAT_YUV420; config_object->attributes[0].value = VA_RT_FORMAT_YUV420;
config_object->attributes_count = 1; config_object->attributes_count = 1;