iter2 step3: HEVC EXT_SPS_*_RPS UAPI header + runtime probe
src/hevc-ctrls/v4l2-hevc-ext-controls.h (NEW, MIT, ~95 LOC):
Verbatim mirror of Linux 7.0 V4L2_CID_STATELESS_HEVC_EXT_SPS_ST_RPS
and _LT_RPS control IDs + struct definitions + flag macros. Each
symbol is ifndef-guarded so when ampere's linux-api-headers
eventually bumps to 7.0+, the kernel header takes precedence and
this shim silently no-ops. Citation block links the upstream
Casanova v8 series.
Per LGPL section 3.b, kernel UAPI struct definitions are excepted
from GPL inheritance, so copying them into MIT userspace is fine.
src/request.h: added has_hevc_ext_sps_rps_rkvdec + _hantro bool
fields on struct request_data — pair-of-flags layout mirrors
video_fd_rkvdec / video_fd_hantro (iter38 multi-device-probe
pattern, per feedback_multi_device_probe_design). Phase 5 review
identified single-scalar storage as a silent-misbehavior risk
across device-switch boundaries.
src/request.c:
- new probe_hevc_ext_sps_rps_controls(fd) helper: queries the two
new CIDs via VIDIOC_QUERYCTRL; returns true iff both register.
RK3399 rkvdec (linux 6.x or 7.x without VDPU381/383 bindings)
returns false; RK3588 rkvdec (VDPU381/383) returns true.
- probe each driver_data->video_fd_rkvdec / _hantro after the
iter38 multi-device-probe block at VA_DRIVER_INIT time
- log-line if rkvdec supports it - diagnostic for Phase 7
src/meson.build: added the new UAPI header to the headers list.
Build verified: ninja -C build clean, .so produced. The new probe
runs at driver init and stores the result, but nothing CONSUMES the
result yet — that's Step 4 (h265_set_controls wiring).
Per ampere-kernel-decoders campaign iter2 Phase 4 step 3 (amended
by Phase 5 review item 'per-fd storage').
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -77,6 +77,26 @@ struct request_data {
|
||||
int video_fd_hantro;
|
||||
int media_fd_hantro;
|
||||
|
||||
/*
|
||||
* iter2 (ampere-kernel-decoders campaign) — per-fd probe result
|
||||
* for the V4L2_CID_STATELESS_HEVC_EXT_SPS_{ST,LT}_RPS controls
|
||||
* introduced in Linux 7.0 (Casanova VDPU381/VDPU383 series).
|
||||
* RK3399 rkvdec doesn't have them and the probe returns false;
|
||||
* RK3588 rkvdec (VDPU381/383) registers them and the probe is
|
||||
* true. h265_set_controls consults only the rkvdec entry because
|
||||
* HEVC routes through rkvdec only — hantro's entry stays false
|
||||
* naturally (it doesn't have rkvdec-specific controls).
|
||||
*
|
||||
* The pair-of-flags layout mirrors video_fd_rkvdec /
|
||||
* video_fd_hantro above (iter38 multi-device-probe pattern,
|
||||
* memory feedback_multi_device_probe_design). Phase 5 review
|
||||
* surfaced this as a correctness item: a single scalar on
|
||||
* driver_data would silently misbehave across device-switch
|
||||
* boundaries; per-fd storage is the safe shape.
|
||||
*/
|
||||
bool has_hevc_ext_sps_rps_rkvdec;
|
||||
bool has_hevc_ext_sps_rps_hantro;
|
||||
|
||||
struct video_format *video_format;
|
||||
|
||||
/*
|
||||
|
||||
Reference in New Issue
Block a user