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

[media] omap_vout: convert g/s_crop to g/s_selection

This is part of a final push to convert all drivers to g/s_selection.
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Acked-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent b714fb00
...@@ -1247,36 +1247,33 @@ static int vidioc_g_fmt_vid_overlay(struct file *file, void *fh, ...@@ -1247,36 +1247,33 @@ static int vidioc_g_fmt_vid_overlay(struct file *file, void *fh,
return 0; return 0;
} }
static int vidioc_cropcap(struct file *file, void *fh, static int vidioc_g_selection(struct file *file, void *fh, struct v4l2_selection *sel)
struct v4l2_cropcap *cropcap)
{ {
struct omap_vout_device *vout = fh; struct omap_vout_device *vout = fh;
struct v4l2_pix_format *pix = &vout->pix; struct v4l2_pix_format *pix = &vout->pix;
if (cropcap->type != V4L2_BUF_TYPE_VIDEO_OUTPUT) if (sel->type != V4L2_BUF_TYPE_VIDEO_OUTPUT)
return -EINVAL; return -EINVAL;
switch (sel->target) {
case V4L2_SEL_TGT_CROP:
sel->r = vout->crop;
break;
case V4L2_SEL_TGT_CROP_DEFAULT:
omap_vout_default_crop(&vout->pix, &vout->fbuf, &sel->r);
break;
case V4L2_SEL_TGT_CROP_BOUNDS:
/* Width and height are always even */ /* Width and height are always even */
cropcap->bounds.width = pix->width & ~1; sel->r.width = pix->width & ~1;
cropcap->bounds.height = pix->height & ~1; sel->r.height = pix->height & ~1;
break;
omap_vout_default_crop(&vout->pix, &vout->fbuf, &cropcap->defrect); default:
cropcap->pixelaspect.numerator = 1;
cropcap->pixelaspect.denominator = 1;
return 0;
}
static int vidioc_g_crop(struct file *file, void *fh, struct v4l2_crop *crop)
{
struct omap_vout_device *vout = fh;
if (crop->type != V4L2_BUF_TYPE_VIDEO_OUTPUT)
return -EINVAL; return -EINVAL;
crop->c = vout->crop; }
return 0; return 0;
} }
static int vidioc_s_crop(struct file *file, void *fh, const struct v4l2_crop *crop) static int vidioc_s_selection(struct file *file, void *fh, struct v4l2_selection *sel)
{ {
int ret = -EINVAL; int ret = -EINVAL;
struct omap_vout_device *vout = fh; struct omap_vout_device *vout = fh;
...@@ -1285,6 +1282,12 @@ static int vidioc_s_crop(struct file *file, void *fh, const struct v4l2_crop *cr ...@@ -1285,6 +1282,12 @@ static int vidioc_s_crop(struct file *file, void *fh, const struct v4l2_crop *cr
struct omap_video_timings *timing; struct omap_video_timings *timing;
struct omap_dss_device *dssdev; struct omap_dss_device *dssdev;
if (sel->type != V4L2_BUF_TYPE_VIDEO_OUTPUT)
return -EINVAL;
if (sel->target != V4L2_SEL_TGT_CROP)
return -EINVAL;
if (vout->streaming) if (vout->streaming)
return -EBUSY; return -EBUSY;
...@@ -1309,9 +1312,8 @@ static int vidioc_s_crop(struct file *file, void *fh, const struct v4l2_crop *cr ...@@ -1309,9 +1312,8 @@ static int vidioc_s_crop(struct file *file, void *fh, const struct v4l2_crop *cr
vout->fbuf.fmt.width = timing->x_res; vout->fbuf.fmt.width = timing->x_res;
} }
if (crop->type == V4L2_BUF_TYPE_VIDEO_OUTPUT)
ret = omap_vout_new_crop(&vout->pix, &vout->crop, &vout->win, ret = omap_vout_new_crop(&vout->pix, &vout->crop, &vout->win,
&vout->fbuf, &crop->c); &vout->fbuf, &sel->r);
s_crop_err: s_crop_err:
mutex_unlock(&vout->lock); mutex_unlock(&vout->lock);
...@@ -1780,9 +1782,8 @@ static const struct v4l2_ioctl_ops vout_ioctl_ops = { ...@@ -1780,9 +1782,8 @@ static const struct v4l2_ioctl_ops vout_ioctl_ops = {
.vidioc_try_fmt_vid_out_overlay = vidioc_try_fmt_vid_overlay, .vidioc_try_fmt_vid_out_overlay = vidioc_try_fmt_vid_overlay,
.vidioc_s_fmt_vid_out_overlay = vidioc_s_fmt_vid_overlay, .vidioc_s_fmt_vid_out_overlay = vidioc_s_fmt_vid_overlay,
.vidioc_g_fmt_vid_out_overlay = vidioc_g_fmt_vid_overlay, .vidioc_g_fmt_vid_out_overlay = vidioc_g_fmt_vid_overlay,
.vidioc_cropcap = vidioc_cropcap, .vidioc_g_selection = vidioc_g_selection,
.vidioc_g_crop = vidioc_g_crop, .vidioc_s_selection = vidioc_s_selection,
.vidioc_s_crop = vidioc_s_crop,
.vidioc_reqbufs = vidioc_reqbufs, .vidioc_reqbufs = vidioc_reqbufs,
.vidioc_querybuf = vidioc_querybuf, .vidioc_querybuf = vidioc_querybuf,
.vidioc_qbuf = vidioc_qbuf, .vidioc_qbuf = vidioc_qbuf,
......
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