From patchwork Mon Jul 22 15:05:21 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Benjamin Gaignard X-Patchwork-Id: 103119 Received: from sy.mirrors.kernel.org ([147.75.48.161]) by linuxtv.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1sVubl-0000PR-0l for patchwork@linuxtv.org; Mon, 22 Jul 2024 15:05:50 +0000 Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id 0014BB21852 for ; Mon, 22 Jul 2024 15:05:46 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 10E7016DEB6; Mon, 22 Jul 2024 15:05:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="Ud/TN7AV" X-Original-To: linux-media@vger.kernel.org Received: from madrid.collaboradmins.com (madrid.collaboradmins.com [46.235.227.194]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2954E16DC32; Mon, 22 Jul 2024 15:05:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=46.235.227.194 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721660733; cv=none; b=cm48Onbd59tDp9wbCiGJQVo4sOodqv9xGQLSPuK6mqfS/N1aALBiwGdXJljFDphi1hpJCn1ZdpFj9UW6lYxIDnJzFfZjPWBAlTlg4Bf1xTvRW0Kvq5X+lXW66R241ia1re4zFFBNHHj4ECw4k9ZHR9s4cU4uq6n4Xmw9K19V4VY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721660733; c=relaxed/simple; bh=k9hBZGP+6hvd2eafv7kOgNAmp1jDm0056Wz82dkm78Q=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=LaNnaGiKi6EQIuzGveHDiZSikFjZlwX5JhY15HIc5gdh6A6mfX1PogJaYDk7gVcWFY4unVu6NS2JiqJRybcQeWoN/DPurBqYgcnKCLkxqGvsVOaYjK0spuVkD5/XPW4S4Zag+uZtxgmPKgPzP5OUo2wWJN+wAJWTJ4kHoENZm9k= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=Ud/TN7AV; arc=none smtp.client-ip=46.235.227.194 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1721660729; bh=k9hBZGP+6hvd2eafv7kOgNAmp1jDm0056Wz82dkm78Q=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Ud/TN7AVdbK44CHnQAD1LdW1uOGh7orDvOQBmZlcndyj/eKxWvBR1mw+O4pL8f2Kq QKKgGEMaD8vfqWfrNlDRamJBGqYTXxQx6bDGNhbNsmxMNh5XKL0lzSECuPoye1WSoU xrtiFzJLtntpnGsmJg3Z2Ua+POC3onsJjRfL7Yg7afDr8ze4W6VWDPBSQFfAD6NaNO G1XNz4+XXNt08sATHncuVQdiuHHUICj78euJKvoSUC+J3hsKRdvtfzrB5RvHfGQ6jR 9ChJiv3C4LVBR/nQfHorxTjF+F/TKq1hBR/tiyBm/Gf3dciHkTxOQ5jUmEL2coqsuj Rs4MOVqUuCciw== Received: from benjamin-XPS-13-9310.. (cola.collaboradmins.com [195.201.22.229]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: benjamin.gaignard) by madrid.collaboradmins.com (Postfix) with ESMTPSA id 6E7BC3780523; Mon, 22 Jul 2024 15:05:29 +0000 (UTC) From: Benjamin Gaignard To: mchehab@kernel.org, ezequiel@vanguardiasur.com.ar, hverkuil-cisco@xs4all.nl Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, kernel@collabora.com, Benjamin Gaignard Subject: [PATCH v5 1/3] media: videodev2: Add flag to unconditionnaly enumerate pixels formats Date: Mon, 22 Jul 2024 17:05:21 +0200 Message-ID: <20240722150523.149667-2-benjamin.gaignard@collabora.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240722150523.149667-1-benjamin.gaignard@collabora.com> References: <20240722150523.149667-1-benjamin.gaignard@collabora.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-LSpam-Score: -2.6 (--) X-LSpam-Report: No, score=-2.6 required=5.0 tests=ARC_SIGNED=0.001,ARC_VALID=-0.1,BAYES_00=-1.9,DKIM_SIGNED=0.1,DKIM_VALID=-0.1,DKIM_VALID_AU=-0.1,DMARC_PASS=-0.001,HEADER_FROM_DIFFERENT_DOMAINS=0.5,MAILING_LIST_MULTI=-1,SPF_HELO_NONE=0.001,SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no When the index field is ORed with V4L2_FMT_FLAG_ENUM_ALL the driver will ignore any configuration and enumerate all the possible formats. Drivers which do not support this flag yet always return an EINVAL error code. Signed-off-by: Benjamin Gaignard --- changes in version 5: - Reset the proposal to follow Hans's advices - Add new flag to be used with index field. .../userspace-api/media/v4l/vidioc-enum-fmt.rst | 12 +++++++++++- .../userspace-api/media/videodev2.h.rst.exceptions | 1 + include/uapi/linux/videodev2.h | 3 +++ 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/Documentation/userspace-api/media/v4l/vidioc-enum-fmt.rst b/Documentation/userspace-api/media/v4l/vidioc-enum-fmt.rst index 3adb3d205531..12e1e65e6a71 100644 --- a/Documentation/userspace-api/media/v4l/vidioc-enum-fmt.rst +++ b/Documentation/userspace-api/media/v4l/vidioc-enum-fmt.rst @@ -85,7 +85,11 @@ the ``mbus_code`` field is handled differently: * - __u32 - ``index`` - Number of the format in the enumeration, set by the application. - This is in no way related to the ``pixelformat`` field. + This is in no way related to the ``pixelformat`` field. When the + index is ORed with V4L2_FMT_FLAG_ENUM_ALL the driver will ignore + any configuration and enumerate all the possible formats. Drivers + which do not support this flag yet always return an ``EINVAL`` + error code. * - __u32 - ``type`` - Type of the data stream, set by the application. Only these types @@ -234,6 +238,12 @@ the ``mbus_code`` field is handled differently: valid. The buffer consists of ``height`` lines, each having ``width`` Data Units of data and the offset (in bytes) between the beginning of each two consecutive lines is ``bytesperline``. + * - ``V4L2_FMT_FLAG_ENUM_ALL`` + - 0x80000000 + - When the applications ORs ``index`` with ``V4L2_FMT_FLAG_ENUM_ALL`` flag + the driver enumerates all the possible pixel formats without taking care + of any already set configuration. Drivers which do not support this flag + yet always return ``EINVAL``. Return Value ============ diff --git a/Documentation/userspace-api/media/videodev2.h.rst.exceptions b/Documentation/userspace-api/media/videodev2.h.rst.exceptions index bdc628e8c1d6..8dc10a500fc6 100644 --- a/Documentation/userspace-api/media/videodev2.h.rst.exceptions +++ b/Documentation/userspace-api/media/videodev2.h.rst.exceptions @@ -216,6 +216,7 @@ replace define V4L2_FMT_FLAG_CSC_YCBCR_ENC fmtdesc-flags replace define V4L2_FMT_FLAG_CSC_HSV_ENC fmtdesc-flags replace define V4L2_FMT_FLAG_CSC_QUANTIZATION fmtdesc-flags replace define V4L2_FMT_FLAG_META_LINE_BASED fmtdesc-flags +replace define V4L2_FMT_FLAG_ENUM_ALL fmtdesc-flags # V4L2 timecode types replace define V4L2_TC_TYPE_24FPS timecode-type diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h index 4e91362da6da..3d11f91273a1 100644 --- a/include/uapi/linux/videodev2.h +++ b/include/uapi/linux/videodev2.h @@ -904,6 +904,9 @@ struct v4l2_fmtdesc { #define V4L2_FMT_FLAG_CSC_QUANTIZATION 0x0100 #define V4L2_FMT_FLAG_META_LINE_BASED 0x0200 +/* Format description flag, to be ORed with the index */ +#define V4L2_FMT_FLAG_ENUM_ALL 0x80000000 + /* Frame Size and frame rate enumeration */ /* * F R A M E S I Z E E N U M E R A T I O N From patchwork Mon Jul 22 15:05:22 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Benjamin Gaignard X-Patchwork-Id: 103118 Received: from am.mirrors.kernel.org ([147.75.80.249]) by linuxtv.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1sVubi-0000OY-0I for patchwork@linuxtv.org; Mon, 22 Jul 2024 15:05:47 +0000 Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by am.mirrors.kernel.org (Postfix) with ESMTPS id 278061F220C4 for ; Mon, 22 Jul 2024 15:05:44 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id F194316DEB2; Mon, 22 Jul 2024 15:05:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="sqb5TElE" X-Original-To: linux-media@vger.kernel.org Received: from madrid.collaboradmins.com (madrid.collaboradmins.com [46.235.227.194]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 2950116D9D9; Mon, 22 Jul 2024 15:05:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=46.235.227.194 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721660733; cv=none; b=SzgAmxClPFAuIkvruzYi4Z5tvkJVSosIbrfYiBT3hA9DTE/xydATCni19uJEfCgcOKBlOur8XU6hT98KHQbU8qcq/6tzApzCgakBiPiWYOTG9mLdcJCWbF4me55VxEYe+aKVptt9LM8puJbz1bYRYnFLomjoJdpoyMsCUbDkFOw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721660733; c=relaxed/simple; bh=OBlqu3+85gEfIvQ1Nesc8JuesnXxw3aI//SRrubWmfs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iFqGPEU1D2yhrZnGk/1rpKE14+wlaYe35fRCGpSGTmTeb6jNfxhyjI3BXcXsurivm3+cJJupJBAxBT3Y6HxLUkldJZL6xX8xXVBtGbUJCOAgkhaNjh7NALGHhZT9ICk2Fo6oOfvuwbv7rGh5PEaX+uPqHe+72CTbIoNrD19X5Bg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=sqb5TElE; arc=none smtp.client-ip=46.235.227.194 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1721660730; bh=OBlqu3+85gEfIvQ1Nesc8JuesnXxw3aI//SRrubWmfs=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=sqb5TElEzxHGPk8CVRMF+yaC+ffdEL0WEn3AOtFCh2+9badendM5HkLjx9aawgyPS 0db/kACiRWJtWFP8YYy10m3GVCf2NrY8XNgL+EjhfdhCcHX+b7LM4E1+1d1X25wuRo dwSURXqUENc9lNQ1+ekhBHu8SGAiDWWwT2mQPS/aBn9A+2UaQNRxjxpbmMnxNXTfeC 5v67wj2vbApQOuORwXTQ1BiMsCET5bHkVhNVKHneZ16DF0CPVhXK79vSooKvSheHUt nYZiPMsobvbFrc201QTj3P/yc8ePUg32T89Q7JidlNeDdCVnwKYrVNIIY1QnhMs/z1 AEf5raMIyUG4w== Received: from benjamin-XPS-13-9310.. (cola.collaboradmins.com [195.201.22.229]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: benjamin.gaignard) by madrid.collaboradmins.com (Postfix) with ESMTPSA id 0D22537809D0; Mon, 22 Jul 2024 15:05:30 +0000 (UTC) From: Benjamin Gaignard To: mchehab@kernel.org, ezequiel@vanguardiasur.com.ar, hverkuil-cisco@xs4all.nl Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, kernel@collabora.com, Benjamin Gaignard Subject: [PATCH v5 2/3] media: test-drivers: Use V4L2_FMT_FLAG_ENUM_ALL flag Date: Mon, 22 Jul 2024 17:05:22 +0200 Message-ID: <20240722150523.149667-3-benjamin.gaignard@collabora.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240722150523.149667-1-benjamin.gaignard@collabora.com> References: <20240722150523.149667-1-benjamin.gaignard@collabora.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-LSpam-Score: -2.6 (--) X-LSpam-Report: No, score=-2.6 required=5.0 tests=ARC_SIGNED=0.001,ARC_VALID=-0.1,BAYES_00=-1.9,DKIM_SIGNED=0.1,DKIM_VALID=-0.1,DKIM_VALID_AU=-0.1,DMARC_PASS=-0.001,HEADER_FROM_DIFFERENT_DOMAINS=0.5,MAILING_LIST_MULTI=-1,SPF_HELO_NONE=0.001,SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no Since V4L2_FMT_FLAG_ENUM_ALL flag mostly targeting stateless decoder pixel formats enumeration, update vicodec visl test drivers to use it. Signed-off-by: Benjamin Gaignard --- drivers/media/test-drivers/vicodec/vicodec-core.c | 7 ++++--- drivers/media/test-drivers/visl/visl-video.c | 11 +++++++---- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/drivers/media/test-drivers/vicodec/vicodec-core.c b/drivers/media/test-drivers/vicodec/vicodec-core.c index 3e011fe62ae1..1b4cd8ddd7c2 100644 --- a/drivers/media/test-drivers/vicodec/vicodec-core.c +++ b/drivers/media/test-drivers/vicodec/vicodec-core.c @@ -706,6 +706,7 @@ static int enum_fmt(struct v4l2_fmtdesc *f, struct vicodec_ctx *ctx, bool is_out) { bool is_uncomp = (ctx->is_enc && is_out) || (!ctx->is_enc && !is_out); + u32 index = f->index & ~V4L2_FMT_FLAG_ENUM_ALL; if (V4L2_TYPE_IS_MULTIPLANAR(f->type) && !multiplanar) return -EINVAL; @@ -718,18 +719,18 @@ static int enum_fmt(struct v4l2_fmtdesc *f, struct vicodec_ctx *ctx, if (ctx->is_enc || !vb2_is_streaming(&ctx->fh.m2m_ctx->cap_q_ctx.q)) - info = v4l2_fwht_get_pixfmt(f->index); + info = v4l2_fwht_get_pixfmt(index); else info = v4l2_fwht_find_nth_fmt(info->width_div, info->height_div, info->components_num, info->pixenc, - f->index); + index); if (!info) return -EINVAL; f->pixelformat = info->id; } else { - if (f->index) + if (index) return -EINVAL; f->pixelformat = ctx->is_stateless ? V4L2_PIX_FMT_FWHT_STATELESS : V4L2_PIX_FMT_FWHT; diff --git a/drivers/media/test-drivers/visl/visl-video.c b/drivers/media/test-drivers/visl/visl-video.c index f8d970319764..c5f3e13b4198 100644 --- a/drivers/media/test-drivers/visl/visl-video.c +++ b/drivers/media/test-drivers/visl/visl-video.c @@ -341,21 +341,24 @@ static int visl_enum_fmt_vid_cap(struct file *file, void *priv, struct v4l2_fmtdesc *f) { struct visl_ctx *ctx = visl_file_to_ctx(file); + u32 index = f->index & ~V4L2_FMT_FLAG_ENUM_ALL; - if (f->index >= ctx->coded_format_desc->num_decoded_fmts) + if (index >= ctx->coded_format_desc->num_decoded_fmts) return -EINVAL; - f->pixelformat = ctx->coded_format_desc->decoded_fmts[f->index]; + f->pixelformat = ctx->coded_format_desc->decoded_fmts[index]; return 0; } static int visl_enum_fmt_vid_out(struct file *file, void *priv, struct v4l2_fmtdesc *f) { - if (f->index >= ARRAY_SIZE(visl_coded_fmts)) + u32 index = f->index & ~V4L2_FMT_FLAG_ENUM_ALL; + + if (index >= ARRAY_SIZE(visl_coded_fmts)) return -EINVAL; - f->pixelformat = visl_coded_fmts[f->index].pixelformat; + f->pixelformat = visl_coded_fmts[index].pixelformat; return 0; } From patchwork Mon Jul 22 15:05:23 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Benjamin Gaignard X-Patchwork-Id: 103120 Received: from sv.mirrors.kernel.org ([139.178.88.99]) by linuxtv.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1sVubt-0000Rz-0E for patchwork@linuxtv.org; Mon, 22 Jul 2024 15:05:57 +0000 Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sv.mirrors.kernel.org (Postfix) with ESMTPS id 757E9282626 for ; Mon, 22 Jul 2024 15:05:56 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 7F21C16DEDE; Mon, 22 Jul 2024 15:05:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b="e2Lhq03P" X-Original-To: linux-media@vger.kernel.org Received: from madrid.collaboradmins.com (madrid.collaboradmins.com [46.235.227.194]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B57AD16DC34; Mon, 22 Jul 2024 15:05:32 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=46.235.227.194 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721660734; cv=none; b=GAvxaevOzLPUMfZ8RicB4DhDBRpEHwzoPxvbNTN76uR0gKnXYqtcce3w5Bk/r4C05csPilffONFt6hT2i4wHx90WNAhg5O3S3HuAnic0sFQ7AZbOIZz/n0gsH9hJ28lJqGKd+nulJNF5T3ThaJyiGCaGwWf7S0jkpKKHKiiWO3M= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1721660734; c=relaxed/simple; bh=oUSaH13Jhof/IlxUcDgOPqmO1TdySsiM3gh1NyYvCjI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Dn8W/lKxv/Giy47KQdM0CF4Wnu0+lY+VHDkbSbJduD0XFXPQsBui1ui5OOL+9CwuC6krWAIY6IJwq/J5lMMFtwrF4GvOSQoofNhlLMXLbtfis2TIbGD5mMyNFWXRTBMKTzFkw0mI7lhPzPwIYVY+7rWOAdfyw5mFxeLP4TF85IM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=collabora.com; spf=pass smtp.mailfrom=collabora.com; dkim=pass (2048-bit key) header.d=collabora.com header.i=@collabora.com header.b=e2Lhq03P; arc=none smtp.client-ip=46.235.227.194 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=collabora.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=collabora.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1721660731; bh=oUSaH13Jhof/IlxUcDgOPqmO1TdySsiM3gh1NyYvCjI=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=e2Lhq03PaSsqEb2bjYdsIkaj7WB1iZHGn8UYGf4F+JOUFIkoqLZzj+ByxTN9n5GV2 GO+XZSDf/o6Ykq7CIaXa/a5ATSXF6U1Lw9kzIjNQDZHGaVIP9wneVmj40N1Z9OCj/r 2Rb7ZTtkoaW6g2+c6cVJHvnu7Ocyf1rbAFVjcLbB/hoSbZm8/6wevhQi99R2+UWWQZ /K0UtRfE8QhJFQs1ONGpVkD52qj8Fisu5KBD4m215flla4MTTbk4T6EcANj4mxD1VF yl8hhQFck2MjQkZye//CnAq6Moap02sMG5Ypv2yLqrYals7k9yY070qqbXQWpn5vH1 k5K6KSnqhXcaw== Received: from benjamin-XPS-13-9310.. (cola.collaboradmins.com [195.201.22.229]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: benjamin.gaignard) by madrid.collaboradmins.com (Postfix) with ESMTPSA id 9E3E73781189; Mon, 22 Jul 2024 15:05:30 +0000 (UTC) From: Benjamin Gaignard To: mchehab@kernel.org, ezequiel@vanguardiasur.com.ar, hverkuil-cisco@xs4all.nl Cc: linux-media@vger.kernel.org, linux-kernel@vger.kernel.org, linux-rockchip@lists.infradead.org, kernel@collabora.com, Benjamin Gaignard Subject: [PATCH v5 3/3] media: verisilicon: Use V4L2_FMT_FLAG_ENUM_ALL flag Date: Mon, 22 Jul 2024 17:05:23 +0200 Message-ID: <20240722150523.149667-4-benjamin.gaignard@collabora.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240722150523.149667-1-benjamin.gaignard@collabora.com> References: <20240722150523.149667-1-benjamin.gaignard@collabora.com> Precedence: bulk X-Mailing-List: linux-media@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-LSpam-Score: -4.9 (----) X-LSpam-Report: No, score=-4.9 required=5.0 tests=ARC_SIGNED=0.001,ARC_VALID=-0.1,BAYES_00=-1.9,DKIM_SIGNED=0.1,DKIM_VALID=-0.1,DKIM_VALID_AU=-0.1,DMARC_PASS=-0.001,HEADER_FROM_DIFFERENT_DOMAINS=0.5,MAILING_LIST_MULTI=-1,RCVD_IN_DNSWL_MED=-2.3,SPF_HELO_NONE=0.001,SPF_PASS=-0.001 autolearn=ham autolearn_force=no By adding support of V4L2_FMT_FLAG_ENUM_ALL flag into the driver we allowing userspce applications to discover all possible pixel formats of the hardware block. This way userspace can decide of which decoder to use given the support pixel formats. Signed-off-by: Benjamin Gaignard --- .../media/platform/verisilicon/hantro_v4l2.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/drivers/media/platform/verisilicon/hantro_v4l2.c b/drivers/media/platform/verisilicon/hantro_v4l2.c index df6f2536263b..77f024aaa22d 100644 --- a/drivers/media/platform/verisilicon/hantro_v4l2.c +++ b/drivers/media/platform/verisilicon/hantro_v4l2.c @@ -201,7 +201,14 @@ static int vidioc_enum_fmt(struct file *file, void *priv, struct hantro_ctx *ctx = fh_to_ctx(priv); const struct hantro_fmt *fmt, *formats; unsigned int num_fmts, i, j = 0; - bool skip_mode_none; + bool skip_mode_none, enum_all_formats; + u32 index = f->index & ~V4L2_FMT_FLAG_ENUM_ALL; + + /* + * If V4L2_FMT_FLAG_ENUM_ALL flag is set, we want to enumerate all + * hardware supported pixels formats + */ + enum_all_formats = !!(f->index & V4L2_FMT_FLAG_ENUM_ALL); /* * When dealing with an encoder: @@ -222,9 +229,9 @@ static int vidioc_enum_fmt(struct file *file, void *priv, if (skip_mode_none == mode_none) continue; - if (!hantro_check_depth_match(fmt, ctx->bit_depth)) + if (!hantro_check_depth_match(fmt, ctx->bit_depth) && !enum_all_formats) continue; - if (j == f->index) { + if (j == index) { f->pixelformat = fmt->fourcc; return 0; } @@ -242,9 +249,9 @@ static int vidioc_enum_fmt(struct file *file, void *priv, for (i = 0; i < num_fmts; i++) { fmt = &formats[i]; - if (!hantro_check_depth_match(fmt, ctx->bit_depth)) + if (!hantro_check_depth_match(fmt, ctx->bit_depth) && !enum_all_formats) continue; - if (j == f->index) { + if (j == index) { f->pixelformat = fmt->fourcc; return 0; }