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:
@@ -122,6 +122,19 @@ struct object_surface {
|
||||
VADecPictureParameterBufferVP9 picture;
|
||||
VASliceParameterBufferVP9 slice;
|
||||
} vp9;
|
||||
/*
|
||||
* ampere-av1-enablement: AV1 needs picture-header +
|
||||
* variable number of slice/tile params (one per tile).
|
||||
* tile_group_entries[] holds parsed VASliceParameterBufferAV1
|
||||
* entries up to MAX_TILES; av1.c builds the matching
|
||||
* v4l2_ctrl_av1_tile_group_entry[] at set_controls time.
|
||||
*/
|
||||
struct {
|
||||
#define AV1_MAX_TILES 128
|
||||
VADecPictureParameterBufferAV1 picture;
|
||||
VASliceParameterBufferAV1 tile_group_entries[AV1_MAX_TILES];
|
||||
unsigned int num_tile_group_entries;
|
||||
} av1;
|
||||
} params;
|
||||
|
||||
int request_fd;
|
||||
|
||||
Reference in New Issue
Block a user