2018-08-30 10:15:26 -04:00
.. Permission is granted to copy, distribute and/or modify this
.. document under the terms of the GNU Free Documentation License,
.. Version 1.1 or any later version published by the Free Software
.. Foundation, with no Invariant Sections, no Front-Cover Texts
.. and no Back-Cover Texts. A copy of the license is included at
2020-03-04 10:21:39 +01:00
.. Documentation/userspace-api/media/fdl-appendix.rst.
2018-08-30 10:15:26 -04:00
..
.. TODO: replace it to GFDL-1.1-or-later WITH no-invariant-sections
2016-06-30 15:18:56 +02:00
.. _V4L2-PIX-FMT-M420:
***** ***** ***** ***** ***** *
V4L2_PIX_FMT_M420 ('M420')
***** ***** ***** ***** ***** *
Format with ½ horizontal and vertical chroma resolution, also known as
YUV 4:2:0. Hybrid plane line-interleaved layout.
Description
===========
M420 is a YUV format with ½ horizontal and vertical chroma subsampling
(YUV 4:2:0). Pixels are organized as interleaved luma and chroma planes.
Two lines of luma data are followed by one line of chroma data.
The luma plane has one byte per pixel. The chroma plane contains
interleaved CbCr pixels subsampled by ½ in the horizontal and vertical
directions. Each CbCr pair belongs to four pixels. For example,
2016-07-04 09:04:31 -03:00
Cb\ :sub: `0` /Cr\ :sub: `0` belongs to Y'\ :sub: `00` , Y'\ :sub: `01` ,
2016-06-30 15:18:56 +02:00
Y'\ :sub: `10` , Y'\ :sub: `11` .
All line lengths are identical: if the Y lines include pad bytes so do
the CbCr lines.
2016-07-04 13:58:01 -03:00
**Byte Order.**
2016-06-30 15:18:56 +02:00
Each cell is one byte.
.. flat-table ::
:header-rows: 0
: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 08:44:34 -03:00
* - start + 0:
- Y'\ :sub: `00`
- Y'\ :sub: `01`
- Y'\ :sub: `02`
- Y'\ :sub: `03`
* - start + 4:
- Y'\ :sub: `10`
- Y'\ :sub: `11`
- Y'\ :sub: `12`
- Y'\ :sub: `13`
* - start + 8:
- Cb\ :sub: `00`
- Cr\ :sub: `00`
- Cb\ :sub: `01`
- Cr\ :sub: `01`
* - start + 16:
- Y'\ :sub: `20`
- Y'\ :sub: `21`
- Y'\ :sub: `22`
- Y'\ :sub: `23`
* - start + 20:
- Y'\ :sub: `30`
- Y'\ :sub: `31`
- Y'\ :sub: `32`
- Y'\ :sub: `33`
* - start + 24:
- Cb\ :sub: `10`
- Cr\ :sub: `10`
- Cb\ :sub: `11`
- Cr\ :sub: `11`
2016-06-30 15:18:56 +02:00
2017-09-03 07:04:33 -04:00
**Color Sample Location:**
2016-06-30 15:18:56 +02:00
.. flat-table ::
:header-rows: 0
: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 08:44:34 -03:00
* -
- 0
-
- 1
- 2
-
- 3
* - 0
- Y
-
- Y
- Y
-
- Y
* -
-
- C
-
-
- C
-
* - 1
- Y
-
- Y
- Y
-
- Y
* -
* - 2
- Y
-
- Y
- Y
-
- Y
* -
-
- C
-
-
- C
-
* - 3
- Y
-
- Y
- Y
-
- Y