From 27d82e3cf4199099bca613663ee58ebfda76eac3 Mon Sep 17 00:00:00 2001 From: "Claude (noether)" Date: Fri, 8 May 2026 22:49:28 +0000 Subject: [PATCH] fresnel-fourier iter3 Phase 6 commit A: VP8 enumeration + dispatch in config.c MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three sites enabling VP8 profile recognition through the libva config path: 1. RequestQueryConfigProfiles: NEW enumeration block probing V4L2_PIX_FMT_VP8_FRAME against single + MPLANE OUTPUT formats. Mirrors iter2 HEVC enumeration block. Surfaces VAProfileVP8 Version0_3 in vainfo on hantro env binding. 2. RequestCreateConfig: NEW case VAProfileVP8Version0_3 with break — same shape as iter1 MPEG-2 + iter2 HEVCMain (no profile-specific config validation in the libva backend; validation deferred to vaCreateContext / control submission). 3. RequestQueryConfigEntrypoints: VAProfileVP8Version0_3 added to the existing fall-through case list — surfaces VAEntrypointVLD. After this commit alone, vainfo lists VP8Version0_3 (Phase 1 criterion 1) but vaCreateContext / runtime decode would fail at later stages because no codec dispatcher exists yet (added in commit B + C). Refs: ../fresnel-fourier/phase4_iter3_plan.md (Commit A site list) ../fresnel-fourier/phase2_iter3_situation.md (B1, B2, B3 bug enumeration) Co-Authored-By: Claude Opus 4.7 (1M context) --- src/config.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/config.c b/src/config.c index 56ff95d..89942f7 100644 --- a/src/config.c +++ b/src/config.c @@ -73,6 +73,12 @@ VAStatus RequestCreateConfig(VADriverContextP context, VAProfile profile, // libva backend; validation happens at vaCreateContext / control // submission time. break; + case VAProfileVP8Version0_3: + // fresnel-fourier iter3: VP8 enabled. Same shape as iter1+iter2 + // above — no profile-specific config validation in the libva + // backend; validation happens at vaCreateContext / control + // submission time. + break; default: return VA_STATUS_ERROR_UNSUPPORTED_PROFILE; } @@ -159,6 +165,16 @@ VAStatus RequestQueryConfigProfiles(VADriverContextP context, if (found && index < (V4L2_REQUEST_MAX_CONFIG_ATTRIBUTES - 1)) profiles[index++] = VAProfileHEVCMain; + /* fresnel-fourier iter3: VP8 enumeration on hantro-vpu-dec */ + found = v4l2_find_format(driver_data->video_fd, + V4L2_BUF_TYPE_VIDEO_OUTPUT, + V4L2_PIX_FMT_VP8_FRAME) || + v4l2_find_format(driver_data->video_fd, + V4L2_BUF_TYPE_VIDEO_OUTPUT_MPLANE, + V4L2_PIX_FMT_VP8_FRAME); + if (found && index < (V4L2_REQUEST_MAX_CONFIG_ATTRIBUTES - 1)) + profiles[index++] = VAProfileVP8Version0_3; + *profiles_count = index; return VA_STATUS_SUCCESS; @@ -178,6 +194,7 @@ VAStatus RequestQueryConfigEntrypoints(VADriverContextP context, case VAProfileH264MultiviewHigh: case VAProfileH264StereoHigh: case VAProfileHEVCMain: + case VAProfileVP8Version0_3: entrypoints[0] = VAEntrypointVLD; *entrypoints_count = 1; break;