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 <qiweil@codeaurora.org>
Цей коміт міститься в:
Qiwei Liu
2021-04-27 20:38:13 +08:00
зафіксовано Gerrit - the friendly Code Review server
джерело cfd1584e2a
коміт 2e2fbdb7e5
2 змінених файлів з 2 додано та 3 видалено

Переглянути файл

@@ -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;

Переглянути файл

@@ -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;