V4L/DVB (7948): videodev: add missing vidioc_try_fmt_sliced_vbi_output and VIDIOC_ENUMOUTPUT handling
There was no vidioc_try_fmt_sliced_vbi_output, instead vidioc_try_fmt_vbi_output was reused. The VIDIOC_ENUMOUTPUT handling was missing altogether, even though the callback existed. Signed-off-by: Hans Verkuil <hverkuil@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab@infradead.org>
This commit is contained in:
Родитель
b2de2313f1
Коммит
0e3bd2b999
|
@ -840,8 +840,8 @@ static int __video_do_ioctl(struct inode *inode, struct file *file,
|
|||
ret=vfd->vidioc_enum_fmt_vbi(file, fh, f);
|
||||
break;
|
||||
case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT:
|
||||
if (vfd->vidioc_enum_fmt_vbi_output)
|
||||
ret=vfd->vidioc_enum_fmt_vbi_output(file,
|
||||
if (vfd->vidioc_enum_fmt_sliced_vbi_output)
|
||||
ret = vfd->vidioc_enum_fmt_sliced_vbi_output(file,
|
||||
fh, f);
|
||||
break;
|
||||
case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
|
||||
|
@ -905,8 +905,8 @@ static int __video_do_ioctl(struct inode *inode, struct file *file,
|
|||
ret=vfd->vidioc_g_fmt_vbi(file, fh, f);
|
||||
break;
|
||||
case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT:
|
||||
if (vfd->vidioc_g_fmt_vbi_output)
|
||||
ret=vfd->vidioc_g_fmt_vbi_output(file, fh, f);
|
||||
if (vfd->vidioc_g_fmt_sliced_vbi_output)
|
||||
ret = vfd->vidioc_g_fmt_sliced_vbi_output(file, fh, f);
|
||||
break;
|
||||
case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
|
||||
if (vfd->vidioc_g_fmt_vbi_capture)
|
||||
|
@ -957,8 +957,8 @@ static int __video_do_ioctl(struct inode *inode, struct file *file,
|
|||
ret=vfd->vidioc_s_fmt_vbi(file, fh, f);
|
||||
break;
|
||||
case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT:
|
||||
if (vfd->vidioc_s_fmt_vbi_output)
|
||||
ret=vfd->vidioc_s_fmt_vbi_output(file, fh, f);
|
||||
if (vfd->vidioc_s_fmt_sliced_vbi_output)
|
||||
ret = vfd->vidioc_s_fmt_sliced_vbi_output(file, fh, f);
|
||||
break;
|
||||
case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
|
||||
if (vfd->vidioc_s_fmt_vbi_capture)
|
||||
|
@ -1009,8 +1009,8 @@ static int __video_do_ioctl(struct inode *inode, struct file *file,
|
|||
ret=vfd->vidioc_try_fmt_vbi(file, fh, f);
|
||||
break;
|
||||
case V4L2_BUF_TYPE_SLICED_VBI_OUTPUT:
|
||||
if (vfd->vidioc_try_fmt_vbi_output)
|
||||
ret=vfd->vidioc_try_fmt_vbi_output(file,
|
||||
if (vfd->vidioc_try_fmt_sliced_vbi_output)
|
||||
ret = vfd->vidioc_try_fmt_sliced_vbi_output(file,
|
||||
fh, f);
|
||||
break;
|
||||
case V4L2_BUF_TYPE_SLICED_VBI_CAPTURE:
|
||||
|
@ -1297,6 +1297,25 @@ static int __video_do_ioctl(struct inode *inode, struct file *file,
|
|||
}
|
||||
|
||||
/* ------ output switching ---------- */
|
||||
case VIDIOC_ENUMOUTPUT:
|
||||
{
|
||||
struct v4l2_output *p = arg;
|
||||
int i = p->index;
|
||||
|
||||
if (!vfd->vidioc_enum_output)
|
||||
break;
|
||||
memset(p, 0, sizeof(*p));
|
||||
p->index = i;
|
||||
|
||||
ret = vfd->vidioc_enum_output(file, fh, p);
|
||||
if (!ret)
|
||||
dbgarg(cmd, "index=%d, name=%s, type=%d, "
|
||||
"audioset=%d, "
|
||||
"modulator=%d, std=%08Lx\n",
|
||||
p->index, p->name, p->type, p->audioset,
|
||||
p->modulator, (unsigned long long)p->std);
|
||||
break;
|
||||
}
|
||||
case VIDIOC_G_OUTPUT:
|
||||
{
|
||||
unsigned int *i = arg;
|
||||
|
|
|
@ -132,6 +132,8 @@ struct video_device
|
|||
struct v4l2_fmtdesc *f);
|
||||
int (*vidioc_enum_fmt_vbi_output) (struct file *file, void *fh,
|
||||
struct v4l2_fmtdesc *f);
|
||||
int (*vidioc_enum_fmt_sliced_vbi_output) (struct file *file, void *fh,
|
||||
struct v4l2_fmtdesc *f);
|
||||
int (*vidioc_enum_fmt_type_private)(struct file *file, void *fh,
|
||||
struct v4l2_fmtdesc *f);
|
||||
|
||||
|
@ -144,6 +146,8 @@ struct video_device
|
|||
struct v4l2_format *f);
|
||||
int (*vidioc_g_fmt_vbi_output) (struct file *file, void *fh,
|
||||
struct v4l2_format *f);
|
||||
int (*vidioc_g_fmt_sliced_vbi_output) (struct file *file, void *fh,
|
||||
struct v4l2_format *f);
|
||||
int (*vidioc_g_fmt_vbi_capture)(struct file *file, void *fh,
|
||||
struct v4l2_format *f);
|
||||
int (*vidioc_g_fmt_video_output)(struct file *file, void *fh,
|
||||
|
@ -163,6 +167,8 @@ struct video_device
|
|||
struct v4l2_format *f);
|
||||
int (*vidioc_s_fmt_vbi_output) (struct file *file, void *fh,
|
||||
struct v4l2_format *f);
|
||||
int (*vidioc_s_fmt_sliced_vbi_output) (struct file *file, void *fh,
|
||||
struct v4l2_format *f);
|
||||
int (*vidioc_s_fmt_vbi_capture)(struct file *file, void *fh,
|
||||
struct v4l2_format *f);
|
||||
int (*vidioc_s_fmt_video_output)(struct file *file, void *fh,
|
||||
|
@ -181,6 +187,8 @@ struct video_device
|
|||
struct v4l2_format *f);
|
||||
int (*vidioc_try_fmt_vbi_output) (struct file *file, void *fh,
|
||||
struct v4l2_format *f);
|
||||
int (*vidioc_try_fmt_sliced_vbi_output) (struct file *file, void *fh,
|
||||
struct v4l2_format *f);
|
||||
int (*vidioc_try_fmt_vbi_capture)(struct file *file, void *fh,
|
||||
struct v4l2_format *f);
|
||||
int (*vidioc_try_fmt_video_output)(struct file *file, void *fh,
|
||||
|
@ -225,7 +233,7 @@ struct video_device
|
|||
int (*vidioc_s_input) (struct file *file, void *fh, unsigned int i);
|
||||
|
||||
/* Output handling */
|
||||
int (*vidioc_enumoutput) (struct file *file, void *fh,
|
||||
int (*vidioc_enum_output) (struct file *file, void *fh,
|
||||
struct v4l2_output *a);
|
||||
int (*vidioc_g_output) (struct file *file, void *fh, unsigned int *i);
|
||||
int (*vidioc_s_output) (struct file *file, void *fh, unsigned int i);
|
||||
|
|
Загрузка…
Ссылка в новой задаче