* [PATCH 0/3] VSP1: Add support for tri-planar memory formats
@ 2016-01-11 4:07 Laurent Pinchart
2016-01-11 4:07 ` [PATCH 1/3] v4l: Merge the YUV and YVU 4:2:0 tri-planar non-contiguous formats docs Laurent Pinchart
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Laurent Pinchart @ 2016-01-11 4:07 UTC (permalink / raw)
To: linux-media; +Cc: linux-sh
Hello,
This small patch series implement support for tri-planar (YUV) memory formats
in the VSP1 driver.
The first patch in the series cleans up the YUV and YVU 4:2:0 tri-planar
documentation that is unnecessarily split in two files. The second patch then
documents the YUV/YVU 4:2:2 and 4:4:4 tri-planar formats, and the third patch
finally adds support for them in the VSP1 driver.
The series is based on top of my mid-December VSP1 pull request for v4.5 that
hasn't made it to linuxtv master yet. If the request can't be pulled for v4.5
I'll reissue it for v4.6 with this series included.
Laurent Pinchart (3):
v4l: Merge the YUV and YVU 4:2:0 tri-planar non-contiguous formats
docs
v4l: Add YUV 4:2:2 and YUV 4:4:4 tri-planar non-contiguous formats
v4l: vsp1: Add tri-planar memory formats support
Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml | 26 +--
Documentation/DocBook/media/v4l/pixfmt-yuv422m.xml | 166 +++++++++++++++++++
Documentation/DocBook/media/v4l/pixfmt-yuv444m.xml | 177 +++++++++++++++++++++
Documentation/DocBook/media/v4l/pixfmt-yvu420m.xml | 154 ------------------
Documentation/DocBook/media/v4l/pixfmt.xml | 3 +-
drivers/media/platform/vsp1/vsp1_pipe.c | 20 +++
drivers/media/v4l2-core/v4l2-ioctl.c | 4 +
include/uapi/linux/videodev2.h | 4 +
8 files changed, 390 insertions(+), 164 deletions(-)
create mode 100644 Documentation/DocBook/media/v4l/pixfmt-yuv422m.xml
create mode 100644 Documentation/DocBook/media/v4l/pixfmt-yuv444m.xml
delete mode 100644 Documentation/DocBook/media/v4l/pixfmt-yvu420m.xml
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/3] v4l: Merge the YUV and YVU 4:2:0 tri-planar non-contiguous formats docs
2016-01-11 4:07 [PATCH 0/3] VSP1: Add support for tri-planar memory formats Laurent Pinchart
@ 2016-01-11 4:07 ` Laurent Pinchart
2016-01-22 12:22 ` Hans Verkuil
2016-01-11 4:07 ` [PATCH 2/3] v4l: Add YUV 4:2:2 and YUV 4:4:4 tri-planar non-contiguous formats Laurent Pinchart
2016-01-11 4:07 ` [PATCH 3/3] v4l: vsp1: Add tri-planar memory formats support Laurent Pinchart
2 siblings, 1 reply; 7+ messages in thread
From: Laurent Pinchart @ 2016-01-11 4:07 UTC (permalink / raw)
To: linux-media; +Cc: linux-sh
The two formats are very similar, having two separate pages to describe
them is overkill.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml | 26 ++--
Documentation/DocBook/media/v4l/pixfmt-yvu420m.xml | 154 ---------------------
Documentation/DocBook/media/v4l/pixfmt.xml | 1 -
3 files changed, 17 insertions(+), 164 deletions(-)
delete mode 100644 Documentation/DocBook/media/v4l/pixfmt-yvu420m.xml
diff --git a/Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml b/Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml
index e781cc61786c..7d13fe96657d 100644
--- a/Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml
@@ -1,35 +1,43 @@
- <refentry id="V4L2-PIX-FMT-YUV420M">
+ <refentry>
<refmeta>
- <refentrytitle>V4L2_PIX_FMT_YUV420M ('YM12')</refentrytitle>
+ <refentrytitle>V4L2_PIX_FMT_YUV420M ('YM12'), V4L2_PIX_FMT_YVU420M ('YM21')</refentrytitle>
&manvol;
</refmeta>
<refnamediv>
- <refname> <constant>V4L2_PIX_FMT_YUV420M</constant></refname>
- <refpurpose>Variation of <constant>V4L2_PIX_FMT_YUV420</constant>
- with planes non contiguous in memory. </refpurpose>
+ <refname id="V4L2-PIX-FMT-YUV420M"><constant>V4L2_PIX_FMT_YUV420M</constant></refname>
+ <refname id="V4L2-PIX-FMT-YVU420M"><constant>V4L2_PIX_FMT_YVU420M</constant></refname>
+ <refpurpose>Variation of <constant>V4L2_PIX_FMT_YUV420</constant> and
+ <constant>V4L2_PIX_FMT_YVU420</constant> with planes non contiguous
+ in memory.</refpurpose>
</refnamediv>
<refsect1>
<title>Description</title>
<para>This is a multi-planar format, as opposed to a packed format.
-The three components are separated into three sub- images or planes.
+The three components are separated into three sub-images or planes.</para>
-The Y plane is first. The Y plane has one byte per pixel. The Cb data
+ <para>The Y plane is first. The Y plane has one byte per pixel.
+For <constant>V4L2_PIX_FMT_YUV420M</constant> the Cb data
constitutes the second plane which is half the width and half
the height of the Y plane (and of the image). Each Cb belongs to four
pixels, a two-by-two square of the image. For example,
Cb<subscript>0</subscript> belongs to Y'<subscript>00</subscript>,
Y'<subscript>01</subscript>, Y'<subscript>10</subscript>, and
Y'<subscript>11</subscript>. The Cr data, just like the Cb plane, is
-in the third plane. </para>
+in the third plane.</para>
+
+ <para><constant>V4L2_PIX_FMT_YVU420M</constant> is the same except
+the Cr data is stored in the second plane and the Cb data in the third plane.
+</para>
<para>If the Y plane has pad bytes after each row, then the Cb
and Cr planes have half as many pad bytes after their rows. In other
words, two Cx rows (including padding) is exactly as long as one Y row
(including padding).</para>
- <para><constant>V4L2_PIX_FMT_YUV420M</constant> is intended to be
+ <para><constant>V4L2_PIX_FMT_YUV420M</constant> and
+<constant>V4L2_PIX_FMT_YVU420M</constant> are intended to be
used only in drivers and applications that support the multi-planar API,
described in <xref linkend="planar-apis"/>. </para>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-yvu420m.xml b/Documentation/DocBook/media/v4l/pixfmt-yvu420m.xml
deleted file mode 100644
index 2330667907c7..000000000000
--- a/Documentation/DocBook/media/v4l/pixfmt-yvu420m.xml
+++ /dev/null
@@ -1,154 +0,0 @@
- <refentry id="V4L2-PIX-FMT-YVU420M">
- <refmeta>
- <refentrytitle>V4L2_PIX_FMT_YVU420M ('YM21')</refentrytitle>
- &manvol;
- </refmeta>
- <refnamediv>
- <refname> <constant>V4L2_PIX_FMT_YVU420M</constant></refname>
- <refpurpose>Variation of <constant>V4L2_PIX_FMT_YVU420</constant>
- with planes non contiguous in memory. </refpurpose>
- </refnamediv>
-
- <refsect1>
- <title>Description</title>
-
- <para>This is a multi-planar format, as opposed to a packed format.
-The three components are separated into three sub-images or planes.
-
-The Y plane is first. The Y plane has one byte per pixel. The Cr data
-constitutes the second plane which is half the width and half
-the height of the Y plane (and of the image). Each Cr belongs to four
-pixels, a two-by-two square of the image. For example,
-Cr<subscript>0</subscript> belongs to Y'<subscript>00</subscript>,
-Y'<subscript>01</subscript>, Y'<subscript>10</subscript>, and
-Y'<subscript>11</subscript>. The Cb data, just like the Cr plane, constitutes
-the third plane. </para>
-
- <para>If the Y plane has pad bytes after each row, then the Cr
-and Cb planes have half as many pad bytes after their rows. In other
-words, two Cx rows (including padding) is exactly as long as one Y row
-(including padding).</para>
-
- <para><constant>V4L2_PIX_FMT_YVU420M</constant> is intended to be
-used only in drivers and applications that support the multi-planar API,
-described in <xref linkend="planar-apis"/>. </para>
-
- <example>
- <title><constant>V4L2_PIX_FMT_YVU420M</constant> 4 × 4
-pixel image</title>
-
- <formalpara>
- <title>Byte Order.</title>
- <para>Each cell is one byte.
- <informaltable frame="none">
- <tgroup cols="5" align="center">
- <colspec align="left" colwidth="2*" />
- <tbody valign="top">
- <row>
- <entry>start0 + 0:</entry>
- <entry>Y'<subscript>00</subscript></entry>
- <entry>Y'<subscript>01</subscript></entry>
- <entry>Y'<subscript>02</subscript></entry>
- <entry>Y'<subscript>03</subscript></entry>
- </row>
- <row>
- <entry>start0 + 4:</entry>
- <entry>Y'<subscript>10</subscript></entry>
- <entry>Y'<subscript>11</subscript></entry>
- <entry>Y'<subscript>12</subscript></entry>
- <entry>Y'<subscript>13</subscript></entry>
- </row>
- <row>
- <entry>start0 + 8:</entry>
- <entry>Y'<subscript>20</subscript></entry>
- <entry>Y'<subscript>21</subscript></entry>
- <entry>Y'<subscript>22</subscript></entry>
- <entry>Y'<subscript>23</subscript></entry>
- </row>
- <row>
- <entry>start0 + 12:</entry>
- <entry>Y'<subscript>30</subscript></entry>
- <entry>Y'<subscript>31</subscript></entry>
- <entry>Y'<subscript>32</subscript></entry>
- <entry>Y'<subscript>33</subscript></entry>
- </row>
- <row><entry></entry></row>
- <row>
- <entry>start1 + 0:</entry>
- <entry>Cr<subscript>00</subscript></entry>
- <entry>Cr<subscript>01</subscript></entry>
- </row>
- <row>
- <entry>start1 + 2:</entry>
- <entry>Cr<subscript>10</subscript></entry>
- <entry>Cr<subscript>11</subscript></entry>
- </row>
- <row><entry></entry></row>
- <row>
- <entry>start2 + 0:</entry>
- <entry>Cb<subscript>00</subscript></entry>
- <entry>Cb<subscript>01</subscript></entry>
- </row>
- <row>
- <entry>start2 + 2:</entry>
- <entry>Cb<subscript>10</subscript></entry>
- <entry>Cb<subscript>11</subscript></entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </para>
- </formalpara>
-
- <formalpara>
- <title>Color Sample Location.</title>
- <para>
- <informaltable frame="none">
- <tgroup cols="7" align="center">
- <tbody valign="top">
- <row>
- <entry></entry>
- <entry>0</entry><entry></entry><entry>1</entry><entry></entry>
- <entry>2</entry><entry></entry><entry>3</entry>
- </row>
- <row>
- <entry>0</entry>
- <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
- <entry>Y</entry><entry></entry><entry>Y</entry>
- </row>
- <row>
- <entry></entry>
- <entry></entry><entry>C</entry><entry></entry><entry></entry>
- <entry></entry><entry>C</entry><entry></entry>
- </row>
- <row>
- <entry>1</entry>
- <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
- <entry>Y</entry><entry></entry><entry>Y</entry>
- </row>
- <row>
- <entry></entry>
- </row>
- <row>
- <entry>2</entry>
- <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
- <entry>Y</entry><entry></entry><entry>Y</entry>
- </row>
- <row>
- <entry></entry>
- <entry></entry><entry>C</entry><entry></entry><entry></entry>
- <entry></entry><entry>C</entry><entry></entry>
- </row>
- <row>
- <entry>3</entry>
- <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
- <entry>Y</entry><entry></entry><entry>Y</entry>
- </row>
- </tbody>
- </tgroup>
- </informaltable>
- </para>
- </formalpara>
- </example>
- </refsect1>
- </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt.xml b/Documentation/DocBook/media/v4l/pixfmt.xml
index d871245d2973..9e77ff353feb 100644
--- a/Documentation/DocBook/media/v4l/pixfmt.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt.xml
@@ -1628,7 +1628,6 @@ information.</para>
&sub-y41p;
&sub-yuv420;
&sub-yuv420m;
- &sub-yvu420m;
&sub-yuv410;
&sub-yuv422p;
&sub-yuv411p;
--
2.4.10
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/3] v4l: Add YUV 4:2:2 and YUV 4:4:4 tri-planar non-contiguous formats
2016-01-11 4:07 [PATCH 0/3] VSP1: Add support for tri-planar memory formats Laurent Pinchart
2016-01-11 4:07 ` [PATCH 1/3] v4l: Merge the YUV and YVU 4:2:0 tri-planar non-contiguous formats docs Laurent Pinchart
@ 2016-01-11 4:07 ` Laurent Pinchart
2016-01-21 22:22 ` Laurent Pinchart
2016-01-22 12:22 ` Hans Verkuil
2016-01-11 4:07 ` [PATCH 3/3] v4l: vsp1: Add tri-planar memory formats support Laurent Pinchart
2 siblings, 2 replies; 7+ messages in thread
From: Laurent Pinchart @ 2016-01-11 4:07 UTC (permalink / raw)
To: linux-media; +Cc: linux-sh
The formats use three planes through the multiplanar API, allowing for
non-contiguous planes in memory.
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
Documentation/DocBook/media/v4l/pixfmt-yuv422m.xml | 166 +++++++++++++++++++
Documentation/DocBook/media/v4l/pixfmt-yuv444m.xml | 177 +++++++++++++++++++++
Documentation/DocBook/media/v4l/pixfmt.xml | 2 +
drivers/media/v4l2-core/v4l2-ioctl.c | 4 +
include/uapi/linux/videodev2.h | 4 +
5 files changed, 353 insertions(+)
create mode 100644 Documentation/DocBook/media/v4l/pixfmt-yuv422m.xml
create mode 100644 Documentation/DocBook/media/v4l/pixfmt-yuv444m.xml
diff --git a/Documentation/DocBook/media/v4l/pixfmt-yuv422m.xml b/Documentation/DocBook/media/v4l/pixfmt-yuv422m.xml
new file mode 100644
index 000000000000..dd502802cb75
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/pixfmt-yuv422m.xml
@@ -0,0 +1,166 @@
+ <refentry>
+ <refmeta>
+ <refentrytitle>V4L2_PIX_FMT_YUV422M ('YM16'), V4L2_PIX_FMT_YVU422M ('YM61')</refentrytitle>
+ &manvol;
+ </refmeta>
+ <refnamediv>
+ <refname id="V4L2-PIX-FMT-YUV422M"><constant>V4L2_PIX_FMT_YUV422M</constant></refname>
+ <refname id="V4L2-PIX-FMT-YVU422M"><constant>V4L2_PIX_FMT_YVU422M</constant></refname>
+ <refpurpose>Planar formats with ½ horizontal resolution, also
+ known as YUV and YVU 4:2:2</refpurpose>
+ </refnamediv>
+
+ <refsect1>
+ <title>Description</title>
+
+ <para>This is a multi-planar format, as opposed to a packed format.
+The three components are separated into three sub-images or planes.</para>
+
+ <para>The Y plane is first. The Y plane has one byte per pixel.
+For <constant>V4L2_PIX_FMT_YUV422M</constant> the Cb data
+constitutes the second plane which is half the width of the Y plane (and of the
+image). Each Cb belongs to two pixels. For example,
+Cb<subscript>0</subscript> belongs to Y'<subscript>00</subscript>,
+Y'<subscript>01</subscript>. The Cr data, just like the Cb plane, is
+in the third plane. </para>
+
+ <para><constant>V4L2_PIX_FMT_YVU422M</constant> is the same except
+the Cr data is stored in the second plane and the Cb data in the third plane.
+</para>
+
+ <para>If the Y plane has pad bytes after each row, then the Cb
+and Cr planes have half as many pad bytes after their rows. In other
+words, two Cx rows (including padding) is exactly as long as one Y row
+(including padding).</para>
+
+ <para><constant>V4L2_PIX_FMT_YUV422M</constant> and
+<constant>V4L2_PIX_FMT_YVU422M</constant> are intended to be
+used only in drivers and applications that support the multi-planar API,
+described in <xref linkend="planar-apis"/>. </para>
+
+ <example>
+ <title><constant>V4L2_PIX_FMT_YUV422M</constant> 4 × 4
+pixel image</title>
+
+ <formalpara>
+ <title>Byte Order.</title>
+ <para>Each cell is one byte.
+ <informaltable frame="none">
+ <tgroup cols="5" align="center">
+ <colspec align="left" colwidth="2*" />
+ <tbody valign="top">
+ <row>
+ <entry>start0 + 0:</entry>
+ <entry>Y'<subscript>00</subscript></entry>
+ <entry>Y'<subscript>01</subscript></entry>
+ <entry>Y'<subscript>02</subscript></entry>
+ <entry>Y'<subscript>03</subscript></entry>
+ </row>
+ <row>
+ <entry>start0 + 4:</entry>
+ <entry>Y'<subscript>10</subscript></entry>
+ <entry>Y'<subscript>11</subscript></entry>
+ <entry>Y'<subscript>12</subscript></entry>
+ <entry>Y'<subscript>13</subscript></entry>
+ </row>
+ <row>
+ <entry>start0 + 8:</entry>
+ <entry>Y'<subscript>20</subscript></entry>
+ <entry>Y'<subscript>21</subscript></entry>
+ <entry>Y'<subscript>22</subscript></entry>
+ <entry>Y'<subscript>23</subscript></entry>
+ </row>
+ <row>
+ <entry>start0 + 12:</entry>
+ <entry>Y'<subscript>30</subscript></entry>
+ <entry>Y'<subscript>31</subscript></entry>
+ <entry>Y'<subscript>32</subscript></entry>
+ <entry>Y'<subscript>33</subscript></entry>
+ </row>
+ <row><entry></entry></row>
+ <row>
+ <entry>start1 + 0:</entry>
+ <entry>Cb<subscript>00</subscript></entry>
+ <entry>Cb<subscript>01</subscript></entry>
+ </row>
+ <row>
+ <entry>start1 + 2:</entry>
+ <entry>Cb<subscript>10</subscript></entry>
+ <entry>Cb<subscript>11</subscript></entry>
+ </row>
+ <row>
+ <entry>start1 + 4:</entry>
+ <entry>Cb<subscript>20</subscript></entry>
+ <entry>Cb<subscript>21</subscript></entry>
+ </row>
+ <row>
+ <entry>start1 + 6:</entry>
+ <entry>Cb<subscript>30</subscript></entry>
+ <entry>Cb<subscript>31</subscript></entry>
+ </row>
+ <row><entry></entry></row>
+ <row>
+ <entry>start2 + 0:</entry>
+ <entry>Cr<subscript>00</subscript></entry>
+ <entry>Cr<subscript>01</subscript></entry>
+ </row>
+ <row>
+ <entry>start2 + 2:</entry>
+ <entry>Cr<subscript>10</subscript></entry>
+ <entry>Cr<subscript>11</subscript></entry>
+ </row>
+ <row>
+ <entry>start2 + 4:</entry>
+ <entry>Cr<subscript>20</subscript></entry>
+ <entry>Cr<subscript>21</subscript></entry>
+ </row>
+ <row>
+ <entry>start2 + 6:</entry>
+ <entry>Cr<subscript>30</subscript></entry>
+ <entry>Cr<subscript>31</subscript></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </para>
+ </formalpara>
+
+ <formalpara>
+ <title>Color Sample Location.</title>
+ <para>
+ <informaltable frame="none">
+ <tgroup cols="7" align="center">
+ <tbody valign="top">
+ <row>
+ <entry></entry>
+ <entry>0</entry><entry></entry><entry>1</entry><entry></entry>
+ <entry>2</entry><entry></entry><entry>3</entry>
+ </row>
+ <row>
+ <entry>0</entry>
+ <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
+ <entry>Y</entry><entry>C</entry><entry>Y</entry>
+ </row>
+ <row>
+ <entry>1</entry>
+ <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
+ <entry>Y</entry><entry>C</entry><entry>Y</entry>
+ </row>
+ <row>
+ <entry>2</entry>
+ <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
+ <entry>Y</entry><entry>C</entry><entry>Y</entry>
+ </row>
+ <row>
+ <entry>3</entry>
+ <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
+ <entry>Y</entry><entry>C</entry><entry>Y</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </para>
+ </formalpara>
+ </example>
+ </refsect1>
+ </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt-yuv444m.xml b/Documentation/DocBook/media/v4l/pixfmt-yuv444m.xml
new file mode 100644
index 000000000000..1b7335940bc7
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/pixfmt-yuv444m.xml
@@ -0,0 +1,177 @@
+ <refentry>
+ <refmeta>
+ <refentrytitle>V4L2_PIX_FMT_YUV444M ('YM24'), V4L2_PIX_FMT_YVU444M ('YM42')</refentrytitle>
+ &manvol;
+ </refmeta>
+ <refnamediv>
+ <refname id="V4L2-PIX-FMT-YUV444M"><constant>V4L2_PIX_FMT_YUV444M</constant></refname>
+ <refname id="V4L2-PIX-FMT-YVU444M"><constant>V4L2_PIX_FMT_YVU444M</constant></refname>
+ <refpurpose>Planar formats with full horizontal resolution, also
+ known as YUV and YVU 4:4:4</refpurpose>
+ </refnamediv>
+
+ <refsect1>
+ <title>Description</title>
+
+ <para>This is a multi-planar format, as opposed to a packed format.
+The three components are separated into three sub-images or planes.</para>
+
+ <para>The Y plane is first. The Y plane has one byte per pixel.
+For <constant>V4L2_PIX_FMT_YUV444M</constant> the Cb data
+constitutes the second plane which is the same width and height as the Y plane
+(and as the image). The Cr data, just like the Cb plane, is in the third plane.
+</para>
+
+ <para><constant>V4L2_PIX_FMT_YVU444M</constant> is the same except
+the Cr data is stored in the second plane and the Cb data in the third plane.
+</para>
+ <para>If the Y plane has pad bytes after each row, then the Cb
+and Cr planes have the same number of pad bytes after their rows.</para>
+
+ <para><constant>V4L2_PIX_FMT_YUV444M</constant> and
+<constant>V4L2_PIX_FMT_YUV444M</constant> are intended to be
+used only in drivers and applications that support the multi-planar API,
+described in <xref linkend="planar-apis"/>. </para>
+
+ <example>
+ <title><constant>V4L2_PIX_FMT_YUV444M</constant> 4 × 4
+pixel image</title>
+
+ <formalpara>
+ <title>Byte Order.</title>
+ <para>Each cell is one byte.
+ <informaltable frame="none">
+ <tgroup cols="5" align="center">
+ <colspec align="left" colwidth="2*" />
+ <tbody valign="top">
+ <row>
+ <entry>start0 + 0:</entry>
+ <entry>Y'<subscript>00</subscript></entry>
+ <entry>Y'<subscript>01</subscript></entry>
+ <entry>Y'<subscript>02</subscript></entry>
+ <entry>Y'<subscript>03</subscript></entry>
+ </row>
+ <row>
+ <entry>start0 + 4:</entry>
+ <entry>Y'<subscript>10</subscript></entry>
+ <entry>Y'<subscript>11</subscript></entry>
+ <entry>Y'<subscript>12</subscript></entry>
+ <entry>Y'<subscript>13</subscript></entry>
+ </row>
+ <row>
+ <entry>start0 + 8:</entry>
+ <entry>Y'<subscript>20</subscript></entry>
+ <entry>Y'<subscript>21</subscript></entry>
+ <entry>Y'<subscript>22</subscript></entry>
+ <entry>Y'<subscript>23</subscript></entry>
+ </row>
+ <row>
+ <entry>start0 + 12:</entry>
+ <entry>Y'<subscript>30</subscript></entry>
+ <entry>Y'<subscript>31</subscript></entry>
+ <entry>Y'<subscript>32</subscript></entry>
+ <entry>Y'<subscript>33</subscript></entry>
+ </row>
+ <row><entry></entry></row>
+ <row>
+ <entry>start1 + 0:</entry>
+ <entry>Cb<subscript>00</subscript></entry>
+ <entry>Cb<subscript>01</subscript></entry>
+ <entry>Cb<subscript>02</subscript></entry>
+ <entry>Cb<subscript>03</subscript></entry>
+ </row>
+ <row>
+ <entry>start1 + 4:</entry>
+ <entry>Cb<subscript>10</subscript></entry>
+ <entry>Cb<subscript>11</subscript></entry>
+ <entry>Cb<subscript>12</subscript></entry>
+ <entry>Cb<subscript>13</subscript></entry>
+ </row>
+ <row>
+ <entry>start1 + 8:</entry>
+ <entry>Cb<subscript>20</subscript></entry>
+ <entry>Cb<subscript>21</subscript></entry>
+ <entry>Cb<subscript>22</subscript></entry>
+ <entry>Cb<subscript>23</subscript></entry>
+ </row>
+ <row>
+ <entry>start1 + 12:</entry>
+ <entry>Cb<subscript>20</subscript></entry>
+ <entry>Cb<subscript>21</subscript></entry>
+ <entry>Cb<subscript>32</subscript></entry>
+ <entry>Cb<subscript>33</subscript></entry>
+ </row>
+ <row><entry></entry></row>
+ <row>
+ <entry>start2 + 0:</entry>
+ <entry>Cr<subscript>00</subscript></entry>
+ <entry>Cr<subscript>01</subscript></entry>
+ <entry>Cr<subscript>02</subscript></entry>
+ <entry>Cr<subscript>03</subscript></entry>
+ </row>
+ <row>
+ <entry>start2 + 4:</entry>
+ <entry>Cr<subscript>10</subscript></entry>
+ <entry>Cr<subscript>11</subscript></entry>
+ <entry>Cr<subscript>12</subscript></entry>
+ <entry>Cr<subscript>13</subscript></entry>
+ </row>
+ <row>
+ <entry>start2 + 8:</entry>
+ <entry>Cr<subscript>20</subscript></entry>
+ <entry>Cr<subscript>21</subscript></entry>
+ <entry>Cr<subscript>22</subscript></entry>
+ <entry>Cr<subscript>23</subscript></entry>
+ </row>
+ <row>
+ <entry>start2 + 12:</entry>
+ <entry>Cr<subscript>30</subscript></entry>
+ <entry>Cr<subscript>31</subscript></entry>
+ <entry>Cr<subscript>32</subscript></entry>
+ <entry>Cr<subscript>33</subscript></entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </para>
+ </formalpara>
+
+ <formalpara>
+ <title>Color Sample Location.</title>
+ <para>
+ <informaltable frame="none">
+ <tgroup cols="7" align="center">
+ <tbody valign="top">
+ <row>
+ <entry></entry>
+ <entry>0</entry><entry></entry><entry>1</entry><entry></entry>
+ <entry>2</entry><entry></entry><entry>3</entry>
+ </row>
+ <row>
+ <entry>0</entry>
+ <entry>YC</entry><entry></entry><entry>YC</entry><entry></entry>
+ <entry>YC</entry><entry></entry><entry>YC</entry>
+ </row>
+ <row>
+ <entry>1</entry>
+ <entry>YC</entry><entry></entry><entry>YC</entry><entry></entry>
+ <entry>YC</entry><entry></entry><entry>YC</entry>
+ </row>
+ <row>
+ <entry>2</entry>
+ <entry>YC</entry><entry></entry><entry>YC</entry><entry></entry>
+ <entry>YC</entry><entry></entry><entry>YC</entry>
+ </row>
+ <row>
+ <entry>3</entry>
+ <entry>YC</entry><entry></entry><entry>YC</entry><entry></entry>
+ <entry>YC</entry><entry></entry><entry>YC</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </informaltable>
+ </para>
+ </formalpara>
+ </example>
+ </refsect1>
+ </refentry>
diff --git a/Documentation/DocBook/media/v4l/pixfmt.xml b/Documentation/DocBook/media/v4l/pixfmt.xml
index 9e77ff353feb..2f02f9441443 100644
--- a/Documentation/DocBook/media/v4l/pixfmt.xml
+++ b/Documentation/DocBook/media/v4l/pixfmt.xml
@@ -1628,6 +1628,8 @@ information.</para>
&sub-y41p;
&sub-yuv420;
&sub-yuv420m;
+ &sub-yuv422m;
+ &sub-yuv444m;
&sub-yuv410;
&sub-yuv422p;
&sub-yuv411p;
diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
index 8a018c6dd16a..14843090fd61 100644
--- a/drivers/media/v4l2-core/v4l2-ioctl.c
+++ b/drivers/media/v4l2-core/v4l2-ioctl.c
@@ -1191,6 +1191,10 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)
case V4L2_PIX_FMT_NV12MT_16X16: descr = "Y/CbCr 4:2:0 (16x16 MB, N-C)"; break;
case V4L2_PIX_FMT_YUV420M: descr = "Planar YUV 4:2:0 (N-C)"; break;
case V4L2_PIX_FMT_YVU420M: descr = "Planar YVU 4:2:0 (N-C)"; break;
+ case V4L2_PIX_FMT_YUV422M: descr = "Planar YUV 4:2:2 (N-C)"; break;
+ case V4L2_PIX_FMT_YVU422M: descr = "Planar YVU 4:2:2 (N-C)"; break;
+ case V4L2_PIX_FMT_YUV444M: descr = "Planar YUV 4:4:4 (N-C)"; break;
+ case V4L2_PIX_FMT_YVU444M: descr = "Planar YVU 4:4:4 (N-C)"; break;
case V4L2_PIX_FMT_SBGGR8: descr = "8-bit Bayer BGBG/GRGR"; break;
case V4L2_PIX_FMT_SGBRG8: descr = "8-bit Bayer GBGB/RGRG"; break;
case V4L2_PIX_FMT_SGRBG8: descr = "8-bit Bayer GRGR/BGBG"; break;
diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
index 14cd5ebfee6d..466458422385 100644
--- a/include/uapi/linux/videodev2.h
+++ b/include/uapi/linux/videodev2.h
@@ -546,6 +546,10 @@ struct v4l2_pix_format {
/* three non contiguous planes - Y, Cb, Cr */
#define V4L2_PIX_FMT_YUV420M v4l2_fourcc('Y', 'M', '1', '2') /* 12 YUV420 planar */
#define V4L2_PIX_FMT_YVU420M v4l2_fourcc('Y', 'M', '2', '1') /* 12 YVU420 planar */
+#define V4L2_PIX_FMT_YUV422M v4l2_fourcc('Y', 'M', '1', '6') /* 16 YUV422 planar */
+#define V4L2_PIX_FMT_YVU422M v4l2_fourcc('Y', 'M', '6', '1') /* 16 YVU422 planar */
+#define V4L2_PIX_FMT_YUV444M v4l2_fourcc('Y', 'M', '2', '4') /* 24 YUV444 planar */
+#define V4L2_PIX_FMT_YVU444M v4l2_fourcc('Y', 'M', '4', '2') /* 24 YVU444 planar */
/* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */
#define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG.. GRGR.. */
--
2.4.10
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/3] v4l: vsp1: Add tri-planar memory formats support
2016-01-11 4:07 [PATCH 0/3] VSP1: Add support for tri-planar memory formats Laurent Pinchart
2016-01-11 4:07 ` [PATCH 1/3] v4l: Merge the YUV and YVU 4:2:0 tri-planar non-contiguous formats docs Laurent Pinchart
2016-01-11 4:07 ` [PATCH 2/3] v4l: Add YUV 4:2:2 and YUV 4:4:4 tri-planar non-contiguous formats Laurent Pinchart
@ 2016-01-11 4:07 ` Laurent Pinchart
2 siblings, 0 replies; 7+ messages in thread
From: Laurent Pinchart @ 2016-01-11 4:07 UTC (permalink / raw)
To: linux-media; +Cc: linux-sh
Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
---
drivers/media/platform/vsp1/vsp1_pipe.c | 20 ++++++++++++++++++++
1 file changed, 20 insertions(+)
diff --git a/drivers/media/platform/vsp1/vsp1_pipe.c b/drivers/media/platform/vsp1/vsp1_pipe.c
index 96f0e7d4c400..c96b47a882de 100644
--- a/drivers/media/platform/vsp1/vsp1_pipe.c
+++ b/drivers/media/platform/vsp1/vsp1_pipe.c
@@ -113,6 +113,26 @@ static const struct vsp1_format_info vsp1_video_formats[] = {
VI6_FMT_Y_U_V_420, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS,
3, { 8, 8, 8 }, false, false, 2, 2, false },
+ { V4L2_PIX_FMT_YVU420M, MEDIA_BUS_FMT_AYUV8_1X32,
+ VI6_FMT_Y_U_V_420, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
+ VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS,
+ 3, { 8, 8, 8 }, false, true, 2, 2, false },
+ { V4L2_PIX_FMT_YUV422M, MEDIA_BUS_FMT_AYUV8_1X32,
+ VI6_FMT_Y_U_V_422, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
+ VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS,
+ 3, { 8, 8, 8 }, false, false, 2, 1, false },
+ { V4L2_PIX_FMT_YVU422M, MEDIA_BUS_FMT_AYUV8_1X32,
+ VI6_FMT_Y_U_V_422, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
+ VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS,
+ 3, { 8, 8, 8 }, false, true, 2, 1, false },
+ { V4L2_PIX_FMT_YUV444M, MEDIA_BUS_FMT_AYUV8_1X32,
+ VI6_FMT_Y_U_V_444, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
+ VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS,
+ 3, { 8, 8, 8 }, false, false, 1, 1, false },
+ { V4L2_PIX_FMT_YVU444M, MEDIA_BUS_FMT_AYUV8_1X32,
+ VI6_FMT_Y_U_V_444, VI6_RPF_DSWAP_P_LLS | VI6_RPF_DSWAP_P_LWS |
+ VI6_RPF_DSWAP_P_WDS | VI6_RPF_DSWAP_P_BTS,
+ 3, { 8, 8, 8 }, false, true, 1, 1, false },
};
/*
--
2.4.10
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 2/3] v4l: Add YUV 4:2:2 and YUV 4:4:4 tri-planar non-contiguous formats
2016-01-11 4:07 ` [PATCH 2/3] v4l: Add YUV 4:2:2 and YUV 4:4:4 tri-planar non-contiguous formats Laurent Pinchart
@ 2016-01-21 22:22 ` Laurent Pinchart
2016-01-22 12:22 ` Hans Verkuil
1 sibling, 0 replies; 7+ messages in thread
From: Laurent Pinchart @ 2016-01-21 22:22 UTC (permalink / raw)
To: Hans Verkuil; +Cc: linux-media, linux-sh
Hi Hans,
You've requested changes to the previous version of this patch (merging the
YUV and YVU variants), could you review this one as well as patch 1/3 in this
series ?
On Monday 11 January 2016 06:07:43 Laurent Pinchart wrote:
> The formats use three planes through the multiplanar API, allowing for
> non-contiguous planes in memory.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
> ---
> Documentation/DocBook/media/v4l/pixfmt-yuv422m.xml | 166 ++++++++++++++++++
> Documentation/DocBook/media/v4l/pixfmt-yuv444m.xml | 177 ++++++++++++++++++
> Documentation/DocBook/media/v4l/pixfmt.xml | 2 +
> drivers/media/v4l2-core/v4l2-ioctl.c | 4 +
> include/uapi/linux/videodev2.h | 4 +
> 5 files changed, 353 insertions(+)
> create mode 100644 Documentation/DocBook/media/v4l/pixfmt-yuv422m.xml
> create mode 100644 Documentation/DocBook/media/v4l/pixfmt-yuv444m.xml
>
> diff --git a/Documentation/DocBook/media/v4l/pixfmt-yuv422m.xml
> b/Documentation/DocBook/media/v4l/pixfmt-yuv422m.xml new file mode 100644
> index 000000000000..dd502802cb75
> --- /dev/null
> +++ b/Documentation/DocBook/media/v4l/pixfmt-yuv422m.xml
> @@ -0,0 +1,166 @@
> + <refentry>
> + <refmeta>
> + <refentrytitle>V4L2_PIX_FMT_YUV422M ('YM16'), V4L2_PIX_FMT_YVU422M
> ('YM61')</refentrytitle> + &manvol;
> + </refmeta>
> + <refnamediv>
> + <refname
> id="V4L2-PIX-FMT-YUV422M"><constant>V4L2_PIX_FMT_YUV422M</constant></refnam
> e> + <refname
> id="V4L2-PIX-FMT-YVU422M"><constant>V4L2_PIX_FMT_YVU422M</constant></refnam
> e> + <refpurpose>Planar formats with ½ horizontal resolution, also
> + known as YUV and YVU 4:2:2</refpurpose>
> + </refnamediv>
> +
> + <refsect1>
> + <title>Description</title>
> +
> + <para>This is a multi-planar format, as opposed to a packed format.
> +The three components are separated into three sub-images or planes.</para>
> +
> + <para>The Y plane is first. The Y plane has one byte per pixel.
> +For <constant>V4L2_PIX_FMT_YUV422M</constant> the Cb data
> +constitutes the second plane which is half the width of the Y plane (and of
> the +image). Each Cb belongs to two pixels. For example,
> +Cb<subscript>0</subscript> belongs to Y'<subscript>00</subscript>,
> +Y'<subscript>01</subscript>. The Cr data, just like the Cb plane, is
> +in the third plane. </para>
> +
> + <para><constant>V4L2_PIX_FMT_YVU422M</constant> is the same except
> +the Cr data is stored in the second plane and the Cb data in the third
> plane. +</para>
> +
> + <para>If the Y plane has pad bytes after each row, then the Cb
> +and Cr planes have half as many pad bytes after their rows. In other
> +words, two Cx rows (including padding) is exactly as long as one Y row
> +(including padding).</para>
> +
> + <para><constant>V4L2_PIX_FMT_YUV422M</constant> and
> +<constant>V4L2_PIX_FMT_YVU422M</constant> are intended to be
> +used only in drivers and applications that support the multi-planar API,
> +described in <xref linkend="planar-apis"/>. </para>
> +
> + <example>
> + <title><constant>V4L2_PIX_FMT_YUV422M</constant> 4 × 4
> +pixel image</title>
> +
> + <formalpara>
> + <title>Byte Order.</title>
> + <para>Each cell is one byte.
> + <informaltable frame="none">
> + <tgroup cols="5" align="center">
> + <colspec align="left" colwidth="2*" />
> + <tbody valign="top">
> + <row>
> + <entry>start0 + 0:</entry>
> + <entry>Y'<subscript>00</subscript></entry>
> + <entry>Y'<subscript>01</subscript></entry>
> + <entry>Y'<subscript>02</subscript></entry>
> + <entry>Y'<subscript>03</subscript></entry>
> + </row>
> + <row>
> + <entry>start0 + 4:</entry>
> + <entry>Y'<subscript>10</subscript></entry>
> + <entry>Y'<subscript>11</subscript></entry>
> + <entry>Y'<subscript>12</subscript></entry>
> + <entry>Y'<subscript>13</subscript></entry>
> + </row>
> + <row>
> + <entry>start0 + 8:</entry>
> + <entry>Y'<subscript>20</subscript></entry>
> + <entry>Y'<subscript>21</subscript></entry>
> + <entry>Y'<subscript>22</subscript></entry>
> + <entry>Y'<subscript>23</subscript></entry>
> + </row>
> + <row>
> + <entry>start0 + 12:</entry>
> + <entry>Y'<subscript>30</subscript></entry>
> + <entry>Y'<subscript>31</subscript></entry>
> + <entry>Y'<subscript>32</subscript></entry>
> + <entry>Y'<subscript>33</subscript></entry>
> + </row>
> + <row><entry></entry></row>
> + <row>
> + <entry>start1 + 0:</entry>
> + <entry>Cb<subscript>00</subscript></entry>
> + <entry>Cb<subscript>01</subscript></entry>
> + </row>
> + <row>
> + <entry>start1 + 2:</entry>
> + <entry>Cb<subscript>10</subscript></entry>
> + <entry>Cb<subscript>11</subscript></entry>
> + </row>
> + <row>
> + <entry>start1 + 4:</entry>
> + <entry>Cb<subscript>20</subscript></entry>
> + <entry>Cb<subscript>21</subscript></entry>
> + </row>
> + <row>
> + <entry>start1 + 6:</entry>
> + <entry>Cb<subscript>30</subscript></entry>
> + <entry>Cb<subscript>31</subscript></entry>
> + </row>
> + <row><entry></entry></row>
> + <row>
> + <entry>start2 + 0:</entry>
> + <entry>Cr<subscript>00</subscript></entry>
> + <entry>Cr<subscript>01</subscript></entry>
> + </row>
> + <row>
> + <entry>start2 + 2:</entry>
> + <entry>Cr<subscript>10</subscript></entry>
> + <entry>Cr<subscript>11</subscript></entry>
> + </row>
> + <row>
> + <entry>start2 + 4:</entry>
> + <entry>Cr<subscript>20</subscript></entry>
> + <entry>Cr<subscript>21</subscript></entry>
> + </row>
> + <row>
> + <entry>start2 + 6:</entry>
> + <entry>Cr<subscript>30</subscript></entry>
> + <entry>Cr<subscript>31</subscript></entry>
> + </row>
> + </tbody>
> + </tgroup>
> + </informaltable>
> + </para>
> + </formalpara>
> +
> + <formalpara>
> + <title>Color Sample Location.</title>
> + <para>
> + <informaltable frame="none">
> + <tgroup cols="7" align="center">
> + <tbody valign="top">
> + <row>
> + <entry></entry>
> + <entry>0</entry><entry></entry><entry>1</entry><entry></entry>
> + <entry>2</entry><entry></entry><entry>3</entry>
> + </row>
> + <row>
> + <entry>0</entry>
> + <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
> + <entry>Y</entry><entry>C</entry><entry>Y</entry>
> + </row>
> + <row>
> + <entry>1</entry>
> + <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
> + <entry>Y</entry><entry>C</entry><entry>Y</entry>
> + </row>
> + <row>
> + <entry>2</entry>
> + <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
> + <entry>Y</entry><entry>C</entry><entry>Y</entry>
> + </row>
> + <row>
> + <entry>3</entry>
> + <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
> + <entry>Y</entry><entry>C</entry><entry>Y</entry>
> + </row>
> + </tbody>
> + </tgroup>
> + </informaltable>
> + </para>
> + </formalpara>
> + </example>
> + </refsect1>
> + </refentry>
> diff --git a/Documentation/DocBook/media/v4l/pixfmt-yuv444m.xml
> b/Documentation/DocBook/media/v4l/pixfmt-yuv444m.xml new file mode 100644
> index 000000000000..1b7335940bc7
> --- /dev/null
> +++ b/Documentation/DocBook/media/v4l/pixfmt-yuv444m.xml
> @@ -0,0 +1,177 @@
> + <refentry>
> + <refmeta>
> + <refentrytitle>V4L2_PIX_FMT_YUV444M ('YM24'), V4L2_PIX_FMT_YVU444M
> ('YM42')</refentrytitle> + &manvol;
> + </refmeta>
> + <refnamediv>
> + <refname
> id="V4L2-PIX-FMT-YUV444M"><constant>V4L2_PIX_FMT_YUV444M</constant></refnam
> e> + <refname
> id="V4L2-PIX-FMT-YVU444M"><constant>V4L2_PIX_FMT_YVU444M</constant></refnam
> e> + <refpurpose>Planar formats with full horizontal resolution, also
> + known as YUV and YVU 4:4:4</refpurpose>
> + </refnamediv>
> +
> + <refsect1>
> + <title>Description</title>
> +
> + <para>This is a multi-planar format, as opposed to a packed format.
> +The three components are separated into three sub-images or planes.</para>
> +
> + <para>The Y plane is first. The Y plane has one byte per pixel.
> +For <constant>V4L2_PIX_FMT_YUV444M</constant> the Cb data
> +constitutes the second plane which is the same width and height as the Y
> plane +(and as the image). The Cr data, just like the Cb plane, is in the
> third plane. +</para>
> +
> + <para><constant>V4L2_PIX_FMT_YVU444M</constant> is the same except
> +the Cr data is stored in the second plane and the Cb data in the third
> plane. +</para>
> + <para>If the Y plane has pad bytes after each row, then the Cb
> +and Cr planes have the same number of pad bytes after their rows.</para>
> +
> + <para><constant>V4L2_PIX_FMT_YUV444M</constant> and
> +<constant>V4L2_PIX_FMT_YUV444M</constant> are intended to be
> +used only in drivers and applications that support the multi-planar API,
> +described in <xref linkend="planar-apis"/>. </para>
> +
> + <example>
> + <title><constant>V4L2_PIX_FMT_YUV444M</constant> 4 × 4
> +pixel image</title>
> +
> + <formalpara>
> + <title>Byte Order.</title>
> + <para>Each cell is one byte.
> + <informaltable frame="none">
> + <tgroup cols="5" align="center">
> + <colspec align="left" colwidth="2*" />
> + <tbody valign="top">
> + <row>
> + <entry>start0 + 0:</entry>
> + <entry>Y'<subscript>00</subscript></entry>
> + <entry>Y'<subscript>01</subscript></entry>
> + <entry>Y'<subscript>02</subscript></entry>
> + <entry>Y'<subscript>03</subscript></entry>
> + </row>
> + <row>
> + <entry>start0 + 4:</entry>
> + <entry>Y'<subscript>10</subscript></entry>
> + <entry>Y'<subscript>11</subscript></entry>
> + <entry>Y'<subscript>12</subscript></entry>
> + <entry>Y'<subscript>13</subscript></entry>
> + </row>
> + <row>
> + <entry>start0 + 8:</entry>
> + <entry>Y'<subscript>20</subscript></entry>
> + <entry>Y'<subscript>21</subscript></entry>
> + <entry>Y'<subscript>22</subscript></entry>
> + <entry>Y'<subscript>23</subscript></entry>
> + </row>
> + <row>
> + <entry>start0 + 12:</entry>
> + <entry>Y'<subscript>30</subscript></entry>
> + <entry>Y'<subscript>31</subscript></entry>
> + <entry>Y'<subscript>32</subscript></entry>
> + <entry>Y'<subscript>33</subscript></entry>
> + </row>
> + <row><entry></entry></row>
> + <row>
> + <entry>start1 + 0:</entry>
> + <entry>Cb<subscript>00</subscript></entry>
> + <entry>Cb<subscript>01</subscript></entry>
> + <entry>Cb<subscript>02</subscript></entry>
> + <entry>Cb<subscript>03</subscript></entry>
> + </row>
> + <row>
> + <entry>start1 + 4:</entry>
> + <entry>Cb<subscript>10</subscript></entry>
> + <entry>Cb<subscript>11</subscript></entry>
> + <entry>Cb<subscript>12</subscript></entry>
> + <entry>Cb<subscript>13</subscript></entry>
> + </row>
> + <row>
> + <entry>start1 + 8:</entry>
> + <entry>Cb<subscript>20</subscript></entry>
> + <entry>Cb<subscript>21</subscript></entry>
> + <entry>Cb<subscript>22</subscript></entry>
> + <entry>Cb<subscript>23</subscript></entry>
> + </row>
> + <row>
> + <entry>start1 + 12:</entry>
> + <entry>Cb<subscript>20</subscript></entry>
> + <entry>Cb<subscript>21</subscript></entry>
> + <entry>Cb<subscript>32</subscript></entry>
> + <entry>Cb<subscript>33</subscript></entry>
> + </row>
> + <row><entry></entry></row>
> + <row>
> + <entry>start2 + 0:</entry>
> + <entry>Cr<subscript>00</subscript></entry>
> + <entry>Cr<subscript>01</subscript></entry>
> + <entry>Cr<subscript>02</subscript></entry>
> + <entry>Cr<subscript>03</subscript></entry>
> + </row>
> + <row>
> + <entry>start2 + 4:</entry>
> + <entry>Cr<subscript>10</subscript></entry>
> + <entry>Cr<subscript>11</subscript></entry>
> + <entry>Cr<subscript>12</subscript></entry>
> + <entry>Cr<subscript>13</subscript></entry>
> + </row>
> + <row>
> + <entry>start2 + 8:</entry>
> + <entry>Cr<subscript>20</subscript></entry>
> + <entry>Cr<subscript>21</subscript></entry>
> + <entry>Cr<subscript>22</subscript></entry>
> + <entry>Cr<subscript>23</subscript></entry>
> + </row>
> + <row>
> + <entry>start2 + 12:</entry>
> + <entry>Cr<subscript>30</subscript></entry>
> + <entry>Cr<subscript>31</subscript></entry>
> + <entry>Cr<subscript>32</subscript></entry>
> + <entry>Cr<subscript>33</subscript></entry>
> + </row>
> + </tbody>
> + </tgroup>
> + </informaltable>
> + </para>
> + </formalpara>
> +
> + <formalpara>
> + <title>Color Sample Location.</title>
> + <para>
> + <informaltable frame="none">
> + <tgroup cols="7" align="center">
> + <tbody valign="top">
> + <row>
> + <entry></entry>
> + <entry>0</entry><entry></entry><entry>1</entry><entry></entry>
> + <entry>2</entry><entry></entry><entry>3</entry>
> + </row>
> + <row>
> + <entry>0</entry>
> +
<entry>YC</entry><entry></entry><entry>YC</entry><entry></entry>
> + <entry>YC</entry><entry></entry><entry>YC</entry>
> + </row>
> + <row>
> + <entry>1</entry>
> +
<entry>YC</entry><entry></entry><entry>YC</entry><entry></entry>
> + <entry>YC</entry><entry></entry><entry>YC</entry>
> + </row>
> + <row>
> + <entry>2</entry>
> +
<entry>YC</entry><entry></entry><entry>YC</entry><entry></entry>
> + <entry>YC</entry><entry></entry><entry>YC</entry>
> + </row>
> + <row>
> + <entry>3</entry>
> +
<entry>YC</entry><entry></entry><entry>YC</entry><entry></entry>
> + <entry>YC</entry><entry></entry><entry>YC</entry>
> + </row>
> + </tbody>
> + </tgroup>
> + </informaltable>
> + </para>
> + </formalpara>
> + </example>
> + </refsect1>
> + </refentry>
> diff --git a/Documentation/DocBook/media/v4l/pixfmt.xml
> b/Documentation/DocBook/media/v4l/pixfmt.xml index
> 9e77ff353feb..2f02f9441443 100644
> --- a/Documentation/DocBook/media/v4l/pixfmt.xml
> +++ b/Documentation/DocBook/media/v4l/pixfmt.xml
> @@ -1628,6 +1628,8 @@ information.</para>
> &sub-y41p;
> &sub-yuv420;
> &sub-yuv420m;
> + &sub-yuv422m;
> + &sub-yuv444m;
> &sub-yuv410;
> &sub-yuv422p;
> &sub-yuv411p;
> diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c
> b/drivers/media/v4l2-core/v4l2-ioctl.c index 8a018c6dd16a..14843090fd61
> 100644
> --- a/drivers/media/v4l2-core/v4l2-ioctl.c
> +++ b/drivers/media/v4l2-core/v4l2-ioctl.c
> @@ -1191,6 +1191,10 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc
> *fmt) case V4L2_PIX_FMT_NV12MT_16X16: descr = "Y/CbCr 4:2:0 (16x16 MB,
> N-C)"; break; case V4L2_PIX_FMT_YUV420M: descr = "Planar YUV 4:2:0 (N-
C)";
> break; case V4L2_PIX_FMT_YVU420M: descr = "Planar YVU 4:2:0 (N-C)"; break;
> + case V4L2_PIX_FMT_YUV422M: descr = "Planar YUV 4:2:2 (N-C)"; break;
> + case V4L2_PIX_FMT_YVU422M: descr = "Planar YVU 4:2:2 (N-C)"; break;
> + case V4L2_PIX_FMT_YUV444M: descr = "Planar YUV 4:4:4 (N-C)"; break;
> + case V4L2_PIX_FMT_YVU444M: descr = "Planar YVU 4:4:4 (N-C)"; break; case
> V4L2_PIX_FMT_SBGGR8: descr = "8-bit Bayer BGBG/GRGR"; break; case
> V4L2_PIX_FMT_SGBRG8: descr = "8-bit Bayer GBGB/RGRG"; break; case
> V4L2_PIX_FMT_SGRBG8: descr = "8-bit Bayer GRGR/BGBG"; break; diff --git
> a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h index
> 14cd5ebfee6d..466458422385 100644
> --- a/include/uapi/linux/videodev2.h
> +++ b/include/uapi/linux/videodev2.h
> @@ -546,6 +546,10 @@ struct v4l2_pix_format {
> /* three non contiguous planes - Y, Cb, Cr */
> #define V4L2_PIX_FMT_YUV420M v4l2_fourcc('Y', 'M', '1', '2') /* 12 YUV420
> planar */ #define V4L2_PIX_FMT_YVU420M v4l2_fourcc('Y', 'M', '2', '1') /*
> 12 YVU420 planar */ +#define V4L2_PIX_FMT_YUV422M v4l2_fourcc('Y', 'M',
> '1', '6') /* 16 YUV422 planar */ +#define V4L2_PIX_FMT_YVU422M
> v4l2_fourcc('Y', 'M', '6', '1') /* 16 YVU422 planar */ +#define
> V4L2_PIX_FMT_YUV444M v4l2_fourcc('Y', 'M', '2', '4') /* 24 YUV444 planar
> */ +#define V4L2_PIX_FMT_YVU444M v4l2_fourcc('Y', 'M', '4', '2') /* 24
> YVU444 planar */
>
> /* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */
> #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG..
> GRGR.. */
--
Regards,
Laurent Pinchart
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/3] v4l: Merge the YUV and YVU 4:2:0 tri-planar non-contiguous formats docs
2016-01-11 4:07 ` [PATCH 1/3] v4l: Merge the YUV and YVU 4:2:0 tri-planar non-contiguous formats docs Laurent Pinchart
@ 2016-01-22 12:22 ` Hans Verkuil
0 siblings, 0 replies; 7+ messages in thread
From: Hans Verkuil @ 2016-01-22 12:22 UTC (permalink / raw)
To: Laurent Pinchart, linux-media; +Cc: linux-sh
On 01/11/2016 05:07 AM, Laurent Pinchart wrote:
> The two formats are very similar, having two separate pages to describe
> them is overkill.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
Thanks!
Hans
> ---
> Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml | 26 ++--
> Documentation/DocBook/media/v4l/pixfmt-yvu420m.xml | 154 ---------------------
> Documentation/DocBook/media/v4l/pixfmt.xml | 1 -
> 3 files changed, 17 insertions(+), 164 deletions(-)
> delete mode 100644 Documentation/DocBook/media/v4l/pixfmt-yvu420m.xml
>
> diff --git a/Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml b/Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml
> index e781cc61786c..7d13fe96657d 100644
> --- a/Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml
> +++ b/Documentation/DocBook/media/v4l/pixfmt-yuv420m.xml
> @@ -1,35 +1,43 @@
> - <refentry id="V4L2-PIX-FMT-YUV420M">
> + <refentry>
> <refmeta>
> - <refentrytitle>V4L2_PIX_FMT_YUV420M ('YM12')</refentrytitle>
> + <refentrytitle>V4L2_PIX_FMT_YUV420M ('YM12'), V4L2_PIX_FMT_YVU420M ('YM21')</refentrytitle>
> &manvol;
> </refmeta>
> <refnamediv>
> - <refname> <constant>V4L2_PIX_FMT_YUV420M</constant></refname>
> - <refpurpose>Variation of <constant>V4L2_PIX_FMT_YUV420</constant>
> - with planes non contiguous in memory. </refpurpose>
> + <refname id="V4L2-PIX-FMT-YUV420M"><constant>V4L2_PIX_FMT_YUV420M</constant></refname>
> + <refname id="V4L2-PIX-FMT-YVU420M"><constant>V4L2_PIX_FMT_YVU420M</constant></refname>
> + <refpurpose>Variation of <constant>V4L2_PIX_FMT_YUV420</constant> and
> + <constant>V4L2_PIX_FMT_YVU420</constant> with planes non contiguous
> + in memory.</refpurpose>
> </refnamediv>
>
> <refsect1>
> <title>Description</title>
>
> <para>This is a multi-planar format, as opposed to a packed format.
> -The three components are separated into three sub- images or planes.
> +The three components are separated into three sub-images or planes.</para>
>
> -The Y plane is first. The Y plane has one byte per pixel. The Cb data
> + <para>The Y plane is first. The Y plane has one byte per pixel.
> +For <constant>V4L2_PIX_FMT_YUV420M</constant> the Cb data
> constitutes the second plane which is half the width and half
> the height of the Y plane (and of the image). Each Cb belongs to four
> pixels, a two-by-two square of the image. For example,
> Cb<subscript>0</subscript> belongs to Y'<subscript>00</subscript>,
> Y'<subscript>01</subscript>, Y'<subscript>10</subscript>, and
> Y'<subscript>11</subscript>. The Cr data, just like the Cb plane, is
> -in the third plane. </para>
> +in the third plane.</para>
> +
> + <para><constant>V4L2_PIX_FMT_YVU420M</constant> is the same except
> +the Cr data is stored in the second plane and the Cb data in the third plane.
> +</para>
>
> <para>If the Y plane has pad bytes after each row, then the Cb
> and Cr planes have half as many pad bytes after their rows. In other
> words, two Cx rows (including padding) is exactly as long as one Y row
> (including padding).</para>
>
> - <para><constant>V4L2_PIX_FMT_YUV420M</constant> is intended to be
> + <para><constant>V4L2_PIX_FMT_YUV420M</constant> and
> +<constant>V4L2_PIX_FMT_YVU420M</constant> are intended to be
> used only in drivers and applications that support the multi-planar API,
> described in <xref linkend="planar-apis"/>. </para>
>
> diff --git a/Documentation/DocBook/media/v4l/pixfmt-yvu420m.xml b/Documentation/DocBook/media/v4l/pixfmt-yvu420m.xml
> deleted file mode 100644
> index 2330667907c7..000000000000
> --- a/Documentation/DocBook/media/v4l/pixfmt-yvu420m.xml
> +++ /dev/null
> @@ -1,154 +0,0 @@
> - <refentry id="V4L2-PIX-FMT-YVU420M">
> - <refmeta>
> - <refentrytitle>V4L2_PIX_FMT_YVU420M ('YM21')</refentrytitle>
> - &manvol;
> - </refmeta>
> - <refnamediv>
> - <refname> <constant>V4L2_PIX_FMT_YVU420M</constant></refname>
> - <refpurpose>Variation of <constant>V4L2_PIX_FMT_YVU420</constant>
> - with planes non contiguous in memory. </refpurpose>
> - </refnamediv>
> -
> - <refsect1>
> - <title>Description</title>
> -
> - <para>This is a multi-planar format, as opposed to a packed format.
> -The three components are separated into three sub-images or planes.
> -
> -The Y plane is first. The Y plane has one byte per pixel. The Cr data
> -constitutes the second plane which is half the width and half
> -the height of the Y plane (and of the image). Each Cr belongs to four
> -pixels, a two-by-two square of the image. For example,
> -Cr<subscript>0</subscript> belongs to Y'<subscript>00</subscript>,
> -Y'<subscript>01</subscript>, Y'<subscript>10</subscript>, and
> -Y'<subscript>11</subscript>. The Cb data, just like the Cr plane, constitutes
> -the third plane. </para>
> -
> - <para>If the Y plane has pad bytes after each row, then the Cr
> -and Cb planes have half as many pad bytes after their rows. In other
> -words, two Cx rows (including padding) is exactly as long as one Y row
> -(including padding).</para>
> -
> - <para><constant>V4L2_PIX_FMT_YVU420M</constant> is intended to be
> -used only in drivers and applications that support the multi-planar API,
> -described in <xref linkend="planar-apis"/>. </para>
> -
> - <example>
> - <title><constant>V4L2_PIX_FMT_YVU420M</constant> 4 × 4
> -pixel image</title>
> -
> - <formalpara>
> - <title>Byte Order.</title>
> - <para>Each cell is one byte.
> - <informaltable frame="none">
> - <tgroup cols="5" align="center">
> - <colspec align="left" colwidth="2*" />
> - <tbody valign="top">
> - <row>
> - <entry>start0 + 0:</entry>
> - <entry>Y'<subscript>00</subscript></entry>
> - <entry>Y'<subscript>01</subscript></entry>
> - <entry>Y'<subscript>02</subscript></entry>
> - <entry>Y'<subscript>03</subscript></entry>
> - </row>
> - <row>
> - <entry>start0 + 4:</entry>
> - <entry>Y'<subscript>10</subscript></entry>
> - <entry>Y'<subscript>11</subscript></entry>
> - <entry>Y'<subscript>12</subscript></entry>
> - <entry>Y'<subscript>13</subscript></entry>
> - </row>
> - <row>
> - <entry>start0 + 8:</entry>
> - <entry>Y'<subscript>20</subscript></entry>
> - <entry>Y'<subscript>21</subscript></entry>
> - <entry>Y'<subscript>22</subscript></entry>
> - <entry>Y'<subscript>23</subscript></entry>
> - </row>
> - <row>
> - <entry>start0 + 12:</entry>
> - <entry>Y'<subscript>30</subscript></entry>
> - <entry>Y'<subscript>31</subscript></entry>
> - <entry>Y'<subscript>32</subscript></entry>
> - <entry>Y'<subscript>33</subscript></entry>
> - </row>
> - <row><entry></entry></row>
> - <row>
> - <entry>start1 + 0:</entry>
> - <entry>Cr<subscript>00</subscript></entry>
> - <entry>Cr<subscript>01</subscript></entry>
> - </row>
> - <row>
> - <entry>start1 + 2:</entry>
> - <entry>Cr<subscript>10</subscript></entry>
> - <entry>Cr<subscript>11</subscript></entry>
> - </row>
> - <row><entry></entry></row>
> - <row>
> - <entry>start2 + 0:</entry>
> - <entry>Cb<subscript>00</subscript></entry>
> - <entry>Cb<subscript>01</subscript></entry>
> - </row>
> - <row>
> - <entry>start2 + 2:</entry>
> - <entry>Cb<subscript>10</subscript></entry>
> - <entry>Cb<subscript>11</subscript></entry>
> - </row>
> - </tbody>
> - </tgroup>
> - </informaltable>
> - </para>
> - </formalpara>
> -
> - <formalpara>
> - <title>Color Sample Location.</title>
> - <para>
> - <informaltable frame="none">
> - <tgroup cols="7" align="center">
> - <tbody valign="top">
> - <row>
> - <entry></entry>
> - <entry>0</entry><entry></entry><entry>1</entry><entry></entry>
> - <entry>2</entry><entry></entry><entry>3</entry>
> - </row>
> - <row>
> - <entry>0</entry>
> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
> - <entry>Y</entry><entry></entry><entry>Y</entry>
> - </row>
> - <row>
> - <entry></entry>
> - <entry></entry><entry>C</entry><entry></entry><entry></entry>
> - <entry></entry><entry>C</entry><entry></entry>
> - </row>
> - <row>
> - <entry>1</entry>
> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
> - <entry>Y</entry><entry></entry><entry>Y</entry>
> - </row>
> - <row>
> - <entry></entry>
> - </row>
> - <row>
> - <entry>2</entry>
> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
> - <entry>Y</entry><entry></entry><entry>Y</entry>
> - </row>
> - <row>
> - <entry></entry>
> - <entry></entry><entry>C</entry><entry></entry><entry></entry>
> - <entry></entry><entry>C</entry><entry></entry>
> - </row>
> - <row>
> - <entry>3</entry>
> - <entry>Y</entry><entry></entry><entry>Y</entry><entry></entry>
> - <entry>Y</entry><entry></entry><entry>Y</entry>
> - </row>
> - </tbody>
> - </tgroup>
> - </informaltable>
> - </para>
> - </formalpara>
> - </example>
> - </refsect1>
> - </refentry>
> diff --git a/Documentation/DocBook/media/v4l/pixfmt.xml b/Documentation/DocBook/media/v4l/pixfmt.xml
> index d871245d2973..9e77ff353feb 100644
> --- a/Documentation/DocBook/media/v4l/pixfmt.xml
> +++ b/Documentation/DocBook/media/v4l/pixfmt.xml
> @@ -1628,7 +1628,6 @@ information.</para>
> &sub-y41p;
> &sub-yuv420;
> &sub-yuv420m;
> - &sub-yvu420m;
> &sub-yuv410;
> &sub-yuv422p;
> &sub-yuv411p;
>
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/3] v4l: Add YUV 4:2:2 and YUV 4:4:4 tri-planar non-contiguous formats
2016-01-11 4:07 ` [PATCH 2/3] v4l: Add YUV 4:2:2 and YUV 4:4:4 tri-planar non-contiguous formats Laurent Pinchart
2016-01-21 22:22 ` Laurent Pinchart
@ 2016-01-22 12:22 ` Hans Verkuil
1 sibling, 0 replies; 7+ messages in thread
From: Hans Verkuil @ 2016-01-22 12:22 UTC (permalink / raw)
To: Laurent Pinchart, linux-media; +Cc: linux-sh
On 01/11/2016 05:07 AM, Laurent Pinchart wrote:
> The formats use three planes through the multiplanar API, allowing for
> non-contiguous planes in memory.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com>
Acked-by: Hans Verkuil <hans.verkuil@cisco.com>
Thanks!
Hans
> ---
> Documentation/DocBook/media/v4l/pixfmt-yuv422m.xml | 166 +++++++++++++++++++
> Documentation/DocBook/media/v4l/pixfmt-yuv444m.xml | 177 +++++++++++++++++++++
> Documentation/DocBook/media/v4l/pixfmt.xml | 2 +
> drivers/media/v4l2-core/v4l2-ioctl.c | 4 +
> include/uapi/linux/videodev2.h | 4 +
> 5 files changed, 353 insertions(+)
> create mode 100644 Documentation/DocBook/media/v4l/pixfmt-yuv422m.xml
> create mode 100644 Documentation/DocBook/media/v4l/pixfmt-yuv444m.xml
>
> diff --git a/Documentation/DocBook/media/v4l/pixfmt-yuv422m.xml b/Documentation/DocBook/media/v4l/pixfmt-yuv422m.xml
> new file mode 100644
> index 000000000000..dd502802cb75
> --- /dev/null
> +++ b/Documentation/DocBook/media/v4l/pixfmt-yuv422m.xml
> @@ -0,0 +1,166 @@
> + <refentry>
> + <refmeta>
> + <refentrytitle>V4L2_PIX_FMT_YUV422M ('YM16'), V4L2_PIX_FMT_YVU422M ('YM61')</refentrytitle>
> + &manvol;
> + </refmeta>
> + <refnamediv>
> + <refname id="V4L2-PIX-FMT-YUV422M"><constant>V4L2_PIX_FMT_YUV422M</constant></refname>
> + <refname id="V4L2-PIX-FMT-YVU422M"><constant>V4L2_PIX_FMT_YVU422M</constant></refname>
> + <refpurpose>Planar formats with ½ horizontal resolution, also
> + known as YUV and YVU 4:2:2</refpurpose>
> + </refnamediv>
> +
> + <refsect1>
> + <title>Description</title>
> +
> + <para>This is a multi-planar format, as opposed to a packed format.
> +The three components are separated into three sub-images or planes.</para>
> +
> + <para>The Y plane is first. The Y plane has one byte per pixel.
> +For <constant>V4L2_PIX_FMT_YUV422M</constant> the Cb data
> +constitutes the second plane which is half the width of the Y plane (and of the
> +image). Each Cb belongs to two pixels. For example,
> +Cb<subscript>0</subscript> belongs to Y'<subscript>00</subscript>,
> +Y'<subscript>01</subscript>. The Cr data, just like the Cb plane, is
> +in the third plane. </para>
> +
> + <para><constant>V4L2_PIX_FMT_YVU422M</constant> is the same except
> +the Cr data is stored in the second plane and the Cb data in the third plane.
> +</para>
> +
> + <para>If the Y plane has pad bytes after each row, then the Cb
> +and Cr planes have half as many pad bytes after their rows. In other
> +words, two Cx rows (including padding) is exactly as long as one Y row
> +(including padding).</para>
> +
> + <para><constant>V4L2_PIX_FMT_YUV422M</constant> and
> +<constant>V4L2_PIX_FMT_YVU422M</constant> are intended to be
> +used only in drivers and applications that support the multi-planar API,
> +described in <xref linkend="planar-apis"/>. </para>
> +
> + <example>
> + <title><constant>V4L2_PIX_FMT_YUV422M</constant> 4 × 4
> +pixel image</title>
> +
> + <formalpara>
> + <title>Byte Order.</title>
> + <para>Each cell is one byte.
> + <informaltable frame="none">
> + <tgroup cols="5" align="center">
> + <colspec align="left" colwidth="2*" />
> + <tbody valign="top">
> + <row>
> + <entry>start0 + 0:</entry>
> + <entry>Y'<subscript>00</subscript></entry>
> + <entry>Y'<subscript>01</subscript></entry>
> + <entry>Y'<subscript>02</subscript></entry>
> + <entry>Y'<subscript>03</subscript></entry>
> + </row>
> + <row>
> + <entry>start0 + 4:</entry>
> + <entry>Y'<subscript>10</subscript></entry>
> + <entry>Y'<subscript>11</subscript></entry>
> + <entry>Y'<subscript>12</subscript></entry>
> + <entry>Y'<subscript>13</subscript></entry>
> + </row>
> + <row>
> + <entry>start0 + 8:</entry>
> + <entry>Y'<subscript>20</subscript></entry>
> + <entry>Y'<subscript>21</subscript></entry>
> + <entry>Y'<subscript>22</subscript></entry>
> + <entry>Y'<subscript>23</subscript></entry>
> + </row>
> + <row>
> + <entry>start0 + 12:</entry>
> + <entry>Y'<subscript>30</subscript></entry>
> + <entry>Y'<subscript>31</subscript></entry>
> + <entry>Y'<subscript>32</subscript></entry>
> + <entry>Y'<subscript>33</subscript></entry>
> + </row>
> + <row><entry></entry></row>
> + <row>
> + <entry>start1 + 0:</entry>
> + <entry>Cb<subscript>00</subscript></entry>
> + <entry>Cb<subscript>01</subscript></entry>
> + </row>
> + <row>
> + <entry>start1 + 2:</entry>
> + <entry>Cb<subscript>10</subscript></entry>
> + <entry>Cb<subscript>11</subscript></entry>
> + </row>
> + <row>
> + <entry>start1 + 4:</entry>
> + <entry>Cb<subscript>20</subscript></entry>
> + <entry>Cb<subscript>21</subscript></entry>
> + </row>
> + <row>
> + <entry>start1 + 6:</entry>
> + <entry>Cb<subscript>30</subscript></entry>
> + <entry>Cb<subscript>31</subscript></entry>
> + </row>
> + <row><entry></entry></row>
> + <row>
> + <entry>start2 + 0:</entry>
> + <entry>Cr<subscript>00</subscript></entry>
> + <entry>Cr<subscript>01</subscript></entry>
> + </row>
> + <row>
> + <entry>start2 + 2:</entry>
> + <entry>Cr<subscript>10</subscript></entry>
> + <entry>Cr<subscript>11</subscript></entry>
> + </row>
> + <row>
> + <entry>start2 + 4:</entry>
> + <entry>Cr<subscript>20</subscript></entry>
> + <entry>Cr<subscript>21</subscript></entry>
> + </row>
> + <row>
> + <entry>start2 + 6:</entry>
> + <entry>Cr<subscript>30</subscript></entry>
> + <entry>Cr<subscript>31</subscript></entry>
> + </row>
> + </tbody>
> + </tgroup>
> + </informaltable>
> + </para>
> + </formalpara>
> +
> + <formalpara>
> + <title>Color Sample Location.</title>
> + <para>
> + <informaltable frame="none">
> + <tgroup cols="7" align="center">
> + <tbody valign="top">
> + <row>
> + <entry></entry>
> + <entry>0</entry><entry></entry><entry>1</entry><entry></entry>
> + <entry>2</entry><entry></entry><entry>3</entry>
> + </row>
> + <row>
> + <entry>0</entry>
> + <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
> + <entry>Y</entry><entry>C</entry><entry>Y</entry>
> + </row>
> + <row>
> + <entry>1</entry>
> + <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
> + <entry>Y</entry><entry>C</entry><entry>Y</entry>
> + </row>
> + <row>
> + <entry>2</entry>
> + <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
> + <entry>Y</entry><entry>C</entry><entry>Y</entry>
> + </row>
> + <row>
> + <entry>3</entry>
> + <entry>Y</entry><entry>C</entry><entry>Y</entry><entry></entry>
> + <entry>Y</entry><entry>C</entry><entry>Y</entry>
> + </row>
> + </tbody>
> + </tgroup>
> + </informaltable>
> + </para>
> + </formalpara>
> + </example>
> + </refsect1>
> + </refentry>
> diff --git a/Documentation/DocBook/media/v4l/pixfmt-yuv444m.xml b/Documentation/DocBook/media/v4l/pixfmt-yuv444m.xml
> new file mode 100644
> index 000000000000..1b7335940bc7
> --- /dev/null
> +++ b/Documentation/DocBook/media/v4l/pixfmt-yuv444m.xml
> @@ -0,0 +1,177 @@
> + <refentry>
> + <refmeta>
> + <refentrytitle>V4L2_PIX_FMT_YUV444M ('YM24'), V4L2_PIX_FMT_YVU444M ('YM42')</refentrytitle>
> + &manvol;
> + </refmeta>
> + <refnamediv>
> + <refname id="V4L2-PIX-FMT-YUV444M"><constant>V4L2_PIX_FMT_YUV444M</constant></refname>
> + <refname id="V4L2-PIX-FMT-YVU444M"><constant>V4L2_PIX_FMT_YVU444M</constant></refname>
> + <refpurpose>Planar formats with full horizontal resolution, also
> + known as YUV and YVU 4:4:4</refpurpose>
> + </refnamediv>
> +
> + <refsect1>
> + <title>Description</title>
> +
> + <para>This is a multi-planar format, as opposed to a packed format.
> +The three components are separated into three sub-images or planes.</para>
> +
> + <para>The Y plane is first. The Y plane has one byte per pixel.
> +For <constant>V4L2_PIX_FMT_YUV444M</constant> the Cb data
> +constitutes the second plane which is the same width and height as the Y plane
> +(and as the image). The Cr data, just like the Cb plane, is in the third plane.
> +</para>
> +
> + <para><constant>V4L2_PIX_FMT_YVU444M</constant> is the same except
> +the Cr data is stored in the second plane and the Cb data in the third plane.
> +</para>
> + <para>If the Y plane has pad bytes after each row, then the Cb
> +and Cr planes have the same number of pad bytes after their rows.</para>
> +
> + <para><constant>V4L2_PIX_FMT_YUV444M</constant> and
> +<constant>V4L2_PIX_FMT_YUV444M</constant> are intended to be
> +used only in drivers and applications that support the multi-planar API,
> +described in <xref linkend="planar-apis"/>. </para>
> +
> + <example>
> + <title><constant>V4L2_PIX_FMT_YUV444M</constant> 4 × 4
> +pixel image</title>
> +
> + <formalpara>
> + <title>Byte Order.</title>
> + <para>Each cell is one byte.
> + <informaltable frame="none">
> + <tgroup cols="5" align="center">
> + <colspec align="left" colwidth="2*" />
> + <tbody valign="top">
> + <row>
> + <entry>start0 + 0:</entry>
> + <entry>Y'<subscript>00</subscript></entry>
> + <entry>Y'<subscript>01</subscript></entry>
> + <entry>Y'<subscript>02</subscript></entry>
> + <entry>Y'<subscript>03</subscript></entry>
> + </row>
> + <row>
> + <entry>start0 + 4:</entry>
> + <entry>Y'<subscript>10</subscript></entry>
> + <entry>Y'<subscript>11</subscript></entry>
> + <entry>Y'<subscript>12</subscript></entry>
> + <entry>Y'<subscript>13</subscript></entry>
> + </row>
> + <row>
> + <entry>start0 + 8:</entry>
> + <entry>Y'<subscript>20</subscript></entry>
> + <entry>Y'<subscript>21</subscript></entry>
> + <entry>Y'<subscript>22</subscript></entry>
> + <entry>Y'<subscript>23</subscript></entry>
> + </row>
> + <row>
> + <entry>start0 + 12:</entry>
> + <entry>Y'<subscript>30</subscript></entry>
> + <entry>Y'<subscript>31</subscript></entry>
> + <entry>Y'<subscript>32</subscript></entry>
> + <entry>Y'<subscript>33</subscript></entry>
> + </row>
> + <row><entry></entry></row>
> + <row>
> + <entry>start1 + 0:</entry>
> + <entry>Cb<subscript>00</subscript></entry>
> + <entry>Cb<subscript>01</subscript></entry>
> + <entry>Cb<subscript>02</subscript></entry>
> + <entry>Cb<subscript>03</subscript></entry>
> + </row>
> + <row>
> + <entry>start1 + 4:</entry>
> + <entry>Cb<subscript>10</subscript></entry>
> + <entry>Cb<subscript>11</subscript></entry>
> + <entry>Cb<subscript>12</subscript></entry>
> + <entry>Cb<subscript>13</subscript></entry>
> + </row>
> + <row>
> + <entry>start1 + 8:</entry>
> + <entry>Cb<subscript>20</subscript></entry>
> + <entry>Cb<subscript>21</subscript></entry>
> + <entry>Cb<subscript>22</subscript></entry>
> + <entry>Cb<subscript>23</subscript></entry>
> + </row>
> + <row>
> + <entry>start1 + 12:</entry>
> + <entry>Cb<subscript>20</subscript></entry>
> + <entry>Cb<subscript>21</subscript></entry>
> + <entry>Cb<subscript>32</subscript></entry>
> + <entry>Cb<subscript>33</subscript></entry>
> + </row>
> + <row><entry></entry></row>
> + <row>
> + <entry>start2 + 0:</entry>
> + <entry>Cr<subscript>00</subscript></entry>
> + <entry>Cr<subscript>01</subscript></entry>
> + <entry>Cr<subscript>02</subscript></entry>
> + <entry>Cr<subscript>03</subscript></entry>
> + </row>
> + <row>
> + <entry>start2 + 4:</entry>
> + <entry>Cr<subscript>10</subscript></entry>
> + <entry>Cr<subscript>11</subscript></entry>
> + <entry>Cr<subscript>12</subscript></entry>
> + <entry>Cr<subscript>13</subscript></entry>
> + </row>
> + <row>
> + <entry>start2 + 8:</entry>
> + <entry>Cr<subscript>20</subscript></entry>
> + <entry>Cr<subscript>21</subscript></entry>
> + <entry>Cr<subscript>22</subscript></entry>
> + <entry>Cr<subscript>23</subscript></entry>
> + </row>
> + <row>
> + <entry>start2 + 12:</entry>
> + <entry>Cr<subscript>30</subscript></entry>
> + <entry>Cr<subscript>31</subscript></entry>
> + <entry>Cr<subscript>32</subscript></entry>
> + <entry>Cr<subscript>33</subscript></entry>
> + </row>
> + </tbody>
> + </tgroup>
> + </informaltable>
> + </para>
> + </formalpara>
> +
> + <formalpara>
> + <title>Color Sample Location.</title>
> + <para>
> + <informaltable frame="none">
> + <tgroup cols="7" align="center">
> + <tbody valign="top">
> + <row>
> + <entry></entry>
> + <entry>0</entry><entry></entry><entry>1</entry><entry></entry>
> + <entry>2</entry><entry></entry><entry>3</entry>
> + </row>
> + <row>
> + <entry>0</entry>
> + <entry>YC</entry><entry></entry><entry>YC</entry><entry></entry>
> + <entry>YC</entry><entry></entry><entry>YC</entry>
> + </row>
> + <row>
> + <entry>1</entry>
> + <entry>YC</entry><entry></entry><entry>YC</entry><entry></entry>
> + <entry>YC</entry><entry></entry><entry>YC</entry>
> + </row>
> + <row>
> + <entry>2</entry>
> + <entry>YC</entry><entry></entry><entry>YC</entry><entry></entry>
> + <entry>YC</entry><entry></entry><entry>YC</entry>
> + </row>
> + <row>
> + <entry>3</entry>
> + <entry>YC</entry><entry></entry><entry>YC</entry><entry></entry>
> + <entry>YC</entry><entry></entry><entry>YC</entry>
> + </row>
> + </tbody>
> + </tgroup>
> + </informaltable>
> + </para>
> + </formalpara>
> + </example>
> + </refsect1>
> + </refentry>
> diff --git a/Documentation/DocBook/media/v4l/pixfmt.xml b/Documentation/DocBook/media/v4l/pixfmt.xml
> index 9e77ff353feb..2f02f9441443 100644
> --- a/Documentation/DocBook/media/v4l/pixfmt.xml
> +++ b/Documentation/DocBook/media/v4l/pixfmt.xml
> @@ -1628,6 +1628,8 @@ information.</para>
> &sub-y41p;
> &sub-yuv420;
> &sub-yuv420m;
> + &sub-yuv422m;
> + &sub-yuv444m;
> &sub-yuv410;
> &sub-yuv422p;
> &sub-yuv411p;
> diff --git a/drivers/media/v4l2-core/v4l2-ioctl.c b/drivers/media/v4l2-core/v4l2-ioctl.c
> index 8a018c6dd16a..14843090fd61 100644
> --- a/drivers/media/v4l2-core/v4l2-ioctl.c
> +++ b/drivers/media/v4l2-core/v4l2-ioctl.c
> @@ -1191,6 +1191,10 @@ static void v4l_fill_fmtdesc(struct v4l2_fmtdesc *fmt)
> case V4L2_PIX_FMT_NV12MT_16X16: descr = "Y/CbCr 4:2:0 (16x16 MB, N-C)"; break;
> case V4L2_PIX_FMT_YUV420M: descr = "Planar YUV 4:2:0 (N-C)"; break;
> case V4L2_PIX_FMT_YVU420M: descr = "Planar YVU 4:2:0 (N-C)"; break;
> + case V4L2_PIX_FMT_YUV422M: descr = "Planar YUV 4:2:2 (N-C)"; break;
> + case V4L2_PIX_FMT_YVU422M: descr = "Planar YVU 4:2:2 (N-C)"; break;
> + case V4L2_PIX_FMT_YUV444M: descr = "Planar YUV 4:4:4 (N-C)"; break;
> + case V4L2_PIX_FMT_YVU444M: descr = "Planar YVU 4:4:4 (N-C)"; break;
> case V4L2_PIX_FMT_SBGGR8: descr = "8-bit Bayer BGBG/GRGR"; break;
> case V4L2_PIX_FMT_SGBRG8: descr = "8-bit Bayer GBGB/RGRG"; break;
> case V4L2_PIX_FMT_SGRBG8: descr = "8-bit Bayer GRGR/BGBG"; break;
> diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h
> index 14cd5ebfee6d..466458422385 100644
> --- a/include/uapi/linux/videodev2.h
> +++ b/include/uapi/linux/videodev2.h
> @@ -546,6 +546,10 @@ struct v4l2_pix_format {
> /* three non contiguous planes - Y, Cb, Cr */
> #define V4L2_PIX_FMT_YUV420M v4l2_fourcc('Y', 'M', '1', '2') /* 12 YUV420 planar */
> #define V4L2_PIX_FMT_YVU420M v4l2_fourcc('Y', 'M', '2', '1') /* 12 YVU420 planar */
> +#define V4L2_PIX_FMT_YUV422M v4l2_fourcc('Y', 'M', '1', '6') /* 16 YUV422 planar */
> +#define V4L2_PIX_FMT_YVU422M v4l2_fourcc('Y', 'M', '6', '1') /* 16 YVU422 planar */
> +#define V4L2_PIX_FMT_YUV444M v4l2_fourcc('Y', 'M', '2', '4') /* 24 YUV444 planar */
> +#define V4L2_PIX_FMT_YVU444M v4l2_fourcc('Y', 'M', '4', '2') /* 24 YVU444 planar */
>
> /* Bayer formats - see http://www.siliconimaging.com/RGB%20Bayer.htm */
> #define V4L2_PIX_FMT_SBGGR8 v4l2_fourcc('B', 'A', '8', '1') /* 8 BGBG.. GRGR.. */
>
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2016-01-22 12:22 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-01-11 4:07 [PATCH 0/3] VSP1: Add support for tri-planar memory formats Laurent Pinchart
2016-01-11 4:07 ` [PATCH 1/3] v4l: Merge the YUV and YVU 4:2:0 tri-planar non-contiguous formats docs Laurent Pinchart
2016-01-22 12:22 ` Hans Verkuil
2016-01-11 4:07 ` [PATCH 2/3] v4l: Add YUV 4:2:2 and YUV 4:4:4 tri-planar non-contiguous formats Laurent Pinchart
2016-01-21 22:22 ` Laurent Pinchart
2016-01-22 12:22 ` Hans Verkuil
2016-01-11 4:07 ` [PATCH 3/3] v4l: vsp1: Add tri-planar memory formats support Laurent Pinchart
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).