From bd08a0cd5f546916a9454ae2c35756ed77957458 Mon Sep 17 00:00:00 2001 From: Kamil Debski Date: Fri, 11 Mar 2011 06:16:22 -0300 Subject: [PATCH] [media] v4l: Documentation for the NV12MT format Added documentation for V4L2_PIX_FMT_NV12MT format. This is a YUV 4:2:0 format with macro block size of 64x32 and specific order of macro blocks in the memory. Signed-off-by: Kamil Debski Signed-off-by: Kyungmin Park Signed-off-by: Mauro Carvalho Chehab --- Documentation/DocBook/media-entities.tmpl | 1 + Documentation/DocBook/v4l/nv12mt.gif | Bin 0 -> 2108 bytes Documentation/DocBook/v4l/nv12mt_example.gif | Bin 0 -> 6858 bytes Documentation/DocBook/v4l/pixfmt-nv12mt.xml | 74 +++++++++++++++++++ Documentation/DocBook/v4l/pixfmt.xml | 1 + 5 files changed, 76 insertions(+) create mode 100644 Documentation/DocBook/v4l/nv12mt.gif create mode 100644 Documentation/DocBook/v4l/nv12mt_example.gif create mode 100644 Documentation/DocBook/v4l/pixfmt-nv12mt.xml diff --git a/Documentation/DocBook/media-entities.tmpl b/Documentation/DocBook/media-entities.tmpl index 40158ee3d369..5d259c632cdf 100644 --- a/Documentation/DocBook/media-entities.tmpl +++ b/Documentation/DocBook/media-entities.tmpl @@ -272,6 +272,7 @@ + diff --git a/Documentation/DocBook/v4l/nv12mt.gif b/Documentation/DocBook/v4l/nv12mt.gif new file mode 100644 index 0000000000000000000000000000000000000000..ef2d4cf8367b97293eb9139de0f33d0a2ac236be GIT binary patch literal 2108 zcmb`^i9gc~0|4;f=4iRv<|rOCLSZ~YN>uKCx#pO&!;x~7qsPQkO3x^BFOQhnBO5ae zxfbRa8nHRo;mFmB6cv)vQ``G_{)hMbFMLm*aXMxhq5=sA2EqXV0HmQ%008BrqyPX1 z0)UQ!0tkQxa5xCyZ~$PUh&-aKgabgUy?b#0&P`LpTMGq%AOKQ85J)vQ&9E@fJ7$5w zV8|z|C?J3XDFFciwGOszXPf{Wr`rW=^KfhN_U!R=Z}9VBo(t^r#WI4<$HvCeLxMmY zhkGu76d92p6GM!P9S98?2o27SkIza-NKZ-{48O#|0jbH!DJdzuE0MhDEBxrF;rO`G z1l;I#+-PFLSkiTnvM_Nw`B@sixVZR5M*3u4&eY%e3l#7bxp=Oube>+0JD?_pCnEGqg^bnG90qOOMg8JmCu(ErW+ zcLeMb-3iC1rro`lPRPj2%FfBnBi_&dyWl}#5viD5LiwlkVHuTHUO}&9R8`k7YwPMC zH8eIgx3C_!wzac6I=i|#J-vNTxcviU`=dPm@W|-c_=I5m(6g75QIXXmC~&A%27 z+dlx_tO(z|Uz=Y2xGwm-u{8oLbG~)|==#|yx(|FnlCn_7sjYBRFaInpqx5DJFF%Q( zjm~;x!WK+rmZS2RHZ{oNOdSKF9)@ntYQnmB9r`jfdo*6a_dM#jB*#+3x{_`FeNpiI zi?=7{w3Y7CmUqN>ioJxB#xWMEo6%7iBdDp?$JSzdPYTHyXuam5@xaZ@>TD<=lI%k* zz4h%;F8?PN0D}Fh^~}_^Wu%2g0>0Y*QB*1OJq&{0^~p5GIwX4xb5?ur4W3eB0Cm|Eo zo0^LiCfPo~k^wt-sE%+dd(xO|5a=AEyyyLLTGJ-)+HjJA<82YT(IFggd?KY*6 zc8z_q-ow=k#-XT2sAO)BKBJ5ow_#soYzkeJQHTjsH+Co8N!th4C*L>BwKJ&HzWp+B zg3j`{wTE9w<`NhW@joICz#QQ6X()92ia4+k$D1Y+-OHVY_ znD(+sDN~ow!0toVHTpP489knkvNF_u_Q@IRvv|)irZKI6U)&y`nqSXe^?hzs=Q-jM z+toT}RpUK*yky+y74(Wxcc+f6^r;^M!cW>#x14n-j1B`jdkW-M0c zdcUe1O#QQQpo(WN%u46=a?kqAX1}azV#A6b8)nOuk)}``6;EX^rum$o+;l+1RT{xm z*DScQO1P{Ou=zMnN!Ii=DDf`RDtlbAxjk8)^*lR;l2zy+3F%XCzB=;N*j=J*qxsqx zO$ug-3ULG!`CeSbZ^_+{T3d-BX}9)C)bf?=R^G7b)F*cL;2ic16C)Kfx%T<4j?J6v zeXr_WkX3t{Zi23cdpfl=Q_^2->H3WEHbvVCdDdF9%(qip7PdF5k z1lzZ}(n`&`NRPJ;w7Z6%Nhg#^%2F+z3PL0bt0Az%o+UF!oS>RC2YLBzJq49ehYdu? z!S!a;&Mzi>nwpkk-l#4)PKUS-YUvg}p}OzH!EM%f(DVcSc2yn-SaDu83bOBegq@6r z3FhJ*qT?CjQ)}b|Y1cO>9qycaWX8)Tm1f}S( zi0H7glV*{uogF|#P{owCt0;|j8bsc`VrhSmbTLDXP?c4<-X{f4!zK}j35mnpB9+$? z>cP8R{Mbu5EnK=&=cXIGMUdk(UcO)cJ;{dFyMHcU2e9_I(EEHsitzqGn07O0;ANws zuixV`=wX++0)05p&bU@Mgt_CzRl%YNiiLxeaD#V>zT0@~1~{Y&Vz5*F~ImnGuk;TdLgZqWt(XFWK9yhMc;q;V!RcX0{)Hq)$ literal 0 HcmV?d00001 diff --git a/Documentation/DocBook/v4l/nv12mt_example.gif b/Documentation/DocBook/v4l/nv12mt_example.gif new file mode 100644 index 0000000000000000000000000000000000000000..df81d68108eeb66569417b475984aa634385eebb GIT binary patch literal 6858 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 QV!O*W^7g0fL%`$z05eKhng9R* literal 0 HcmV?d00001 diff --git a/Documentation/DocBook/v4l/pixfmt-nv12mt.xml b/Documentation/DocBook/v4l/pixfmt-nv12mt.xml new file mode 100644 index 000000000000..5cb5bec8b653 --- /dev/null +++ b/Documentation/DocBook/v4l/pixfmt-nv12mt.xml @@ -0,0 +1,74 @@ + + + V4L2_PIX_FMT_NV12MT ('TM12') + &manvol; + + + V4L2_PIX_FMT_NV12MT + + Formats with ½ horizontal and vertical +chroma resolution. This format has two planes - one for luminance and one for +chrominance. Chroma samples are interleaved. The difference to +V4L2_PIX_FMT_NV12 is the memory layout. Pixels are +grouped in macroblocks of 64x32 size. The order of macroblocks in memory is +also not standard. + + + + Description + + This is the two-plane versions of the YUV 4:2:0 format where data +is grouped into 64x32 macroblocks. The three components are separated into two +sub-images or planes. The Y plane has one byte per pixel and pixels are grouped +into 64x32 macroblocks. The CbCr plane has the same width, in bytes, as the Y +plane (and the image), but is half as tall in pixels. The chroma plane is also +grouped into 64x32 macroblocks. + Width of the buffer has to be aligned to the multiple of 128, and +height alignment is 32. Every four adjactent buffers - two horizontally and two +vertically are grouped together and are located in memory in Z or flipped Z +order. + Layout of macroblocks in memory is presented in the following +figure. +
+ <constant>V4L2_PIX_FMT_NV12MT</constant> macroblock Z shape +memory layout + + + + + +
+ The requirement that width is multiple of 128 is implemented because, +the Z shape cannot be cut in half horizontally. In case the vertical resolution +of macroblocks is odd then the last row of macroblocks is arranged in a linear +order.
+ In case of chroma the layout is identical. Cb and Cr samples are +interleaved. Height of the buffer is aligned to 32. + + + Memory layout of macroblocks in <constant>V4L2_PIX_FMT_NV12 +</constant> format pixel image - extreme case + +
+ Example <constant>V4L2_PIX_FMT_NV12MT</constant> memory +layout of macroblocks + + + + + +
+ Memory layout of macroblocks of V4L2_PIX_FMT_NV12MT + format in most extreme case. +
+
+
+
+ + diff --git a/Documentation/DocBook/v4l/pixfmt.xml b/Documentation/DocBook/v4l/pixfmt.xml index f8436dcb7414..c6fdcbbd1b41 100644 --- a/Documentation/DocBook/v4l/pixfmt.xml +++ b/Documentation/DocBook/v4l/pixfmt.xml @@ -709,6 +709,7 @@ information. &sub-yuv411p; &sub-nv12; &sub-nv12m; + &sub-nv12mt; &sub-nv16; -- 2.50.1