Received: by 2002:ac0:a5a6:0:0:0:0:0 with SMTP id m35-v6csp496746imm; Wed, 22 Aug 2018 07:47:04 -0700 (PDT) X-Google-Smtp-Source: AA+uWPyxMJlmJBU3//1Mp7o0mSkIxMCOuSLBOEVtIDYqlXLuzEQXvuL6qOO+Pu9o67yKvEzn1P0t X-Received: by 2002:a63:41c1:: with SMTP id o184-v6mr20009532pga.297.1534949224574; Wed, 22 Aug 2018 07:47:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1534949224; cv=none; d=google.com; s=arc-20160816; b=jYlHNrW6XP87buanzXSK3m5FYD/TKCJlz/9g+4l1enByIDorvav+hz8TbjMzl79Ptj V5XJKQd/gDVJJP791LJf6E0VQY2Hl6JTjPY4EC7RAW2ruuzjRNfxZh4AB60r2PF0pLrP I7iiUAFnlvcvILJvQUrafT2DFBEU9xV9hRbMtNXp/HbR8gNp3LUzyL57nsKfs/6zSNIq EajOWSQZQz+xmS+3l7wkEPgTqCjI5AN9x/ao2lWmbALNdqtZ9tBZiVJ2x1miS6dk16kr 8GOqCCzXdUg0B75PxaJ+k+ciarcG1g9TwPGSBoOKN7veS0zKu5/FnuTW2MraxKcbkE41 WiXg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:mime-version:organization:references :in-reply-to:date:cc:to:from:subject:message-id :arc-authentication-results; bh=kPWJbFEIGQDrQCp1/dMzXc6O393py9YKEDtByMdKNjI=; b=lTs61GQSsxGJnhyDPTgvAe763oinPgPNO8hco1IGMJrObbSMs/4hM2tr6diq4X8EmE IUhrefPVcaTW/7RQFdTIzvsgEw8Qo6Jx+Dckxo3FeUIvHcJDJf/YS1W4CsgKhm9xeMOc PsdBiOKgg86NxqU+8SzBOUTFt395gDy2wPloBvzuh2klzmC3u+6UIE4oukMQ5z2WjugE 76WdwIbEGqkBK/gyCpWh3zY0kangw8DNaueAfeTufj96mfBGfi3b15BDwtEgkmUtdiFY p96fT/ASXwF1HwLbNHx0qxtP5aCccU9RxjmmF1HtUPo6emKfzwx7lERd1af4J7DWUgsQ CIIA== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m86-v6si2079762pfj.48.2018.08.22.07.46.48; Wed, 22 Aug 2018 07:47:04 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729143AbeHVSKx (ORCPT + 99 others); Wed, 22 Aug 2018 14:10:53 -0400 Received: from mail.bootlin.com ([62.4.15.54]:43511 "EHLO mail.bootlin.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728207AbeHVSKw (ORCPT ); Wed, 22 Aug 2018 14:10:52 -0400 Received: by mail.bootlin.com (Postfix, from userid 110) id 0BD1920730; Wed, 22 Aug 2018 16:45:39 +0200 (CEST) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on mail.bootlin.com X-Spam-Level: X-Spam-Status: No, score=-1.0 required=5.0 tests=ALL_TRUSTED,SHORTCIRCUIT, URIBL_BLOCKED shortcircuit=ham autolearn=disabled version=3.4.0 Received: from aptenodytes (AAubervilliers-681-1-85-9.w90-88.abo.wanadoo.fr [90.88.27.9]) by mail.bootlin.com (Postfix) with ESMTPSA id 97132203EC; Wed, 22 Aug 2018 16:45:28 +0200 (CEST) Message-ID: Subject: Re: [PATCH 1/9] CHROMIUM: v4l: Add H264 low-level decoder API compound controls. From: Paul Kocialkowski To: Tomasz Figa Cc: Nicolas Dufresne , Ezequiel Garcia , Maxime Ripard , Pawel Osciak , Hans Verkuil , Alexandre Courbot , Sakari Ailus , Laurent Pinchart , Chen-Yu Tsai , Linux Kernel Mailing List , "list@263.net:IOMMU DRIVERS , Joerg " "Roedel ," , Linux Media Mailing List , jenskuske@gmail.com, linux-sunxi@googlegroups.com, thomas.petazzoni@bootlin.com, groeck@chromium.org Date: Wed, 22 Aug 2018 16:45:29 +0200 In-Reply-To: References: <20180613140714.1686-1-maxime.ripard@bootlin.com> <20180613140714.1686-2-maxime.ripard@bootlin.com> <80e1d9cb49c6df06843e49332685f2b401023292.camel@collabora.com> <53987ca7a536a21b2eb49626d777a9bf894d6910.camel@bootlin.com> Organization: Bootlin Content-Type: multipart/signed; micalg="pgp-sha256"; protocol="application/pgp-signature"; boundary="=-EdQ4P+X1DxT8NIX3dQ8P" X-Mailer: Evolution 3.28.4 Mime-Version: 1.0 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org --=-EdQ4P+X1DxT8NIX3dQ8P Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Wed, 2018-08-22 at 22:38 +0900, Tomasz Figa wrote: > On Wed, Aug 22, 2018 at 10:07 PM Paul Kocialkowski > wrote: > >=20 > > Hi, > >=20 > > On Tue, 2018-08-21 at 13:07 -0400, Nicolas Dufresne wrote: > > > Le mardi 21 ao=C3=BBt 2018 =C3=A0 13:58 -0300, Ezequiel Garcia a =C3= =A9crit : > > > > On Wed, 2018-06-13 at 16:07 +0200, Maxime Ripard wrote: > > > > > From: Pawel Osciak > > > > >=20 > > > > > Signed-off-by: Pawel Osciak > > > > > Reviewed-by: Wu-cheng Li > > > > > Tested-by: Tomasz Figa > > > > > [rebase44(groeck): include linux/types.h in v4l2-controls.h] > > > > > Signed-off-by: Guenter Roeck > > > > > Signed-off-by: Maxime Ripard > > > > > --- > > > > >=20 > > > >=20 > > > > [..] > > > > > diff --git a/include/uapi/linux/videodev2.h > > > > > b/include/uapi/linux/videodev2.h > > > > > index 242a6bfa1440..4b4a1b25a0db 100644 > > > > > --- a/include/uapi/linux/videodev2.h > > > > > +++ b/include/uapi/linux/videodev2.h > > > > > @@ -626,6 +626,7 @@ struct v4l2_pix_format { > > > > > #define V4L2_PIX_FMT_H264 v4l2_fourcc('H', '2', '6', '4') /* > > > > > H264 with start codes */ > > > > > #define V4L2_PIX_FMT_H264_NO_SC v4l2_fourcc('A', 'V', 'C', '1') = /* > > > > > H264 without start codes */ > > > > > #define V4L2_PIX_FMT_H264_MVC v4l2_fourcc('M', '2', '6', '4') /* > > > > > H264 MVC */ > > > > > +#define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4') = /* > > > > > H264 parsed slices */ > > > >=20 > > > > As pointed out by Tomasz, the Rockchip VPU driver expects start cod= es > > > > [1], so the userspace > > > > should be aware of it. Perhaps we could document this pixel format > > > > better as: > > > >=20 > > > > #define V4L2_PIX_FMT_H264_SLICE v4l2_fourcc('S', '2', '6', '4') /* > > > > H264 parsed slices with start codes */ > > > >=20 > > > > And introduce another pixel format: > > > >=20 > > > > #define V4L2_PIX_FMT_H264_SLICE_NO_SC v4l2_fourcc(TODO) /* H264 > > > > parsed slices without start codes */ > > > >=20 > > > > For cedrus to use, as it seems it doesn't need start codes. > > >=20 > > > I must admit that this RK requirement is a bit weird for slice data. > > > Though, userspace wise, always adding start-code would be compatible, > > > as the driver can just offset to remove it. > >=20 > > This would mean that the stateless API no longer takes parsed bitstream > > data but effectively the full bitstream, which defeats the purpose of > > the _SLICE pixel formats. > >=20 >=20 > Not entirely. One of the purposes of the _SLICE pixel format was to > specify it in a way that adds a requirement of providing the required > controls by the client. I think we need to define what we want the stateless APIs (and these formats) to precisely reflect conceptually. I've started discussing this in the Request API and V4L2 capabilities thread. > > > Another option, because I'm not fan of adding dedicated formats for > > > this, the RK driver could use data_offset (in mplane v4l2 buffers), > > > just write a start code there. I like this solution because I would n= ot > > > be surprise if some drivers requires in fact an HW specific header, > > > that the driver can generate as needed. > >=20 > > I like this idea, because it implies that the driver should deal with > > the specificities of the hardware, instead of making the blurrying the > > lines of stateless API for covering these cases. >=20 > The spec says >=20 > "Offset in bytes to video data in the plane. Drivers must set this > field when type refers to a capture stream, applications when it > refers to an output stream." >=20 > which would mean that user space would have to know to reserve some > bytes at the beginning for the driver to add the start code there. (Or > the driver memmove()ing the data forward when the buffer is queued, > assuming that there is enough space in the buffer, but it should > normally be the case.) >=20 > Sounds like a pixel format with full bitstream data and some offsets > to particular parts inside given inside a control might be the most > flexible and cleanest solution. I can't help but think that bringing the whole bitstream over to the kernel with a dedicated pix fmt just for the sake of having 3 start code bytes is rather overkill anyway. I believe moving the data around to be the best call for this situation. Or maybe there's a way to alloc more data *before* the bufer that is exposed to userspace, so userspace can fill it normally and the driver can bring-in the necessary heading start code bytes before the buffer? Cheers, Paul --=20 Paul Kocialkowski, Bootlin (formerly Free Electrons) Embedded Linux and kernel engineering https://bootlin.com --=-EdQ4P+X1DxT8NIX3dQ8P Content-Type: application/pgp-signature; name="signature.asc" Content-Description: This is a digitally signed message part Content-Transfer-Encoding: 7bit -----BEGIN PGP SIGNATURE----- iQEzBAABCAAdFiEEJZpWjZeIetVBefti3cLmz3+fv9EFAlt9dwkACgkQ3cLmz3+f v9El0wf/WfRmddGsl/plPBmL6CHmY6K+2XUOtTZLVfyoeKU9sDIp33fMtJL4TCX1 aOs8W2/j2Z4gKbffgqObBNyO5n4epskNF8ilF/uhZcsbO3WcYCo+6I2QaF+OW0S8 M8ZoCkEsSYG56ltMYORKCR0fdZ3kTjTM9CXzb6lkV2kYusnHbgx9y93x1y/SkqVc NYYMAhThqlYH3JG1lulQ2Ldp0tuaK7K6ZHWsBMJbXT+lMt+mR7hZE5lNe2yzSYC0 V2g7xVO/+7riStEmoCEPa1RXYnH0XNasl/UrgHW4o44CyzciW1drSHGxGJts+oOe jCkpf7Go95ddbH+VbzPAetMXzUmvDg== =kPPN -----END PGP SIGNATURE----- --=-EdQ4P+X1DxT8NIX3dQ8P--