fourier-local: stateless control modernization + HEVC strip
Compound patch carrying the fork's pre-Step-1 substrate, originally authored by Jernej Škrabec / fourier on top of bootlin'sa3c2476: - src/h264.c + src/picture.c: V4L2_CID_MPEG_VIDEO_H264_* renamed to V4L2_CID_STATELESS_H264_*, struct shapes tracked to mainline (V4L2_CID_STATELESS_H264_DECODE_MODE/_START_CODE added to the passthrough shim). - include/hevc-ctrls.h: redirect shim to <linux/v4l2-controls.h> (kernel-side HEVC controls now live in the canonical UAPI header). - src/meson.build: src/h265.c / src/h265.h commented out — HEVC build path is excluded from this fork (RK3568 hantro G1/G2 has no HEVC, and the kernel-side HEVC controls have a separate rework in flight upstream). - src/tiled_yuv.S: aarch64 stub for tiled_to_planar (assembly source was sunxi-cedrus armv7-only; aarch64 needs a stub to keep the build linking). - include/h264-ctrls.h: removed (dead post-fourier — no source includes it; the passthrough shim's CID aliases live in the kernel header now). Functionally equivalent to the prior fork master commits:c1f5108V4L2_PIX_FMT_H264_SLICE rename4ccbfe9Strip HEVC build pathda9f2a5include/h264-ctrls.h passthrough + CID aliasesfc4bb10src/h264.c track upstream UAPI shape13e9b64src/h264.c drop num_slices field4d14ffbsrc/tiled_yuv.S aarch64 stub1b02c9bsrc/h264.c include utils.h Folded into one commit during 2026-05-04 Step 1 reconciliation (see ../phase0_evidence/2026-05-04/findings.md). Per-patch history of the early fork commits preserved on the pre-step1 branch. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
+27
-1
@@ -46,6 +46,8 @@
|
||||
#include "v4l2.h"
|
||||
#include "video.h"
|
||||
|
||||
bool SET_FORMAT_OF_OUTPUT_ONCE = false;
|
||||
|
||||
VAStatus RequestCreateSurfaces2(VADriverContextP context, unsigned int format,
|
||||
unsigned int width, unsigned int height,
|
||||
VASurfaceID *surfaces_ids,
|
||||
@@ -68,10 +70,34 @@ VAStatus RequestCreateSurfaces2(VADriverContextP context, unsigned int format,
|
||||
bool found;
|
||||
int rc;
|
||||
|
||||
//////////// HACK: this portion of the code should get cleaned up.
|
||||
|
||||
// v4l2_set_format needs to be called BEFORE we create any buffers
|
||||
//
|
||||
// we originally did this for the output stream in context.c, but
|
||||
// RequestCreateSurfaces2 gets called multiple times before RequestCreateContext
|
||||
// to allocate & map buffers. this doesn't seem to work in recent kernel versions.
|
||||
//
|
||||
// we declare SET_FORMAT_OF_OUTPUT_ONCE to ensure v4l2_set_format only gets called once
|
||||
// (in the first RequestCreateSurfaces2 call BEFORE any buffers are created later on)
|
||||
unsigned int pixelformat = V4L2_PIX_FMT_H264_SLICE;
|
||||
unsigned int output_type = v4l2_type_video_output(false);
|
||||
|
||||
if (!SET_FORMAT_OF_OUTPUT_ONCE) {
|
||||
rc = v4l2_set_format(driver_data->video_fd, output_type, pixelformat,
|
||||
width, height);
|
||||
if (rc < 0) {
|
||||
return VA_STATUS_ERROR_OPERATION_FAILED;
|
||||
}
|
||||
|
||||
SET_FORMAT_OF_OUTPUT_ONCE = true;
|
||||
}
|
||||
|
||||
/////////// ENDHACK
|
||||
|
||||
if (format != VA_RT_FORMAT_YUV420)
|
||||
return VA_STATUS_ERROR_UNSUPPORTED_RT_FORMAT;
|
||||
|
||||
|
||||
if (!driver_data->video_format) {
|
||||
found = v4l2_find_format(driver_data->video_fd,
|
||||
V4L2_BUF_TYPE_VIDEO_CAPTURE,
|
||||
|
||||
Reference in New Issue
Block a user