From nobody Sat Sep 21 00:05:31 2024 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6DCAAC76196 for ; Fri, 17 Mar 2023 03:11:12 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229489AbjCQDLK (ORCPT ); Thu, 16 Mar 2023 23:11:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56018 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230011AbjCQDKe (ORCPT ); Thu, 16 Mar 2023 23:10:34 -0400 Received: from mailgw02.mediatek.com (unknown [210.61.82.184]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E31C2B53E3; Thu, 16 Mar 2023 20:08:40 -0700 (PDT) X-UUID: 021f80cac47111edbd2e61cc88cc8f98-20230317 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=mediatek.com; s=dk; h=Content-Type:Content-Transfer-Encoding:MIME-Version:Message-ID:Date:Subject:CC:To:From; bh=PfXejbSJ+gESzqPGGzxv/i7SYXG7tkTWKaOyZexlqSg=; b=EqgsDojpIPBRC7w8bLKpdnG/8WHPUn607318amHvYk8p30G5hzP/TsB1VMqjcUPdVyxTNp1YsI8TE6+GKaHR4wNzV63GBJsZT1rgT/SYI09WElt5tz5kU5qiRkmVcPzl8xUfIg+4C7bwWBCxhJRrFis1AJmqTjGipbZ9vwN4r4M=; X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.1.21,REQID:b9035c24-516f-48d1-a1b6-deb5aa288657,IP:0,U RL:0,TC:0,Content:0,EDM:0,RT:0,SF:0,FILE:0,BULK:0,RULE:Release_Ham,ACTION: release,TS:0 X-CID-META: VersionHash:83295aa,CLOUDID:b01a11f6-ddba-41c3-91d9-10eeade8eac7,B ulkID:nil,BulkQuantity:0,Recheck:0,SF:102,TC:nil,Content:0,EDM:-3,IP:nil,U RL:0,File:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OSA:0,AV:0 X-CID-BVR: 0 X-CID-BAS: 0,_,0,_ X-UUID: 021f80cac47111edbd2e61cc88cc8f98-20230317 Received: from mtkmbs13n2.mediatek.inc [(172.21.101.108)] by mailgw02.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-GCM-SHA384 256/256) with ESMTP id 306452056; Fri, 17 Mar 2023 11:08:36 +0800 Received: from mtkmbs13n2.mediatek.inc (172.21.101.108) by mtkmbs13n2.mediatek.inc (172.21.101.108) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.25; Fri, 17 Mar 2023 11:08:35 +0800 Received: from mhfsdcap04.gcn.mediatek.inc (10.17.3.154) by mtkmbs13n2.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.2.1118.25 via Frontend Transport; Fri, 17 Mar 2023 11:08:34 +0800 From: Yunfei Dong To: Yunfei Dong , Chen-Yu Tsai , Nicolas Dufresne , Hans Verkuil , AngeloGioacchino Del Regno , Benjamin Gaignard , =?UTF-8?q?N=C3=ADcolas=20F=20=2E=20R=20=2E=20A=20=2E=20Prado?= CC: Matthias Brugger , Hsin-Yi Wang , Fritz Koenig , Daniel Vetter , Steve Cho , , , , , , Subject: [PATCH v4,1/2] media: mediatek: vcodec: Force capture queue format to MM21 Date: Fri, 17 Mar 2023 11:08:32 +0800 Message-ID: <20230317030833.16836-1-yunfei.dong@mediatek.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-MTK: N Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" While the decoder can produce frames in both MM21 and MT21C formats, only M= M21 is currently supported by userspace tools (like gstreamer and libyuv). In o= rder to ensure userspace keeps working after the SCP firmware is updated to supp= ort both MM21 and MT21C formats, force the MM21 format for the capture queue. This is meant as a stopgap solution while dynamic format switching between MM21 and MT21C isn't implemented in the driver. Fixes: 7501edef6b1f ("media: mediatek: vcodec: Different codec using differ= ent capture format") Signed-off-by: Yunfei Dong Reviewed-by: AngeloGioacchino Del Regno Reviewed-by: N=C3=ADcolas F. R. A. Prado Tested-by: N=C3=ADcolas F. R. A. Prado --- changed with v3: - re-write commit message. - add one new patch to fix v4l2-compliance fail. 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/driv= ers/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 =3D ctx->dev->vdec_pdata; const struct mtk_video_fmt *fmt; - struct mtk_q_data *q_data; int num_frame_count =3D 0, i; - bool ret =3D true; =20 + fmt =3D &dec_pdata->vdec_formats[format_index]; for (i =3D 0; i < *dec_pdata->num_formats; i++) { if (dec_pdata->vdec_formats[i].type !=3D 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++; } =20 - if (num_frame_count =3D=3D 1) + if (num_frame_count =3D=3D 1 || fmt->fourcc =3D=3D V4L2_PIX_FMT_MM21) return true; =20 - fmt =3D &dec_pdata->vdec_formats[format_index]; - q_data =3D &ctx->q_data[MTK_Q_DATA_SRC]; - switch (q_data->fmt->fourcc) { - case V4L2_PIX_FMT_VP8_FRAME: - if (fmt->fourcc =3D=3D V4L2_PIX_FMT_MM21) - ret =3D true; - break; - case V4L2_PIX_FMT_H264_SLICE: - case V4L2_PIX_FMT_VP9_FRAME: - if (fmt->fourcc =3D=3D V4L2_PIX_FMT_MM21) - ret =3D false; - break; - default: - ret =3D true; - break; - } - - return ret; + return false; } =20 static struct mtk_q_data *mtk_vdec_get_q_data(struct mtk_vcodec_ctx *ctx, --=20 2.25.1