forked from Minki/linux
V4L/DVB (11661): v4l2-ioctl: Check buffer types using g_fmt instead of try_fmt
For a number of different ioctls, the v4l2-ioctl code checks that the passed buffer type is supported by the driver. It did this by checking that the driver defined a method for the try_fmt handler for that buffer type. However, try_fmt is optional and a driver might not provide it even though it does support that type. So use g_fmt instead, since that isn't optional. This should fix a problem with VBI capture with saa7146. Signed-off-by: Trent Piepho <xyzzy@speakeasy.org> Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
parent
171f48e254
commit
1175d6131f
@ -544,39 +544,39 @@ static int check_fmt(const struct v4l2_ioctl_ops *ops, enum v4l2_buf_type type)
|
||||
|
||||
switch (type) {
|
||||
case V4L2_BUF_TYPE_VIDEO_CAPTURE:
|
||||
if (ops->vidioc_try_fmt_vid_cap)
|
||||
if (ops->vidioc_g_fmt_vid_cap)
|
||||
return 0;
|
||||
break;
|
||||
case V4L2_BUF_TYPE_VIDEO_OVERLAY:
|
||||
if (ops->vidioc_try_fmt_vid_overlay)
|
||||
if (ops->vidioc_g_fmt_vid_overlay)
|
||||
return 0;
|
||||
break;
|
||||
case V4L2_BUF_TYPE_VIDEO_OUTPUT:
|
||||
if (ops->vidioc_try_fmt_vid_out)
|
||||
if (ops->vidioc_g_fmt_vid_out)
|
||||
return 0;
|
||||
break;
|
||||
case V4L2_BUF_TYPE_VIDEO_OUTPUT_OVERLAY:
|
||||
if (ops->vidioc_try_fmt_vid_out_overlay)
|
||||
if (ops->vidioc_g_fmt_vid_out_overlay)
|
||||
return 0;
|
||||
break;
|
||||
case V4L2_BUF_TYPE_VBI_CAPTURE:
|
||||
if (ops->vidioc_try_fmt_vbi_cap)
|
||||
if (ops->vidioc_g_fmt_vbi_cap)
|
||||
return 0;
|
||||
break;
|
||||
case V4L2_BUF_TYPE_VBI_OUTPUT:
|
||||
if (ops->vidioc_try_fmt_vbi_out)
|
||||
if (ops->vidioc_g_fmt_vbi_out)
|
||||
return 0;
|
||||
break;
|
||||
case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
|
||||
if (ops->vidioc_try_fmt_sliced_vbi_cap)
|
||||
if (ops->vidioc_g_fmt_sliced_vbi_cap)
|
||||
return 0;
|
||||
break;
|
||||
case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT:
|
||||
if (ops->vidioc_try_fmt_sliced_vbi_out)
|
||||
if (ops->vidioc_g_fmt_sliced_vbi_out)
|
||||
return 0;
|
||||
break;
|
||||
case V4L2_BUF_TYPE_PRIVATE:
|
||||
if (ops->vidioc_try_fmt_type_private)
|
||||
if (ops->vidioc_g_fmt_type_private)
|
||||
return 0;
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user