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 01/23] v4l: Add ARGB and XRGB pixel formats
Date: Fri, 27 Jun 2014 09:34:15 +0000 [thread overview]
Message-ID: <53AD3A97.1000800@xs4all.nl> (raw)
In-Reply-To: <1403567669-18539-2-git-send-email-laurent.pinchart+renesas@ideasonboard.com>
Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
Regards,
Hans
On 06/24/2014 01:54 AM, Laurent Pinchart wrote:
> From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>
> The existing RGB pixel formats are ill-defined in respect to their alpha
> bits and their meaning is driver dependent. Create new standard ARGB and
> XRGB variants with clearly defined meanings and make the existing
> variants deprecated.
>
> The new pixel formats 4CC values have been selected to match the DRM
> 4CCs for the same in-memory formats.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
> ---
> .../DocBook/media/v4l/pixfmt-packed-rgb.xml | 415 ++++++++++++++++++++-
> include/uapi/linux/videodev2.h | 8 +
> 2 files changed, 403 insertions(+), 20 deletions(-)
>
> diff --git a/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml b/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml
> index e1c4f8b..5f1602f 100644
> --- a/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml
> +++ b/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml
> @@ -130,9 +130,9 @@ colorspace <constant>V4L2_COLORSPACE_SRGB</constant>.</para>
> <entry>b<subscript>1</subscript></entry>
> <entry>b<subscript>0</subscript></entry>
> </row>
> - <row id="V4L2-PIX-FMT-RGB444">
> - <entry><constant>V4L2_PIX_FMT_RGB444</constant></entry>
> - <entry>'R444'</entry>
> + <row id="V4L2-PIX-FMT-ARGB444">
> + <entry><constant>V4L2_PIX_FMT_ARGB444</constant></entry>
> + <entry>'AR12'</entry>
> <entry></entry>
> <entry>g<subscript>3</subscript></entry>
> <entry>g<subscript>2</subscript></entry>
> @@ -152,9 +152,31 @@ colorspace <constant>V4L2_COLORSPACE_SRGB</constant>.</para>
> <entry>r<subscript>1</subscript></entry>
> <entry>r<subscript>0</subscript></entry>
> </row>
> - <row id="V4L2-PIX-FMT-RGB555">
> - <entry><constant>V4L2_PIX_FMT_RGB555</constant></entry>
> - <entry>'RGBO'</entry>
> + <row id="V4L2-PIX-FMT-XRGB444">
> + <entry><constant>V4L2_PIX_FMT_XRGB444</constant></entry>
> + <entry>'XR12'</entry>
> + <entry></entry>
> + <entry>g<subscript>3</subscript></entry>
> + <entry>g<subscript>2</subscript></entry>
> + <entry>g<subscript>1</subscript></entry>
> + <entry>g<subscript>0</subscript></entry>
> + <entry>b<subscript>3</subscript></entry>
> + <entry>b<subscript>2</subscript></entry>
> + <entry>b<subscript>1</subscript></entry>
> + <entry>b<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>r<subscript>3</subscript></entry>
> + <entry>r<subscript>2</subscript></entry>
> + <entry>r<subscript>1</subscript></entry>
> + <entry>r<subscript>0</subscript></entry>
> + </row>
> + <row id="V4L2-PIX-FMT-ARGB555">
> + <entry><constant>V4L2_PIX_FMT_ARGB555</constant></entry>
> + <entry>'AR15'</entry>
> <entry></entry>
> <entry>g<subscript>2</subscript></entry>
> <entry>g<subscript>1</subscript></entry>
> @@ -174,6 +196,28 @@ colorspace <constant>V4L2_COLORSPACE_SRGB</constant>.</para>
> <entry>g<subscript>4</subscript></entry>
> <entry>g<subscript>3</subscript></entry>
> </row>
> + <row id="V4L2-PIX-FMT-XRGB555">
> + <entry><constant>V4L2_PIX_FMT_XRGB555</constant></entry>
> + <entry>'XR15'</entry>
> + <entry></entry>
> + <entry>g<subscript>2</subscript></entry>
> + <entry>g<subscript>1</subscript></entry>
> + <entry>g<subscript>0</subscript></entry>
> + <entry>b<subscript>4</subscript></entry>
> + <entry>b<subscript>3</subscript></entry>
> + <entry>b<subscript>2</subscript></entry>
> + <entry>b<subscript>1</subscript></entry>
> + <entry>b<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>-</entry>
> + <entry>r<subscript>4</subscript></entry>
> + <entry>r<subscript>3</subscript></entry>
> + <entry>r<subscript>2</subscript></entry>
> + <entry>r<subscript>1</subscript></entry>
> + <entry>r<subscript>0</subscript></entry>
> + <entry>g<subscript>4</subscript></entry>
> + <entry>g<subscript>3</subscript></entry>
> + </row>
> <row id="V4L2-PIX-FMT-RGB565">
> <entry><constant>V4L2_PIX_FMT_RGB565</constant></entry>
> <entry>'RGBP'</entry>
> @@ -341,9 +385,9 @@ colorspace <constant>V4L2_COLORSPACE_SRGB</constant>.</para>
> <entry>b<subscript>1</subscript></entry>
> <entry>b<subscript>0</subscript></entry>
> </row>
> - <row id="V4L2-PIX-FMT-BGR32">
> - <entry><constant>V4L2_PIX_FMT_BGR32</constant></entry>
> - <entry>'BGR4'</entry>
> + <row id="V4L2-PIX-FMT-ABGR32">
> + <entry><constant>V4L2_PIX_FMT_ABGR32</constant></entry>
> + <entry>'AR24'</entry>
> <entry></entry>
> <entry>b<subscript>7</subscript></entry>
> <entry>b<subscript>6</subscript></entry>
> @@ -381,9 +425,49 @@ colorspace <constant>V4L2_COLORSPACE_SRGB</constant>.</para>
> <entry>a<subscript>1</subscript></entry>
> <entry>a<subscript>0</subscript></entry>
> </row>
> - <row id="V4L2-PIX-FMT-RGB32">
> - <entry><constant>V4L2_PIX_FMT_RGB32</constant></entry>
> - <entry>'RGB4'</entry>
> + <row id="V4L2-PIX-FMT-XBGR32">
> + <entry><constant>V4L2_PIX_FMT_XBGR32</constant></entry>
> + <entry>'XR24'</entry>
> + <entry></entry>
> + <entry>b<subscript>7</subscript></entry>
> + <entry>b<subscript>6</subscript></entry>
> + <entry>b<subscript>5</subscript></entry>
> + <entry>b<subscript>4</subscript></entry>
> + <entry>b<subscript>3</subscript></entry>
> + <entry>b<subscript>2</subscript></entry>
> + <entry>b<subscript>1</subscript></entry>
> + <entry>b<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>g<subscript>7</subscript></entry>
> + <entry>g<subscript>6</subscript></entry>
> + <entry>g<subscript>5</subscript></entry>
> + <entry>g<subscript>4</subscript></entry>
> + <entry>g<subscript>3</subscript></entry>
> + <entry>g<subscript>2</subscript></entry>
> + <entry>g<subscript>1</subscript></entry>
> + <entry>g<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>r<subscript>7</subscript></entry>
> + <entry>r<subscript>6</subscript></entry>
> + <entry>r<subscript>5</subscript></entry>
> + <entry>r<subscript>4</subscript></entry>
> + <entry>r<subscript>3</subscript></entry>
> + <entry>r<subscript>2</subscript></entry>
> + <entry>r<subscript>1</subscript></entry>
> + <entry>r<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + </row>
> + <row id="V4L2-PIX-FMT-ARGB32">
> + <entry><constant>V4L2_PIX_FMT_ARGB32</constant></entry>
> + <entry>'AX24'</entry>
> <entry></entry>
> <entry>a<subscript>7</subscript></entry>
> <entry>a<subscript>6</subscript></entry>
> @@ -421,18 +505,76 @@ colorspace <constant>V4L2_COLORSPACE_SRGB</constant>.</para>
> <entry>b<subscript>1</subscript></entry>
> <entry>b<subscript>0</subscript></entry>
> </row>
> + <row id="V4L2-PIX-FMT-XRGB32">
> + <entry><constant>V4L2_PIX_FMT_XRGB32</constant></entry>
> + <entry>'BX24'</entry>
> + <entry></entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry></entry>
> + <entry>r<subscript>7</subscript></entry>
> + <entry>r<subscript>6</subscript></entry>
> + <entry>r<subscript>5</subscript></entry>
> + <entry>r<subscript>4</subscript></entry>
> + <entry>r<subscript>3</subscript></entry>
> + <entry>r<subscript>2</subscript></entry>
> + <entry>r<subscript>1</subscript></entry>
> + <entry>r<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>g<subscript>7</subscript></entry>
> + <entry>g<subscript>6</subscript></entry>
> + <entry>g<subscript>5</subscript></entry>
> + <entry>g<subscript>4</subscript></entry>
> + <entry>g<subscript>3</subscript></entry>
> + <entry>g<subscript>2</subscript></entry>
> + <entry>g<subscript>1</subscript></entry>
> + <entry>g<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>b<subscript>7</subscript></entry>
> + <entry>b<subscript>6</subscript></entry>
> + <entry>b<subscript>5</subscript></entry>
> + <entry>b<subscript>4</subscript></entry>
> + <entry>b<subscript>3</subscript></entry>
> + <entry>b<subscript>2</subscript></entry>
> + <entry>b<subscript>1</subscript></entry>
> + <entry>b<subscript>0</subscript></entry>
> + </row>
> </tbody>
> </tgroup>
> </table>
>
> - <para>Bit 7 is the most significant bit. The value of the a = alpha
> -bits is undefined when reading from the driver, ignored when writing
> -to the driver, except when alpha blending has been negotiated for a
> -<link linkend="overlay">Video Overlay</link> or <link linkend="osd">
> -Video Output Overlay</link> or when the alpha component has been configured
> -for a <link linkend="capture">Video Capture</link> by means of <link
> -linkend="v4l2-alpha-component"> <constant>V4L2_CID_ALPHA_COMPONENT
> -</constant> </link> control.</para>
> + <para>Bit 7 is the most significant bit.</para>
> +
> + <para>The usage and value of the alpha bits (a) in the ARGB and ABGR formats
> + (collectively referred to as alpha formats) depend on the device type and
> + hardware operation. <link linkend="capture">Capture</link> devices
> + (including capture queues of mem-to-mem devices) fill the alpha component in
> + memory. When the device outputs an alpha channel the alpha component will
> + have a meaningful value. Otherwise, when the device doesn't output an alpha
> + channel but can set the alpha bit to a user-configurable value, the <link
> + linkend="v4l2-alpha-component"><constant>V4L2_CID_ALPHA_COMPONENT</constant>
> + </link> control is used to specify that alpha value, and the alpha component
> + of all pixels will be set to the value specified by that control. Otherwise
> + a corresponding format without an alpha component (XRGB or XBGR) must be
> + used instead of an alpha format.</para>
> +
> + <para><link linkend="output">Output</link> devices (including output queues
> + of mem-to-mem devices and <link linkend="osd">video output overlay</link>
> + devices) read the alpha component from memory. When the device processes the
> + alpha channel the alpha component must be filled with meaningful values by
> + applications. Otherwise a corresponding format without an alpha component
> + (XRGB or XBGR) must be used instead of an alpha format.</para>
> +
> + <para>The XRGB and XBGR formats contain undefined bits (-). Applications,
> + devices and drivers must ignore those bits, for both <link
> + linkend="capture">capture</link> and <link linkend="output">output</link>
> + devices.</para>
>
> <example>
> <title><constant>V4L2_PIX_FMT_BGR24</constant> 4 × 4 pixel
> @@ -512,6 +654,239 @@ image</title>
> </formalpara>
> </example>
>
> + <para>Formats defined in <xref linkend="rgb-formats-deprecated"/> are
> + deprecated and must not be used by new drivers. They are documented here for
> + reference. The meaning of their alpha bits (a) is ill-defined and
> + interpreted as in either the corresponding ARGB or XRGB format, depending on
> + the driver.</para>
> +
> + <table pgwide="1" frame="none" id="rgb-formats-deprecated">
> + <title>Deprecated Packed RGB Image Formats</title>
> + <tgroup cols="37" align="center">
> + <colspec colname="id" align="left" />
> + <colspec colname="fourcc" />
> + <colspec colname="bit" />
> +
> + <colspec colnum="4" colname="b07" align="center" />
> + <colspec colnum="5" colname="b06" align="center" />
> + <colspec colnum="6" colname="b05" align="center" />
> + <colspec colnum="7" colname="b04" align="center" />
> + <colspec colnum="8" colname="b03" align="center" />
> + <colspec colnum="9" colname="b02" align="center" />
> + <colspec colnum="10" colname="b01" align="center" />
> + <colspec colnum="11" colname="b00" align="center" />
> +
> + <colspec colnum="13" colname="b17" align="center" />
> + <colspec colnum="14" colname="b16" align="center" />
> + <colspec colnum="15" colname="b15" align="center" />
> + <colspec colnum="16" colname="b14" align="center" />
> + <colspec colnum="17" colname="b13" align="center" />
> + <colspec colnum="18" colname="b12" align="center" />
> + <colspec colnum="19" colname="b11" align="center" />
> + <colspec colnum="20" colname="b10" align="center" />
> +
> + <colspec colnum="22" colname="b27" align="center" />
> + <colspec colnum="23" colname="b26" align="center" />
> + <colspec colnum="24" colname="b25" align="center" />
> + <colspec colnum="25" colname="b24" align="center" />
> + <colspec colnum="26" colname="b23" align="center" />
> + <colspec colnum="27" colname="b22" align="center" />
> + <colspec colnum="28" colname="b21" align="center" />
> + <colspec colnum="29" colname="b20" align="center" />
> +
> + <colspec colnum="31" colname="b37" align="center" />
> + <colspec colnum="32" colname="b36" align="center" />
> + <colspec colnum="33" colname="b35" align="center" />
> + <colspec colnum="34" colname="b34" align="center" />
> + <colspec colnum="35" colname="b33" align="center" />
> + <colspec colnum="36" colname="b32" align="center" />
> + <colspec colnum="37" colname="b31" align="center" />
> + <colspec colnum="38" colname="b30" align="center" />
> +
> + <spanspec namest="b07" nameend="b00" spanname="b0" />
> + <spanspec namest="b17" nameend="b10" spanname="b1" />
> + <spanspec namest="b27" nameend="b20" spanname="b2" />
> + <spanspec namest="b37" nameend="b30" spanname="b3" />
> + <thead>
> + <row>
> + <entry>Identifier</entry>
> + <entry>Code</entry>
> + <entry> </entry>
> + <entry spanname="b0">Byte 0 in memory</entry>
> + <entry spanname="b1">Byte 1</entry>
> + <entry spanname="b2">Byte 2</entry>
> + <entry spanname="b3">Byte 3</entry>
> + </row>
> + <row>
> + <entry> </entry>
> + <entry> </entry>
> + <entry>Bit</entry>
> + <entry>7</entry>
> + <entry>6</entry>
> + <entry>5</entry>
> + <entry>4</entry>
> + <entry>3</entry>
> + <entry>2</entry>
> + <entry>1</entry>
> + <entry>0</entry>
> + <entry> </entry>
> + <entry>7</entry>
> + <entry>6</entry>
> + <entry>5</entry>
> + <entry>4</entry>
> + <entry>3</entry>
> + <entry>2</entry>
> + <entry>1</entry>
> + <entry>0</entry>
> + <entry> </entry>
> + <entry>7</entry>
> + <entry>6</entry>
> + <entry>5</entry>
> + <entry>4</entry>
> + <entry>3</entry>
> + <entry>2</entry>
> + <entry>1</entry>
> + <entry>0</entry>
> + <entry> </entry>
> + <entry>7</entry>
> + <entry>6</entry>
> + <entry>5</entry>
> + <entry>4</entry>
> + <entry>3</entry>
> + <entry>2</entry>
> + <entry>1</entry>
> + <entry>0</entry>
> + </row>
> + </thead>
> + <tbody>
> + <row id="V4L2-PIX-FMT-RGB444">
> + <entry><constant>V4L2_PIX_FMT_RGB444</constant></entry>
> + <entry>'R444'</entry>
> + <entry></entry>
> + <entry>g<subscript>3</subscript></entry>
> + <entry>g<subscript>2</subscript></entry>
> + <entry>g<subscript>1</subscript></entry>
> + <entry>g<subscript>0</subscript></entry>
> + <entry>b<subscript>3</subscript></entry>
> + <entry>b<subscript>2</subscript></entry>
> + <entry>b<subscript>1</subscript></entry>
> + <entry>b<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>a<subscript>3</subscript></entry>
> + <entry>a<subscript>2</subscript></entry>
> + <entry>a<subscript>1</subscript></entry>
> + <entry>a<subscript>0</subscript></entry>
> + <entry>r<subscript>3</subscript></entry>
> + <entry>r<subscript>2</subscript></entry>
> + <entry>r<subscript>1</subscript></entry>
> + <entry>r<subscript>0</subscript></entry>
> + </row>
> + <row id="V4L2-PIX-FMT-RGB555">
> + <entry><constant>V4L2_PIX_FMT_RGB555</constant></entry>
> + <entry>'RGBO'</entry>
> + <entry></entry>
> + <entry>g<subscript>2</subscript></entry>
> + <entry>g<subscript>1</subscript></entry>
> + <entry>g<subscript>0</subscript></entry>
> + <entry>b<subscript>4</subscript></entry>
> + <entry>b<subscript>3</subscript></entry>
> + <entry>b<subscript>2</subscript></entry>
> + <entry>b<subscript>1</subscript></entry>
> + <entry>b<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>a</entry>
> + <entry>r<subscript>4</subscript></entry>
> + <entry>r<subscript>3</subscript></entry>
> + <entry>r<subscript>2</subscript></entry>
> + <entry>r<subscript>1</subscript></entry>
> + <entry>r<subscript>0</subscript></entry>
> + <entry>g<subscript>4</subscript></entry>
> + <entry>g<subscript>3</subscript></entry>
> + </row>
> + <row id="V4L2-PIX-FMT-BGR32">
> + <entry><constant>V4L2_PIX_FMT_BGR32</constant></entry>
> + <entry>'BGR4'</entry>
> + <entry></entry>
> + <entry>b<subscript>7</subscript></entry>
> + <entry>b<subscript>6</subscript></entry>
> + <entry>b<subscript>5</subscript></entry>
> + <entry>b<subscript>4</subscript></entry>
> + <entry>b<subscript>3</subscript></entry>
> + <entry>b<subscript>2</subscript></entry>
> + <entry>b<subscript>1</subscript></entry>
> + <entry>b<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>g<subscript>7</subscript></entry>
> + <entry>g<subscript>6</subscript></entry>
> + <entry>g<subscript>5</subscript></entry>
> + <entry>g<subscript>4</subscript></entry>
> + <entry>g<subscript>3</subscript></entry>
> + <entry>g<subscript>2</subscript></entry>
> + <entry>g<subscript>1</subscript></entry>
> + <entry>g<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>r<subscript>7</subscript></entry>
> + <entry>r<subscript>6</subscript></entry>
> + <entry>r<subscript>5</subscript></entry>
> + <entry>r<subscript>4</subscript></entry>
> + <entry>r<subscript>3</subscript></entry>
> + <entry>r<subscript>2</subscript></entry>
> + <entry>r<subscript>1</subscript></entry>
> + <entry>r<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>a<subscript>7</subscript></entry>
> + <entry>a<subscript>6</subscript></entry>
> + <entry>a<subscript>5</subscript></entry>
> + <entry>a<subscript>4</subscript></entry>
> + <entry>a<subscript>3</subscript></entry>
> + <entry>a<subscript>2</subscript></entry>
> + <entry>a<subscript>1</subscript></entry>
> + <entry>a<subscript>0</subscript></entry>
> + </row>
> + <row id="V4L2-PIX-FMT-RGB32">
> + <entry><constant>V4L2_PIX_FMT_RGB32</constant></entry>
> + <entry>'RGB4'</entry>
> + <entry></entry>
> + <entry>a<subscript>7</subscript></entry>
> + <entry>a<subscript>6</subscript></entry>
> + <entry>a<subscript>5</subscript></entry>
> + <entry>a<subscript>4</subscript></entry>
> + <entry>a<subscript>3</subscript></entry>
> + <entry>a<subscript>2</subscript></entry>
> + <entry>a<subscript>1</subscript></entry>
> + <entry>a<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>r<subscript>7</subscript></entry>
> + <entry>r<subscript>6</subscript></entry>
> + <entry>r<subscript>5</subscript></entry>
> + <entry>r<subscript>4</subscript></entry>
> + <entry>r<subscript>3</subscript></entry>
> + <entry>r<subscript>2</subscript></entry>
> + <entry>r<subscript>1</subscript></entry>
> + <entry>r<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>g<subscript>7</subscript></entry>
> + <entry>g<subscript>6</subscript></entry>
> + <entry>g<subscript>5</subscript></entry>
> + <entry>g<subscript>4</subscript></entry>
> + <entry>g<subscript>3</subscript></entry>
> + <entry>g<subscript>2</subscript></entry>
> + <entry>g<subscript>1</subscript></entry>
> + <entry>g<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>b<subscript>7</subscript></entry>
> + <entry>b<subscript>6</subscript></entry>
> + <entry>b<subscript>5</subscript></entry>
> + <entry>b<subscript>4</subscript></entry>
> + <entry>b<subscript>3</subscript></entry>
> + <entry>b<subscript>2</subscript></entry>
> + <entry>b<subscript>1</subscript></entry>
> + <entry>b<subscript>0</subscript></entry>
> + </row>
> + </tbody>
> + </tgroup>
> + </table>
> +
> <para>A test utility to determine which RGB formats a driver
> actually supports is available from the LinuxTV v4l-dvb repository.
> See &v4l-dvb; for access instructions.</para>
> diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
> index 168ff50..0125f4d 100644
> --- a/include/uapi/linux/videodev2.h
> +++ b/include/uapi/linux/videodev2.h
> @@ -294,7 +294,11 @@ struct v4l2_pix_format {
> /* RGB formats */
> #define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R', 'G', 'B', '1') /* 8 RGB-3-3-2 */
> #define V4L2_PIX_FMT_RGB444 v4l2_fourcc('R', '4', '4', '4') /* 16 xxxxrrrr ggggbbbb */
> +#define V4L2_PIX_FMT_ARGB444 v4l2_fourcc('A', 'R', '1', '2') /* 16 aaaarrrr ggggbbbb */
> +#define V4L2_PIX_FMT_XRGB444 v4l2_fourcc('X', 'R', '1', '2') /* 16 xxxxrrrr ggggbbbb */
> #define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O') /* 16 RGB-5-5-5 */
> +#define V4L2_PIX_FMT_ARGB555 v4l2_fourcc('A', 'R', '1', '5') /* 16 ARGB-1-5-5-5 */
> +#define V4L2_PIX_FMT_XRGB555 v4l2_fourcc('X', 'R', '1', '5') /* 16 XRGB-1-5-5-5 */
> #define V4L2_PIX_FMT_RGB565 v4l2_fourcc('R', 'G', 'B', 'P') /* 16 RGB-5-6-5 */
> #define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q') /* 16 RGB-5-5-5 BE */
> #define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R') /* 16 RGB-5-6-5 BE */
> @@ -302,7 +306,11 @@ struct v4l2_pix_format {
> #define V4L2_PIX_FMT_BGR24 v4l2_fourcc('B', 'G', 'R', '3') /* 24 BGR-8-8-8 */
> #define V4L2_PIX_FMT_RGB24 v4l2_fourcc('R', 'G', 'B', '3') /* 24 RGB-8-8-8 */
> #define V4L2_PIX_FMT_BGR32 v4l2_fourcc('B', 'G', 'R', '4') /* 32 BGR-8-8-8-8 */
> +#define V4L2_PIX_FMT_ABGR32 v4l2_fourcc('A', 'R', '2', '4') /* 32 BGRA-8-8-8-8 */
> +#define V4L2_PIX_FMT_XBGR32 v4l2_fourcc('X', 'R', '2', '4') /* 32 BGRX-8-8-8-8 */
> #define V4L2_PIX_FMT_RGB32 v4l2_fourcc('R', 'G', 'B', '4') /* 32 RGB-8-8-8-8 */
> +#define V4L2_PIX_FMT_ARGB32 v4l2_fourcc('B', 'A', '2', '4') /* 32 ARGB-8-8-8-8 */
> +#define V4L2_PIX_FMT_XRGB32 v4l2_fourcc('B', 'X', '2', '4') /* 32 XRGB-8-8-8-8 */
>
> /* Grey formats */
> #define V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y') /* 8 Greyscale */
>
WARNING: multiple messages have this Message-ID (diff)
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 01/23] v4l: Add ARGB and XRGB pixel formats
Date: Fri, 27 Jun 2014 11:34:15 +0200 [thread overview]
Message-ID: <53AD3A97.1000800@xs4all.nl> (raw)
In-Reply-To: <1403567669-18539-2-git-send-email-laurent.pinchart+renesas@ideasonboard.com>
Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
Regards,
Hans
On 06/24/2014 01:54 AM, Laurent Pinchart wrote:
> From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
>
> The existing RGB pixel formats are ill-defined in respect to their alpha
> bits and their meaning is driver dependent. Create new standard ARGB and
> XRGB variants with clearly defined meanings and make the existing
> variants deprecated.
>
> The new pixel formats 4CC values have been selected to match the DRM
> 4CCs for the same in-memory formats.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
> ---
> .../DocBook/media/v4l/pixfmt-packed-rgb.xml | 415 ++++++++++++++++++++-
> include/uapi/linux/videodev2.h | 8 +
> 2 files changed, 403 insertions(+), 20 deletions(-)
>
> diff --git a/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml b/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml
> index e1c4f8b..5f1602f 100644
> --- a/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml
> +++ b/Documentation/DocBook/media/v4l/pixfmt-packed-rgb.xml
> @@ -130,9 +130,9 @@ colorspace <constant>V4L2_COLORSPACE_SRGB</constant>.</para>
> <entry>b<subscript>1</subscript></entry>
> <entry>b<subscript>0</subscript></entry>
> </row>
> - <row id="V4L2-PIX-FMT-RGB444">
> - <entry><constant>V4L2_PIX_FMT_RGB444</constant></entry>
> - <entry>'R444'</entry>
> + <row id="V4L2-PIX-FMT-ARGB444">
> + <entry><constant>V4L2_PIX_FMT_ARGB444</constant></entry>
> + <entry>'AR12'</entry>
> <entry></entry>
> <entry>g<subscript>3</subscript></entry>
> <entry>g<subscript>2</subscript></entry>
> @@ -152,9 +152,31 @@ colorspace <constant>V4L2_COLORSPACE_SRGB</constant>.</para>
> <entry>r<subscript>1</subscript></entry>
> <entry>r<subscript>0</subscript></entry>
> </row>
> - <row id="V4L2-PIX-FMT-RGB555">
> - <entry><constant>V4L2_PIX_FMT_RGB555</constant></entry>
> - <entry>'RGBO'</entry>
> + <row id="V4L2-PIX-FMT-XRGB444">
> + <entry><constant>V4L2_PIX_FMT_XRGB444</constant></entry>
> + <entry>'XR12'</entry>
> + <entry></entry>
> + <entry>g<subscript>3</subscript></entry>
> + <entry>g<subscript>2</subscript></entry>
> + <entry>g<subscript>1</subscript></entry>
> + <entry>g<subscript>0</subscript></entry>
> + <entry>b<subscript>3</subscript></entry>
> + <entry>b<subscript>2</subscript></entry>
> + <entry>b<subscript>1</subscript></entry>
> + <entry>b<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>r<subscript>3</subscript></entry>
> + <entry>r<subscript>2</subscript></entry>
> + <entry>r<subscript>1</subscript></entry>
> + <entry>r<subscript>0</subscript></entry>
> + </row>
> + <row id="V4L2-PIX-FMT-ARGB555">
> + <entry><constant>V4L2_PIX_FMT_ARGB555</constant></entry>
> + <entry>'AR15'</entry>
> <entry></entry>
> <entry>g<subscript>2</subscript></entry>
> <entry>g<subscript>1</subscript></entry>
> @@ -174,6 +196,28 @@ colorspace <constant>V4L2_COLORSPACE_SRGB</constant>.</para>
> <entry>g<subscript>4</subscript></entry>
> <entry>g<subscript>3</subscript></entry>
> </row>
> + <row id="V4L2-PIX-FMT-XRGB555">
> + <entry><constant>V4L2_PIX_FMT_XRGB555</constant></entry>
> + <entry>'XR15'</entry>
> + <entry></entry>
> + <entry>g<subscript>2</subscript></entry>
> + <entry>g<subscript>1</subscript></entry>
> + <entry>g<subscript>0</subscript></entry>
> + <entry>b<subscript>4</subscript></entry>
> + <entry>b<subscript>3</subscript></entry>
> + <entry>b<subscript>2</subscript></entry>
> + <entry>b<subscript>1</subscript></entry>
> + <entry>b<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>-</entry>
> + <entry>r<subscript>4</subscript></entry>
> + <entry>r<subscript>3</subscript></entry>
> + <entry>r<subscript>2</subscript></entry>
> + <entry>r<subscript>1</subscript></entry>
> + <entry>r<subscript>0</subscript></entry>
> + <entry>g<subscript>4</subscript></entry>
> + <entry>g<subscript>3</subscript></entry>
> + </row>
> <row id="V4L2-PIX-FMT-RGB565">
> <entry><constant>V4L2_PIX_FMT_RGB565</constant></entry>
> <entry>'RGBP'</entry>
> @@ -341,9 +385,9 @@ colorspace <constant>V4L2_COLORSPACE_SRGB</constant>.</para>
> <entry>b<subscript>1</subscript></entry>
> <entry>b<subscript>0</subscript></entry>
> </row>
> - <row id="V4L2-PIX-FMT-BGR32">
> - <entry><constant>V4L2_PIX_FMT_BGR32</constant></entry>
> - <entry>'BGR4'</entry>
> + <row id="V4L2-PIX-FMT-ABGR32">
> + <entry><constant>V4L2_PIX_FMT_ABGR32</constant></entry>
> + <entry>'AR24'</entry>
> <entry></entry>
> <entry>b<subscript>7</subscript></entry>
> <entry>b<subscript>6</subscript></entry>
> @@ -381,9 +425,49 @@ colorspace <constant>V4L2_COLORSPACE_SRGB</constant>.</para>
> <entry>a<subscript>1</subscript></entry>
> <entry>a<subscript>0</subscript></entry>
> </row>
> - <row id="V4L2-PIX-FMT-RGB32">
> - <entry><constant>V4L2_PIX_FMT_RGB32</constant></entry>
> - <entry>'RGB4'</entry>
> + <row id="V4L2-PIX-FMT-XBGR32">
> + <entry><constant>V4L2_PIX_FMT_XBGR32</constant></entry>
> + <entry>'XR24'</entry>
> + <entry></entry>
> + <entry>b<subscript>7</subscript></entry>
> + <entry>b<subscript>6</subscript></entry>
> + <entry>b<subscript>5</subscript></entry>
> + <entry>b<subscript>4</subscript></entry>
> + <entry>b<subscript>3</subscript></entry>
> + <entry>b<subscript>2</subscript></entry>
> + <entry>b<subscript>1</subscript></entry>
> + <entry>b<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>g<subscript>7</subscript></entry>
> + <entry>g<subscript>6</subscript></entry>
> + <entry>g<subscript>5</subscript></entry>
> + <entry>g<subscript>4</subscript></entry>
> + <entry>g<subscript>3</subscript></entry>
> + <entry>g<subscript>2</subscript></entry>
> + <entry>g<subscript>1</subscript></entry>
> + <entry>g<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>r<subscript>7</subscript></entry>
> + <entry>r<subscript>6</subscript></entry>
> + <entry>r<subscript>5</subscript></entry>
> + <entry>r<subscript>4</subscript></entry>
> + <entry>r<subscript>3</subscript></entry>
> + <entry>r<subscript>2</subscript></entry>
> + <entry>r<subscript>1</subscript></entry>
> + <entry>r<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + </row>
> + <row id="V4L2-PIX-FMT-ARGB32">
> + <entry><constant>V4L2_PIX_FMT_ARGB32</constant></entry>
> + <entry>'AX24'</entry>
> <entry></entry>
> <entry>a<subscript>7</subscript></entry>
> <entry>a<subscript>6</subscript></entry>
> @@ -421,18 +505,76 @@ colorspace <constant>V4L2_COLORSPACE_SRGB</constant>.</para>
> <entry>b<subscript>1</subscript></entry>
> <entry>b<subscript>0</subscript></entry>
> </row>
> + <row id="V4L2-PIX-FMT-XRGB32">
> + <entry><constant>V4L2_PIX_FMT_XRGB32</constant></entry>
> + <entry>'BX24'</entry>
> + <entry></entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry>-</entry>
> + <entry></entry>
> + <entry>r<subscript>7</subscript></entry>
> + <entry>r<subscript>6</subscript></entry>
> + <entry>r<subscript>5</subscript></entry>
> + <entry>r<subscript>4</subscript></entry>
> + <entry>r<subscript>3</subscript></entry>
> + <entry>r<subscript>2</subscript></entry>
> + <entry>r<subscript>1</subscript></entry>
> + <entry>r<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>g<subscript>7</subscript></entry>
> + <entry>g<subscript>6</subscript></entry>
> + <entry>g<subscript>5</subscript></entry>
> + <entry>g<subscript>4</subscript></entry>
> + <entry>g<subscript>3</subscript></entry>
> + <entry>g<subscript>2</subscript></entry>
> + <entry>g<subscript>1</subscript></entry>
> + <entry>g<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>b<subscript>7</subscript></entry>
> + <entry>b<subscript>6</subscript></entry>
> + <entry>b<subscript>5</subscript></entry>
> + <entry>b<subscript>4</subscript></entry>
> + <entry>b<subscript>3</subscript></entry>
> + <entry>b<subscript>2</subscript></entry>
> + <entry>b<subscript>1</subscript></entry>
> + <entry>b<subscript>0</subscript></entry>
> + </row>
> </tbody>
> </tgroup>
> </table>
>
> - <para>Bit 7 is the most significant bit. The value of the a = alpha
> -bits is undefined when reading from the driver, ignored when writing
> -to the driver, except when alpha blending has been negotiated for a
> -<link linkend="overlay">Video Overlay</link> or <link linkend="osd">
> -Video Output Overlay</link> or when the alpha component has been configured
> -for a <link linkend="capture">Video Capture</link> by means of <link
> -linkend="v4l2-alpha-component"> <constant>V4L2_CID_ALPHA_COMPONENT
> -</constant> </link> control.</para>
> + <para>Bit 7 is the most significant bit.</para>
> +
> + <para>The usage and value of the alpha bits (a) in the ARGB and ABGR formats
> + (collectively referred to as alpha formats) depend on the device type and
> + hardware operation. <link linkend="capture">Capture</link> devices
> + (including capture queues of mem-to-mem devices) fill the alpha component in
> + memory. When the device outputs an alpha channel the alpha component will
> + have a meaningful value. Otherwise, when the device doesn't output an alpha
> + channel but can set the alpha bit to a user-configurable value, the <link
> + linkend="v4l2-alpha-component"><constant>V4L2_CID_ALPHA_COMPONENT</constant>
> + </link> control is used to specify that alpha value, and the alpha component
> + of all pixels will be set to the value specified by that control. Otherwise
> + a corresponding format without an alpha component (XRGB or XBGR) must be
> + used instead of an alpha format.</para>
> +
> + <para><link linkend="output">Output</link> devices (including output queues
> + of mem-to-mem devices and <link linkend="osd">video output overlay</link>
> + devices) read the alpha component from memory. When the device processes the
> + alpha channel the alpha component must be filled with meaningful values by
> + applications. Otherwise a corresponding format without an alpha component
> + (XRGB or XBGR) must be used instead of an alpha format.</para>
> +
> + <para>The XRGB and XBGR formats contain undefined bits (-). Applications,
> + devices and drivers must ignore those bits, for both <link
> + linkend="capture">capture</link> and <link linkend="output">output</link>
> + devices.</para>
>
> <example>
> <title><constant>V4L2_PIX_FMT_BGR24</constant> 4 × 4 pixel
> @@ -512,6 +654,239 @@ image</title>
> </formalpara>
> </example>
>
> + <para>Formats defined in <xref linkend="rgb-formats-deprecated"/> are
> + deprecated and must not be used by new drivers. They are documented here for
> + reference. The meaning of their alpha bits (a) is ill-defined and
> + interpreted as in either the corresponding ARGB or XRGB format, depending on
> + the driver.</para>
> +
> + <table pgwide="1" frame="none" id="rgb-formats-deprecated">
> + <title>Deprecated Packed RGB Image Formats</title>
> + <tgroup cols="37" align="center">
> + <colspec colname="id" align="left" />
> + <colspec colname="fourcc" />
> + <colspec colname="bit" />
> +
> + <colspec colnum="4" colname="b07" align="center" />
> + <colspec colnum="5" colname="b06" align="center" />
> + <colspec colnum="6" colname="b05" align="center" />
> + <colspec colnum="7" colname="b04" align="center" />
> + <colspec colnum="8" colname="b03" align="center" />
> + <colspec colnum="9" colname="b02" align="center" />
> + <colspec colnum="10" colname="b01" align="center" />
> + <colspec colnum="11" colname="b00" align="center" />
> +
> + <colspec colnum="13" colname="b17" align="center" />
> + <colspec colnum="14" colname="b16" align="center" />
> + <colspec colnum="15" colname="b15" align="center" />
> + <colspec colnum="16" colname="b14" align="center" />
> + <colspec colnum="17" colname="b13" align="center" />
> + <colspec colnum="18" colname="b12" align="center" />
> + <colspec colnum="19" colname="b11" align="center" />
> + <colspec colnum="20" colname="b10" align="center" />
> +
> + <colspec colnum="22" colname="b27" align="center" />
> + <colspec colnum="23" colname="b26" align="center" />
> + <colspec colnum="24" colname="b25" align="center" />
> + <colspec colnum="25" colname="b24" align="center" />
> + <colspec colnum="26" colname="b23" align="center" />
> + <colspec colnum="27" colname="b22" align="center" />
> + <colspec colnum="28" colname="b21" align="center" />
> + <colspec colnum="29" colname="b20" align="center" />
> +
> + <colspec colnum="31" colname="b37" align="center" />
> + <colspec colnum="32" colname="b36" align="center" />
> + <colspec colnum="33" colname="b35" align="center" />
> + <colspec colnum="34" colname="b34" align="center" />
> + <colspec colnum="35" colname="b33" align="center" />
> + <colspec colnum="36" colname="b32" align="center" />
> + <colspec colnum="37" colname="b31" align="center" />
> + <colspec colnum="38" colname="b30" align="center" />
> +
> + <spanspec namest="b07" nameend="b00" spanname="b0" />
> + <spanspec namest="b17" nameend="b10" spanname="b1" />
> + <spanspec namest="b27" nameend="b20" spanname="b2" />
> + <spanspec namest="b37" nameend="b30" spanname="b3" />
> + <thead>
> + <row>
> + <entry>Identifier</entry>
> + <entry>Code</entry>
> + <entry> </entry>
> + <entry spanname="b0">Byte 0 in memory</entry>
> + <entry spanname="b1">Byte 1</entry>
> + <entry spanname="b2">Byte 2</entry>
> + <entry spanname="b3">Byte 3</entry>
> + </row>
> + <row>
> + <entry> </entry>
> + <entry> </entry>
> + <entry>Bit</entry>
> + <entry>7</entry>
> + <entry>6</entry>
> + <entry>5</entry>
> + <entry>4</entry>
> + <entry>3</entry>
> + <entry>2</entry>
> + <entry>1</entry>
> + <entry>0</entry>
> + <entry> </entry>
> + <entry>7</entry>
> + <entry>6</entry>
> + <entry>5</entry>
> + <entry>4</entry>
> + <entry>3</entry>
> + <entry>2</entry>
> + <entry>1</entry>
> + <entry>0</entry>
> + <entry> </entry>
> + <entry>7</entry>
> + <entry>6</entry>
> + <entry>5</entry>
> + <entry>4</entry>
> + <entry>3</entry>
> + <entry>2</entry>
> + <entry>1</entry>
> + <entry>0</entry>
> + <entry> </entry>
> + <entry>7</entry>
> + <entry>6</entry>
> + <entry>5</entry>
> + <entry>4</entry>
> + <entry>3</entry>
> + <entry>2</entry>
> + <entry>1</entry>
> + <entry>0</entry>
> + </row>
> + </thead>
> + <tbody>
> + <row id="V4L2-PIX-FMT-RGB444">
> + <entry><constant>V4L2_PIX_FMT_RGB444</constant></entry>
> + <entry>'R444'</entry>
> + <entry></entry>
> + <entry>g<subscript>3</subscript></entry>
> + <entry>g<subscript>2</subscript></entry>
> + <entry>g<subscript>1</subscript></entry>
> + <entry>g<subscript>0</subscript></entry>
> + <entry>b<subscript>3</subscript></entry>
> + <entry>b<subscript>2</subscript></entry>
> + <entry>b<subscript>1</subscript></entry>
> + <entry>b<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>a<subscript>3</subscript></entry>
> + <entry>a<subscript>2</subscript></entry>
> + <entry>a<subscript>1</subscript></entry>
> + <entry>a<subscript>0</subscript></entry>
> + <entry>r<subscript>3</subscript></entry>
> + <entry>r<subscript>2</subscript></entry>
> + <entry>r<subscript>1</subscript></entry>
> + <entry>r<subscript>0</subscript></entry>
> + </row>
> + <row id="V4L2-PIX-FMT-RGB555">
> + <entry><constant>V4L2_PIX_FMT_RGB555</constant></entry>
> + <entry>'RGBO'</entry>
> + <entry></entry>
> + <entry>g<subscript>2</subscript></entry>
> + <entry>g<subscript>1</subscript></entry>
> + <entry>g<subscript>0</subscript></entry>
> + <entry>b<subscript>4</subscript></entry>
> + <entry>b<subscript>3</subscript></entry>
> + <entry>b<subscript>2</subscript></entry>
> + <entry>b<subscript>1</subscript></entry>
> + <entry>b<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>a</entry>
> + <entry>r<subscript>4</subscript></entry>
> + <entry>r<subscript>3</subscript></entry>
> + <entry>r<subscript>2</subscript></entry>
> + <entry>r<subscript>1</subscript></entry>
> + <entry>r<subscript>0</subscript></entry>
> + <entry>g<subscript>4</subscript></entry>
> + <entry>g<subscript>3</subscript></entry>
> + </row>
> + <row id="V4L2-PIX-FMT-BGR32">
> + <entry><constant>V4L2_PIX_FMT_BGR32</constant></entry>
> + <entry>'BGR4'</entry>
> + <entry></entry>
> + <entry>b<subscript>7</subscript></entry>
> + <entry>b<subscript>6</subscript></entry>
> + <entry>b<subscript>5</subscript></entry>
> + <entry>b<subscript>4</subscript></entry>
> + <entry>b<subscript>3</subscript></entry>
> + <entry>b<subscript>2</subscript></entry>
> + <entry>b<subscript>1</subscript></entry>
> + <entry>b<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>g<subscript>7</subscript></entry>
> + <entry>g<subscript>6</subscript></entry>
> + <entry>g<subscript>5</subscript></entry>
> + <entry>g<subscript>4</subscript></entry>
> + <entry>g<subscript>3</subscript></entry>
> + <entry>g<subscript>2</subscript></entry>
> + <entry>g<subscript>1</subscript></entry>
> + <entry>g<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>r<subscript>7</subscript></entry>
> + <entry>r<subscript>6</subscript></entry>
> + <entry>r<subscript>5</subscript></entry>
> + <entry>r<subscript>4</subscript></entry>
> + <entry>r<subscript>3</subscript></entry>
> + <entry>r<subscript>2</subscript></entry>
> + <entry>r<subscript>1</subscript></entry>
> + <entry>r<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>a<subscript>7</subscript></entry>
> + <entry>a<subscript>6</subscript></entry>
> + <entry>a<subscript>5</subscript></entry>
> + <entry>a<subscript>4</subscript></entry>
> + <entry>a<subscript>3</subscript></entry>
> + <entry>a<subscript>2</subscript></entry>
> + <entry>a<subscript>1</subscript></entry>
> + <entry>a<subscript>0</subscript></entry>
> + </row>
> + <row id="V4L2-PIX-FMT-RGB32">
> + <entry><constant>V4L2_PIX_FMT_RGB32</constant></entry>
> + <entry>'RGB4'</entry>
> + <entry></entry>
> + <entry>a<subscript>7</subscript></entry>
> + <entry>a<subscript>6</subscript></entry>
> + <entry>a<subscript>5</subscript></entry>
> + <entry>a<subscript>4</subscript></entry>
> + <entry>a<subscript>3</subscript></entry>
> + <entry>a<subscript>2</subscript></entry>
> + <entry>a<subscript>1</subscript></entry>
> + <entry>a<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>r<subscript>7</subscript></entry>
> + <entry>r<subscript>6</subscript></entry>
> + <entry>r<subscript>5</subscript></entry>
> + <entry>r<subscript>4</subscript></entry>
> + <entry>r<subscript>3</subscript></entry>
> + <entry>r<subscript>2</subscript></entry>
> + <entry>r<subscript>1</subscript></entry>
> + <entry>r<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>g<subscript>7</subscript></entry>
> + <entry>g<subscript>6</subscript></entry>
> + <entry>g<subscript>5</subscript></entry>
> + <entry>g<subscript>4</subscript></entry>
> + <entry>g<subscript>3</subscript></entry>
> + <entry>g<subscript>2</subscript></entry>
> + <entry>g<subscript>1</subscript></entry>
> + <entry>g<subscript>0</subscript></entry>
> + <entry></entry>
> + <entry>b<subscript>7</subscript></entry>
> + <entry>b<subscript>6</subscript></entry>
> + <entry>b<subscript>5</subscript></entry>
> + <entry>b<subscript>4</subscript></entry>
> + <entry>b<subscript>3</subscript></entry>
> + <entry>b<subscript>2</subscript></entry>
> + <entry>b<subscript>1</subscript></entry>
> + <entry>b<subscript>0</subscript></entry>
> + </row>
> + </tbody>
> + </tgroup>
> + </table>
> +
> <para>A test utility to determine which RGB formats a driver
> actually supports is available from the LinuxTV v4l-dvb repository.
> See &v4l-dvb; for access instructions.</para>
> diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
> index 168ff50..0125f4d 100644
> --- a/include/uapi/linux/videodev2.h
> +++ b/include/uapi/linux/videodev2.h
> @@ -294,7 +294,11 @@ struct v4l2_pix_format {
> /* RGB formats */
> #define V4L2_PIX_FMT_RGB332 v4l2_fourcc('R', 'G', 'B', '1') /* 8 RGB-3-3-2 */
> #define V4L2_PIX_FMT_RGB444 v4l2_fourcc('R', '4', '4', '4') /* 16 xxxxrrrr ggggbbbb */
> +#define V4L2_PIX_FMT_ARGB444 v4l2_fourcc('A', 'R', '1', '2') /* 16 aaaarrrr ggggbbbb */
> +#define V4L2_PIX_FMT_XRGB444 v4l2_fourcc('X', 'R', '1', '2') /* 16 xxxxrrrr ggggbbbb */
> #define V4L2_PIX_FMT_RGB555 v4l2_fourcc('R', 'G', 'B', 'O') /* 16 RGB-5-5-5 */
> +#define V4L2_PIX_FMT_ARGB555 v4l2_fourcc('A', 'R', '1', '5') /* 16 ARGB-1-5-5-5 */
> +#define V4L2_PIX_FMT_XRGB555 v4l2_fourcc('X', 'R', '1', '5') /* 16 XRGB-1-5-5-5 */
> #define V4L2_PIX_FMT_RGB565 v4l2_fourcc('R', 'G', 'B', 'P') /* 16 RGB-5-6-5 */
> #define V4L2_PIX_FMT_RGB555X v4l2_fourcc('R', 'G', 'B', 'Q') /* 16 RGB-5-5-5 BE */
> #define V4L2_PIX_FMT_RGB565X v4l2_fourcc('R', 'G', 'B', 'R') /* 16 RGB-5-6-5 BE */
> @@ -302,7 +306,11 @@ struct v4l2_pix_format {
> #define V4L2_PIX_FMT_BGR24 v4l2_fourcc('B', 'G', 'R', '3') /* 24 BGR-8-8-8 */
> #define V4L2_PIX_FMT_RGB24 v4l2_fourcc('R', 'G', 'B', '3') /* 24 RGB-8-8-8 */
> #define V4L2_PIX_FMT_BGR32 v4l2_fourcc('B', 'G', 'R', '4') /* 32 BGR-8-8-8-8 */
> +#define V4L2_PIX_FMT_ABGR32 v4l2_fourcc('A', 'R', '2', '4') /* 32 BGRA-8-8-8-8 */
> +#define V4L2_PIX_FMT_XBGR32 v4l2_fourcc('X', 'R', '2', '4') /* 32 BGRX-8-8-8-8 */
> #define V4L2_PIX_FMT_RGB32 v4l2_fourcc('R', 'G', 'B', '4') /* 32 RGB-8-8-8-8 */
> +#define V4L2_PIX_FMT_ARGB32 v4l2_fourcc('B', 'A', '2', '4') /* 32 ARGB-8-8-8-8 */
> +#define V4L2_PIX_FMT_XRGB32 v4l2_fourcc('B', 'X', '2', '4') /* 32 XRGB-8-8-8-8 */
>
> /* Grey formats */
> #define V4L2_PIX_FMT_GREY v4l2_fourcc('G', 'R', 'E', 'Y') /* 8 Greyscale */
>
next prev parent reply other threads:[~2014-06-27 9:34 UTC|newest]
Thread overview: 86+ 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 ` Laurent Pinchart
2014-06-23 23:54 ` [PATCH v2 01/23] v4l: Add ARGB and XRGB pixel formats Laurent Pinchart
2014-06-23 23:54 ` Laurent Pinchart
2014-06-27 9:34 ` Hans Verkuil [this message]
2014-06-27 9:34 ` Hans Verkuil
2014-07-17 21:53 ` Hans Verkuil
2014-07-17 21:53 ` Hans Verkuil
2014-07-18 12:31 ` Laurent Pinchart
2014-07-18 12:31 ` Laurent Pinchart
2014-07-18 13:14 ` Hans Verkuil
2014-07-18 13:14 ` Hans Verkuil
2014-07-18 13:21 ` 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-23 23:54 ` Laurent Pinchart
2014-06-27 9:34 ` Hans Verkuil
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-23 23:54 ` Laurent Pinchart
2014-06-27 12:36 ` Hans Verkuil
2014-06-27 12:36 ` Hans Verkuil
2014-06-29 20:41 ` Laurent Pinchart
2014-06-29 20:41 ` Laurent Pinchart
2014-07-17 21:04 ` Hans Verkuil
2014-07-17 21:04 ` Hans Verkuil
2014-07-21 20:56 ` Laurent Pinchart
2014-07-21 20:56 ` Laurent Pinchart
2014-07-21 22:17 ` Hans Verkuil
2014-07-21 22:17 ` Hans Verkuil
2014-07-17 21:22 ` Hans Verkuil
2014-07-17 21:22 ` Hans Verkuil
2014-07-18 5:10 ` Hans Verkuil
2014-07-18 5:10 ` Hans Verkuil
2014-07-18 12:27 ` Laurent Pinchart
2014-07-18 12:27 ` Laurent Pinchart
2014-07-18 13:12 ` Hans Verkuil
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-23 23:54 ` Laurent Pinchart
2014-06-27 12:39 ` Hans Verkuil
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-23 23:54 ` Laurent Pinchart
2014-06-24 10:25 ` Hans Verkuil
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 ` Laurent Pinchart
2014-06-23 23:54 ` [PATCH v2 07/23] v4l: vsp1: Release buffers at stream stop Laurent Pinchart
2014-06-23 23:54 ` Laurent Pinchart
2014-06-24 12:00 ` Sergei Shtylyov
2014-06-24 12:00 ` Sergei Shtylyov
2014-07-01 7:16 ` Laurent Pinchart
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 ` Laurent Pinchart
2014-06-23 23:54 ` [PATCH v2 09/23] v4l: vsp1: Fix typos Laurent Pinchart
2014-06-23 23:54 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` 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 ` Laurent Pinchart
2014-06-23 23:54 ` [PATCH v2 17/23] v4l: vsp1: Switch to XRGB formats Laurent Pinchart
2014-06-23 23:54 ` 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 ` 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 ` 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 ` 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 ` 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 ` Laurent Pinchart
2014-06-23 23:54 ` [PATCH v2 23/23] v4l: vsp1: uds: Fix scaling of alpha layer Laurent Pinchart
2014-06-23 23:54 ` 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=53AD3A97.1000800@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.