[media] media: videobuf2: Restructure vb2_buffer
Remove v4l2 stuff - v4l2_buf, v4l2_plane - from struct vb2_buffer. Add new member variables - bytesused, length, offset, userptr, fd, data_offset - to struct vb2_plane in order to cover all information of v4l2_plane. struct vb2_plane { <snip> unsigned int bytesused; unsigned int length; union { unsigned int offset; unsigned long userptr; int fd; } m; unsigned int data_offset; } Replace v4l2_buf with new member variables - index, type, memory - which are common fields for buffer management. struct vb2_buffer { <snip> unsigned int index; unsigned int type; unsigned int memory; unsigned int num_planes; struct vb2_plane planes[VIDEO_MAX_PLANES]; <snip> }; v4l2 specific fields - flags, field, timestamp, timecode, sequence - are moved to vb2_v4l2_buffer in videobuf2-v4l2.c struct vb2_v4l2_buffer { struct vb2_buffer vb2_buf; __u32 flags; __u32 field; struct timeval timestamp; struct v4l2_timecode timecode; __u32 sequence; }; Signed-off-by: Junghak Sung <jh1009.sung@samsung.com> Signed-off-by: Geunyoung Kim <nenggun.kim@samsung.com> Acked-by: Seung-Woo Kim <sw0312.kim@samsung.com> Acked-by: Inki Dae <inki.dae@samsung.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
This commit is contained in:

committed by
Mauro Carvalho Chehab

parent
c139990e84
commit
2d7007153f
@@ -38,6 +38,7 @@
|
||||
#include <media/v4l2-device.h>
|
||||
#include <media/v4l2-dev.h>
|
||||
#include <media/v4l2-ioctl.h>
|
||||
#include <media/videobuf2-v4l2.h>
|
||||
#include <media/videobuf2-dma-sg.h>
|
||||
|
||||
/* read 512 bytes from endpoint 0x86 -> get header + blobs */
|
||||
@@ -163,7 +164,7 @@ struct sur40_state {
|
||||
};
|
||||
|
||||
struct sur40_buffer {
|
||||
struct vb2_buffer vb;
|
||||
struct vb2_v4l2_buffer vb;
|
||||
struct list_head list;
|
||||
};
|
||||
|
||||
@@ -420,7 +421,7 @@ static void sur40_process_video(struct sur40_state *sur40)
|
||||
|
||||
dev_dbg(sur40->dev, "header acquired\n");
|
||||
|
||||
sgt = vb2_dma_sg_plane_desc(&new_buf->vb, 0);
|
||||
sgt = vb2_dma_sg_plane_desc(&new_buf->vb.vb2_buf, 0);
|
||||
|
||||
result = usb_sg_init(&sgr, sur40->usbdev,
|
||||
usb_rcvbulkpipe(sur40->usbdev, VIDEO_ENDPOINT), 0,
|
||||
@@ -443,15 +444,15 @@ static void sur40_process_video(struct sur40_state *sur40)
|
||||
goto err_poll;
|
||||
|
||||
/* mark as finished */
|
||||
v4l2_get_timestamp(&new_buf->vb.v4l2_buf.timestamp);
|
||||
new_buf->vb.v4l2_buf.sequence = sur40->sequence++;
|
||||
new_buf->vb.v4l2_buf.field = V4L2_FIELD_NONE;
|
||||
vb2_buffer_done(&new_buf->vb, VB2_BUF_STATE_DONE);
|
||||
v4l2_get_timestamp(&new_buf->vb.timestamp);
|
||||
new_buf->vb.sequence = sur40->sequence++;
|
||||
new_buf->vb.field = V4L2_FIELD_NONE;
|
||||
vb2_buffer_done(&new_buf->vb.vb2_buf, VB2_BUF_STATE_DONE);
|
||||
dev_dbg(sur40->dev, "buffer marked done\n");
|
||||
return;
|
||||
|
||||
err_poll:
|
||||
vb2_buffer_done(&new_buf->vb, VB2_BUF_STATE_ERROR);
|
||||
vb2_buffer_done(&new_buf->vb.vb2_buf, VB2_BUF_STATE_ERROR);
|
||||
}
|
||||
|
||||
/* Initialize input device parameters. */
|
||||
@@ -701,7 +702,7 @@ static void return_all_buffers(struct sur40_state *sur40,
|
||||
|
||||
spin_lock(&sur40->qlock);
|
||||
list_for_each_entry_safe(buf, node, &sur40->buf_list, list) {
|
||||
vb2_buffer_done(&buf->vb, state);
|
||||
vb2_buffer_done(&buf->vb.vb2_buf, state);
|
||||
list_del(&buf->list);
|
||||
}
|
||||
spin_unlock(&sur40->qlock);
|
||||
|
Reference in New Issue
Block a user