From e7eed864ce253300b04c3a08b7270b08065b2d95 Mon Sep 17 00:00:00 2001 From: Jianfeng Liu Date: Thu, 4 Sep 2025 12:00:00 +0800 Subject: [PATCH] media: rkvdec: Remove vb2_is_busy check in rkvdec_s_ctrl The vb2_is_busy() check on the capture queue in rkvdec_s_ctrl() prevents Chromium from changing the decoded image format mid-stream, causing green-screen artifacts during video playback. This check is unique to rkvdec among all V4L2 stateless decoder drivers; removing it aligns rkvdec with the behavior of other decoders and resolves the Chromium green-screen issue without regressions on mpv. Tested on Rock 5B+ with kernel 7.0-piotr-v9 plus this fix: Chromium playback at 720p/1080p/1440p green-screen-free. Origin: https://patchwork.kernel.org/project/linux-rockchip/patch/20250904.../ Signed-off-by: Jianfeng Liu --- drivers/media/platform/rockchip/rkvdec/rkvdec.c | 6 ------ 1 file changed, 6 deletions(-) diff --git a/drivers/media/platform/rockchip/rkvdec/rkvdec.c b/drivers/media/platform/rockchip/rkvdec/rkvdec.c index d623843b6981..ad4b297c9f6c 100644 --- a/drivers/media/platform/rockchip/rkvdec/rkvdec.c +++ b/drivers/media/platform/rockchip/rkvdec/rkvdec.c @@ -151,7 +151,6 @@ static int rkvdec_s_ctrl(struct v4l2_ctrl *ctrl) struct rkvdec_ctx *ctx = container_of(ctrl->handler, struct rkvdec_ctx, ctrl_hdl); const struct rkvdec_coded_fmt_desc *desc = ctx->coded_fmt_desc; enum rkvdec_image_fmt image_fmt; - struct vb2_queue *vq; if (ctrl->id == V4L2_CID_STATELESS_HEVC_EXT_SPS_ST_RPS) { ctx->has_sps_st_rps |= !!(ctrl->has_changed); @@ -169,11 +168,6 @@ static int rkvdec_s_ctrl(struct v4l2_ctrl *ctrl) image_fmt = desc->ops->get_image_fmt(ctx, ctrl); if (rkvdec_image_fmt_changed(ctx, image_fmt)) { - vq = v4l2_m2m_get_vq(ctx->fh.m2m_ctx, - V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE); - if (vb2_is_busy(vq)) - return -EBUSY; - ctx->image_fmt = image_fmt; rkvdec_reset_decoded_fmt(ctx); }