]> git.baikalelectronics.ru Git - kernel.git/commitdiff
media: hantro: Empty encoder capture buffers by default
authorChen-Yu Tsai <wenst@chromium.org>
Thu, 31 Mar 2022 08:49:06 +0000 (09:49 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 9 Jun 2022 08:22:49 +0000 (10:22 +0200)
[ Upstream commit 1d52a492e44e86db57379cd18af9aae646c3fd18 ]

The payload size for encoder capture buffers is set by the driver upon
finishing encoding each frame, based on the encoded length returned from
hardware, and whatever header and padding length used. Setting a
non-zero default serves no real purpose, and also causes issues if the
capture buffer is returned to userspace unused, confusing the
application.

Instead, always set the payload size to 0 for encoder capture buffers
when preparing them.

Fixes: 6ef699ea68bb ("media: add Rockchip VPU JPEG encoder driver")
Fixes: cc52ee20011b ("media: hantro: Fix .buf_prepare")
Signed-off-by: Chen-Yu Tsai <wenst@chromium.org>
Reviewed-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/staging/media/hantro/hantro_v4l2.c

index bcb0bdff4a9a68c673b75603d0b8a89d688fb8c4..629bf40a5e5cbeb3b233327dbedd7e174a5a5e70 100644 (file)
@@ -647,8 +647,12 @@ static int hantro_buf_prepare(struct vb2_buffer *vb)
         * (for OUTPUT buffers, if userspace passes 0 bytesused, v4l2-core sets
         * it to buffer length).
         */
-       if (V4L2_TYPE_IS_CAPTURE(vq->type))
-               vb2_set_plane_payload(vb, 0, pix_fmt->plane_fmt[0].sizeimage);
+       if (V4L2_TYPE_IS_CAPTURE(vq->type)) {
+               if (ctx->is_encoder)
+                       vb2_set_plane_payload(vb, 0, 0);
+               else
+                       vb2_set_plane_payload(vb, 0, pix_fmt->plane_fmt[0].sizeimage);
+       }
 
        return 0;
 }