summaryrefslogtreecommitdiff
path: root/drivers/media
diff options
context:
space:
mode:
authorTiffany Lin <tiffany.lin@mediatek.com>2016-07-13 11:05:23 +0300
committerMauro Carvalho Chehab <mchehab@s-opensource.com>2016-07-15 19:19:35 +0300
commit8d4eb2acb6d430e155a7d81bdbceca1e3394674b (patch)
treeeeed998ce9a9e23ce732d7dbbdf2a35b6c6fbe58 /drivers/media
parent86e3577f11d0aa8a5d3c6199f9e3f23cdbd0c0ac (diff)
downloadlinux-8d4eb2acb6d430e155a7d81bdbceca1e3394674b.tar.xz
[media] mtk-vcodec: fix default OUTPUT buffer size
When calculate OUTPUT buffer size in vidioc_try_fmt, it will add more size hw need in each plane. But in mtk_vcodec_enc_set_default_params, it do not add same size in each plane. This makes v4l2-compliance test fail. This patch fix the issue. Signed-off-by: Tiffany Lin <tiffany.lin@mediatek.com> Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Diffstat (limited to 'drivers/media')
-rw-r--r--drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c b/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c
index 907a6d12f0b8..3ed3f2d31df5 100644
--- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c
+++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c
@@ -328,10 +328,11 @@ static int vidioc_try_fmt(struct v4l2_format *f, struct mtk_video_fmt *fmt)
pix_fmt_mp->height += 32;
mtk_v4l2_debug(0,
- "before resize width=%d, height=%d, after resize width=%d, height=%d, sizeimage=%d",
+ "before resize width=%d, height=%d, after resize width=%d, height=%d, sizeimage=%d %d",
tmp_w, tmp_h, pix_fmt_mp->width,
pix_fmt_mp->height,
- pix_fmt_mp->width * pix_fmt_mp->height);
+ pix_fmt_mp->plane_fmt[0].sizeimage,
+ pix_fmt_mp->plane_fmt[1].sizeimage);
pix_fmt_mp->num_planes = fmt->num_planes;
pix_fmt_mp->plane_fmt[0].sizeimage =
@@ -1166,9 +1167,13 @@ void mtk_vcodec_enc_set_default_params(struct mtk_vcodec_ctx *ctx)
(q_data->coded_height + 32) <= MTK_VENC_MAX_H)
q_data->coded_height += 32;
- q_data->sizeimage[0] = q_data->coded_width * q_data->coded_height;
+ q_data->sizeimage[0] =
+ q_data->coded_width * q_data->coded_height+
+ ((ALIGN(q_data->coded_width, 16) * 2) * 16);
q_data->bytesperline[0] = q_data->coded_width;
- q_data->sizeimage[1] = q_data->sizeimage[0] / 2;
+ q_data->sizeimage[1] =
+ (q_data->coded_width * q_data->coded_height) / 2 +
+ (ALIGN(q_data->coded_width, 16) * 16);
q_data->bytesperline[1] = q_data->coded_width;
q_data = &ctx->q_data[MTK_Q_DATA_DST];