mirror of https://gitee.com/openkylin/linux.git
[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;
|
||||
}
|
||||
|
||||
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)
|
||||
{
|
||||
switch (f->type) {
|
||||
case V4L2_BUF_TYPE_VIDEO_CAPTURE:
|
||||
memset(&f->fmt.pix,0,sizeof(struct v4l2_pix_format));
|
||||
f->fmt.pix.width = fh->width;
|
||||
f->fmt.pix.height = fh->height;
|
||||
pix_format_set_size (&f->fmt.pix, fh->fmt,
|
||||
fh->width, fh->height);
|
||||
f->fmt.pix.field = fh->cap.field;
|
||||
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;
|
||||
case V4L2_BUF_TYPE_VIDEO_OVERLAY:
|
||||
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;
|
||||
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;
|
||||
f->fmt.pix.sizeimage =
|
||||
f->fmt.pix.height * f->fmt.pix.bytesperline;
|
||||
pix_format_set_size (&f->fmt.pix, fmt,
|
||||
f->fmt.pix.width & ~3,
|
||||
f->fmt.pix.height);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue