stkwebcam: Implement VIDIOC_ENUM_FRAMESIZES ioctl
PATCH 1/1 stkwebcam: Implement VIDIOC_ENUM_FRAMESIZES ioctl
It is used at least by gstreamer.
--- drivers/media/video/stk-webcam.c | 29 +++++++++++++++++++++++++++++ 1 files changed, 29 insertions(+), 0 deletions(-)
drivers/media/video/stk-webcam.c +29 -0
@@ -1262,6 +1262,34 @@ static int stk_vidioc_g_parm(struct file *filp,return 0 ; } +static int stk_vidioc_enum_framesizes (struct file *filp, +void *priv,struct v4l2_frmsizeenum *frms) +{ +if (frms->index >=ARRAY_SIZE (stk_sizes)) +return -EINVAL ; +switch (frms->pixel_format) { +case V4L2_PIX_FMT_RGB565 : +case V4L2_PIX_FMT_RGB565X : +case V4L2_PIX_FMT_UYVY : +case V4L2_PIX_FMT_YUYV : +case V4L2_PIX_FMT_SBGGR8 : + frms->type =V4L2_FRMSIZE_TYPE_DISCRETE ; + frms->discrete.width = stk_sizes[frms->index].w; + frms->discrete.height = stk_sizes[frms->index].h; +return 0 ; +default :return -EINVAL ; + } +} + +static int stk_vidioc_default (struct file *filp, +void *priv,int cmd,void *arg) +{ +if (cmd == (int )VIDIOC_ENUM_FRAMESIZES ) +return stk_vidioc_enum_framesizes (filp, priv, + (struct v4l2_frmsizeenum *) arg); +return -EINVAL ; +} +static struct file_operations v4l_stk_fops = { .owner =THIS_MODULE , .open = v4l_stk_open,
@@ -1296,6 +1324,7 @@ static const struct v4l2_ioctl_ops v4l_stk_ioctl_ops = { .vidioc_g_ctrl = stk_vidioc_g_ctrl, .vidioc_s_ctrl = stk_vidioc_s_ctrl, .vidioc_g_parm = stk_vidioc_g_parm, + .vidioc_default = stk_vidioc_default, };static void stk_v4l_dev_release (struct video_device *vd)
Signature · 6 lines
1.5.6.5 -- video4linux-list mailing list Unsubscribe mailto:[email protected]?subject=unsubscribe https://www.redhat.com/mailman/listinfo/video4linux-list
Quoted 1 line · On Monday 08 December 2008 19:10:26 Jaime Velasco Juan wrote:
It is used at least by gstreamer.
Thanks Jaime!
But can you redo this against the v4l-dvb repository? (www.linuxtv.org/hg/v4l-dvb)
That already contains a proper v4l2_ioctl_ops function for this enum_framesizes ioctl. That way you do not need to use vidioc_default.
Thanks,
Hans
Quoted 53 lines
Signed-off-by Jaime Velasco Juan <[email protected]>--- drivers/media/video/stk-webcam.c | 29+++++++++++++++++++++++++++++ 1 files changed, 29 insertions(+), 0 deletions(-)
(quoted diff) +0
-0
b/drivers/media/video/stk-webcam.cindex e9eb6d7..4afa82f 100644drivers/media/video/stk-webcam.c +29
-0@@ -1262,6 +1262,34 @@ static int stk_vidioc_g_parm(struct file *filp, return 0; } +static int stk_vidioc_enum_framesizes (struct file *filp, +void *priv,struct v4l2_frmsizeenum *frms) +{ +if (frms->index >=ARRAY_SIZE (stk_sizes)) +return -EINVAL ; +switch (frms->pixel_format) { +case V4L2_PIX_FMT_RGB565 : +case V4L2_PIX_FMT_RGB565X : +case V4L2_PIX_FMT_UYVY : +case V4L2_PIX_FMT_YUYV : +case V4L2_PIX_FMT_SBGGR8 : + frms->type =V4L2_FRMSIZE_TYPE_DISCRETE ; + frms->discrete.width = stk_sizes[frms->index].w; + frms->discrete.height = stk_sizes[frms->index].h; +return 0 ; +default :return -EINVAL ; + } +} + +static int stk_vidioc_default (struct file *filp, +void *priv,int cmd,void *arg) +{ +if (cmd == (int )VIDIOC_ENUM_FRAMESIZES ) +return stk_vidioc_enum_framesizes (filp, priv, + (struct v4l2_frmsizeenum *) arg); +return -EINVAL ; +} +static struct file_operations v4l_stk_fops = { .owner =THIS_MODULE , .open = v4l_stk_open,@@ -1296,6 +1324,7 @@ static const struct v4l2_ioctl_ops v4l_stk_ioctl_ops = { .vidioc_g_ctrl = stk_vidioc_g_ctrl, .vidioc_s_ctrl = stk_vidioc_s_ctrl, .vidioc_g_parm = stk_vidioc_g_parm, + .vidioc_default = stk_vidioc_default, };static void stk_v4l_dev_release (struct video_device *vd)
Signature · 6 lines
Hans Verkuil - video4linux developer - sponsored by TANDBERG -- video4linux-list mailing list Unsubscribe mailto:[email protected]?subject=unsubscribe https://www.redhat.com/mailman/listinfo/video4linux-list
PATCH v2 1/1 stkwebcam: Implement VIDIOC_ENUM_FRAMESIZES ioctl
It is used at least by gstreamer.
--- drivers/media/video/stk-webcam.c | 20 ++++++++++++++++++++ 1 files changed, 20 insertions(+), 0 deletions(-)
Here is a new version of the patch using the vidioc_enum_framesizes callback. Thanks for your comments, Hans.
Regards
drivers/media/video/stk-webcam.c +20 -0
@@ -1262,6 +1262,25 @@ static int stk_vidioc_g_parm(struct file *filp,return 0 ; } +static int stk_vidioc_enum_framesizes (struct file *filp, +void *priv,struct v4l2_frmsizeenum *frms) +{ +if (frms->index >=ARRAY_SIZE (stk_sizes)) +return -EINVAL ; +switch (frms->pixel_format) { +case V4L2_PIX_FMT_RGB565 : +case V4L2_PIX_FMT_RGB565X : +case V4L2_PIX_FMT_UYVY : +case V4L2_PIX_FMT_YUYV : +case V4L2_PIX_FMT_SBGGR8 : + frms->type =V4L2_FRMSIZE_TYPE_DISCRETE ; + frms->discrete.width = stk_sizes[frms->index].w; + frms->discrete.height = stk_sizes[frms->index].h; +return 0 ; +default :return -EINVAL ; + } +} +static struct file_operations v4l_stk_fops = { .owner =THIS_MODULE , .open = v4l_stk_open,
@@ -1296,6 +1315,7 @@ static const struct v4l2_ioctl_ops v4l_stk_ioctl_ops = { .vidioc_g_ctrl = stk_vidioc_g_ctrl, .vidioc_s_ctrl = stk_vidioc_s_ctrl, .vidioc_g_parm = stk_vidioc_g_parm, + .vidioc_enum_framesizes = stk_vidioc_enum_framesizes, };static void stk_v4l_dev_release (struct video_device *vd)
Signature · 7 lines
1.5.6.5 -- video4linux-list mailing list Unsubscribe mailto:[email protected]?subject=unsubscribe https://www.redhat.com/mailman/listinfo/video4linux-list
PATCH RESEND v2 1/1 stkwebcam: Implement VIDIOC_ENUM_FRAMESIZES ioctl
This patch implements VIDIOC_ENUM_FRAMESIZES, it is used at least by gstreamer.
--- drivers/media/video/stk-webcam.c | 20 ++++++++++++++++++++ 1 files changed, 20 insertions(+), 0 deletions(-)
Hi Mauro, could you please apply this patch?
Regards
drivers/media/video/stk-webcam.c +20 -0
@@ -1262,6 +1262,25 @@ static int stk_vidioc_g_parm(struct file *filp,return 0 ; } +static int stk_vidioc_enum_framesizes (struct file *filp, +void *priv,struct v4l2_frmsizeenum *frms) +{ +if (frms->index >=ARRAY_SIZE (stk_sizes)) +return -EINVAL ; +switch (frms->pixel_format) { +case V4L2_PIX_FMT_RGB565 : +case V4L2_PIX_FMT_RGB565X : +case V4L2_PIX_FMT_UYVY : +case V4L2_PIX_FMT_YUYV : +case V4L2_PIX_FMT_SBGGR8 : + frms->type =V4L2_FRMSIZE_TYPE_DISCRETE ; + frms->discrete.width = stk_sizes[frms->index].w; + frms->discrete.height = stk_sizes[frms->index].h; +return 0 ; +default :return -EINVAL ; + } +} +static struct file_operations v4l_stk_fops = { .owner =THIS_MODULE , .open = v4l_stk_open,
@@ -1296,6 +1315,7 @@ static const struct v4l2_ioctl_ops v4l_stk_ioctl_ops = { .vidioc_g_ctrl = stk_vidioc_g_ctrl, .vidioc_s_ctrl = stk_vidioc_s_ctrl, .vidioc_g_parm = stk_vidioc_g_parm, + .vidioc_enum_framesizes = stk_vidioc_enum_framesizes, };static void stk_v4l_dev_release (struct video_device *vd)
Signature · 7 lines
1.5.6.5 -- video4linux-list mailing list Unsubscribe mailto:[email protected]?subject=unsubscribe https://www.redhat.com/mailman/listinfo/video4linux-list