From: Hans Verkuil <hverkuil@xs4all.nl>
To: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>,
linux-media@vger.kernel.org
Cc: linux-sh@vger.kernel.org
Subject: Re: [PATCH v2 03/23] v4l: Support extending the v4l2_pix_format structure
Date: Thu, 17 Jul 2014 21:04:09 +0000 [thread overview]
Message-ID: <53C83A49.7060501@xs4all.nl> (raw)
In-Reply-To: <1403567669-18539-4-git-send-email-laurent.pinchart+renesas@ideasonboard.com>
Hi Laurent,
Something that just caught my eye:
On 06/24/2014 01:54 AM, Laurent Pinchart wrote:
> The v4l2_pix_format structure has no reserved field. It is embedded in
> the v4l2_framebuffer structure which has no reserved fields either, and
> in the v4l2_format structure which has reserved fields that were not
> previously required to be zeroed out by applications.
>
> To allow extending v4l2_pix_format, inline it in the v4l2_framebuffer
> structure, and use the priv field as a magic value to indicate that the
> application has set all v4l2_pix_format extended fields and zeroed all
> reserved fields following the v4l2_pix_format field in the v4l2_format
> structure.
>
> The availability of this API extension is reported to userspace through
> the new V4L2_CAP_EXT_PIX_FORMAT capability flag. Just checking that the
> priv field is still set to the magic value at [GS]_FMT return wouldn't
> be enough, as older kernels don't zero the priv field on return.
>
> To simplify the internal API towards drivers zero the extended fields
> and set the priv field to the magic value for applications not aware of
> the extensions.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
> ---
>
> diff --git a/Documentation/DocBook/media/v4l/pixfmt.xml b/Documentation/DocBook/media/v4l/pixfmt.xml
> index 91dcbc8..8c56cacd 100644
> --- a/Documentation/DocBook/media/v4l/pixfmt.xml
> +++ b/Documentation/DocBook/media/v4l/pixfmt.xml
> @@ -112,9 +112,28 @@ see <xref linkend="colorspaces" />.</entry>
> <row>
> <entry>__u32</entry>
> <entry><structfield>priv</structfield></entry>
> - <entry>Reserved for custom (driver defined) additional
> -information about formats. When not used drivers and applications must
> -set this field to zero.</entry>
> + <entry><para>This field indicates whether the remaining fields of the
> +<structname>v4l2_pix_format</structname> structure, also called the extended
> +fields, are valid. When set to <constant>V4L2_PIX_FMT_PRIV_MAGIC</constant>, it
> +indicates that the extended fields have been correctly initialized. When set to
> +any other value it indicates that the extended fields contain undefined values.
> +</para>
> +<para>Applications that wish to use the pixel format extended fields must first
> +ensure that the feature is supported by querying the device for the
> +<link linkend="querycap"><constant>V4L2_CAP_EXT_PIX_FORMAT</constant></link>
> +capability. If the capability isn't set the pixel format extended fields are not
> +supported and using the extended fields will lead to undefined results.</para>
> +<para>To use the extended fields, applications must set the
> +<structfield>priv</structfield> field to
> +<constant>V4L2_PIX_FMT_PRIV_MAGIC</constant>, initialize all the extended fields
> +and zero the unused bytes of the <structname>v4l2_format</structname>
> +<structfield>raw_data</structfield> field.</para>
Easy to write, much harder to implement. You would end up with something like:
memset(&fmt.fmt.pix.flags + sizeof(fmt.fmt.pix.flags), 0,
sizeof(fmt.fmt.raw_data) - sizeof(fmt.fmt.pix));
Not user-friendly and error-prone.
I would suggest adding a reserved array to pix_format instead, of at least
size (10 + 2 * 7) / 4 = 6 __u32. So: __u32 reserved[6]. Better would be to go
with 10 + 17 = 27 elements (same as the number of reserved elements in
v4l2_pix_format_mplane and one struct v4l2_plane_pix_format).
That will allow you to just say that the app should zero the reserved array.
> +<para>When the <structfield>priv</structfield> field isn't set to
> +<constant>V4L2_PIX_FMT_PRIV_MAGIC</constant> drivers must act as if all the
> +extended fields were set to zero. On return drivers must set the
> +<structfield>priv</structfield> field to
> +<constant>V4L2_PIX_FMT_PRIV_MAGIC</constant> and all the extended field to
> +applicable values.</para></entry>
> </row>
> </tbody>
> </tgroup>
Regards,
Hans
next prev parent reply other threads:[~2014-07-17 21:04 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-23 23:54 [PATCH v2 00/23] Renesas VSP1: alpha support and miscellaneous fixes Laurent Pinchart
2014-06-23 23:54 ` [PATCH v2 01/23] v4l: Add ARGB and XRGB pixel formats Laurent Pinchart
2014-06-27 9:34 ` Hans Verkuil
2014-07-17 21:53 ` Hans Verkuil
2014-07-18 12:31 ` Laurent Pinchart
2014-07-18 13:14 ` Hans Verkuil
2014-07-18 13:21 ` Hans Verkuil
2014-06-23 23:54 ` [PATCH v2 02/23] DocBook: media: Document ALPHA_COMPONENT control usage on output devices Laurent Pinchart
2014-06-27 9:34 ` Hans Verkuil
2014-06-23 23:54 ` [PATCH v2 03/23] v4l: Support extending the v4l2_pix_format structure Laurent Pinchart
2014-06-27 12:36 ` Hans Verkuil
2014-06-29 20:41 ` Laurent Pinchart
2014-07-17 21:04 ` Hans Verkuil [this message]
2014-07-21 20:56 ` Laurent Pinchart
2014-07-21 22:17 ` Hans Verkuil
2014-07-17 21:22 ` Hans Verkuil
2014-07-18 5:10 ` Hans Verkuil
2014-07-18 12:27 ` Laurent Pinchart
2014-07-18 13:12 ` Hans Verkuil
2014-06-23 23:54 ` [PATCH v2 04/23] v4l: Add premultiplied alpha flag for pixel formats Laurent Pinchart
2014-06-27 12:39 ` Hans Verkuil
2014-06-23 23:54 ` [PATCH v2 05/23] v4l: vb2: Fix stream start and buffer completion race Laurent Pinchart
2014-06-24 10:25 ` Hans Verkuil
2014-06-23 23:54 ` [PATCH v2 06/23] v4l: vsp1: Fix routing cleanup when stopping the stream Laurent Pinchart
2014-06-23 23:54 ` [PATCH v2 07/23] v4l: vsp1: Release buffers at stream stop Laurent Pinchart
2014-06-24 12:00 ` Sergei Shtylyov
2014-07-01 7:16 ` Laurent Pinchart
2014-06-23 23:54 ` [PATCH v2 08/23] v4l: vsp1: Fix pipeline stop timeout Laurent Pinchart
2014-06-23 23:54 ` [PATCH v2 09/23] v4l: vsp1: Fix typos Laurent Pinchart
2014-06-23 23:54 ` [PATCH v2 10/23] v4l: vsp1: Cleanup video nodes at removal time Laurent Pinchart
2014-06-23 23:54 ` [PATCH v2 11/23] v4l: vsp1: Propagate vsp1_device_get errors to the callers Laurent Pinchart
2014-06-23 23:54 ` [PATCH v2 12/23] v4l: vsp1: Setup control handler automatically at stream on time Laurent Pinchart
2014-06-23 23:54 ` [PATCH v2 13/23] v4l: vsp1: sru: Fix the intensity control default value Laurent Pinchart
2014-06-23 23:54 ` [PATCH v2 14/23] v4l: vsp1: sru: Make the intensity controllable during streaming Laurent Pinchart
2014-06-23 23:54 ` [PATCH v2 15/23] v4l: vsp1: wpf: Simplify cast to pipeline structure Laurent Pinchart
2014-06-23 23:54 ` [PATCH v2 16/23] v4l: vsp1: wpf: Clear RPF to WPF association at stream off time Laurent Pinchart
2014-06-23 23:54 ` [PATCH v2 17/23] v4l: vsp1: Switch to XRGB formats Laurent Pinchart
2014-06-23 23:54 ` [PATCH v2 18/23] v4l: vsp1: Add alpha channel support to the memory ports Laurent Pinchart
2014-06-23 23:54 ` [PATCH v2 19/23] v4l: vsp1: Add V4L2_CID_ALPHA_COMPONENT control support Laurent Pinchart
2014-06-23 23:54 ` [PATCH v2 20/23] v4l: vsp1: bru: Support premultiplied alpha at the BRU inputs Laurent Pinchart
2014-06-23 23:54 ` [PATCH v2 21/23] v4l: vsp1: bru: Support non-premultiplied colors at the BRU output Laurent Pinchart
2014-06-23 23:54 ` [PATCH v2 22/23] v4l: vsp1: bru: Make the background color configurable Laurent Pinchart
2014-06-23 23:54 ` [PATCH v2 23/23] v4l: vsp1: uds: Fix scaling of alpha layer Laurent Pinchart
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=53C83A49.7060501@xs4all.nl \
--to=hverkuil@xs4all.nl \
--cc=laurent.pinchart+renesas@ideasonboard.com \
--cc=linux-media@vger.kernel.org \
--cc=linux-sh@vger.kernel.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).