Re: [PATCH v2] media: mediatek: vcodec: Force capture queue format to MM21

From: Yunfei Dong (董云飞)
Date: Mon Mar 13 2023 - 22:05:19 EST


Hi Nicolas,

Thanks for your suggestion.
On Fri, 2023-02-10 at 10:36 -0500, Nicolas Dufresne wrote:
> Le vendredi 10 février 2023 à 13:55 +0800, Yunfei Dong a écrit :
> > In order to conver the format of capture queue from mediatek MM21
> > to
> > standard yuv420 with Libyuv, need to force capture queue format to
> > MM21 for Libyuv can't covert mediatek MT21 format at current
> > period.
>
> Please rework this text, it is hard to understand.
>
Will re-write the commit message in next version as below, could you
please help to review whether it's well to be used ?

Libyuv is one software library used to covert format. Only covert
mediatek MM21 to standard yuv420 for MT21 is compressed mode and MM21
is uncompressed mode at current period. Need to set capture queue
format to MM21 in order to use Libyuv.

> >
> > Fixes: 7501edef6b1f ("media: mediatek: vcodec: Different codec
> > using different capture format")
> > Signed-off-by: Yunfei Dong <yunfei.dong@xxxxxxxxxxxx>
> > ---
> > changed with v1:
> > - add Fixes tag.
> > ---
> > drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c | 4 ++--
> > 1 file changed, 2 insertions(+), 2 deletions(-)
> >
> > diff --git
> > a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c
> > b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c
> > index 641f533c417f..4f5e9c20214f 100644
> > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c
> > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c
> > @@ -41,7 +41,7 @@ static bool mtk_vdec_get_cap_fmt(struct
> > mtk_vcodec_ctx *ctx, int format_index)
> > const struct mtk_video_fmt *fmt;
> > struct mtk_q_data *q_data;
> > int num_frame_count = 0, i;
> > - bool ret = true;
> > + bool ret = false;
> >
> > for (i = 0; i < *dec_pdata->num_formats; i++) {
> > if (dec_pdata->vdec_formats[i].type != MTK_FMT_FRAME)
> > @@ -63,7 +63,7 @@ static bool mtk_vdec_get_cap_fmt(struct
> > mtk_vcodec_ctx *ctx, int format_index)
> > case V4L2_PIX_FMT_H264_SLICE:
> > case V4L2_PIX_FMT_VP9_FRAME:
> > if (fmt->fourcc == V4L2_PIX_FMT_MM21)
> > - ret = false;
> > + ret = true;
>
> This makes the VP8 and the other cases identical, leaving anything
> that touches
> MT21 as dead code. I'm not sure, cause I cannot test it, but it
> should in theory
> render MT8192 unusable, unless a new firmware has been submitted to
> linux-
> firmware with MM21 support ?
>
If the firmware only support MT21 => won't exist for vp8 need to use
MM21.

If the firmware only support MM21, will using MM21.
If the firmware support MT21 & MM21, will force VP8 to use MM21,
H264/VP9/AV1 will use MT21 before this change.

Will force all driver to use MM21 after adding this change.

Best Regards,
Yunfei Dong
> > break;
> > default:
> > ret = true;
>
>