Messages in this thread | | | Date | Tue, 14 Mar 2023 10:45:25 +0100 | Subject | Re: [PATCH v3] media: mediatek: vcodec: Force capture queue format to MM21 | From | AngeloGioacchino Del Regno <> |
| |
Il 14/03/23 08:25, Yunfei Dong ha scritto: > Libyuv is one software library used to covert format. Only covert > mediatek uncompressed mode MM21 to standard yuv420 for MT21 is > compressed mode. Need to set capture queue format to MM21 in order > to use Libyuv when scp firmware support MM21 and MT21. > > Fixes: 7501edef6b1f ("media: mediatek: vcodec: Different codec using different capture format") > Signed-off-by: Yunfei Dong <yunfei.dong@mediatek.com>
After the firmware gets sent to linux-firmware *and ONLY after that*:
Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com>
> --- > changed with v2: > - re-write commit message. > - change the driver flow. > changed with v1: > - add Fixes tag. > --- > .../platform/mediatek/vcodec/mtk_vcodec_dec.c | 24 +++---------------- > 1 file changed, 3 insertions(+), 21 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..c99705681a03 100644 > --- a/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c > +++ b/drivers/media/platform/mediatek/vcodec/mtk_vcodec_dec.c > @@ -39,10 +39,9 @@ static bool mtk_vdec_get_cap_fmt(struct mtk_vcodec_ctx *ctx, int format_index) > { > const struct mtk_vcodec_dec_pdata *dec_pdata = ctx->dev->vdec_pdata; > const struct mtk_video_fmt *fmt; > - struct mtk_q_data *q_data; > int num_frame_count = 0, i; > - bool ret = true; > > + fmt = &dec_pdata->vdec_formats[format_index]; > for (i = 0; i < *dec_pdata->num_formats; i++) { > if (dec_pdata->vdec_formats[i].type != MTK_FMT_FRAME) > continue; > @@ -50,27 +49,10 @@ static bool mtk_vdec_get_cap_fmt(struct mtk_vcodec_ctx *ctx, int format_index) > num_frame_count++; > } > > - if (num_frame_count == 1) > + if (num_frame_count == 1 || fmt->fourcc == V4L2_PIX_FMT_MM21) > return true; > > - fmt = &dec_pdata->vdec_formats[format_index]; > - q_data = &ctx->q_data[MTK_Q_DATA_SRC]; > - switch (q_data->fmt->fourcc) { > - case V4L2_PIX_FMT_VP8_FRAME: > - if (fmt->fourcc == V4L2_PIX_FMT_MM21) > - ret = true; > - break; > - case V4L2_PIX_FMT_H264_SLICE: > - case V4L2_PIX_FMT_VP9_FRAME: > - if (fmt->fourcc == V4L2_PIX_FMT_MM21) > - ret = false; > - break; > - default: > - ret = true; > - break; > - } > - > - return ret; > + return false; > } > > static struct mtk_q_data *mtk_vdec_get_q_data(struct mtk_vcodec_ctx *ctx,
| |