[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
@@ -84,9 +84,9 @@ unsigned int coda_read(struct coda_dev *dev, u32 reg)
|
||||
}
|
||||
|
||||
void coda_write_base(struct coda_ctx *ctx, struct coda_q_data *q_data,
|
||||
struct vb2_buffer *buf, unsigned int reg_y)
|
||||
struct vb2_v4l2_buffer *buf, unsigned int reg_y)
|
||||
{
|
||||
u32 base_y = vb2_dma_contig_plane_dma_addr(buf, 0);
|
||||
u32 base_y = vb2_dma_contig_plane_dma_addr(&buf->vb2_buf, 0);
|
||||
u32 base_cb, base_cr;
|
||||
|
||||
switch (q_data->fourcc) {
|
||||
@@ -684,17 +684,17 @@ static int coda_qbuf(struct file *file, void *priv,
|
||||
}
|
||||
|
||||
static bool coda_buf_is_end_of_stream(struct coda_ctx *ctx,
|
||||
struct vb2_buffer *buf)
|
||||
struct vb2_v4l2_buffer *buf)
|
||||
{
|
||||
struct vb2_queue *src_vq;
|
||||
|
||||
src_vq = v4l2_m2m_get_vq(ctx->fh.m2m_ctx, V4L2_BUF_TYPE_VIDEO_OUTPUT);
|
||||
|
||||
return ((ctx->bit_stream_param & CODA_BIT_STREAM_END_FLAG) &&
|
||||
(buf->v4l2_buf.sequence == (ctx->qsequence - 1)));
|
||||
(buf->sequence == (ctx->qsequence - 1)));
|
||||
}
|
||||
|
||||
void coda_m2m_buf_done(struct coda_ctx *ctx, struct vb2_buffer *buf,
|
||||
void coda_m2m_buf_done(struct coda_ctx *ctx, struct vb2_v4l2_buffer *buf,
|
||||
enum vb2_buffer_state state)
|
||||
{
|
||||
const struct v4l2_event eos_event = {
|
||||
@@ -702,7 +702,7 @@ void coda_m2m_buf_done(struct coda_ctx *ctx, struct vb2_buffer *buf,
|
||||
};
|
||||
|
||||
if (coda_buf_is_end_of_stream(ctx, buf)) {
|
||||
buf->v4l2_buf.flags |= V4L2_BUF_FLAG_LAST;
|
||||
buf->flags |= V4L2_BUF_FLAG_LAST;
|
||||
|
||||
v4l2_event_queue_fh(&ctx->fh, &eos_event);
|
||||
}
|
||||
@@ -1175,6 +1175,7 @@ static int coda_buf_prepare(struct vb2_buffer *vb)
|
||||
|
||||
static void coda_buf_queue(struct vb2_buffer *vb)
|
||||
{
|
||||
struct vb2_v4l2_buffer *vbuf = to_vb2_v4l2_buffer(vb);
|
||||
struct coda_ctx *ctx = vb2_get_drv_priv(vb->vb2_queue);
|
||||
struct vb2_queue *vq = vb->vb2_queue;
|
||||
struct coda_q_data *q_data;
|
||||
@@ -1193,12 +1194,12 @@ static void coda_buf_queue(struct vb2_buffer *vb)
|
||||
if (vb2_get_plane_payload(vb, 0) == 0)
|
||||
coda_bit_stream_end_flag(ctx);
|
||||
mutex_lock(&ctx->bitstream_mutex);
|
||||
v4l2_m2m_buf_queue(ctx->fh.m2m_ctx, vb);
|
||||
v4l2_m2m_buf_queue(ctx->fh.m2m_ctx, vbuf);
|
||||
if (vb2_is_streaming(vb->vb2_queue))
|
||||
coda_fill_bitstream(ctx, true);
|
||||
mutex_unlock(&ctx->bitstream_mutex);
|
||||
} else {
|
||||
v4l2_m2m_buf_queue(ctx->fh.m2m_ctx, vb);
|
||||
v4l2_m2m_buf_queue(ctx->fh.m2m_ctx, vbuf);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1247,7 +1248,7 @@ static int coda_start_streaming(struct vb2_queue *q, unsigned int count)
|
||||
struct coda_ctx *ctx = vb2_get_drv_priv(q);
|
||||
struct v4l2_device *v4l2_dev = &ctx->dev->v4l2_dev;
|
||||
struct coda_q_data *q_data_src, *q_data_dst;
|
||||
struct vb2_buffer *buf;
|
||||
struct vb2_v4l2_buffer *buf;
|
||||
int ret = 0;
|
||||
|
||||
q_data_src = get_q_data(ctx, V4L2_BUF_TYPE_VIDEO_OUTPUT);
|
||||
@@ -1338,7 +1339,7 @@ static void coda_stop_streaming(struct vb2_queue *q)
|
||||
{
|
||||
struct coda_ctx *ctx = vb2_get_drv_priv(q);
|
||||
struct coda_dev *dev = ctx->dev;
|
||||
struct vb2_buffer *buf;
|
||||
struct vb2_v4l2_buffer *buf;
|
||||
unsigned long flags;
|
||||
bool stop;
|
||||
|
||||
|
Reference in New Issue
Block a user