From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sylwester Nawrocki Date: Wed, 24 Jul 2013 21:23:32 +0000 Subject: Re: [PATCH v2 4/5] v4l: Add V4L2_PIX_FMT_NV16M and V4L2_PIX_FMT_NV61M formats Message-Id: <51F045D4.4050705@gmail.com> List-Id: References: <1374072882-14598-1-git-send-email-laurent.pinchart+renesas@ideasonboard.com> <1374072882-14598-5-git-send-email-laurent.pinchart+renesas@ideasonboard.com> In-Reply-To: <1374072882-14598-5-git-send-email-laurent.pinchart+renesas@ideasonboard.com> MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: Laurent Pinchart Cc: linux-media@vger.kernel.org, linux-sh@vger.kernel.org, Hans Verkuil , Sakari Ailus Hi Laurent, On 07/17/2013 04:54 PM, Laurent Pinchart wrote: > 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 Looks good, Reviewed-by: Sylwester Nawrocki Thanks, Sylwester > --- > 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 @@ > + > + > + V4L2_PIX_FMT_NV16M ('NM16'), V4L2_PIX_FMT_NV61M ('NM61') > + &manvol; > + > + > + V4L2_PIX_FMT_NV16M > + V4L2_PIX_FMT_NV61M > + Variation ofV4L2_PIX_FMT_NV16 andV4L2_PIX_FMT_NV61 with planes > + non contiguous in memory. > + > + > + Description > + > + 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. > +V4L2_PIX_FMT_NV16M differs fromV4L2_PIX_FMT_NV16 > + 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, > +Cb0/Cr0 belongs to > +Y'00, Y'01, > +Y'10, Y'11. > +V4L2_PIX_FMT_NV61M is the same asV4L2_PIX_FMT_NV16M > +except the Cb and Cr bytes are swapped, the CrCb plane starts with a Cr byte. > + > + V4L2_PIX_FMT_NV16M is intended to be > +used only in drivers and applications that support the multi-planar API, > +described in. > + > + > + <constant>V4L2_PIX_FMT_NV16M</constant> 4× 4 pixel image > + > + > + Byte Order. > + Each cell is one byte. > + > + > + > + > + > + start0 + 0: > + Y'00 > + Y'01 > + Y'02 > + Y'03 > + > + > + start0 + 4: > + Y'10 > + Y'11 > + Y'12 > + Y'13 > + > + > + start0 + 8: > + Y'20 > + Y'21 > + Y'22 > + Y'23 > + > + > + start0 + 12: > + Y'30 > + Y'31 > + Y'32 > + Y'33 > + > + > + > + > + > + start1 + 0: > + Cb00 > + Cr00 > + Cb02 > + Cr02 > + > + > + start1 + 4: > + Cb10 > + Cr10 > + Cb12 > + Cr12 > + > + > + start1 + 8: > + Cb20 > + Cr20 > + Cb22 > + Cr22 > + > + > + start1 + 12: > + Cb30 > + Cr30 > + Cb32 > + Cr32 > + > + > + > + > + > + > + > + > + Color Sample Location. > + > + > + > + > + > + > + 01 > + 23 > + > + > + 0 > + YY > + YY > + > + > + > + C > + C > + > + > + 1 > + YY > + YY > + > + > + > + C > + C > + > + > + > + > + > + 2 > + YY > + YY > + > + > + > + C > + C > + > + > + 3 > + YY > + YY > + > + > + > + C > + C > + > + > + > + > + > + > + > + > + > 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. > &sub-nv12m; > &sub-nv12mt; > &sub-nv16; > +&sub-nv16m; > &sub-nv24; > &sub-m420; > > 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 */ >