V4L/DVB (10851): cx18: Fix a video scaling check problem introduced by sliced VBI...
authorAndy Walls <awalls@radix.net>
Sat, 28 Feb 2009 17:51:47 +0000 (14:51 -0300)
committerMauro Carvalho Chehab <mchehab@redhat.com>
Mon, 30 Mar 2009 15:43:09 +0000 (12:43 -0300)
Fix a scaling check that was failing, due to a magic number I missed fixing
during previous slice VBI changes.  Now

  $ v4l2-ctl -v width=480,height=480,pixelformat=MPEG

yields proper visual results again.

Signed-off-by: Andy Walls <awalls@radix.net>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
drivers/media/video/cx18/cx18-av-core.c

index cf256a999bd4272b0f0578b837e9a08af66649b8..aeeb3cfa3390a6082bd24588dfc2225162d00326 100644 (file)
@@ -867,8 +867,22 @@ static int cx18_av_s_fmt(struct v4l2_subdev *sd, struct v4l2_format *fmt)
                Hsrc = (cx18_av_read(cx, 0x472) & 0x3f) << 4;
                Hsrc |= (cx18_av_read(cx, 0x471) & 0xf0) >> 4;
 
-               Vlines = pix->height + (is_50Hz ? 4 : 7);
+               /*
+                * This adjustment reflects the excess of vactive, set in
+                * cx18_av_std_setup(), above standard values:
+                *
+                * 480 + 1 for 60 Hz systems
+                * 576 + 4 for 50 Hz systems
+                */
+               Vlines = pix->height + (is_50Hz ? 4 : 1);
 
+               /*
+                * Invalid height and width scaling requests are:
+                * 1. width less than 1/16 of the source width
+                * 2. width greater than the source width
+                * 3. height less than 1/8 of the source height
+                * 4. height greater than the source height
+                */
                if ((pix->width * 16 < Hsrc) || (Hsrc < pix->width) ||
                    (Vlines * 8 < Vsrc) || (Vsrc < Vlines)) {
                        CX18_ERR_DEV(sd, "%dx%d is not a valid size!\n",