2016-06-30 21:18:56 +08:00
|
|
|
.. -*- coding: utf-8; mode: rst -*-
|
|
|
|
|
|
|
|
.. _packed-yuv:
|
|
|
|
|
|
|
|
******************
|
|
|
|
Packed YUV formats
|
|
|
|
******************
|
|
|
|
|
|
|
|
Description
|
|
|
|
===========
|
|
|
|
|
|
|
|
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.
|
|
|
|
|
2016-08-18 02:37:48 +08:00
|
|
|
.. raw:: latex
|
|
|
|
|
|
|
|
\newline\newline\begin{adjustbox}{width=\columnwidth}
|
2016-06-30 21:18:56 +08:00
|
|
|
|
2016-08-22 21:49:31 +08:00
|
|
|
.. _packed-yuv-formats:
|
2016-08-18 02:37:48 +08:00
|
|
|
|
|
|
|
.. tabularcolumns:: |p{4.5cm}|p{3.3cm}|p{0.7cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.2cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.2cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.2cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{0.4cm}|p{1.7cm}|
|
2016-06-30 21:18:56 +08:00
|
|
|
|
|
|
|
.. flat-table:: Packed YUV Image Formats
|
|
|
|
:header-rows: 2
|
|
|
|
:stub-columns: 0
|
|
|
|
|
[media] v4l: doc: Remove row numbers from tables
Shorten the tables by removing row numbers in comments, allowing for
later insertion of rows with minimal diffs.
All changes have been generated by the following script.
import io
import re
import sys
def process_table(fname, data):
if fname.endswith('hist-v4l2.rst'):
data = re.sub(u'\n{1,2}\t( ?) -( ?) ?', u'\n\t\\1 -\\2', data, flags = re.MULTILINE)
data = re.sub(u'\n(\t| )- \.\. row [0-9]+\n\t ?-( ?) ?', u'\\1* -\\2', data, flags = re.MULTILINE)
else:
data = re.sub(u'\n{1,2} -( ?) ?', u'\n -\\1', data, flags = re.MULTILINE)
data = re.sub(u'(\n?)(\n\n - \.\. row 1\n)', u'\n\\2', data, flags = re.MULTILINE)
data = re.sub(u'\n - \.\. row [0-9]+\n -( ?) ?', u' * -\\1', data, flags = re.MULTILINE)
data = re.sub(u'\n - \.\. row [0-9]+\n \.\. (_[A-Z0-9_`-]*:)', u'\n - .. \\1', data, flags = re.MULTILINE)
data = re.sub(u'\n - \.\. (_[A-Z0-9_`-]*:)\n -', u' * .. \\1\n\n -', data, flags = re.MULTILINE)
data = re.sub(u'^ - ', u' -', data, flags = re.MULTILINE)
data = re.sub(u'^(\t{1,2}) ', u'\\1', data, flags = re.MULTILINE)
return data
def process_file(fname, data):
buf = io.StringIO(data)
output = ''
in_table = False
table_separator = 0
for line in buf.readlines():
if line.find('.. flat-table::') != -1:
in_table = True
table = ''
elif in_table and not re.match('^[\t\n]|( )', line):
in_table = False
output += process_table(fname, table)
if in_table:
table += line
else:
output += line
if in_table:
in_table = False
output += process_table(fname, table)
return output
fname = sys.argv[1]
data = file(fname, 'rb').read().decode('utf-8')
data = process_file(fname, data)
file(fname, 'wb').write(data.encode('utf-8'))
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
2016-09-05 19:44:34 +08:00
|
|
|
* - Identifier
|
|
|
|
- Code
|
|
|
|
-
|
|
|
|
- :cspan:`7` Byte 0 in memory
|
|
|
|
-
|
|
|
|
- :cspan:`7` Byte 1
|
|
|
|
-
|
|
|
|
- :cspan:`7` Byte 2
|
|
|
|
-
|
|
|
|
- :cspan:`7` Byte 3
|
|
|
|
* -
|
|
|
|
-
|
|
|
|
- Bit
|
|
|
|
- 7
|
|
|
|
- 6
|
|
|
|
- 5
|
|
|
|
- 4
|
|
|
|
- 3
|
|
|
|
- 2
|
|
|
|
- 1
|
|
|
|
- 0
|
|
|
|
-
|
|
|
|
- 7
|
|
|
|
- 6
|
|
|
|
- 5
|
|
|
|
- 4
|
|
|
|
- 3
|
|
|
|
- 2
|
|
|
|
- 1
|
|
|
|
- 0
|
|
|
|
-
|
|
|
|
- 7
|
|
|
|
- 6
|
|
|
|
- 5
|
|
|
|
- 4
|
|
|
|
- 3
|
|
|
|
- 2
|
|
|
|
- 1
|
|
|
|
- 0
|
|
|
|
-
|
|
|
|
- 7
|
|
|
|
- 6
|
|
|
|
- 5
|
|
|
|
- 4
|
|
|
|
- 3
|
|
|
|
- 2
|
|
|
|
- 1
|
|
|
|
- 0
|
|
|
|
* .. _V4L2-PIX-FMT-YUV444:
|
|
|
|
|
|
|
|
- ``V4L2_PIX_FMT_YUV444``
|
|
|
|
- 'Y444'
|
|
|
|
-
|
|
|
|
- Cb\ :sub:`3`
|
|
|
|
- Cb\ :sub:`2`
|
|
|
|
- Cb\ :sub:`1`
|
|
|
|
- Cb\ :sub:`0`
|
|
|
|
- Cr\ :sub:`3`
|
|
|
|
- Cr\ :sub:`2`
|
|
|
|
- Cr\ :sub:`1`
|
|
|
|
- Cr\ :sub:`0`
|
|
|
|
-
|
|
|
|
- a\ :sub:`3`
|
|
|
|
- a\ :sub:`2`
|
|
|
|
- a\ :sub:`1`
|
|
|
|
- a\ :sub:`0`
|
|
|
|
- Y'\ :sub:`3`
|
|
|
|
- Y'\ :sub:`2`
|
|
|
|
- Y'\ :sub:`1`
|
|
|
|
- Y'\ :sub:`0`
|
|
|
|
* .. _V4L2-PIX-FMT-YUV555:
|
|
|
|
|
|
|
|
- ``V4L2_PIX_FMT_YUV555``
|
|
|
|
- 'YUVO'
|
|
|
|
-
|
|
|
|
- Cb\ :sub:`2`
|
|
|
|
- Cb\ :sub:`1`
|
|
|
|
- Cb\ :sub:`0`
|
|
|
|
- Cr\ :sub:`4`
|
|
|
|
- Cr\ :sub:`3`
|
|
|
|
- Cr\ :sub:`2`
|
|
|
|
- Cr\ :sub:`1`
|
|
|
|
- Cr\ :sub:`0`
|
|
|
|
-
|
|
|
|
- a
|
|
|
|
- Y'\ :sub:`4`
|
|
|
|
- Y'\ :sub:`3`
|
|
|
|
- Y'\ :sub:`2`
|
|
|
|
- Y'\ :sub:`1`
|
|
|
|
- Y'\ :sub:`0`
|
|
|
|
- Cb\ :sub:`4`
|
|
|
|
- Cb\ :sub:`3`
|
|
|
|
* .. _V4L2-PIX-FMT-YUV565:
|
|
|
|
|
|
|
|
- ``V4L2_PIX_FMT_YUV565``
|
|
|
|
- 'YUVP'
|
|
|
|
-
|
|
|
|
- Cb\ :sub:`2`
|
|
|
|
- Cb\ :sub:`1`
|
|
|
|
- Cb\ :sub:`0`
|
|
|
|
- Cr\ :sub:`4`
|
|
|
|
- Cr\ :sub:`3`
|
|
|
|
- Cr\ :sub:`2`
|
|
|
|
- Cr\ :sub:`1`
|
|
|
|
- Cr\ :sub:`0`
|
|
|
|
-
|
|
|
|
- Y'\ :sub:`4`
|
|
|
|
- Y'\ :sub:`3`
|
|
|
|
- Y'\ :sub:`2`
|
|
|
|
- Y'\ :sub:`1`
|
|
|
|
- Y'\ :sub:`0`
|
|
|
|
- Cb\ :sub:`5`
|
|
|
|
- Cb\ :sub:`4`
|
|
|
|
- Cb\ :sub:`3`
|
|
|
|
* .. _V4L2-PIX-FMT-YUV32:
|
|
|
|
|
|
|
|
- ``V4L2_PIX_FMT_YUV32``
|
|
|
|
- 'YUV4'
|
|
|
|
-
|
|
|
|
- a\ :sub:`7`
|
|
|
|
- a\ :sub:`6`
|
|
|
|
- a\ :sub:`5`
|
|
|
|
- a\ :sub:`4`
|
|
|
|
- a\ :sub:`3`
|
|
|
|
- a\ :sub:`2`
|
|
|
|
- a\ :sub:`1`
|
|
|
|
- a\ :sub:`0`
|
|
|
|
-
|
|
|
|
- Y'\ :sub:`7`
|
|
|
|
- Y'\ :sub:`6`
|
|
|
|
- Y'\ :sub:`5`
|
|
|
|
- Y'\ :sub:`4`
|
|
|
|
- Y'\ :sub:`3`
|
|
|
|
- Y'\ :sub:`2`
|
|
|
|
- Y'\ :sub:`1`
|
|
|
|
- Y'\ :sub:`0`
|
|
|
|
-
|
|
|
|
- Cb\ :sub:`7`
|
|
|
|
- Cb\ :sub:`6`
|
|
|
|
- Cb\ :sub:`5`
|
|
|
|
- Cb\ :sub:`4`
|
|
|
|
- Cb\ :sub:`3`
|
|
|
|
- Cb\ :sub:`2`
|
|
|
|
- Cb\ :sub:`1`
|
|
|
|
- Cb\ :sub:`0`
|
|
|
|
-
|
|
|
|
- Cr\ :sub:`7`
|
|
|
|
- Cr\ :sub:`6`
|
|
|
|
- Cr\ :sub:`5`
|
|
|
|
- Cr\ :sub:`4`
|
|
|
|
- Cr\ :sub:`3`
|
|
|
|
- Cr\ :sub:`2`
|
|
|
|
- Cr\ :sub:`1`
|
|
|
|
- Cr\ :sub:`0`
|
2016-06-30 21:18:56 +08:00
|
|
|
|
2016-08-18 02:37:48 +08:00
|
|
|
.. raw:: latex
|
|
|
|
|
|
|
|
\end{adjustbox}\newline\newline
|
|
|
|
|
|
|
|
.. note::
|
|
|
|
|
|
|
|
#) Bit 7 is the most significant bit;
|
2016-06-30 21:18:56 +08:00
|
|
|
|
2016-08-18 02:37:48 +08:00
|
|
|
#) The value of a = alpha bits is undefined when reading from the driver,
|
|
|
|
ignored when writing to the driver, except when alpha blending has
|
|
|
|
been negotiated for a :ref:`Video Overlay <overlay>` or
|
|
|
|
:ref:`Video Output Overlay <osd>`.
|