diff --git a/src/picture.c b/src/picture.c index 693ae45..31d9e57 100644 --- a/src/picture.c +++ b/src/picture.c @@ -318,6 +318,30 @@ static VAStatus codec_set_controls(struct request_data *driver_data, return VA_STATUS_ERROR_OPERATION_FAILED; break; + case VAProfileAV1Profile0: + /* + * AV1 has no codec-specific V4L2 control dispatch wired up + * yet on this branch (see config.c VAProfileAV1Profile0 + * comment). For the daedalus_v4l2 daemon path that's fine: + * AV1 frames are self-describing per-frame (OBU sequence + + * frame headers carry everything libavcodec needs), so the + * bitstream in the V4L2 OUTPUT buffer is sufficient — no + * V4L2_CID_STATELESS_AV1_* controls have to be populated. + * + * Per-codec dispatch in request_switch_device_for_profile + * has already retargeted (video_fd, media_fd) to + * video_fd_daedalus (or video_fd_vpu981 on RK3588 if + * present) by the time we get here; the OUTPUT buffer will + * be queued via that fd and the kernel forwards bytes to + * the daemon as a regular REQ_DECODE. No-op is the + * correct shape. + * + * When the vpu981-targeted V4L2_CID_STATELESS_AV1_* dispatch + * lands from the av1-iter1 operator branch, replace this + * with av1_set_controls(...). + */ + break; + default: return VA_STATUS_ERROR_UNSUPPORTED_PROFILE; }