[media] sh-vou: fix bytesperline
authorHans Verkuil <hans.verkuil@cisco.com>
Sun, 7 Jun 2015 08:58:04 +0000 (05:58 -0300)
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>
Mon, 6 Jul 2015 11:26:11 +0000 (08:26 -0300)
The bytesperline values were wrong for planar formats where bytesperline is
the line length for the first plane.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@osg.samsung.com>
drivers/media/platform/sh_vou.c

index 079910d..6cf8083 100644 (file)
@@ -133,6 +133,7 @@ struct sh_vou_fmt {
        u32             pfmt;
        char            *desc;
        unsigned char   bpp;
+       unsigned char   bpl;
        unsigned char   rgb;
        unsigned char   yf;
        unsigned char   pkf;
@@ -143,6 +144,7 @@ static struct sh_vou_fmt vou_fmt[] = {
        {
                .pfmt   = V4L2_PIX_FMT_NV12,
                .bpp    = 12,
+               .bpl    = 1,
                .desc   = "YVU420 planar",
                .yf     = 0,
                .rgb    = 0,
@@ -150,6 +152,7 @@ static struct sh_vou_fmt vou_fmt[] = {
        {
                .pfmt   = V4L2_PIX_FMT_NV16,
                .bpp    = 16,
+               .bpl    = 1,
                .desc   = "YVYU planar",
                .yf     = 1,
                .rgb    = 0,
@@ -157,6 +160,7 @@ static struct sh_vou_fmt vou_fmt[] = {
        {
                .pfmt   = V4L2_PIX_FMT_RGB24,
                .bpp    = 24,
+               .bpl    = 3,
                .desc   = "RGB24",
                .pkf    = 2,
                .rgb    = 1,
@@ -164,6 +168,7 @@ static struct sh_vou_fmt vou_fmt[] = {
        {
                .pfmt   = V4L2_PIX_FMT_RGB565,
                .bpp    = 16,
+               .bpl    = 2,
                .desc   = "RGB565",
                .pkf    = 3,
                .rgb    = 1,
@@ -171,6 +176,7 @@ static struct sh_vou_fmt vou_fmt[] = {
        {
                .pfmt   = V4L2_PIX_FMT_RGB565X,
                .bpp    = 16,
+               .bpl    = 2,
                .desc   = "RGB565 byteswapped",
                .pkf    = 3,
                .rgb    = 1,
@@ -701,7 +707,8 @@ static int sh_vou_try_fmt_vid_out(struct file *file, void *priv,
 
        v4l_bound_align_image(&pix->width, 0, VOU_MAX_IMAGE_WIDTH, 2,
                              &pix->height, 0, img_height_max, 1, 0);
-       pix->bytesperline = pix->width * 2;
+       pix->bytesperline = pix->width * vou_fmt[pix_idx].bpl;
+       pix->sizeimage = pix->height * ((pix->width * vou_fmt[pix_idx].bpp) >> 3);
 
        return 0;
 }
@@ -1343,7 +1350,7 @@ static int sh_vou_probe(struct platform_device *pdev)
        pix->height             = 480;
        pix->pixelformat        = V4L2_PIX_FMT_NV16;
        pix->field              = V4L2_FIELD_NONE;
-       pix->bytesperline       = VOU_MAX_IMAGE_WIDTH * 2;
+       pix->bytesperline       = VOU_MAX_IMAGE_WIDTH;
        pix->sizeimage          = VOU_MAX_IMAGE_WIDTH * 2 * 480;
        pix->colorspace         = V4L2_COLORSPACE_SMPTE170M;