Skip to content

Commit

Permalink
[media] stk1160: Fix s_fmt and try_fmt implementation
Browse files Browse the repository at this point in the history
The driver was expecting to get a valid pixelformat on s_fmt and try_fmt.
This is wrong, since the user may pass a bitmask and expect the driver
to change it, returning a valid (fourcc) pixelformat.
This problem was spotted by v4l2-compliance.

Signed-off-by: Ezequiel Garcia <elezegarcia@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
  • Loading branch information
ezequielgarcia authored and Mauro Carvalho Chehab committed Sep 25, 2012
1 parent 0657418 commit c6b69c6
Showing 1 changed file with 2 additions and 10 deletions.
12 changes: 2 additions & 10 deletions drivers/media/usb/stk1160/stk1160-v4l.c
Original file line number Diff line number Diff line change
Expand Up @@ -318,19 +318,14 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void *priv,
{
struct stk1160 *dev = video_drvdata(file);

if (f->fmt.pix.pixelformat != format[0].fourcc) {
stk1160_err("fourcc format 0x%08x invalid\n",
f->fmt.pix.pixelformat);
return -EINVAL;
}

/*
* User can't choose size at his own will,
* so we just return him the current size chosen
* at standard selection.
* TODO: Implement frame scaling?
*/

f->fmt.pix.pixelformat = dev->fmt->fourcc;
f->fmt.pix.width = dev->width;
f->fmt.pix.height = dev->height;
f->fmt.pix.field = V4L2_FIELD_INTERLACED;
Expand All @@ -346,14 +341,11 @@ static int vidioc_s_fmt_vid_cap(struct file *file, void *priv,
{
struct stk1160 *dev = video_drvdata(file);
struct vb2_queue *q = &dev->vb_vidq;
int rc;

if (vb2_is_busy(q))
return -EBUSY;

rc = vidioc_try_fmt_vid_cap(file, priv, f);
if (rc < 0)
return rc;
vidioc_try_fmt_vid_cap(file, priv, f);

/* We don't support any format changes */

Expand Down

0 comments on commit c6b69c6

Please sign in to comment.