linux-rockchip.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: Hans Verkuil <hverkuil-cisco@xs4all.nl>
To: Greg KH <gregkh@linuxfoundation.org>,
	Benjamin Gaignard <benjamin.gaignard@collabora.com>
Cc: peng.fan@nxp.com, kernel@collabora.com,
	devel@driverdev.osuosl.org, Anson.Huang@nxp.com, krzk@kernel.org,
	linux-rockchip@lists.infradead.org, wens@csie.org,
	linux-imx@nxp.com, linux-media@vger.kernel.org,
	devicetree@vger.kernel.org, kernel@pengutronix.de,
	s.hauer@pengutronix.de, mripard@kernel.org, robh+dt@kernel.org,
	mchehab@kernel.org, ezequiel@collabora.com,
	linux-arm-kernel@lists.infradead.org, aisheng.dong@nxp.com,
	jernej.skrabec@siol.net, adrian.ratiu@collabora.com,
	linux-kernel@vger.kernel.org, paul.kocialkowski@bootlin.com,
	p.zabel@pengutronix.de, shawnguo@kernel.org,
	shengjiu.wang@nxp.com
Subject: Re: [PATCH v1 00/18] Add HANTRO G2/HEVC decoder support for IMX8MQ
Date: Wed, 17 Feb 2021 10:10:35 +0100	[thread overview]
Message-ID: <63b62e9e-b95f-59a4-b830-c56d2cb9e4f8@xs4all.nl> (raw)
In-Reply-To: <YCzVmRVL79KMkxXQ@kroah.com>

On 17/02/2021 09:36, Greg KH wrote:
> On Wed, Feb 17, 2021 at 09:28:09AM +0100, Benjamin Gaignard wrote:
>>
>> Le 17/02/2021 à 09:08, Greg KH a écrit :
>>> On Wed, Feb 17, 2021 at 09:02:48AM +0100, Benjamin Gaignard wrote:
>>>> The IMX8MQ got two VPUs but until now only G1 has been enabled.
>>>> This series aim to add the second VPU (aka G2) and provide basic
>>>> HEVC decoding support.
>>> Why are you adding this directly to drivers/staging/media/ and not
>>> drivers/media/?  Why can't this just go to the main location and not
>>> live in staging?
>>
>> G2/HEVC is added inside the already exiting Hantro driver, it is "just"
>> an other codec from Hantro driver point of view.
>> In addition of that v4l2-hevc uAPI is still unstable.
>> One goal of this series is to have one more consumer of this v4l2-hevc
>> uAPI so maybe we can claim it to be stable enough to move away from staging
>> and then do the same for Hantro driver. That would be a great achievement !
> 
> I know I do not like seeing new additions/features/whatever being added
> to staging drivers as that encourages people to do new stuff on them
> without doing the real work needed to get them out of staging.

In order to support a specific codec (MPEG-2, H.264, HEVC, VP8, etc.) for
stateless codec hardware like the hantro, V4L2 controls need to be defined.
The contents of these controls is derived directly from the underlying codec
standards, but it is quite difficult to get this right with the first attempt,
since these standards are very complex.

So we went for the strategy of keeping these drivers in staging to make it
easy to work on, while keeping the APIs for each codec private (i.e., they are
not exposed in include/uapi/linux).

Once we have sufficient confidence in the API for a specific codec we move
it to uapi and thus fix the API. We also renumber the control IDs at that
time to avoid any confusion between the staging version and the final version.

We did that for H.264 and I hope we can soon do the same for MPEG-2 and VP8.

HEVC is definitely not ready for that yet.

The key phrase is 'sufficient confidence': one requirement is that it is supported
by at least two drivers to be reasonably certain the API doesn't contain any HW
specific stuff, and it passes test suites and review by codec experts.

All this is actively being worked on, so this is very much alive, but it is
complex and time consuming.

> So what is preventing the existing driver from getting out of staging
> now?

Once MPEG-2 and VP8 are finalized it is probably time to move these drivers
out of staging, while still keeping the HEVC API part private.

> 
> And how are you all creating new userspace apis for staging drivers to
> the v4l layer?  What happens when you export something new and then
> userspace starts to rely on it and then you change it?

Nothing is exported. So if userspace want to use it they have to manually
copy headers from include/media to their application.

> 
> Anyway, the media staging drivers are on their own, I don't touch them,
> it just feels odd to me...

It's an unusual situation. But putting the drivers in staging and keeping
the codec API headers private turns out to be the most effective way to
develop this.

Regards,

	Hans

PS: stateful vs stateless decoders: stateful decoders are fully supported
today: you just feed the decoder the compressed stream and the decoded frames
are produced by the firmware/hardware. I.e. the HW takes care of the decoder
state. Stateless decoders require you to pass the compressed frame + decoder
state to the hardware, so they do not keep track of the decoder state, that
needs to be done in software. And that requires structures to be created that
store the state, which luckily can be derived from the codec standards.

_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip

  reply	other threads:[~2021-02-17  9:11 UTC|newest]

