[media] saa7134: Fix bytesperline not being set correctly for planar formats
bytesperline should be the bytesperline for the first plane for planar formats, not that of all planes combined. This fixes a crash in xawtv caused by the wrong bpl. BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1305389 Reported-and-tested-by: Stas Sergeev <stsp@list.ru> Cc: stable@vger.kernel.org Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
This commit is contained in:
parent
8344622781
commit
3e71da19f9
|
@ -1279,10 +1279,13 @@ static int saa7134_g_fmt_vid_cap(struct file *file, void *priv,
|
|||
f->fmt.pix.height = dev->height;
|
||||
f->fmt.pix.field = dev->field;
|
||||
f->fmt.pix.pixelformat = dev->fmt->fourcc;
|
||||
f->fmt.pix.bytesperline =
|
||||
(f->fmt.pix.width * dev->fmt->depth) >> 3;
|
||||
if (dev->fmt->planar)
|
||||
f->fmt.pix.bytesperline = f->fmt.pix.width;
|
||||
else
|
||||
f->fmt.pix.bytesperline =
|
||||
(f->fmt.pix.width * dev->fmt->depth) / 8;
|
||||
f->fmt.pix.sizeimage =
|
||||
f->fmt.pix.height * f->fmt.pix.bytesperline;
|
||||
(f->fmt.pix.height * f->fmt.pix.width * dev->fmt->depth) / 8;
|
||||
f->fmt.pix.colorspace = V4L2_COLORSPACE_SMPTE170M;
|
||||
return 0;
|
||||
}
|
||||
|
@ -1358,10 +1361,13 @@ static int saa7134_try_fmt_vid_cap(struct file *file, void *priv,
|
|||
if (f->fmt.pix.height > maxh)
|
||||
f->fmt.pix.height = maxh;
|
||||
f->fmt.pix.width &= ~0x03;
|
||||
f->fmt.pix.bytesperline =
|
||||
(f->fmt.pix.width * fmt->depth) >> 3;
|
||||
if (fmt->planar)
|
||||
f->fmt.pix.bytesperline = f->fmt.pix.width;
|
||||
else
|
||||
f->fmt.pix.bytesperline =
|
||||
(f->fmt.pix.width * fmt->depth) / 8;
|
||||
f->fmt.pix.sizeimage =
|
||||
f->fmt.pix.height * f->fmt.pix.bytesperline;
|
||||
(f->fmt.pix.height * f->fmt.pix.width * fmt->depth) / 8;
|
||||
f->fmt.pix.colorspace = V4L2_COLORSPACE_SMPTE170M;
|
||||
|
||||
return 0;
|
||||
|
|
Loading…
Reference in a new issue