2016-06-30 20:18:56 +07:00
|
|
|
.. -*- coding: utf-8; mode: rst -*-
|
|
|
|
|
|
|
|
******************************
|
|
|
|
Multi-planar format structures
|
|
|
|
******************************
|
|
|
|
|
2016-09-08 15:43:01 +07:00
|
|
|
The struct :c:type:`v4l2_plane_pix_format` structures define size
|
2016-06-30 20:18:56 +07:00
|
|
|
and layout for each of the planes in a multi-planar format. The
|
2016-09-08 15:43:01 +07:00
|
|
|
struct :c:type:`v4l2_pix_format_mplane` structure contains
|
2016-06-30 20:18:56 +07:00
|
|
|
information common to all planes (such as image width and height) and an
|
2016-09-08 15:43:01 +07:00
|
|
|
array of struct :c:type:`v4l2_plane_pix_format` structures,
|
2016-06-30 20:18:56 +07:00
|
|
|
describing all planes of that format.
|
|
|
|
|
|
|
|
|
[media] docs-rst: add tabularcolumns to all tables
LaTeX doesn't handle too well auto-width on tables, and ReST
markup requires an special tag to give it the needed hints.
As we're using A4 paper, we have 17cm of useful spaces. As
most media tables have widths, let's use it to generate the
needed via the following perl script:
my ($line_size, $table_header, $has_cols) = (17.5, 0, 0);
my $out;
my $header = "";
my @widths = ();
sub round { $_[0] > 0 ? int($_[0] + .5) : -int(-$_[0] + .5) }
while (<>) {
if (!$table_header) {
$has_cols = 1 if (m/..\s+tabularcolumns::/);
if (m/..\s+flat-table::/) {
$table_header = 1;
$header = $_;
next;
}
$out .= $_;
next;
}
$header .= $_;
@widths = split(/ /, $1) if (m/:widths:\s+(.*)/);
if (m/^\n$/) {
if (!$has_cols && @widths) {
my ($tot, $t, $i) = (0, 0, 0);
foreach my $v(@widths) { $tot += $v; };
$out .= ".. tabularcolumns:: |";
for ($i = 0; $i < scalar @widths - 1; $i++) {
my $v = $widths[$i];
my $w = round(10 * ($v * $line_size) / $tot) / 10;
$out .= sprintf "p{%.1fcm}|", $w;
$t += $w;
}
my $w = $line_size - $t;
$out .= sprintf "p{%.1fcm}|\n\n", $w;
}
$out .= $header;
$table_header = 0;
$has_cols = 0;
$header = "";
@widths = ();
}
}
print $out;
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
2016-08-17 18:14:19 +07:00
|
|
|
.. tabularcolumns:: |p{4.4cm}|p{4.4cm}|p{8.7cm}|
|
|
|
|
|
2016-08-30 03:37:59 +07:00
|
|
|
.. c:type:: v4l2_plane_pix_format
|
2016-08-19 21:14:23 +07:00
|
|
|
|
2016-06-30 20:18:56 +07:00
|
|
|
.. flat-table:: struct v4l2_plane_pix_format
|
|
|
|
:header-rows: 0
|
|
|
|
:stub-columns: 0
|
|
|
|
:widths: 1 1 2
|
|
|
|
|
[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 18:44:34 +07:00
|
|
|
* - __u32
|
|
|
|
- ``sizeimage``
|
|
|
|
- Maximum size in bytes required for image data in this plane.
|
|
|
|
* - __u32
|
|
|
|
- ``bytesperline``
|
|
|
|
- Distance in bytes between the leftmost pixels in two adjacent
|
|
|
|
lines. See struct :c:type:`v4l2_pix_format`.
|
|
|
|
* - __u16
|
|
|
|
- ``reserved[6]``
|
|
|
|
- Reserved for future extensions. Should be zeroed by drivers and
|
|
|
|
applications.
|
2016-06-30 20:18:56 +07:00
|
|
|
|
|
|
|
|
2016-08-19 21:48:14 +07:00
|
|
|
.. tabularcolumns:: |p{4.4cm}|p{5.6cm}|p{7.5cm}|
|
2016-06-30 20:18:56 +07:00
|
|
|
|
2016-08-30 03:37:59 +07:00
|
|
|
.. c:type:: v4l2_pix_format_mplane
|
2016-06-30 20:18:56 +07:00
|
|
|
|
|
|
|
.. flat-table:: struct v4l2_pix_format_mplane
|
|
|
|
:header-rows: 0
|
|
|
|
:stub-columns: 0
|
|
|
|
:widths: 1 1 2
|
|
|
|
|
[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 18:44:34 +07:00
|
|
|
* - __u32
|
|
|
|
- ``width``
|
|
|
|
- Image width in pixels. See struct
|
|
|
|
:c:type:`v4l2_pix_format`.
|
|
|
|
* - __u32
|
|
|
|
- ``height``
|
|
|
|
- Image height in pixels. See struct
|
|
|
|
:c:type:`v4l2_pix_format`.
|
|
|
|
* - __u32
|
|
|
|
- ``pixelformat``
|
|
|
|
- The pixel format. Both single- and multi-planar four character
|
|
|
|
codes can be used.
|
|
|
|
* - enum :c:type:`v4l2_field`
|
|
|
|
- ``field``
|
|
|
|
- See struct :c:type:`v4l2_pix_format`.
|
|
|
|
* - enum :c:type:`v4l2_colorspace`
|
|
|
|
- ``colorspace``
|
|
|
|
- See struct :c:type:`v4l2_pix_format`.
|
|
|
|
* - struct :c:type:`v4l2_plane_pix_format`
|
|
|
|
- ``plane_fmt[VIDEO_MAX_PLANES]``
|
|
|
|
- An array of structures describing format of each plane this pixel
|
|
|
|
format consists of. The number of valid entries in this array has
|
|
|
|
to be put in the ``num_planes`` field.
|
|
|
|
* - __u8
|
|
|
|
- ``num_planes``
|
|
|
|
- Number of planes (i.e. separate memory buffers) for this format
|
|
|
|
and the number of valid entries in the ``plane_fmt`` array.
|
|
|
|
* - __u8
|
|
|
|
- ``flags``
|
|
|
|
- Flags set by the application or driver, see :ref:`format-flags`.
|
|
|
|
* - enum :c:type:`v4l2_ycbcr_encoding`
|
|
|
|
- ``ycbcr_enc``
|
|
|
|
- This information supplements the ``colorspace`` and must be set by
|
|
|
|
the driver for capture streams and by the application for output
|
|
|
|
streams, see :ref:`colorspaces`.
|
|
|
|
* - enum :c:type:`v4l2_quantization`
|
|
|
|
- ``quantization``
|
|
|
|
- This information supplements the ``colorspace`` and must be set by
|
|
|
|
the driver for capture streams and by the application for output
|
|
|
|
streams, see :ref:`colorspaces`.
|
|
|
|
* - enum :c:type:`v4l2_xfer_func`
|
|
|
|
- ``xfer_func``
|
|
|
|
- This information supplements the ``colorspace`` and must be set by
|
|
|
|
the driver for capture streams and by the application for output
|
|
|
|
streams, see :ref:`colorspaces`.
|
|
|
|
* - __u8
|
|
|
|
- ``reserved[7]``
|
|
|
|
- Reserved for future extensions. Should be zeroed by drivers and
|
|
|
|
applications.
|