Thread overview: 47+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-17  8:02 [PATCH v1 00/18] Add HANTRO G2/HEVC decoder support for IMX8MQ Benjamin Gaignard
2021-02-17  8:02 ` [PATCH v1 01/18] include: media: hevc: Add scaling and decode params controls Benjamin Gaignard
2021-02-17  8:02 ` [PATCH v1 02/18] media: hantro: Define HEVC codec profiles and supported features Benjamin Gaignard
2021-02-17 19:31   ` Ezequiel Garcia
2021-02-17  8:02 ` [PATCH v1 03/18] arm64: dts: imx8mq-evk: add reserve memory node for CMA region Benjamin Gaignard
2021-02-17 19:39   ` Ezequiel Garcia
2021-02-18 10:15     ` Lucas Stach
2021-02-18 10:45     ` Dan Carpenter
2021-02-17  8:02 ` [PATCH v1 04/18] media: hevc: add structures for hevc codec Benjamin Gaignard
2021-02-17 19:54   ` Ezequiel Garcia
2021-02-17  8:02 ` [PATCH v1 05/18] media: controls: Add control for HEVC codec Benjamin Gaignard
2021-02-17 19:58   ` Ezequiel Garcia
2021-02-17  8:02 ` [PATCH v1 06/18] media: hantro: Make sure that ctx->codex_ops is set Benjamin Gaignard
2021-02-17 20:11   ` Ezequiel Garcia
2021-02-18 10:53   ` Dan Carpenter
2021-02-17  8:02 ` [PATCH v1 07/18] media: hantro: Add a field to distinguish the hardware versions Benjamin Gaignard
2021-02-17 20:15   ` Ezequiel Garcia
2021-02-18 10:55   ` Dan Carpenter
2021-02-17  8:02 ` [PATCH v1 08/18] media: hantro: Add HEVC structures Benjamin Gaignard
2021-02-17  8:02 ` [PATCH v1 09/18] media: hantro: move hantro_needs_postproc function Benjamin Gaignard
2021-02-18 10:59   ` Dan Carpenter
2021-02-17  8:02 ` [PATCH v1 10/18] media: hantro: Add helper functions for buffer information Benjamin Gaignard
2021-02-17 20:31   ` Ezequiel Garcia
2021-02-17  8:02 ` [PATCH v1 11/18] media: hantro: Add helper function for auxiliary buffers allocation Benjamin Gaignard
2021-02-17 20:42   ` Ezequiel Garcia
2021-02-18 14:51     ` Benjamin Gaignard
2021-02-17  8:03 ` [PATCH v1 12/18] media: uapi: Add a control for HANTRO driver Benjamin Gaignard
2021-02-17  8:03 ` [PATCH v1 13/18] media: hantro: Introduce G2/HEVC decoder Benjamin Gaignard
2021-02-17 20:45   ` Ezequiel Garcia
2021-02-18 10:43     ` Benjamin Gaignard
2021-02-18 11:47   ` Dan Carpenter
2021-02-17  8:03 ` [PATCH v1 14/18] media: hantro: add G2 support to postproc Benjamin Gaignard
2021-02-17  8:03 ` [PATCH v1 15/18] media: hantro: handle V4L2_PIX_FMT_HEVC_SLICE control Benjamin Gaignard
2021-02-17 20:13   ` Ezequiel Garcia
2021-02-17  8:03 ` [PATCH v1 16/18] media: hantro: IMX8M: add variant for G2/HEVC codec Benjamin Gaignard
2021-02-17  8:03 ` [PATCH v1 17/18] dt-bindings: media: nxp,imx8mq-vpu: Update bindings Benjamin Gaignard
2021-02-17 22:48   ` Rob Herring
2021-02-18 14:48     ` Benjamin Gaignard
2021-02-17  8:03 ` [PATCH v1 18/18] arm64: dts: imx8mq: Add node to G2 hardware Benjamin Gaignard
2021-02-17 20:43   ` Ezequiel Garcia
2021-02-18 15:47     ` Benjamin Gaignard
2021-02-17  8:08 ` [PATCH v1 00/18] Add HANTRO G2/HEVC decoder support for IMX8MQ Greg KH
2021-02-17  8:28   ` Benjamin Gaignard
2021-02-17  8:36     ` Greg KH
2021-02-17  9:10       ` Hans Verkuil [this message]
2021-02-17  9:23         ` Greg KH
2021-02-17  8:38     ` Paul Kocialkowski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=63b62e9e-b95f-59a4-b830-c56d2cb9e4f8@xs4all.nl \
    --to=hverkuil-cisco@xs4all.nl \
    --cc=Anson.Huang@nxp.com \
    --cc=adrian.ratiu@collabora.com \
    --cc=aisheng.dong@nxp.com \
    --cc=benjamin.gaignard@collabora.com \
    --cc=devel@driverdev.osuosl.org \
    --cc=devicetree@vger.kernel.org \
    --cc=ezequiel@collabora.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=jernej.skrabec@siol.net \
    --cc=kernel@collabora.com \
    --cc=kernel@pengutronix.de \
    --cc=krzk@kernel.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-imx@nxp.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-rockchip@lists.infradead.org \
    --cc=mchehab@kernel.org \
    --cc=mripard@kernel.org \
    --cc=p.zabel@pengutronix.de \
    --cc=paul.kocialkowski@bootlin.com \
    --cc=peng.fan@nxp.com \
    --cc=robh+dt@kernel.org \
    --cc=s.hauer@pengutronix.de \
    --cc=shawnguo@kernel.org \
    --cc=shengjiu.wang@nxp.com \
    --cc=wens@csie.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).