forked from marfrit/libva-v4l2-request-fourier
ampere-av1 Phase 2 step 4: AV1 dispatch scaffolding compiles and wires
surface.h: av1 substruct (picture + tile_group_entries[AV1_MAX_TILES=128] + num_tile_group_entries counter) picture.c: dispatch VAPictureParameterBufferAV1 + VASliceParameterBufferAV1 into surface->params.av1.*; call av1_set_controls in EndPicture path av1.h: minimal interface (av1_set_controls signature) av1.c: stub set_controls returning -1 with diagnostic; _Static_assert on v4l2_ctrl_av1_tile_group_entry size = 16 (Janet hygiene) meson.build: av1.c + av1.h in source list Verified on ampere with /tmp/test_av1.ivf via LIBVA_DRIVER_NAME=v4l2_request: v4l2-request: ampere-av1: vpu981 AV1 decoder at /dev/video4 + /dev/media3 v4l2-request: ampere-av1: av1_set_controls stub — Phase 2.1 will implement ... [av1] Failed to end picture decode issue: 1 (operation failed). [av1] HW accel end frame fail. [dec:av1] Error submitting packet to decoder: Input/output error Clean graceful failure — vpu981 probe works, dispatch reaches av1.c, stub returns ERROR, ffmpeg falls back to SW. No crash, no IOMMU fault, no kernel taint. Next: Phase 2.1 implementation of fill_sequence + fill_frame + fill_film_grain + fill_tile_group_entries (~700 LoC mirror of Kwiboo v4l2_request_av1.c, applying F1/F2/F3 implementation-time corrections from Janet review v2). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Copyright (C) 2026 claude-noether <claude-noether@reauktion.de>
|
||||
*
|
||||
* ampere-av1-enablement Phase 2: AV1 codec dispatcher header for libva-
|
||||
* v4l2-request-fourier. Mirrors vp9.h shape — single set_controls entry
|
||||
* point that translates surface->params.av1.* VAAPI structures into a
|
||||
* batch of V4L2_CID_STATELESS_AV1_{SEQUENCE,FRAME,TILE_GROUP_ENTRY,
|
||||
* FILM_GRAIN} controls + the underlying request_fd / OUTPUT plane setup.
|
||||
*
|
||||
* V4L2 target: V4L2_PIX_FMT_AV1_FRAME on the vpu981 hantro instance
|
||||
* (RK3588's dedicated AV1 decoder).
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sub license, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice (including the
|
||||
* next paragraph) shall be included in all copies or substantial portions
|
||||
* of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
|
||||
* IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY CLAIM,
|
||||
* DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
||||
* OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR
|
||||
* THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef _AV1_H_
|
||||
#define _AV1_H_
|
||||
|
||||
#include "context.h"
|
||||
#include "request.h"
|
||||
#include "surface.h"
|
||||
|
||||
int av1_set_controls(struct request_data *driver_data,
|
||||
struct object_context *context,
|
||||
struct object_surface *surface);
|
||||
|
||||
#endif /* _AV1_H_ */
|
||||
Reference in New Issue
Block a user