From 2e2fbdb7e59431c0080686968662f4e4fef30069 Mon Sep 17 00:00:00 2001 From: Qiwei Liu Date: Tue, 27 Apr 2021 20:38:13 +0800 Subject: [PATCH] video: driver: support non-zero data_offset In V4L2 definition, bytesused contains both data_offset and actual payload size, whereas in HFI definition, data_size only contain actual payload size after data_offset. Add conversions to correctly support non-zero data_offset. Change-Id: Ib581e942e39e0adbb673c53d1b31e669bdb2b998 Signed-off-by: Qiwei Liu --- driver/vidc/src/msm_vidc_driver.c | 4 ++-- driver/vidc/src/venus_hfi_response.c | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/driver/vidc/src/msm_vidc_driver.c b/driver/vidc/src/msm_vidc_driver.c index 813577a598..0f020209a3 100644 --- a/driver/vidc/src/msm_vidc_driver.c +++ b/driver/vidc/src/msm_vidc_driver.c @@ -1843,7 +1843,7 @@ static int vb2_buffer_to_driver(struct vb2_buffer *vb2, buf->index = vb2->index; buf->fd = vb2->planes[0].m.fd; buf->data_offset = vb2->planes[0].data_offset; - buf->data_size = vb2->planes[0].bytesused; + buf->data_size = vb2->planes[0].bytesused - vb2->planes[0].data_offset; buf->buffer_size = vb2->planes[0].length; buf->timestamp = vb2->timestamp; @@ -3098,7 +3098,7 @@ int msm_vidc_vb2_buffer_done(struct msm_vidc_inst *inst, vbuf = to_vb2_v4l2_buffer(vb2); vbuf->flags = buf->flags; vb2->timestamp = buf->timestamp; - vb2->planes[0].bytesused = buf->data_size; + vb2->planes[0].bytesused = buf->data_size + vb2->planes[0].data_offset; vb2_buffer_done(vb2, VB2_BUF_STATE_DONE); return 0; diff --git a/driver/vidc/src/venus_hfi_response.c b/driver/vidc/src/venus_hfi_response.c index ec93e7c0c9..64357ee126 100644 --- a/driver/vidc/src/venus_hfi_response.c +++ b/driver/vidc/src/venus_hfi_response.c @@ -649,7 +649,6 @@ static int handle_input_buffer(struct msm_vidc_inst *inst, } } - buf->data_offset = buffer->data_offset; buf->data_size = buffer->data_size; buf->attr &= ~MSM_VIDC_ATTR_QUEUED; buf->attr |= MSM_VIDC_ATTR_DEQUEUED;