Message ID | 20200626080442.292309-11-acourbot@chromium.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | media: mtk-vcodec: venc: support for MT8183 and v4l2-compliance fixes | expand |
On Fri, 2020-06-26 at 17:04 +0900, Alexandre Courbot wrote: > This reverts commit 81735ecb62f882853a37a8c157407ec4aed44fd0. > > The hardware needs data to follow the previous alignment, so this extra > space was not superfluous after all. Besides, this also made > v4l2-compliance's G_FMT and S_FMT tests regress. > Acked-by: Tiffany Lin <tiffany.lin@mediatek.com> > Signed-off-by: Alexandre Courbot <acourbot@chromium.org> > --- > drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c | 9 ++++++--- > 1 file changed, 6 insertions(+), 3 deletions(-) > > diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c b/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c > index 05743a745a11..f2ba19c32400 100644 > --- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c > +++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c > @@ -299,12 +299,14 @@ static int vidioc_try_fmt(struct v4l2_format *f, > > pix_fmt_mp->num_planes = fmt->num_planes; > pix_fmt_mp->plane_fmt[0].sizeimage = > - pix_fmt_mp->width * pix_fmt_mp->height; > + pix_fmt_mp->width * pix_fmt_mp->height + > + ((ALIGN(pix_fmt_mp->width, 16) * 2) * 16); > pix_fmt_mp->plane_fmt[0].bytesperline = pix_fmt_mp->width; > > if (pix_fmt_mp->num_planes == 2) { > pix_fmt_mp->plane_fmt[1].sizeimage = > - (pix_fmt_mp->width * pix_fmt_mp->height) / 2; > + (pix_fmt_mp->width * pix_fmt_mp->height) / 2 + > + (ALIGN(pix_fmt_mp->width, 16) * 16); > pix_fmt_mp->plane_fmt[2].sizeimage = 0; > pix_fmt_mp->plane_fmt[1].bytesperline = > pix_fmt_mp->width; > @@ -312,7 +314,8 @@ static int vidioc_try_fmt(struct v4l2_format *f, > } else if (pix_fmt_mp->num_planes == 3) { > pix_fmt_mp->plane_fmt[1].sizeimage = > pix_fmt_mp->plane_fmt[2].sizeimage = > - (pix_fmt_mp->width * pix_fmt_mp->height) / 4; > + (pix_fmt_mp->width * pix_fmt_mp->height) / 4 + > + ((ALIGN(pix_fmt_mp->width, 16) / 2) * 16); > pix_fmt_mp->plane_fmt[1].bytesperline = > pix_fmt_mp->plane_fmt[2].bytesperline = > pix_fmt_mp->width / 2;
diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c b/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c index 05743a745a11..f2ba19c32400 100644 --- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c +++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c @@ -299,12 +299,14 @@ static int vidioc_try_fmt(struct v4l2_format *f, pix_fmt_mp->num_planes = fmt->num_planes; pix_fmt_mp->plane_fmt[0].sizeimage = - pix_fmt_mp->width * pix_fmt_mp->height; + pix_fmt_mp->width * pix_fmt_mp->height + + ((ALIGN(pix_fmt_mp->width, 16) * 2) * 16); pix_fmt_mp->plane_fmt[0].bytesperline = pix_fmt_mp->width; if (pix_fmt_mp->num_planes == 2) { pix_fmt_mp->plane_fmt[1].sizeimage = - (pix_fmt_mp->width * pix_fmt_mp->height) / 2; + (pix_fmt_mp->width * pix_fmt_mp->height) / 2 + + (ALIGN(pix_fmt_mp->width, 16) * 16); pix_fmt_mp->plane_fmt[2].sizeimage = 0; pix_fmt_mp->plane_fmt[1].bytesperline = pix_fmt_mp->width; @@ -312,7 +314,8 @@ static int vidioc_try_fmt(struct v4l2_format *f, } else if (pix_fmt_mp->num_planes == 3) { pix_fmt_mp->plane_fmt[1].sizeimage = pix_fmt_mp->plane_fmt[2].sizeimage = - (pix_fmt_mp->width * pix_fmt_mp->height) / 4; + (pix_fmt_mp->width * pix_fmt_mp->height) / 4 + + ((ALIGN(pix_fmt_mp->width, 16) / 2) * 16); pix_fmt_mp->plane_fmt[1].bytesperline = pix_fmt_mp->plane_fmt[2].bytesperline = pix_fmt_mp->width / 2;
This reverts commit 81735ecb62f882853a37a8c157407ec4aed44fd0. The hardware needs data to follow the previous alignment, so this extra space was not superfluous after all. Besides, this also made v4l2-compliance's G_FMT and S_FMT tests regress. Signed-off-by: Alexandre Courbot <acourbot@chromium.org> --- drivers/media/platform/mtk-vcodec/mtk_vcodec_enc.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)