From cb0adbe053d327f034ba25eda3a820106cdb9f0f Mon Sep 17 00:00:00 2001 From: Mauro Carvalho Chehab Date: Thu, 14 Sep 2006 13:36:34 -0300 Subject: [PATCH] --- yaml --- r: 37483 b: refs/heads/master c: 1c2d034e3c0ce4c1c89f1636a9f4aa7615cc7474 h: refs/heads/master i: 37481: 2e711827df4cf9bcc51c5dc669a0b6e990046e9e 37479: 7a2a40d6cc3dd79a6886aaf33af60f29ccb390ff v: v3 --- [refs] | 2 +- trunk/drivers/media/video/videodev.c | 26 +++++++++++++++++++++++--- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/[refs] b/[refs] index ea16cee8de3a..a22bd8258f04 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 3d265c96ccb8f72153b4e926053a79e1a52bf264 +refs/heads/master: 1c2d034e3c0ce4c1c89f1636a9f4aa7615cc7474 diff --git a/trunk/drivers/media/video/videodev.c b/trunk/drivers/media/video/videodev.c index 26e7ea252a0e..479a0675cf60 100644 --- a/trunk/drivers/media/video/videodev.c +++ b/trunk/drivers/media/video/videodev.c @@ -1283,9 +1283,29 @@ static int __video_do_ioctl(struct inode *inode, struct file *file, case VIDIOC_G_PARM: { struct v4l2_streamparm *p=arg; - if (!vfd->vidioc_g_parm) - break; - ret=vfd->vidioc_g_parm(file, fh, p); + if (vfd->vidioc_g_parm) { + ret=vfd->vidioc_g_parm(file, fh, p); + } else { + struct v4l2_standard s; + + if (!vfd->tvnormsize) { + printk (KERN_WARNING "%s: no TV norms defined!\n", + vfd->name); + break; + } + + if (p->type != V4L2_BUF_TYPE_VIDEO_CAPTURE) + return -EINVAL; + + v4l2_video_std_construct(&s, vfd->tvnorms[vfd->current_norm].id, + vfd->tvnorms[vfd->current_norm].name); + + memset(p,0,sizeof(*p)); + + p->parm.capture.timeperframe = s.frameperiod; + ret=0; + } + dbgarg (cmd, "type=%d\n", p->type); break; }