Commit 47556ffa authored by Hans Verkuil's avatar Hans Verkuil Committed by Mauro Carvalho Chehab

[media] mem2mem_testdev: set default size and fix colorspace

Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@redhat.com>
parent 97a3c902
...@@ -171,6 +171,8 @@ struct m2mtest_ctx { ...@@ -171,6 +171,8 @@ struct m2mtest_ctx {
/* Processing mode */ /* Processing mode */
int mode; int mode;
enum v4l2_colorspace colorspace;
struct v4l2_m2m_ctx *m2m_ctx; struct v4l2_m2m_ctx *m2m_ctx;
/* Source and destination queue data */ /* Source and destination queue data */
...@@ -494,6 +496,7 @@ static int vidioc_g_fmt(struct m2mtest_ctx *ctx, struct v4l2_format *f) ...@@ -494,6 +496,7 @@ static int vidioc_g_fmt(struct m2mtest_ctx *ctx, struct v4l2_format *f)
f->fmt.pix.pixelformat = q_data->fmt->fourcc; f->fmt.pix.pixelformat = q_data->fmt->fourcc;
f->fmt.pix.bytesperline = (q_data->width * q_data->fmt->depth) >> 3; f->fmt.pix.bytesperline = (q_data->width * q_data->fmt->depth) >> 3;
f->fmt.pix.sizeimage = q_data->sizeimage; f->fmt.pix.sizeimage = q_data->sizeimage;
f->fmt.pix.colorspace = ctx->colorspace;
return 0; return 0;
} }
...@@ -555,6 +558,7 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void *priv, ...@@ -555,6 +558,7 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void *priv,
f->fmt.pix.pixelformat); f->fmt.pix.pixelformat);
return -EINVAL; return -EINVAL;
} }
f->fmt.pix.colorspace = ctx->colorspace;
return vidioc_try_fmt(f, fmt); return vidioc_try_fmt(f, fmt);
} }
...@@ -572,6 +576,8 @@ static int vidioc_try_fmt_vid_out(struct file *file, void *priv, ...@@ -572,6 +576,8 @@ static int vidioc_try_fmt_vid_out(struct file *file, void *priv,
f->fmt.pix.pixelformat); f->fmt.pix.pixelformat);
return -EINVAL; return -EINVAL;
} }
if (!f->fmt.pix.colorspace)
f->fmt.pix.colorspace = V4L2_COLORSPACE_REC709;
return vidioc_try_fmt(f, fmt); return vidioc_try_fmt(f, fmt);
} }
...@@ -622,13 +628,17 @@ static int vidioc_s_fmt_vid_cap(struct file *file, void *priv, ...@@ -622,13 +628,17 @@ static int vidioc_s_fmt_vid_cap(struct file *file, void *priv,
static int vidioc_s_fmt_vid_out(struct file *file, void *priv, static int vidioc_s_fmt_vid_out(struct file *file, void *priv,
struct v4l2_format *f) struct v4l2_format *f)
{ {
struct m2mtest_ctx *ctx = file2ctx(file);
int ret; int ret;
ret = vidioc_try_fmt_vid_out(file, priv, f); ret = vidioc_try_fmt_vid_out(file, priv, f);
if (ret) if (ret)
return ret; return ret;
return vidioc_s_fmt(file2ctx(file), f); ret = vidioc_s_fmt(file2ctx(file), f);
if (!ret)
ctx->colorspace = f->fmt.pix.colorspace;
return ret;
} }
static int vidioc_reqbufs(struct file *file, void *priv, static int vidioc_reqbufs(struct file *file, void *priv,
...@@ -906,7 +916,14 @@ static int m2mtest_open(struct file *file) ...@@ -906,7 +916,14 @@ static int m2mtest_open(struct file *file)
v4l2_ctrl_handler_setup(hdl); v4l2_ctrl_handler_setup(hdl);
ctx->q_data[V4L2_M2M_SRC].fmt = &formats[0]; ctx->q_data[V4L2_M2M_SRC].fmt = &formats[0];
ctx->q_data[V4L2_M2M_DST].fmt = &formats[0]; ctx->q_data[V4L2_M2M_SRC].width = 640;
ctx->q_data[V4L2_M2M_SRC].height = 480;
ctx->q_data[V4L2_M2M_SRC].sizeimage =
ctx->q_data[V4L2_M2M_SRC].width *
ctx->q_data[V4L2_M2M_SRC].height *
(ctx->q_data[V4L2_M2M_SRC].fmt->depth >> 3);
ctx->q_data[V4L2_M2M_DST] = ctx->q_data[V4L2_M2M_SRC];
ctx->colorspace = V4L2_COLORSPACE_REC709;
ctx->m2m_ctx = v4l2_m2m_ctx_init(dev->m2m_dev, ctx, &queue_init); ctx->m2m_ctx = v4l2_m2m_ctx_init(dev->m2m_dev, ctx, &queue_init);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment