[PATCH] V4L: Bttv bytes per line fix
bttv bytes per line fix. Signed-off-by: Michael H. Schimek <mschimek@gmx.at> Signed-off-by: Nickolay V. Shmyrev <nshmyrev@yandex.ru> Signed-off-by: Mauro Carvalho Chehab <mchehab@brturbo.com.br> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
parent
50ab5edc97
commit
c87c948ebd
|
@ -2029,19 +2029,33 @@ static int bttv_switch_type(struct bttv_fh *fh, enum v4l2_buf_type type)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
pix_format_set_size (struct v4l2_pix_format * f,
|
||||||
|
const struct bttv_format * fmt,
|
||||||
|
unsigned int width,
|
||||||
|
unsigned int height)
|
||||||
|
{
|
||||||
|
f->width = width;
|
||||||
|
f->height = height;
|
||||||
|
|
||||||
|
if (fmt->flags & FORMAT_FLAGS_PLANAR) {
|
||||||
|
f->bytesperline = width; /* Y plane */
|
||||||
|
f->sizeimage = (width * height * fmt->depth) >> 3;
|
||||||
|
} else {
|
||||||
|
f->bytesperline = (width * fmt->depth) >> 3;
|
||||||
|
f->sizeimage = height * f->bytesperline;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static int bttv_g_fmt(struct bttv_fh *fh, struct v4l2_format *f)
|
static int bttv_g_fmt(struct bttv_fh *fh, struct v4l2_format *f)
|
||||||
{
|
{
|
||||||
switch (f->type) {
|
switch (f->type) {
|
||||||
case V4L2_BUF_TYPE_VIDEO_CAPTURE:
|
case V4L2_BUF_TYPE_VIDEO_CAPTURE:
|
||||||
memset(&f->fmt.pix,0,sizeof(struct v4l2_pix_format));
|
memset(&f->fmt.pix,0,sizeof(struct v4l2_pix_format));
|
||||||
f->fmt.pix.width = fh->width;
|
pix_format_set_size (&f->fmt.pix, fh->fmt,
|
||||||
f->fmt.pix.height = fh->height;
|
fh->width, fh->height);
|
||||||
f->fmt.pix.field = fh->cap.field;
|
f->fmt.pix.field = fh->cap.field;
|
||||||
f->fmt.pix.pixelformat = fh->fmt->fourcc;
|
f->fmt.pix.pixelformat = fh->fmt->fourcc;
|
||||||
f->fmt.pix.bytesperline =
|
|
||||||
(f->fmt.pix.width * fh->fmt->depth) >> 3;
|
|
||||||
f->fmt.pix.sizeimage =
|
|
||||||
f->fmt.pix.height * f->fmt.pix.bytesperline;
|
|
||||||
return 0;
|
return 0;
|
||||||
case V4L2_BUF_TYPE_VIDEO_OVERLAY:
|
case V4L2_BUF_TYPE_VIDEO_OVERLAY:
|
||||||
memset(&f->fmt.win,0,sizeof(struct v4l2_window));
|
memset(&f->fmt.win,0,sizeof(struct v4l2_window));
|
||||||
|
@ -2106,11 +2120,9 @@ static int bttv_try_fmt(struct bttv_fh *fh, struct bttv *btv,
|
||||||
f->fmt.pix.width = maxw;
|
f->fmt.pix.width = maxw;
|
||||||
if (f->fmt.pix.height > maxh)
|
if (f->fmt.pix.height > maxh)
|
||||||
f->fmt.pix.height = maxh;
|
f->fmt.pix.height = maxh;
|
||||||
f->fmt.pix.width &= ~0x03;
|
pix_format_set_size (&f->fmt.pix, fmt,
|
||||||
f->fmt.pix.bytesperline =
|
f->fmt.pix.width & ~3,
|
||||||
(f->fmt.pix.width * fmt->depth) >> 3;
|
f->fmt.pix.height);
|
||||||
f->fmt.pix.sizeimage =
|
|
||||||
f->fmt.pix.height * f->fmt.pix.bytesperline;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Reference in New Issue