mirror of
https://github.com/torvalds/linux.git
synced 2024-12-28 13:51:44 +00:00
media: doc: pixfmt-yuv: Move all packed YUV formats to common file
The pixfmt-packed-yuv.rst file documents packed YUV 4:4:4 formats, but is titled generically as "Packed YUV formats". 4:2:2 and 4:1:1 packed YUV formats are documented in separate files, which can be confusing. Group all packed YUV formats in pixfmt-packed-yuv.rst, which allows documenting the 4:2:2 formats in a more concise way. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
parent
e3ae4c204d
commit
7cb8bd292b
Documentation/userspace-api/media/v4l
@ -6,12 +6,16 @@
|
||||
Packed YUV formats
|
||||
******************
|
||||
|
||||
Description
|
||||
===========
|
||||
Similarly to the packed RGB formats, the packed YUV formats store the Y, Cb and
|
||||
Cr components consecutively in memory. They may apply subsampling to the chroma
|
||||
components and thus differ in how they interlave the three components.
|
||||
|
||||
Similar to the packed RGB formats these formats store the Y, Cb and Cr
|
||||
component of each pixel in one 16 or 32 bit word.
|
||||
|
||||
4:4:4 Subsampling
|
||||
=================
|
||||
|
||||
These formats do not subsample the chroma components and store each pixels as a
|
||||
full triplet of Y, Cb and Cr values.
|
||||
|
||||
.. raw:: latex
|
||||
|
||||
@ -19,11 +23,9 @@ component of each pixel in one 16 or 32 bit word.
|
||||
\tiny
|
||||
\setlength{\tabcolsep}{2pt}
|
||||
|
||||
.. _packed-yuv-formats:
|
||||
|
||||
.. tabularcolumns:: |p{2.5cm}|p{0.69cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|p{0.31cm}|
|
||||
|
||||
.. flat-table:: Packed YUV Image Formats
|
||||
.. flat-table:: Packed YUV 4:4:4 Image Formats
|
||||
:header-rows: 2
|
||||
:stub-columns: 0
|
||||
|
||||
@ -371,3 +373,134 @@ component of each pixel in one 16 or 32 bit word.
|
||||
expected to contain a meaningful value that can be used by drivers
|
||||
and applications. And, the formats XYUV32 and VUYX32 contain undefined
|
||||
alpha values that must be ignored by all applications and drivers.
|
||||
|
||||
|
||||
4:2:2 Subsampling
|
||||
=================
|
||||
|
||||
These formats, commonly referred to as YUYV or YUY2, subsample the chroma
|
||||
components horizontally by 2, storing 2 pixels in 4 bytes.
|
||||
|
||||
.. flat-table:: Packed YUV 4:2:2 Formats
|
||||
:header-rows: 1
|
||||
:stub-columns: 0
|
||||
|
||||
* - Identifier
|
||||
- Code
|
||||
- Byte 0
|
||||
- Byte 1
|
||||
- Byte 2
|
||||
- Byte 3
|
||||
- Byte 4
|
||||
- Byte 5
|
||||
- Byte 6
|
||||
- Byte 7
|
||||
* .. _V4L2-PIX-FMT-UYVY:
|
||||
|
||||
- ``V4L2_PIX_FMT_UYVY``
|
||||
- 'UYVY'
|
||||
|
||||
- Cb\ :sub:`0`
|
||||
- Y'\ :sub:`0`
|
||||
- Cr\ :sub:`0`
|
||||
- Y'\ :sub:`1`
|
||||
- Cb\ :sub:`2`
|
||||
- Y'\ :sub:`2`
|
||||
- Cr\ :sub:`2`
|
||||
- Y'\ :sub:`3`
|
||||
* .. _V4L2-PIX-FMT-VYUY:
|
||||
|
||||
- ``V4L2_PIX_FMT_VYUY``
|
||||
- 'VYUY'
|
||||
|
||||
- Cr\ :sub:`0`
|
||||
- Y'\ :sub:`0`
|
||||
- Cb\ :sub:`0`
|
||||
- Y'\ :sub:`1`
|
||||
- Cr\ :sub:`2`
|
||||
- Y'\ :sub:`2`
|
||||
- Cb\ :sub:`2`
|
||||
- Y'\ :sub:`3`
|
||||
* .. _V4L2-PIX-FMT-YUYV:
|
||||
|
||||
- ``V4L2_PIX_FMT_YUYV``
|
||||
- 'YUYV'
|
||||
|
||||
- Y'\ :sub:`0`
|
||||
- Cb\ :sub:`0`
|
||||
- Y'\ :sub:`1`
|
||||
- Cr\ :sub:`0`
|
||||
- Y'\ :sub:`2`
|
||||
- Cb\ :sub:`2`
|
||||
- Y'\ :sub:`3`
|
||||
- Cr\ :sub:`2`
|
||||
* .. _V4L2-PIX-FMT-YVYU:
|
||||
|
||||
- ``V4L2_PIX_FMT_YVYU``
|
||||
- 'YVYU'
|
||||
|
||||
- Y'\ :sub:`0`
|
||||
- Cr\ :sub:`0`
|
||||
- Y'\ :sub:`1`
|
||||
- Cb\ :sub:`0`
|
||||
- Y'\ :sub:`2`
|
||||
- Cr\ :sub:`2`
|
||||
- Y'\ :sub:`3`
|
||||
- Cb\ :sub:`2`
|
||||
|
||||
**Color Sample Location:**
|
||||
Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
|
||||
horizontally.
|
||||
|
||||
|
||||
4:1:1 Subsampling
|
||||
=================
|
||||
|
||||
This format subsamples the chroma components horizontally by 4, storing 8
|
||||
pixels in 12 bytes.
|
||||
|
||||
.. flat-table:: Packed YUV 4:1:1 Formats
|
||||
:header-rows: 1
|
||||
:stub-columns: 0
|
||||
|
||||
* - Identifier
|
||||
- Code
|
||||
- Byte 0
|
||||
- Byte 1
|
||||
- Byte 2
|
||||
- Byte 3
|
||||
- Byte 4
|
||||
- Byte 5
|
||||
- Byte 6
|
||||
- Byte 7
|
||||
- Byte 8
|
||||
- Byte 9
|
||||
- Byte 10
|
||||
- Byte 11
|
||||
* .. _V4L2-PIX-FMT-Y41P:
|
||||
|
||||
- ``V4L2_PIX_FMT_Y41P``
|
||||
- 'Y41P'
|
||||
|
||||
- Cb\ :sub:`0`
|
||||
- Y'\ :sub:`0`
|
||||
- Cr\ :sub:`0`
|
||||
- Y'\ :sub:`1`
|
||||
- Cb\ :sub:`4`
|
||||
- Y'\ :sub:`2`
|
||||
- Cr\ :sub:`4`
|
||||
- Y'\ :sub:`3`
|
||||
- Y'\ :sub:`4`
|
||||
- Y'\ :sub:`5`
|
||||
- Y'\ :sub:`6`
|
||||
- Y'\ :sub:`7`
|
||||
|
||||
.. note::
|
||||
|
||||
Do not confuse ``V4L2_PIX_FMT_Y41P`` with
|
||||
:ref:`V4L2_PIX_FMT_YUV411P <V4L2-PIX-FMT-YUV411P>`. Y41P is derived from
|
||||
"YUV 4:1:1 *packed*", while YUV411P stands for "YUV 4:1:1 *planar*".
|
||||
|
||||
**Color Sample Location:**
|
||||
Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
|
||||
horizontally.
|
||||
|
@ -1,70 +0,0 @@
|
||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
||||
|
||||
.. _V4L2-PIX-FMT-UYVY:
|
||||
|
||||
**************************
|
||||
V4L2_PIX_FMT_UYVY ('UYVY')
|
||||
**************************
|
||||
|
||||
|
||||
Variation of ``V4L2_PIX_FMT_YUYV`` with different order of samples in
|
||||
memory
|
||||
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
In this format each four bytes is two pixels. Each four bytes is two
|
||||
Y's, a Cb and a Cr. Each Y goes to one of the pixels, and the Cb and Cr
|
||||
belong to both pixels. As you can see, the Cr and Cb components have
|
||||
half the horizontal resolution of the Y component.
|
||||
|
||||
**Byte Order.**
|
||||
Each cell is one byte.
|
||||
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
|
||||
* - start + 0:
|
||||
- Cb\ :sub:`00`
|
||||
- Y'\ :sub:`00`
|
||||
- Cr\ :sub:`00`
|
||||
- Y'\ :sub:`01`
|
||||
- Cb\ :sub:`01`
|
||||
- Y'\ :sub:`02`
|
||||
- Cr\ :sub:`01`
|
||||
- Y'\ :sub:`03`
|
||||
* - start + 8:
|
||||
- Cb\ :sub:`10`
|
||||
- Y'\ :sub:`10`
|
||||
- Cr\ :sub:`10`
|
||||
- Y'\ :sub:`11`
|
||||
- Cb\ :sub:`11`
|
||||
- Y'\ :sub:`12`
|
||||
- Cr\ :sub:`11`
|
||||
- Y'\ :sub:`13`
|
||||
* - start + 16:
|
||||
- Cb\ :sub:`20`
|
||||
- Y'\ :sub:`20`
|
||||
- Cr\ :sub:`20`
|
||||
- Y'\ :sub:`21`
|
||||
- Cb\ :sub:`21`
|
||||
- Y'\ :sub:`22`
|
||||
- Cr\ :sub:`21`
|
||||
- Y'\ :sub:`23`
|
||||
* - start + 24:
|
||||
- Cb\ :sub:`30`
|
||||
- Y'\ :sub:`30`
|
||||
- Cr\ :sub:`30`
|
||||
- Y'\ :sub:`31`
|
||||
- Cb\ :sub:`31`
|
||||
- Y'\ :sub:`32`
|
||||
- Cr\ :sub:`31`
|
||||
- Y'\ :sub:`33`
|
||||
|
||||
|
||||
**Color Sample Location:**
|
||||
Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
|
||||
horizontally.
|
@ -1,70 +0,0 @@
|
||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
||||
|
||||
.. _V4L2-PIX-FMT-VYUY:
|
||||
|
||||
**************************
|
||||
V4L2_PIX_FMT_VYUY ('VYUY')
|
||||
**************************
|
||||
|
||||
|
||||
Variation of ``V4L2_PIX_FMT_YUYV`` with different order of samples in
|
||||
memory
|
||||
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
In this format each four bytes is two pixels. Each four bytes is two
|
||||
Y's, a Cb and a Cr. Each Y goes to one of the pixels, and the Cb and Cr
|
||||
belong to both pixels. As you can see, the Cr and Cb components have
|
||||
half the horizontal resolution of the Y component.
|
||||
|
||||
**Byte Order.**
|
||||
Each cell is one byte.
|
||||
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
|
||||
* - start + 0:
|
||||
- Cr\ :sub:`00`
|
||||
- Y'\ :sub:`00`
|
||||
- Cb\ :sub:`00`
|
||||
- Y'\ :sub:`01`
|
||||
- Cr\ :sub:`01`
|
||||
- Y'\ :sub:`02`
|
||||
- Cb\ :sub:`01`
|
||||
- Y'\ :sub:`03`
|
||||
* - start + 8:
|
||||
- Cr\ :sub:`10`
|
||||
- Y'\ :sub:`10`
|
||||
- Cb\ :sub:`10`
|
||||
- Y'\ :sub:`11`
|
||||
- Cr\ :sub:`11`
|
||||
- Y'\ :sub:`12`
|
||||
- Cb\ :sub:`11`
|
||||
- Y'\ :sub:`13`
|
||||
* - start + 16:
|
||||
- Cr\ :sub:`20`
|
||||
- Y'\ :sub:`20`
|
||||
- Cb\ :sub:`20`
|
||||
- Y'\ :sub:`21`
|
||||
- Cr\ :sub:`21`
|
||||
- Y'\ :sub:`22`
|
||||
- Cb\ :sub:`21`
|
||||
- Y'\ :sub:`23`
|
||||
* - start + 24:
|
||||
- Cr\ :sub:`30`
|
||||
- Y'\ :sub:`30`
|
||||
- Cb\ :sub:`30`
|
||||
- Y'\ :sub:`31`
|
||||
- Cr\ :sub:`31`
|
||||
- Y'\ :sub:`32`
|
||||
- Cb\ :sub:`31`
|
||||
- Y'\ :sub:`33`
|
||||
|
||||
|
||||
**Color Sample Location:**
|
||||
Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
|
||||
horizontally.
|
@ -1,93 +0,0 @@
|
||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
||||
|
||||
.. _V4L2-PIX-FMT-Y41P:
|
||||
|
||||
**************************
|
||||
V4L2_PIX_FMT_Y41P ('Y41P')
|
||||
**************************
|
||||
|
||||
|
||||
Format with ¼ horizontal chroma resolution, also known as YUV 4:1:1
|
||||
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
In this format each 12 bytes is eight pixels. In the twelve bytes are
|
||||
two CbCr pairs and eight Y's. The first CbCr pair goes with the first
|
||||
four Y's, and the second CbCr pair goes with the other four Y's. The Cb
|
||||
and Cr components have one fourth the horizontal resolution of the Y
|
||||
component.
|
||||
|
||||
Do not confuse this format with
|
||||
:ref:`V4L2_PIX_FMT_YUV411P <V4L2-PIX-FMT-YUV411P>`. Y41P is derived
|
||||
from "YUV 4:1:1 *packed*", while YUV411P stands for "YUV 4:1:1
|
||||
*planar*".
|
||||
|
||||
**Byte Order.**
|
||||
Each cell is one byte.
|
||||
|
||||
|
||||
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
|
||||
* - start + 0:
|
||||
- Cb\ :sub:`00`
|
||||
- Y'\ :sub:`00`
|
||||
- Cr\ :sub:`00`
|
||||
- Y'\ :sub:`01`
|
||||
- Cb\ :sub:`01`
|
||||
- Y'\ :sub:`02`
|
||||
- Cr\ :sub:`01`
|
||||
- Y'\ :sub:`03`
|
||||
- Y'\ :sub:`04`
|
||||
- Y'\ :sub:`05`
|
||||
- Y'\ :sub:`06`
|
||||
- Y'\ :sub:`07`
|
||||
* - start + 12:
|
||||
- Cb\ :sub:`10`
|
||||
- Y'\ :sub:`10`
|
||||
- Cr\ :sub:`10`
|
||||
- Y'\ :sub:`11`
|
||||
- Cb\ :sub:`11`
|
||||
- Y'\ :sub:`12`
|
||||
- Cr\ :sub:`11`
|
||||
- Y'\ :sub:`13`
|
||||
- Y'\ :sub:`14`
|
||||
- Y'\ :sub:`15`
|
||||
- Y'\ :sub:`16`
|
||||
- Y'\ :sub:`17`
|
||||
* - start + 24:
|
||||
- Cb\ :sub:`20`
|
||||
- Y'\ :sub:`20`
|
||||
- Cr\ :sub:`20`
|
||||
- Y'\ :sub:`21`
|
||||
- Cb\ :sub:`21`
|
||||
- Y'\ :sub:`22`
|
||||
- Cr\ :sub:`21`
|
||||
- Y'\ :sub:`23`
|
||||
- Y'\ :sub:`24`
|
||||
- Y'\ :sub:`25`
|
||||
- Y'\ :sub:`26`
|
||||
- Y'\ :sub:`27`
|
||||
* - start + 36:
|
||||
- Cb\ :sub:`30`
|
||||
- Y'\ :sub:`30`
|
||||
- Cr\ :sub:`30`
|
||||
- Y'\ :sub:`31`
|
||||
- Cb\ :sub:`31`
|
||||
- Y'\ :sub:`32`
|
||||
- Cr\ :sub:`31`
|
||||
- Y'\ :sub:`33`
|
||||
- Y'\ :sub:`34`
|
||||
- Y'\ :sub:`35`
|
||||
- Y'\ :sub:`36`
|
||||
- Y'\ :sub:`37`
|
||||
|
||||
|
||||
**Color Sample Location:**
|
||||
Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
|
||||
horizontally.
|
@ -1,73 +0,0 @@
|
||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
||||
|
||||
.. _V4L2-PIX-FMT-YUYV:
|
||||
|
||||
**************************
|
||||
V4L2_PIX_FMT_YUYV ('YUYV')
|
||||
**************************
|
||||
|
||||
|
||||
Packed format with ½ horizontal chroma resolution, also known as YUV
|
||||
4:2:2
|
||||
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
In this format each four bytes is two pixels. Each four bytes is two
|
||||
Y's, a Cb and a Cr. Each Y goes to one of the pixels, and the Cb and Cr
|
||||
belong to both pixels. As you can see, the Cr and Cb components have
|
||||
half the horizontal resolution of the Y component. ``V4L2_PIX_FMT_YUYV``
|
||||
is known in the Windows environment as YUY2.
|
||||
|
||||
**Byte Order.**
|
||||
Each cell is one byte.
|
||||
|
||||
|
||||
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
|
||||
* - start + 0:
|
||||
- Y'\ :sub:`00`
|
||||
- Cb\ :sub:`00`
|
||||
- Y'\ :sub:`01`
|
||||
- Cr\ :sub:`00`
|
||||
- Y'\ :sub:`02`
|
||||
- Cb\ :sub:`01`
|
||||
- Y'\ :sub:`03`
|
||||
- Cr\ :sub:`01`
|
||||
* - start + 8:
|
||||
- Y'\ :sub:`10`
|
||||
- Cb\ :sub:`10`
|
||||
- Y'\ :sub:`11`
|
||||
- Cr\ :sub:`10`
|
||||
- Y'\ :sub:`12`
|
||||
- Cb\ :sub:`11`
|
||||
- Y'\ :sub:`13`
|
||||
- Cr\ :sub:`11`
|
||||
* - start + 16:
|
||||
- Y'\ :sub:`20`
|
||||
- Cb\ :sub:`20`
|
||||
- Y'\ :sub:`21`
|
||||
- Cr\ :sub:`20`
|
||||
- Y'\ :sub:`22`
|
||||
- Cb\ :sub:`21`
|
||||
- Y'\ :sub:`23`
|
||||
- Cr\ :sub:`21`
|
||||
* - start + 24:
|
||||
- Y'\ :sub:`30`
|
||||
- Cb\ :sub:`30`
|
||||
- Y'\ :sub:`31`
|
||||
- Cr\ :sub:`30`
|
||||
- Y'\ :sub:`32`
|
||||
- Cb\ :sub:`31`
|
||||
- Y'\ :sub:`33`
|
||||
- Cr\ :sub:`31`
|
||||
|
||||
|
||||
**Color Sample Location:**
|
||||
Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
|
||||
horizontally.
|
@ -1,70 +0,0 @@
|
||||
.. SPDX-License-Identifier: GFDL-1.1-no-invariants-or-later
|
||||
|
||||
.. _V4L2-PIX-FMT-YVYU:
|
||||
|
||||
**************************
|
||||
V4L2_PIX_FMT_YVYU ('YVYU')
|
||||
**************************
|
||||
|
||||
|
||||
Variation of ``V4L2_PIX_FMT_YUYV`` with different order of samples in
|
||||
memory
|
||||
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
In this format each four bytes is two pixels. Each four bytes is two
|
||||
Y's, a Cb and a Cr. Each Y goes to one of the pixels, and the Cb and Cr
|
||||
belong to both pixels. As you can see, the Cr and Cb components have
|
||||
half the horizontal resolution of the Y component.
|
||||
|
||||
**Byte Order.**
|
||||
Each cell is one byte.
|
||||
|
||||
|
||||
.. flat-table::
|
||||
:header-rows: 0
|
||||
:stub-columns: 0
|
||||
|
||||
* - start + 0:
|
||||
- Y'\ :sub:`00`
|
||||
- Cr\ :sub:`00`
|
||||
- Y'\ :sub:`01`
|
||||
- Cb\ :sub:`00`
|
||||
- Y'\ :sub:`02`
|
||||
- Cr\ :sub:`01`
|
||||
- Y'\ :sub:`03`
|
||||
- Cb\ :sub:`01`
|
||||
* - start + 8:
|
||||
- Y'\ :sub:`10`
|
||||
- Cr\ :sub:`10`
|
||||
- Y'\ :sub:`11`
|
||||
- Cb\ :sub:`10`
|
||||
- Y'\ :sub:`12`
|
||||
- Cr\ :sub:`11`
|
||||
- Y'\ :sub:`13`
|
||||
- Cb\ :sub:`11`
|
||||
* - start + 16:
|
||||
- Y'\ :sub:`20`
|
||||
- Cr\ :sub:`20`
|
||||
- Y'\ :sub:`21`
|
||||
- Cb\ :sub:`20`
|
||||
- Y'\ :sub:`22`
|
||||
- Cr\ :sub:`21`
|
||||
- Y'\ :sub:`23`
|
||||
- Cb\ :sub:`21`
|
||||
* - start + 24:
|
||||
- Y'\ :sub:`30`
|
||||
- Cr\ :sub:`30`
|
||||
- Y'\ :sub:`31`
|
||||
- Cb\ :sub:`30`
|
||||
- Y'\ :sub:`32`
|
||||
- Cr\ :sub:`31`
|
||||
- Y'\ :sub:`33`
|
||||
- Cb\ :sub:`31`
|
||||
|
||||
|
||||
**Color Sample Location:**
|
||||
Chroma samples are :ref:`interstitially sited<yuv-chroma-centered>`
|
||||
horizontally.
|
@ -276,11 +276,6 @@ image.
|
||||
pixfmt-y8i
|
||||
pixfmt-y12i
|
||||
pixfmt-uv8
|
||||
pixfmt-yuyv
|
||||
pixfmt-uyvy
|
||||
pixfmt-yvyu
|
||||
pixfmt-vyuy
|
||||
pixfmt-y41p
|
||||
pixfmt-yuv420
|
||||
pixfmt-yuv420m
|
||||
pixfmt-yuv422m
|
||||
|
Loading…
Reference in New Issue
Block a user