From: Tomasz Figa <tfiga@chromium.org>
To: Hans Verkuil <hverkuil@xs4all.nl>
Cc: Sakari Ailus <sakari.ailus@linux.intel.com>,
Yong Zhi <yong.zhi@intel.com>,
linux-media@vger.kernel.org, "Zheng,
Jian Xu" <jian.xu.zheng@intel.com>,
"Mani, Rajmohan" <rajmohan.mani@intel.com>,
"Toivonen, Tuukka" <tuukka.toivonen@intel.com>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Subject: Re: [PATCH 01/12] videodev2.h, v4l2-ioctl: add IPU3 meta buffer format
Date: Tue, 6 Jun 2017 19:09:43 +0900 [thread overview]
Message-ID: <CAAFQd5CY7jUJEicQ79QLTYP65cWqMhtTXJvZD-VCnKN134Ypeg@mail.gmail.com> (raw)
In-Reply-To: <1d067ac0-6265-4262-e59b-089d6055550b@xs4all.nl>
On Tue, Jun 6, 2017 at 5:04 PM, Hans Verkuil <hverkuil@xs4all.nl> wrote:
> On 06/06/17 09:25, Sakari Ailus wrote:
>> Hi Tomasz,
>>
>> On Tue, Jun 06, 2017 at 01:30:41PM +0900, Tomasz Figa wrote:
>>> Uhm, +Laurent. Sorry for the noise.
>>>
>>> On Tue, Jun 6, 2017 at 1:30 PM, Tomasz Figa <tfiga@chromium.org> wrote:
>>>> Hi Yong,
>>>>
>>>> On Tue, Jun 6, 2017 at 5:39 AM, Yong Zhi <yong.zhi@intel.com> wrote:
>>>>> Add the IPU3 specific processing parameter format
>>>>> V4L2_META_FMT_IPU3_PARAMS and metadata formats
>>>>> for 3A and other statistics:
>>>>
>>>> Please see my comments inline.
>>>>
>>>>>
>>>>> V4L2_META_FMT_IPU3_PARAMS
>>>>> V4L2_META_FMT_IPU3_STAT_3A
>>>>> V4L2_META_FMT_IPU3_STAT_DVS
>>>>> V4L2_META_FMT_IPU3_STAT_LACE
>>>>>
>>>>> Signed-off-by: Yong Zhi <yong.zhi@intel.com>
>>>>> ---
>>>>> drivers/media/v4l2-core/v4l2-ioctl.c | 4 ++++
>>>>> include/uapi/linux/videodev2.h | 6 ++++++
>>>>> 2 files changed, 10 insertions(+)
>>>> [snip]
>>>>> +/* Vendor specific - used for IPU3 camera sub-system */
>>>>> +#define V4L2_META_FMT_IPU3_PARAMS v4l2_fourcc('i', 'p', '3', 'p') /* IPU3 params */
>>>>> +#define V4L2_META_FMT_IPU3_STAT_3A v4l2_fourcc('i', 'p', '3', 's') /* IPU3 3A statistics */
>>>>> +#define V4L2_META_FMT_IPU3_STAT_DVS v4l2_fourcc('i', 'p', '3', 'd') /* IPU3 DVS statistics */
>>>>> +#define V4L2_META_FMT_IPU3_STAT_LACE v4l2_fourcc('i', 'p', '3', 'l') /* IPU3 LACE statistics */
>>>>
>>>> We had some discussion about this with Laurent and if I remember
>>>> correctly, the conclusion was that it might make sense to define one
>>>> FourCC for a vendor specific format, ('v', 'n', 'd', 'r') for example,
>>>> and then have a V4L2-specific enum within the v4l2_pix_format(_mplane)
>>>> struct that specifies the exact vendor data type. It seems saner than
>>>> assigning a new FourCC whenever a new hardware revision comes out,
>>>> especially given that FourCCs tend to be used outside of the V4L2
>>>> world as well and being kind of (de facto) standardized (with existing
>>>> exceptions, unfortunately).
>
> I can't remember that discussion
I think that was just a casual chat between Lauren, me and few more guys.
> although I've had other discussions with
> Laurent related to this on how to handle formats that have many variations
> on a theme.
>
> But speaking for this specific case I see no reason to do something special.
> There are only four new formats, which seems perfectly reasonable to me.
>
> I don't see the advantage of adding another layer of pixel formats. You still
> need to define something for this, one way or the other. And this way doesn't
> require API changes.
>
>> If we have four video nodes with different vendor specific formats, how does
>> the user tell the formats apart? I presume the user space could use the
>> entity names for instance, but that would essentially make them device
>> specific.
>
> Well, they are. There really is no way to avoid that.
>
>> I'm not sure if there would be any harm from that in practice though: the
>> user will need to find the device nodes somehow and that will be very likely
>> based on e.g. entity names.
>>
>> How should the documentation be arranged? The documentation is arranged by
>> fourccs currently; we'd probably need a separate section for vendor specific
>> formats. I think the device name should be listed there as well.
>
> There already is a separate section for metadata formats:
>
> https://hverkuil.home.xs4all.nl/spec/uapi/v4l/meta-formats.html
>
> But perhaps that page should be organized by device. And with some more
> detailed information on how to find the video node (i.e. entity names).
>
>> I'd like to have perhaps Hans's comment on that as well.
>>
>> I don't really see a drawback in the current way of doing this either; we
>> may get a few new fourcc codes occasionally of which I'm not really worried
>> about. --- I'd rather ask why should there be an exception on how vendor
>> specific formats are defined. And if we do make an exception, then how do
>> you decide which one is and isn't vendor specific? There are raw bayer
>> format variants that are just raw bayer data but the pixels are arranged
>> differently (e.g. CIO2 driver).
>>
>
> For these unique formats I am happy with the way it is today. The problem
> is more with 'parameterized' formats. A simple example would be the 4:2:2
> interleaved YUV formats where you have four different ways of ordering the
> Y, U and V components. Right now we have four defines for that, but things
> get out of hand quickly when you have multiple parameters like that.
>
> Laurent and myself discussed that with NVidia some time ago, without
> reaching a clear conclusion. Mostly because we couldn't come up with an
> API that is simple enough.
Actually I back off a bit. Still, it looks like we have a metadata
interface already, but it's limited to CAPTURE:
https://linuxtv.org/downloads/v4l-dvb-apis/uapi/v4l/dev-meta.html#metadata
Maybe we can also have V4L2_BUF_TYPE_META_OUTPUT and solve the problem
of private FourCCs (and possible collisions with rest of the world) by
restricting them to the V4L2_BUF_TYPE_META_* classes only?
Best regards,
Tomasz
next prev parent reply other threads:[~2017-06-06 10:10 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-05 20:39 [PATCH 00/12] Intel IPU3 ImgU patchset Yong Zhi
2017-06-05 20:39 ` [PATCH 01/12] videodev2.h, v4l2-ioctl: add IPU3 meta buffer format Yong Zhi
2017-06-05 20:43 ` Alan Cox
2017-06-09 10:55 ` Sakari Ailus
2017-06-06 4:30 ` Tomasz Figa
2017-06-06 4:30 ` Tomasz Figa
2017-06-06 7:25 ` Sakari Ailus
2017-06-06 8:04 ` Hans Verkuil
2017-06-06 10:09 ` Tomasz Figa [this message]
2017-06-16 5:52 ` Tomasz Figa
2017-06-16 8:25 ` Sakari Ailus
2017-06-16 8:35 ` Tomasz Figa
2017-06-16 8:49 ` Sakari Ailus
2017-06-16 9:03 ` Tomasz Figa
2017-06-16 9:19 ` Sakari Ailus
2017-06-16 9:29 ` Tomasz Figa
2017-06-19 9:17 ` Laurent Pinchart
2017-06-19 10:41 ` Tomasz Figa
2017-06-05 20:39 ` [PATCH 02/12] intel-ipu3: mmu: implement driver Yong Zhi
2017-06-06 8:07 ` Hans Verkuil
2017-06-16 9:21 ` Sakari Ailus
2017-06-06 10:13 ` Tomasz Figa
2017-06-07 8:35 ` Tomasz Figa
2017-06-08 16:43 ` Sakari Ailus
2017-06-09 5:59 ` Tomasz Figa
2017-06-09 11:16 ` Sakari Ailus
2017-06-09 12:09 ` Tomasz Figa
2017-06-09 8:26 ` Tuukka Toivonen
2017-06-09 12:10 ` Tomasz Figa
2017-06-07 21:59 ` Sakari Ailus
2017-06-08 7:36 ` Tomasz Figa
2017-06-05 20:39 ` [PATCH 03/12] intel-ipu3: Add DMA API implementation Yong Zhi
2017-06-07 9:47 ` Tomasz Figa
2017-06-07 17:45 ` Alan Cox
2017-06-08 2:55 ` Tomasz Figa
2017-06-08 16:47 ` Sakari Ailus
2017-06-08 13:22 ` Robin Murphy
2017-06-08 14:35 ` Tomasz Figa
2017-06-08 18:07 ` Robin Murphy
2017-06-09 6:20 ` Tomasz Figa
2017-06-09 13:05 ` Robin Murphy
2017-06-05 20:39 ` [PATCH 04/12] intel-ipu3: Add user space ABI definitions Yong Zhi
2017-06-06 8:28 ` Hans Verkuil
2017-06-07 22:22 ` Sakari Ailus
2017-09-05 17:31 ` Zhi, Yong
2018-04-27 12:27 ` Sakari Ailus
2017-06-05 20:39 ` [PATCH 06/12] intel-ipu3: css: imgu dma buff pool Yong Zhi
2017-06-05 20:39 ` [PATCH 07/12] intel-ipu3: css: firmware management Yong Zhi
2017-06-06 8:38 ` Hans Verkuil
2017-06-14 21:46 ` Zhi, Yong
2017-06-16 10:15 ` Tomasz Figa
2017-06-05 20:39 ` [PATCH 08/12] intel-ipu3: params: compute and program ccs Yong Zhi
2017-06-05 20:39 ` [PATCH 09/12] intel-ipu3: css hardware setup Yong Zhi
2017-06-05 20:39 ` [PATCH 10/12] intel-ipu3: css pipeline Yong Zhi
2017-06-05 20:39 ` [PATCH 11/12] intel-ipu3: Add imgu v4l2 driver Yong Zhi
2017-06-06 9:08 ` Hans Verkuil
2017-06-09 9:20 ` Sakari Ailus
2017-06-14 23:40 ` Zhi, Yong
2017-06-05 20:39 ` [PATCH 12/12] intel-ipu3: imgu top level pci device Yong Zhi
2017-06-05 20:46 ` [PATCH 00/12] Intel IPU3 ImgU patchset Alan Cox
2017-06-14 22:26 ` Sakari Ailus
2017-06-15 8:26 ` Andy Shevchenko
2017-06-15 8:37 ` Sakari Ailus
2017-06-06 9:14 ` Hans Verkuil
[not found] ` <1496695157-19926-6-git-send-email-yong.zhi@intel.com>
2017-06-08 8:29 ` [PATCH 05/12] intel-ipu3: css: tables Tomasz Figa
2017-06-09 9:43 ` Sakari Ailus
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=CAAFQd5CY7jUJEicQ79QLTYP65cWqMhtTXJvZD-VCnKN134Ypeg@mail.gmail.com \
--to=tfiga@chromium.org \
--cc=hverkuil@xs4all.nl \
--cc=jian.xu.zheng@intel.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-media@vger.kernel.org \
--cc=rajmohan.mani@intel.com \
--cc=sakari.ailus@linux.intel.com \
--cc=tuukka.toivonen@intel.com \
--cc=yong.zhi@intel.com \
/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).