Commit 7cb8bd29 authored by Laurent Pinchart's avatar Laurent Pinchart Committed by Mauro Carvalho Chehab

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: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent e3ae4c20
...@@ -6,12 +6,16 @@ ...@@ -6,12 +6,16 @@
Packed YUV formats 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 .. raw:: latex
...@@ -19,11 +23,9 @@ component of each pixel in one 16 or 32 bit word. ...@@ -19,11 +23,9 @@ component of each pixel in one 16 or 32 bit word.
\tiny \tiny
\setlength{\tabcolsep}{2pt} \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}| .. 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 :header-rows: 2
:stub-columns: 0 :stub-columns: 0
...@@ -371,3 +373,134 @@ component of each pixel in one 16 or 32 bit word. ...@@ -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 expected to contain a meaningful value that can be used by drivers
and applications. And, the formats XYUV32 and VUYX32 contain undefined and applications. And, the formats XYUV32 and VUYX32 contain undefined
alpha values that must be ignored by all applications and drivers. 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.
.. 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.
.. 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.
.. 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.
.. 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.
.. 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. ...@@ -276,11 +276,6 @@ image.
pixfmt-y8i pixfmt-y8i
pixfmt-y12i pixfmt-y12i
pixfmt-uv8 pixfmt-uv8
pixfmt-yuyv
pixfmt-uyvy
pixfmt-yvyu
pixfmt-vyuy
pixfmt-y41p
pixfmt-yuv420 pixfmt-yuv420
pixfmt-yuv420m pixfmt-yuv420m
pixfmt-yuv422m pixfmt-yuv422m
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment