Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp1240234pxj; Fri, 4 Jun 2021 09:19:48 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyxFquQJpnT/ZLLL2NzwaMfNPI0efOfsPkQofqVlctuAPiBvuAIcPd9zS39Y+8Lhq4qN13U X-Received: by 2002:a17:907:6289:: with SMTP id nd9mr4878879ejc.384.1622823588144; Fri, 04 Jun 2021 09:19:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1622823588; cv=none; d=google.com; s=arc-20160816; b=JIZmUrite+ELApbAqIAm7KE69vAFtl4cqzUOuCDWG8ssIE1xqKMPDHjsEV8oAJgoZO hlMmr+TImvzmmQFM2N4w8bT9m+nRWU82fmola4umkiOX/2jUiAgIpeH8K4pxMwZ5xPcY tfYOcKIrs2oZt35qxcHZcjbGDgMf+HnT/CB5hU+l2XyLQMB3BK47enSVLGbLga4z7nNy Tx4ctFVs2xT/11pkKj4HkHQpc4WIqaByVBZGvIwUbIbvS/u+pX09OHE0TkVXWFC/QBwT 5Zt5w9GSkRHsLbzk8QHR4yd5g0FZl1dh02C+KJezpEqf1dXApN+wYb85a0Ctg6SChgiy OINg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:date:cc:to:from:subject :message-id:dkim-signature; bh=qN/2EXSzrNrSJ2eI4wRjb2nY4GWCrDNun+VmRgfF6d4=; b=eOiB6nSwdCfKGx/TqYOI7qE5uWjOnhE+XsPCAyCjIg57xxobB5e3uTdXxv387vwCKv 1nYOuKmhzxdHlYKKQx5D4gUED1QjXv73J4hRuk3l8/lhPCaA33KQ5SkGMbVkoqM8sRQj dRjgQs9xGa9oFt2+kD5l9E2AB6slgb/f9UqChpt1GLQhKn5+EVqnMZeI7IfAW0YI2PsE KU+4R0PgmIkduwgN/CJd5t3yApGIzMghZjRNeL8LciyNmJz9MDNx6ateDiRhjVI/eyCU YhEafi8SW5qY19NFU6jSctS2mfsjkHvljiCkbZfjabb4McONSseGp2u8P7VL6IlqD0be L5qQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ndufresne-ca.20150623.gappssmtp.com header.s=20150623 header.b=jqImbONO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id v22si5108045ejc.505.2021.06.04.09.19.23; Fri, 04 Jun 2021 09:19:48 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@ndufresne-ca.20150623.gappssmtp.com header.s=20150623 header.b=jqImbONO; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231246AbhFDQTy (ORCPT + 99 others); Fri, 4 Jun 2021 12:19:54 -0400 Received: from mail-qk1-f176.google.com ([209.85.222.176]:42579 "EHLO mail-qk1-f176.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230475AbhFDQTw (ORCPT ); Fri, 4 Jun 2021 12:19:52 -0400 Received: by mail-qk1-f176.google.com with SMTP id o27so9834723qkj.9 for ; Fri, 04 Jun 2021 09:18:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ndufresne-ca.20150623.gappssmtp.com; s=20150623; h=message-id:subject:from:to:cc:date:in-reply-to:references :user-agent:mime-version:content-transfer-encoding; bh=qN/2EXSzrNrSJ2eI4wRjb2nY4GWCrDNun+VmRgfF6d4=; b=jqImbONOeFQVmJP/JYb0n0GulrzmxpM9bbRfKggC/R72mc5wMzVuN78Wwp5WlEpthJ h/b6JCBoLptruNAlOocWrYQxO3bh+7cPIVWwplkMXQ+TdZr9Pq2zHIBof4G2WnywvhG8 EVu8ZjZEUQqOeMDdPG6hwnPi5On34cQBNFoBYUKyRFJG+PxmdzSe7n3XukWYSSm8XTJK G/OBy1Djv4PlgvfrxRX4g5tcNuGDug8/GfA3YuAHwnEgRTHtv4MHBC5vEoGA5ZGvrd4F l6jXbUJ4FSsvAvNgkpDACGSKGn63vfsXhXNNwzZkaLzVYzIatGBmL3q4VR7h6rLZKYu+ 0/xg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:subject:from:to:cc:date:in-reply-to :references:user-agent:mime-version:content-transfer-encoding; bh=qN/2EXSzrNrSJ2eI4wRjb2nY4GWCrDNun+VmRgfF6d4=; b=C8xN7Ybg6OOewuguZUPKGtx8ShlfBoeyfXRtZLqT/CHDu/92iKWmvqKtiocVnZfbpN +pgDGioD1g3o7lQn/qijfh+Rj4cIs8/Qmkn6d9Y0appvYU77bFt2XoJwU/lcUIwDllrV vEoZx+WM7V+7J/RLFBSF07SP9/S7QCqisqbpwzDxBanum60eUadgmF98vEpxavXhU/KC 19C8wwraNgYYtw9KTbGDhtmjATzIJ8ZaaPzySt3YySu+fUmyVhRl55GlDb4g8X92czFQ DQK18XK3xoAoHpDaFkzuWg+beS46xYsE9XoNIaZvvio59DaJ6zF/ST/gbBcMkQnCT/D9 o54Q== X-Gm-Message-State: AOAM532XJuX8KCbXDmBO9UcG2vpBaj0MQgTqmrcbjoWiap9ZOFO/Tz0A pCHvzHjEpt6eYUghzKcjH2tAqg== X-Received: by 2002:a37:9701:: with SMTP id z1mr5063823qkd.253.1622823426136; Fri, 04 Jun 2021 09:17:06 -0700 (PDT) Received: from nicolas-tpx395.localdomain (173-246-12-168.qc.cable.ebox.net. [173.246.12.168]) by smtp.gmail.com with ESMTPSA id x66sm2824568qkc.100.2021.06.04.09.17.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 04 Jun 2021 09:17:05 -0700 (PDT) Message-ID: Subject: Re: [PATCH 4/8] media: Add P010 video format From: Nicolas Dufresne To: Benjamin Gaignard , hverkuil@xs4all.nl, ezequiel@collabora.com, p.zabel@pengutronix.de, mchehab@kernel.org, shawnguo@kernel.org, s.hauer@pengutronix.de, festevam@gmail.com, gregkh@linuxfoundation.org, mripard@kernel.org, paul.kocialkowski@bootlin.com, wens@csie.org, jernej.skrabec@siol.net, emil.l.velikov@gmail.com, andrzej.p@collabora.com, jc@kynesim.co.uk Cc: kernel@pengutronix.de, linux-imx@nxp.com, linux-media@vger.kernel.org, linux-rockchip@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Date: Fri, 04 Jun 2021 12:17:03 -0400 In-Reply-To: <20210604130619.491200-5-benjamin.gaignard@collabora.com> References: <20210604130619.491200-1-benjamin.gaignard@collabora.com> <20210604130619.491200-5-benjamin.gaignard@collabora.com> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.40.1 (3.40.1-1.fc34) MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Le vendredi 04 juin 2021 à 15:06 +0200, Benjamin Gaignard a écrit : > P010 is a YUV format with 10-bits per pixel with interleaved UV. > > Signed-off-by: Benjamin Gaignard > --- > .../userspace-api/media/v4l/pixfmt-yuv-planar.rst | 8 ++++++++ > drivers/media/v4l2-core/v4l2-common.c | 1 + > drivers/media/v4l2-core/v4l2-ioctl.c | 1 + > include/uapi/linux/videodev2.h | 1 + > 4 files changed, 11 insertions(+) > > diff --git a/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst b/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst > index 090c091affd2..71fed70c03ec 100644 > --- a/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst > +++ b/Documentation/userspace-api/media/v4l/pixfmt-yuv-planar.rst > @@ -100,6 +100,13 @@ All components are stored with the same number of bits per component. > - Cb, Cr > - No > - 64x32 macroblocks > + * - V4L2_PIX_FMT_P010 > + - 'P010' > + - 10 > + - 4:2:0 > + - Cb, Cr > + - No > + - Linear > > Horizontal Z order > * - V4L2_PIX_FMT_NV12MT_16X16 > @@ -171,6 +178,7 @@ horizontally. > .. _V4L2-PIX-FMT-NV21: > .. _V4L2-PIX-FMT-NV12M: > .. _V4L2-PIX-FMT-NV21M: > +.. _V4L2-PIX-FMT-P010: The NV12/21 documentation is not sufficient to describe this format. While it shares the layout (two planes Y and interleaved UV), it does not share the packing. In this case, assuming this is P010 (and not the P010 the Rockchip tried to upstreamed previously), each 10bit worth of pixel data would be pakced into 16 bits with the least significant 6 bit being padding bits. > > NV12, NV21, NV12M and NV21M > --------------------------- > diff --git a/drivers/media/v4l2-core/v4l2-common.c b/drivers/media/v4l2-core/v4l2-common.c > index 04af03285a20..37b5d82359dd 100644 > --- a/drivers/media/v4l2-core/v4l2-common.c > +++ b/drivers/media/v4l2-core/v4l2-common.c > @@ -266,6 +266,7 @@ const struct v4l2_format_info *v4l2_format_info(u32 format) > { .format = V4L2_PIX_FMT_NV61, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 2, .bpp = { 1, 2, 0, 0 }, .hdiv = 2, .vdiv = 1 }, > { .format = V4L2_PIX_FMT_NV24, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 2, .bpp = { 1, 2, 0, 0 }, .hdiv = 1, .vdiv = 1 }, > { .format = V4L2_PIX_FMT_NV42, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 2, .bpp = { 1, 2, 0, 0 }, .hdiv = 1, .vdiv = 1 }, > + { .format = V4L2_PIX_FMT_P010, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 2, .bpp = { 2, 2, 0, 0 }, .hdiv = 2, .vdiv = 1 }, > > { .format = V4L2_PIX_FMT_YUV410, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 3, .bpp = { 1, 1, 1, 0 }, .hdiv = 4, .vdiv = 4 }, > { .format = V4L2_PIX_FMT_YVU410, .pixel_enc = V4L2_PIXEL_ENC_YUV, .mem_planes = 1, .comp_planes = 3, .bpp = { 1, 1, 1, 0 }, .hdiv = 4, .vdiv = 4 }, > diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c > index 2673f51aafa4..6404d5b6e350 100644 > --- a/drivers/media/v4l2-core/v4l2-ioctl.c > +++ b/drivers/media/v4l2-core/v4l2-ioctl.c > @@ -1282,6 +1282,7 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt) > case V4L2_PIX_FMT_NV61: descr = "Y/CrCb 4:2:2"; break; > case V4L2_PIX_FMT_NV24: descr = "Y/CbCr 4:4:4"; break; > case V4L2_PIX_FMT_NV42: descr = "Y/CrCb 4:4:4"; break; > + case V4L2_PIX_FMT_P010: descr = "10-bit Y/CrCb 4:2:0"; break; > case V4L2_PIX_FMT_NV12M: descr = "Y/CbCr 4:2:0 (N-C)"; break; > case V4L2_PIX_FMT_NV21M: descr = "Y/CrCb 4:2:0 (N-C)"; break; > case V4L2_PIX_FMT_NV16M: descr = "Y/CbCr 4:2:2 (N-C)"; break; > diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h > index 9260791b8438..e5f7acde0730 100644 > --- a/include/uapi/linux/videodev2.h > +++ b/include/uapi/linux/videodev2.h > @@ -602,6 +602,7 @@ struct v4l2_pix_format { > #define V4L2_PIX_FMT_NV24 v4l2_fourcc('N', 'V', '2', '4') /* 24 Y/CbCr 4:4:4 */ > #define V4L2_PIX_FMT_NV42 v4l2_fourcc('N', 'V', '4', '2') /* 24 Y/CrCb 4:4:4 */ > #define V4L2_PIX_FMT_HM12 v4l2_fourcc('H', 'M', '1', '2') /* 8 YUV 4:2:0 16x16 macroblocks */ > +#define V4L2_PIX_FMT_P010 v4l2_fourcc('P', '0', '1', '0') /* 15 Y/CbCr 4:2:0 10-bit per pixel*/ > > /* two non contiguous planes - one Y, one Cr + Cb interleaved */ > #define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */