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 40158ee..5d259c6 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`E`9IT-1IOQ+qvdLI6(2NWh4B$mqGFB~bIqI`Ov+J?J|;e;^kHT0IblWJ*`TR@ettFfwykFz0RpGX8Qtpc((LKc?crMQAH8KYFSWD99Kv!>_lN%eRo>u79&dGsPn{QY=Bb|r;(6+q+1bsx zxvy`8-AZ)6z3Cv$DzebNmJoNG&VJ}9=Ei%vD-U3yExrFy-&D({S>>SJpRz|$mrO(VC>MdmlKl{FQ#T@ zCtuCI77p1x0NyMM-@RX*TKTvp_`JS33@mZJb^Yl4*&(_Qd{8V%hZ`riKuxi}>Dopq zO>kaLJV^(c{>X$am`p2!XESZ86${gJ4af*Lx;d*6=Zrn{WpL(bjDYWP)L~JMrG&#! zZ2o(6K~22}jLiEO-~AJugyFU8Rq!!S$RJQc{tKru;GgjkKx^ zFd&lbg)hGK?p7)LCkp@qeX0;<>RU3>!h8W=eg6o&nE4(8Lhkxx8flHs7RsrkEkc^-X~TW61OE-h+0@5963qk?9WuDbC$zlK*#au5C* zD7^%Y9A^IR@P6g`?lm+1UAyC0%O5K)1Eptk8flOMvr(_T6UzQ|!ub`Li=XY=jd?Fy zzsv*}SJoRT^iEPbz9CSR>R!~+@%|b3CiB=5scaWqd0YZwBduRfHnEOJD<`ds=vt`@ zeULk`X^@`eESxaj_5qFpprApz!pV#Yqh{V-zud5;!cfY#{VvN;21&&*dK_lxwQS=+ ziKn#L6o;W2dSyL_s^*P@;0<8OtZscq2{U@#F5lP`yda|x8LVOKT5yNB52{bOZtUP$1Q7!Q+vgdTu|H9S$!C_Y|k6eM|{7L(qs&a9y!lH8$KYht*s zdB3FxvecONvQarrk5td@Rjh6BatJqiJQZ$bsPpWT6V7Ylo?&DIF_&N1=BJiZ$6oP% zZdB_r>>SnEGHX@sIdQyb%;**PicwdGuC4T`AN|5lI#Olt9yND}Ncbdfi1})?vD7K# z1N>KFf}O11Omvp4_5j@U#Fv_kEIHkw5)9wCB^f)sM(s`-JjBc}voaUYxX8gtrqP!8Be^mPojpej9Pxfrk6fJ-Gg%2H%yFF&E(qV zI@>pHuJyjEb5^X}(|8k&G2GLkt(BPaVpGp+l(!+;QpmQ}o?*W2G+0RaobVQuEze%) z3UG`306VfGT7f(rwcgs~{Qh~pBRRlO@YHBs-w?L=Y;arWuky}%5=;^azquvIH*o=* zsQiS2LGh4%yDO~Jt@9DQHJ}X>awdgTA}L#H>6nX`$g2WD4to?$A8`b0(d^~rw-5@d zLH6q~{K2&*`1UU*bgGn?Xx^Y9IYtLz2DJ6^o|L+7M?-B^dEk@-eW*%z7^E<}3J%)$ zJrpIQY2tSA4%y)h`Kh(yc)_l3U^>((>&RtHDeOyrue4eiOrH80Aq_2QIUgju8)EmH z9tf^vzW{5uLP@gPO9gK)bJB?Pnd&Sc3Uctpwby8(|-de8|dI~ZDJ4}ij z;^wQqme2^??d-!|%xvb;9XmE$*v*1W$FZ{g^6v|5Xg&L9b94b~_X|DG$E8T`4+QHp zp$)J$n)>?P&I9hKv}N$a{x-(7yg|1+SgtA#PEyJnpoSQ{Q}P}|V2~Sf!AS=xaGOz8 zN1C)dg|5kp(>VCifsAqDmK)F^-R{ubEBeo6ifzvR6d@A zfm{|NR0~nPzz@brvSP1yYuepvZ&BuG776h#+R()pe)ez@b)6-jzTZcay JfkA-P{{T*w8|nZ6 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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 V-^XO_BChtj?V@hK$vy-q{tq)sSegI; 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 0000000..5cb5bec --- /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 f8436dc..c6fdcbb 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.7.4