[media] em28xx: add function scale_to_size()

Signed-off-by: Frank Schäfer <fschaefer.oss@googlemail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
This commit is contained in:
Frank Schaefer 2013-02-10 16:05:13 -03:00 committed by Mauro Carvalho Chehab
parent 6b09a21cbc
commit b837413835
1 changed files with 12 additions and 3 deletions

View File

@ -815,6 +815,17 @@ static void size_to_scale(struct em28xx *dev,
*vscale = EM28XX_HVSCALE_MAX;
}
static void scale_to_size(struct em28xx *dev,
unsigned int hscale, unsigned int vscale,
unsigned int *width, unsigned int *height)
{
unsigned int maxw = norm_maxw(dev);
unsigned int maxh = norm_maxh(dev);
*width = (((unsigned long)maxw) << 12) / (hscale + 4096L);
*height = (((unsigned long)maxh) << 12) / (vscale + 4096L);
}
/* ------------------------------------------------------------------
IOCTL vidioc handling
------------------------------------------------------------------*/
@ -890,9 +901,7 @@ static int vidioc_try_fmt_vid_cap(struct file *file, void *priv,
}
size_to_scale(dev, width, height, &hscale, &vscale);
width = (((unsigned long)maxw) << 12) / (hscale + 4096L);
height = (((unsigned long)maxh) << 12) / (vscale + 4096L);
scale_to_size(dev, hscale, hscale, &width, &height);
f->fmt.pix.width = width;
f->fmt.pix.height = height;