Message ID | 20220331084907.628349-1-wenst@chromium.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | media: hantro: Empty encoder capture buffers by default | expand |
On Thu, Mar 31, 2022 at 04:49:06PM +0800, Chen-Yu Tsai wrote: > 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: 775fec69008d ("media: add Rockchip VPU JPEG encoder driver") > Fixes: 082aaecff35f ("media: hantro: Fix .buf_prepare") > Signed-off-by: Chen-Yu Tsai <wenst@chromium.org> Reviewed-by: Ezequiel Garcia <ezequiel@vanguardiasur.com.ar> > --- > > This was previously incorrectly squashed into my Hantro encoder cmd > patch [1]. > > [1] https://lore.kernel.org/linux-media/20220301042225.1540019-1-wenst@chromium.org/ > > drivers/staging/media/hantro/hantro_v4l2.c | 8 ++++++-- > 1 file changed, 6 insertions(+), 2 deletions(-) > > diff --git a/drivers/staging/media/hantro/hantro_v4l2.c b/drivers/staging/media/hantro/hantro_v4l2.c > index 67148ba346f5..261beb0c40f6 100644 > --- a/drivers/staging/media/hantro/hantro_v4l2.c > +++ b/drivers/staging/media/hantro/hantro_v4l2.c > @@ -733,8 +733,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; > } > -- > 2.35.1.1021.g381101b075-goog >
diff --git a/drivers/staging/media/hantro/hantro_v4l2.c b/drivers/staging/media/hantro/hantro_v4l2.c index 67148ba346f5..261beb0c40f6 100644 --- a/drivers/staging/media/hantro/hantro_v4l2.c +++ b/drivers/staging/media/hantro/hantro_v4l2.c @@ -733,8 +733,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; }
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: 775fec69008d ("media: add Rockchip VPU JPEG encoder driver") Fixes: 082aaecff35f ("media: hantro: Fix .buf_prepare") Signed-off-by: Chen-Yu Tsai <wenst@chromium.org> --- This was previously incorrectly squashed into my Hantro encoder cmd patch [1]. [1] https://lore.kernel.org/linux-media/20220301042225.1540019-1-wenst@chromium.org/ drivers/staging/media/hantro/hantro_v4l2.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-)