diff options
author | Hans de Goede <hdegoede@redhat.com> | 2009-05-25 14:04:22 -0400 |
---|---|---|
committer | Mauro Carvalho Chehab <mchehab@redhat.com> | 2009-06-16 18:14:44 -0400 |
commit | 11c635a25b9f3a5d87409ce46cf2e05c500251ec (patch) | |
tree | 2286b86dbb27d52c5696f61cd3143834bfe95546 | |
parent | 9fd6418a6a7655b69cfa0ae27a3639a6d0b2924f (diff) |
V4L/DVB (11870): gspca - main: VIDIOC_ENUM_FRAMESIZES ioctl added.
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Jean-Francois Moine <moinejf@free.fr>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
-rw-r--r-- | drivers/media/video/gspca/gspca.c | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/drivers/media/video/gspca/gspca.c b/drivers/media/video/gspca/gspca.c index f1108f1be837..f7e0355ad644 100644 --- a/drivers/media/video/gspca/gspca.c +++ b/drivers/media/video/gspca/gspca.c | |||
@@ -863,6 +863,32 @@ out: | |||
863 | return ret; | 863 | return ret; |
864 | } | 864 | } |
865 | 865 | ||
866 | static int vidioc_enum_framesizes(struct file *file, void *priv, | ||
867 | struct v4l2_frmsizeenum *fsize) | ||
868 | { | ||
869 | struct gspca_dev *gspca_dev = priv; | ||
870 | int i; | ||
871 | __u32 index = 0; | ||
872 | |||
873 | for (i = 0; i < gspca_dev->cam.nmodes; i++) { | ||
874 | if (fsize->pixel_format != | ||
875 | gspca_dev->cam.cam_mode[i].pixelformat) | ||
876 | continue; | ||
877 | |||
878 | if (fsize->index == index) { | ||
879 | fsize->type = V4L2_FRMSIZE_TYPE_DISCRETE; | ||
880 | fsize->discrete.width = | ||
881 | gspca_dev->cam.cam_mode[i].width; | ||
882 | fsize->discrete.height = | ||
883 | gspca_dev->cam.cam_mode[i].height; | ||
884 | return 0; | ||
885 | } | ||
886 | index++; | ||
887 | } | ||
888 | |||
889 | return -EINVAL; | ||
890 | } | ||
891 | |||
866 | static void gspca_release(struct video_device *vfd) | 892 | static void gspca_release(struct video_device *vfd) |
867 | { | 893 | { |
868 | struct gspca_dev *gspca_dev = container_of(vfd, struct gspca_dev, vdev); | 894 | struct gspca_dev *gspca_dev = container_of(vfd, struct gspca_dev, vdev); |
@@ -1858,6 +1884,7 @@ static const struct v4l2_ioctl_ops dev_ioctl_ops = { | |||
1858 | .vidioc_g_parm = vidioc_g_parm, | 1884 | .vidioc_g_parm = vidioc_g_parm, |
1859 | .vidioc_s_parm = vidioc_s_parm, | 1885 | .vidioc_s_parm = vidioc_s_parm, |
1860 | .vidioc_s_std = vidioc_s_std, | 1886 | .vidioc_s_std = vidioc_s_std, |
1887 | .vidioc_enum_framesizes = vidioc_enum_framesizes, | ||
1861 | #ifdef CONFIG_VIDEO_V4L1_COMPAT | 1888 | #ifdef CONFIG_VIDEO_V4L1_COMPAT |
1862 | .vidiocgmbuf = vidiocgmbuf, | 1889 | .vidiocgmbuf = vidiocgmbuf, |
1863 | #endif | 1890 | #endif |