xref: /OK3568_Linux_fs/kernel/Documentation/userspace-api/media/v4l/pixfmt-y12i.rst (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
2*4882a593Smuzhiyun
3*4882a593Smuzhiyun.. _V4L2-PIX-FMT-Y12I:
4*4882a593Smuzhiyun
5*4882a593Smuzhiyun**************************
6*4882a593SmuzhiyunV4L2_PIX_FMT_Y12I ('Y12I')
7*4882a593Smuzhiyun**************************
8*4882a593Smuzhiyun
9*4882a593SmuzhiyunInterleaved grey-scale image, e.g. from a stereo-pair
10*4882a593Smuzhiyun
11*4882a593Smuzhiyun
12*4882a593SmuzhiyunDescription
13*4882a593Smuzhiyun===========
14*4882a593Smuzhiyun
15*4882a593SmuzhiyunThis is a grey-scale image with a depth of 12 bits per pixel, but with
16*4882a593Smuzhiyunpixels from 2 sources interleaved and bit-packed. Each pixel is stored
17*4882a593Smuzhiyunin a 24-bit word in the little-endian order. On a little-endian machine
18*4882a593Smuzhiyunthese pixels can be deinterlaced using
19*4882a593Smuzhiyun
20*4882a593Smuzhiyun.. code-block:: c
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun    __u8 *buf;
23*4882a593Smuzhiyun    left0 = 0xfff & *(__u16 *)buf;
24*4882a593Smuzhiyun    right0 = *(__u16 *)(buf + 1) >> 4;
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun**Bit-packed representation.**
27*4882a593Smuzhiyunpixels cross the byte boundary and have a ratio of 3 bytes for each
28*4882a593Smuzhiyuninterleaved pixel.
29*4882a593Smuzhiyun
30*4882a593Smuzhiyun.. flat-table::
31*4882a593Smuzhiyun    :header-rows:  0
32*4882a593Smuzhiyun    :stub-columns: 0
33*4882a593Smuzhiyun
34*4882a593Smuzhiyun    * - Y'\ :sub:`0left[7:0]`
35*4882a593Smuzhiyun      - Y'\ :sub:`0right[3:0]`\ Y'\ :sub:`0left[11:8]`
36*4882a593Smuzhiyun      - Y'\ :sub:`0right[11:4]`
37