Forráskód Böngészése

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 <[email protected]>
Qiwei Liu 4 éve
szülő
commit
2e2fbdb7e5

+ 2 - 2
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->index = vb2->index;
 	buf->fd = vb2->planes[0].m.fd;
 	buf->fd = vb2->planes[0].m.fd;
 	buf->data_offset = vb2->planes[0].data_offset;
 	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->buffer_size = vb2->planes[0].length;
 	buf->timestamp = vb2->timestamp;
 	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 = to_vb2_v4l2_buffer(vb2);
 	vbuf->flags = buf->flags;
 	vbuf->flags = buf->flags;
 	vb2->timestamp = buf->timestamp;
 	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);
 	vb2_buffer_done(vb2, VB2_BUF_STATE_DONE);
 
 
 	return 0;
 	return 0;

+ 0 - 1
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->data_size = buffer->data_size;
 	buf->attr &= ~MSM_VIDC_ATTR_QUEUED;
 	buf->attr &= ~MSM_VIDC_ATTR_QUEUED;
 	buf->attr |= MSM_VIDC_ATTR_DEQUEUED;
 	buf->attr |= MSM_VIDC_ATTR_DEQUEUED;