Message ID | 1374757213-20194-5-git-send-email-laurent.pinchart@ideasonboard.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
On Thu, Jul 25, 2013 at 03:00:12PM +0200, Laurent Pinchart wrote: > From: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> > > NV16M and NV61M are planar YCbCr 4:2:2 and YCrCb 4:2:2 formats with a > luma plane followed by an interleaved chroma plane. The planes are not > required to be contiguous in memory, and the formats can only be used > with the multi-planar formats API. > > Signed-off-by: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> > Reviewed-by: Sylwester Nawrocki <s.nawrocki@samsung.com> > --- > Documentation/DocBook/media/v4l/pixfmt-nv16m.xml | 170 +++++++++++++++++++++++ > Documentation/DocBook/media/v4l/pixfmt.xml | 1 + > include/uapi/linux/videodev2.h | 2 + > 3 files changed, 173 insertions(+) > create mode 100644 Documentation/DocBook/media/v4l/pixfmt-nv16m.xml > > diff --git a/Documentation/DocBook/media/v4l/pixfmt-nv16m.xml b/Documentation/DocBook/media/v4l/pixfmt-nv16m.xml > new file mode 100644 > index 0000000..84a8bb3 > --- /dev/null > +++ b/Documentation/DocBook/media/v4l/pixfmt-nv16m.xml > @@ -0,0 +1,170 @@ > + <refentry> > + <refmeta> > + <refentrytitle>V4L2_PIX_FMT_NV16M ('NM16'), V4L2_PIX_FMT_NV61M ('NM61')</refentrytitle> > + &manvol; > + </refmeta> > + <refnamediv> > + <refname id="V4L2-PIX-FMT-NV16M"><constant>V4L2_PIX_FMT_NV16M</constant></refname> > + <refname id="V4L2-PIX-FMT-NV61M"><constant>V4L2_PIX_FMT_NV61M</constant></refname> > + <refpurpose>Variation of <constant>V4L2_PIX_FMT_NV16</constant> and <constant>V4L2_PIX_FMT_NV61</constant> with planes > + non contiguous in memory. </refpurpose> > + </refnamediv> > + <refsect1> > + <title>Description</title> > + > + <para>This is a multi-planar, two-plane version of the YUV 4:2:0 format. > +The three components are separated into two sub-images or planes. > +<constant>V4L2_PIX_FMT_NV16M</constant> differs from <constant>V4L2_PIX_FMT_NV16 > +</constant> in that the two planes are non-contiguous in memory, i.e. the chroma > +plane do not necessarily immediately follows the luma plane. > +The luminance data occupies the first plane. The Y plane has one byte per pixel. > +In the second plane there is a chrominance data with alternating chroma samples. > +The CbCr plane is the same width and height, in bytes, as the Y plane. > +Each CbCr pair belongs to four pixels. For example, > +Cb<subscript>0</subscript>/Cr<subscript>0</subscript> belongs to > +Y'<subscript>00</subscript>, Y'<subscript>01</subscript>, > +Y'<subscript>10</subscript>, Y'<subscript>11</subscript>. > +<constant>V4L2_PIX_FMT_NV61M</constant> is the same as <constant>V4L2_PIX_FMT_NV16M</constant> > +except the Cb and Cr bytes are swapped, the CrCb plane starts with a Cr byte.</para> > + > + <para><constant>V4L2_PIX_FMT_NV16M</constant> is intended to be > +used only in drivers and applications that support the multi-planar API, > +described in <xref linkend="planar-apis"/>. </para> I think you could refer to V4L2_PIX_FMT_NV61M or alternatively move the sentence explaining V4L2_PIX_FMT_NV61M after the above. Up to you. Reviewed-by: Sakari Ailus <sakari.ailus@iki.fi>
Hi Sakari, Thank you for the review. On Tuesday 30 July 2013 14:09:34 Sakari Ailus wrote: > On Thu, Jul 25, 2013 at 03:00:12PM +0200, Laurent Pinchart wrote: > > From: Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> > > > > NV16M and NV61M are planar YCbCr 4:2:2 and YCrCb 4:2:2 formats with a > > luma plane followed by an interleaved chroma plane. The planes are not > > required to be contiguous in memory, and the formats can only be used > > with the multi-planar formats API. > > > > Signed-off-by: Laurent Pinchart > > <laurent.pinchart+renesas@ideasonboard.com> > > Reviewed-by: Sylwester Nawrocki <s.nawrocki@samsung.com> > > --- > > > > Documentation/DocBook/media/v4l/pixfmt-nv16m.xml | 170 ++++++++++++++++++ > > Documentation/DocBook/media/v4l/pixfmt.xml | 1 + > > include/uapi/linux/videodev2.h | 2 + > > 3 files changed, 173 insertions(+) > > create mode 100644 Documentation/DocBook/media/v4l/pixfmt-nv16m.xml > > > > diff --git a/Documentation/DocBook/media/v4l/pixfmt-nv16m.xml > > b/Documentation/DocBook/media/v4l/pixfmt-nv16m.xml new file mode 100644 > > index 0000000..84a8bb3 > > --- /dev/null > > +++ b/Documentation/DocBook/media/v4l/pixfmt-nv16m.xml > > @@ -0,0 +1,170 @@ > > + <refentry> > > + <refmeta> > > + <refentrytitle>V4L2_PIX_FMT_NV16M ('NM16'), V4L2_PIX_FMT_NV61M > > ('NM61')</refentrytitle> + &manvol; > > + </refmeta> > > + <refnamediv> > > + <refname > > id="V4L2-PIX-FMT-NV16M"><constant>V4L2_PIX_FMT_NV16M</constant></refname> > > + <refname > > id="V4L2-PIX-FMT-NV61M"><constant>V4L2_PIX_FMT_NV61M</constant></refname> > > + <refpurpose>Variation of <constant>V4L2_PIX_FMT_NV16</constant> and > > <constant>V4L2_PIX_FMT_NV61</constant> with planes + non contiguous in > > memory. </refpurpose> > > + </refnamediv> > > + <refsect1> > > + <title>Description</title> > > + > > + <para>This is a multi-planar, two-plane version of the YUV 4:2:0 format. > > +The three components are separated into two sub-images or planes. > > +<constant>V4L2_PIX_FMT_NV16M</constant> differs from > > <constant>V4L2_PIX_FMT_NV16 +</constant> in that the two planes are > > non-contiguous in memory, i.e. the chroma +plane do not necessarily > > immediately follows the luma plane. > > +The luminance data occupies the first plane. The Y plane has one byte per > > pixel. +In the second plane there is a chrominance data with alternating > > chroma samples. +The CbCr plane is the same width and height, in bytes, > > as the Y plane. +Each CbCr pair belongs to four pixels. For example, > > +Cb<subscript>0</subscript>/Cr<subscript>0</subscript> belongs to > > +Y'<subscript>00</subscript>, Y'<subscript>01</subscript>, > > +Y'<subscript>10</subscript>, Y'<subscript>11</subscript>. > > +<constant>V4L2_PIX_FMT_NV61M</constant> is the same as > > <constant>V4L2_PIX_FMT_NV16M</constant> +except the Cb and Cr bytes are > > swapped, the CrCb plane starts with a Cr byte.</para> + > > + <para><constant>V4L2_PIX_FMT_NV16M</constant> is intended to be > > +used only in drivers and applications that support the multi-planar API, > > +described in <xref linkend="planar-apis"/>. </para> > > I think you could refer to V4L2_PIX_FMT_NV61M or alternatively move the > sentence explaining V4L2_PIX_FMT_NV61M after the above. Up to you. Something like <para><constant>V4L2_PIX_FMT_NV16M</constant> and <constant>V4L2_PIX_FMT_NV61M</constant> are intended to be used only in drivers and applications that support the multi-planar API, described in <xref linkend="planar-apis"/>. </para> ? > Reviewed-by: Sakari Ailus <sakari.ailus@iki.fi>
On Tue, Jul 30, 2013 at 01:16:54PM +0200, Laurent Pinchart wrote: ... > > > + <para>This is a multi-planar, two-plane version of the YUV 4:2:0 > format. > > > +The three components are separated into two sub-images or planes. > > > +<constant>V4L2_PIX_FMT_NV16M</constant> differs from > > > <constant>V4L2_PIX_FMT_NV16 +</constant> in that the two planes are > > > non-contiguous in memory, i.e. the chroma +plane do not necessarily > > > immediately follows the luma plane. > > > +The luminance data occupies the first plane. The Y plane has one byte per > > > pixel. +In the second plane there is a chrominance data with alternating > > > chroma samples. +The CbCr plane is the same width and height, in bytes, > > > as the Y plane. +Each CbCr pair belongs to four pixels. For example, > > > +Cb<subscript>0</subscript>/Cr<subscript>0</subscript> belongs to > > > +Y'<subscript>00</subscript>, Y'<subscript>01</subscript>, > > > +Y'<subscript>10</subscript>, Y'<subscript>11</subscript>. > > > +<constant>V4L2_PIX_FMT_NV61M</constant> is the same as > > > <constant>V4L2_PIX_FMT_NV16M</constant> +except the Cb and Cr bytes are > > > swapped, the CrCb plane starts with a Cr byte.</para> + > > > + <para><constant>V4L2_PIX_FMT_NV16M</constant> is intended to be > > > +used only in drivers and applications that support the multi-planar API, > > > +described in <xref linkend="planar-apis"/>. </para> > > > > I think you could refer to V4L2_PIX_FMT_NV61M or alternatively move the > > sentence explaining V4L2_PIX_FMT_NV61M after the above. Up to you. > > Something like > > <para><constant>V4L2_PIX_FMT_NV16M</constant> and > <constant>V4L2_PIX_FMT_NV61M</constant> are intended to be used only in > drivers and applications that support the multi-planar API, described in Fine for me.
diff --git a/Documentation/DocBook/media/v4l/pixfmt-nv16m.xml b/Documentation/DocBook/media/v4l/pixfmt-nv16m.xml new file mode 100644 index 0000000..84a8bb3 --- /dev/null +++ b/Documentation/DocBook/media/v4l/pixfmt-nv16m.xml @@ -0,0 +1,170 @@ + <refentry> + <refmeta> + <refentrytitle>V4L2_PIX_FMT_NV16M ('NM16'), V4L2_PIX_FMT_NV61M ('NM61')</refentrytitle> + &manvol; + </refmeta> + <refnamediv> + <refname id="V4L2-PIX-FMT-NV16M"><constant>V4L2_PIX_FMT_NV16M</constant></refname> + <refname id="V4L2-PIX-FMT-NV61M"><constant>V4L2_PIX_FMT_NV61M</constant></refname> + <refpurpose>Variation of <constant>V4L2_PIX_FMT_NV16</constant> and <constant>V4L2_PIX_FMT_NV61</constant> with planes + non contiguous in memory. </refpurpose> + </refnamediv> + <refsect1> + <title>Description</title> + + <para>This is a multi-planar, two-plane version of the YUV 4:2:0 format. +The three components are separated into two sub-images or planes. +<constant>V4L2_PIX_FMT_NV16M</constant> differs from <constant>V4L2_PIX_FMT_NV16 +</constant> in that the two planes are non-contiguous in memory, i.e. the chroma +plane do not necessarily immediately follows the luma plane. +The luminance data occupies the first plane. The Y plane has one byte per pixel. +In the second plane there is a chrominance data with alternating chroma samples. +The CbCr plane is the same width and height, in bytes, as the Y plane. +Each CbCr pair belongs to four pixels. For example, +Cb<subscript>0</subscript>/Cr<subscript>0</subscript> belongs to +Y'<subscript>00</subscript>, Y'<subscript>01</subscript>, +Y'<subscript>10</subscript>, Y'<subscript>11</subscript>. +<constant>V4L2_PIX_FMT_NV61M</constant> is the same as <constant>V4L2_PIX_FMT_NV16M</constant> +except the Cb and Cr bytes are swapped, the CrCb plane starts with a Cr byte.</para> + + <para><constant>V4L2_PIX_FMT_NV16M</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_NV16M</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>Cr<subscript>00</subscript></entry> + <entry>Cb<subscript>02</subscript></entry> + <entry>Cr<subscript>02</subscript></entry> + </row> + <row> + <entry>start1 + 4:</entry> + <entry>Cb<subscript>10</subscript></entry> + <entry>Cr<subscript>10</subscript></entry> + <entry>Cb<subscript>12</subscript></entry> + <entry>Cr<subscript>12</subscript></entry> + </row> + <row> + <entry>start1 + 8:</entry> + <entry>Cb<subscript>20</subscript></entry> + <entry>Cr<subscript>20</subscript></entry> + <entry>Cb<subscript>22</subscript></entry> + <entry>Cr<subscript>22</subscript></entry> + </row> + <row> + <entry>start1 + 12:</entry> + <entry>Cb<subscript>30</subscript></entry> + <entry>Cr<subscript>30</subscript></entry> + <entry>Cb<subscript>32</subscript></entry> + <entry>Cr<subscript>32</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> + <entry></entry><entry>C</entry><entry></entry><entry></entry> + <entry></entry><entry>C</entry><entry></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> + <row> + <entry></entry> + <entry></entry><entry>C</entry><entry></entry><entry></entry> + <entry></entry><entry>C</entry><entry></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 99b8d2a..16db350 100644 --- a/Documentation/DocBook/media/v4l/pixfmt.xml +++ b/Documentation/DocBook/media/v4l/pixfmt.xml @@ -718,6 +718,7 @@ information.</para> &sub-nv12m; &sub-nv12mt; &sub-nv16; + &sub-nv16m; &sub-nv24; &sub-m420; </section> diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h index 95ef455..fec0c20 100644 --- a/include/uapi/linux/videodev2.h +++ b/include/uapi/linux/videodev2.h @@ -348,6 +348,8 @@ struct v4l2_pix_format { /* two non contiguous planes - one Y, one Cr + Cb interleaved */ #define V4L2_PIX_FMT_NV12M v4l2_fourcc('N', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 */ #define V4L2_PIX_FMT_NV21M v4l2_fourcc('N', 'M', '2', '1') /* 21 Y/CrCb 4:2:0 */ +#define V4L2_PIX_FMT_NV16M v4l2_fourcc('N', 'M', '1', '6') /* 16 Y/CbCr 4:2:2 */ +#define V4L2_PIX_FMT_NV61M v4l2_fourcc('N', 'M', '6', '1') /* 16 Y/CrCb 4:2:2 */ #define V4L2_PIX_FMT_NV12MT v4l2_fourcc('T', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 64x32 macroblocks */ #define V4L2_PIX_FMT_NV12MT_16X16 v4l2_fourcc('V', 'M', '1', '2') /* 12 Y/CbCr 4:2:0 16x16 macroblocks */