From: Hans Verkuil <[email protected]>
Signed-off-by: Hans Verkuil <[email protected]>
---
Documentation/DocBook/media/v4l/v4l2.xml | 2 +
.../DocBook/media/v4l/vidioc-g-matrix.xml | 108 +++++++++++++
.../DocBook/media/v4l/vidioc-query-matrix.xml | 180 +++++++++++++++++++++
3 files changed, 290 insertions(+)
create mode 100644 Documentation/DocBook/media/v4l/vidioc-g-matrix.xml
create mode 100644 Documentation/DocBook/media/v4l/vidioc-query-matrix.xml
diff --git a/Documentation/DocBook/media/v4l/v4l2.xml
b/Documentation/DocBook/media/v4l/v4l2.xml
index 8469fe1..11687d5 100644
--- a/Documentation/DocBook/media/v4l/v4l2.xml
+++ b/Documentation/DocBook/media/v4l/v4l2.xml
@@ -584,6 +584,7 @@ and discussions on the V4L mailing list.</revremark>
&sub-g-frequency;
&sub-g-input;
&sub-g-jpegcomp;
+ &sub-g-matrix;
&sub-g-modulator;
&sub-g-output;
&sub-g-parm;
@@ -600,6 +601,7 @@ and discussions on the V4L mailing list.</revremark>
&sub-querycap;
&sub-queryctrl;
&sub-query-dv-timings;
+ &sub-query-matrix;
&sub-querystd;
&sub-reqbufs;
&sub-s-hw-freq-seek;
diff --git a/Documentation/DocBook/media/v4l/vidioc-g-matrix.xml
b/Documentation/DocBook/media/v4l/vidioc-g-matrix.xml
new file mode 100644
index 0000000..9db30f1
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/vidioc-g-matrix.xml
@@ -0,0 +1,108 @@
+<refentry id="vidioc-g-matrix">
+ <refmeta>
+ <refentrytitle>ioctl VIDIOC_G_MATRIX, VIDIOC_S_MATRIX</refentrytitle>
+ &manvol;
+ </refmeta>
+
+ <refnamediv>
+ <refname>VIDIOC_G_MATRIX</refname>
+ <refname>VIDIOC_S_MATRIX</refname>
+ <refpurpose>Get or set a matrix</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>int <function>ioctl</function></funcdef>
+ <paramdef>int <parameter>fd</parameter></paramdef>
+ <paramdef>int <parameter>request</parameter></paramdef>
+ <paramdef>struct v4l2_matrix
+*<parameter>argp</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Arguments</title>
+
+ <variablelist>
+ <varlistentry>
+ <term><parameter>fd</parameter></term>
+ <listitem>
+ <para>&fd;</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>request</parameter></term>
+ <listitem>
+ <para>VIDIOC_G_MATRIX, VIDIOC_S_MATRIX</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>argp</parameter></term>
+ <listitem>
+ <para></para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>Description</title>
+
+ <para>Get or set the elements of a matrix. To get a matrix the application
fills in the
+ <structfield>type</structfield> and zeroes the
<structfield>reserved</structfield>
+ field of &v4l2-matrix;. All other fields will be returned by the driver.
+ To set a matrix the application fills in all the fields of the structure
and zeroes the
+ <structfield>reserved</structfield> field.
+ </para>
+
+ <table frame="none" pgwide="1" id="v4l2-matrix">
+ <title>struct <structname>v4l2_matrix</structname></title>
+ <tgroup cols="4">
+ &cs-str;
+ <tbody valign="top">
+ <row>
+ <entry>__u32</entry>
+ <entry><structfield>type</structfield></entry>
+ <entry></entry>
+ <entry>Type of the matrix, see <xref linkend="v4l2-matrix-type"
/>.</entry>
+ </row>
+ <row>
+ <entry>&v4l2-rect;</entry>
+ <entry><structfield>rect</structfield></entry>
+ <entry></entry>
+ <entry>The subset of the matrix that you want to get or set. The
rectangle
+ must fit within the total matrix dimensions, the top left element
of the total
+ matrix is always (0, 0). To get/set the full matrix
<structfield>rect</structfield>
+ should be set to (0, 0, <structfield>columns</structfield>,
<structfield>rows</structfield>),
+ where <structfield>columns</structfield> and
<structfield>rows</structfield> are
+ obtained from &VIDIOC-QUERY-MATRIX;.</entry>
+ </row>
+ <row>
+ <entry>void *</entry>
+ <entry><structfield>matrix</structfield></entry>
+ <entry></entry>
+ <entry>A pointer to the matrix. This matrix has size
<structfield>rect.width</structfield> *
+ <structfield>rect.height</structfield> *
<structfield>elem_size</structfield>.
+ The <structfield>elem_size</structfield> can be obtained via
&VIDIOC-QUERY-MATRIX;.
+ The elements are stored row-by-row in the matrix. The first element
is element
+ (<structfield>rect.top</structfield>,
<structfield>rect.left</structfield>) of the
+ full matrix.</entry>
+ </row>
+ <row>
+ <entry>__u32</entry>
+ <entry><structfield>reserved</structfield>[12]</entry>
+ <entry></entry>
+ <entry>Reserved for future extensions. Drivers and applications
must set
+ the array to zero.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </refsect1>
+ <refsect1>
+ &return-value;
+ </refsect1>
+</refentry>
diff --git a/Documentation/DocBook/media/v4l/vidioc-query-matrix.xml
b/Documentation/DocBook/media/v4l/vidioc-query-matrix.xml
new file mode 100644
index 0000000..c7423b6
--- /dev/null
+++ b/Documentation/DocBook/media/v4l/vidioc-query-matrix.xml
@@ -0,0 +1,180 @@
+<refentry id="vidioc-query-matrix">
+ <refmeta>
+ <refentrytitle>ioctl VIDIOC_QUERY_MATRIX</refentrytitle>
+ &manvol;
+ </refmeta>
+
+ <refnamediv>
+ <refname>VIDIOC_QUERY_MATRIX</refname>
+ <refpurpose>Query the attributes of a matrix</refpurpose>
+ </refnamediv>
+
+ <refsynopsisdiv>
+ <funcsynopsis>
+ <funcprototype>
+ <funcdef>int <function>ioctl</function></funcdef>
+ <paramdef>int <parameter>fd</parameter></paramdef>
+ <paramdef>int <parameter>request</parameter></paramdef>
+ <paramdef>struct v4l2_query_matrix
+*<parameter>argp</parameter></paramdef>
+ </funcprototype>
+ </funcsynopsis>
+ </refsynopsisdiv>
+
+ <refsect1>
+ <title>Arguments</title>
+
+ <variablelist>
+ <varlistentry>
+ <term><parameter>fd</parameter></term>
+ <listitem>
+ <para>&fd;</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>request</parameter></term>
+ <listitem>
+ <para>VIDIOC_QUERY_MATRIX</para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term><parameter>argp</parameter></term>
+ <listitem>
+ <para></para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect1>
+
+ <refsect1>
+ <title>Description</title>
+
+ <para>Query the attributes of a matrix. The application fills in the
+ <structfield>type</structfield> and zeroes the
<structfield>reserved</structfield>
+ field of &v4l2-query-matrix;. All other fields will be returned by the
driver.
+ </para>
+
+ <table frame="none" pgwide="1" id="v4l2-query-matrix">
+ <title>struct <structname>v4l2_query_matrix</structname></title>
+ <tgroup cols="4">
+ &cs-str;
+ <tbody valign="top">
+ <row>
+ <entry>__u32</entry>
+ <entry><structfield>type</structfield></entry>
+ <entry></entry>
+ <entry>Type of the matrix, see <xref linkend="v4l2-matrix-type"
/>.</entry>
+ </row>
+ <row>
+ <entry>__u32</entry>
+ <entry><structfield>columns</structfield></entry>
+ <entry></entry>
+ <entry>Number of columns in the matrix.</entry>
+ </row>
+ <row>
+ <entry>__u32</entry>
+ <entry><structfield>rows</structfield></entry>
+ <entry></entry>
+ <entry>Number of rows in the matrix.</entry>
+ </row>
+ <row>
+ <entry>union</entry>
+ <entry><structfield>elem_min</structfield></entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry>__s64</entry>
+ <entry><structfield>val</structfield></entry>
+ <entry>The minimal signed value of each matrix element.</entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry>__u64</entry>
+ <entry><structfield>uval</structfield></entry>
+ <entry>The minimal unsigned value of each matrix element.</entry>
+ </row>
+ <row>
+ <entry>union</entry>
+ <entry><structfield>elem_max</structfield></entry>
+ <entry></entry>
+ <entry></entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry>__s64</entry>
+ <entry><structfield>val</structfield></entry>
+ <entry>The maximal signed value of each matrix element.</entry>
+ </row>
+ <row>
+ <entry></entry>
+ <entry>__u64</entry>
+ <entry><structfield>uval</structfield></entry>
+ <entry>The maximal unsigned value of each matrix element.</entry>
+ </row>
+ <row>
+ <entry>__u32</entry>
+ <entry><structfield>elem_size</structfield></entry>
+ <entry></entry>
+ <entry>The size in bytes of a single matrix element.
+ The full matrix size will be <structfield>columns</structfield> *
+ <structfield>rows</structfield> *
<structfield>elem_size</structfield>.</entry>
+ </row>
+ <row>
+ <entry>__u32</entry>
+ <entry><structfield>reserved</structfield>[16]</entry>
+ <entry></entry>
+ <entry>Reserved for future extensions. Drivers and applications
must set
+ the array to zero.</entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ <table pgwide="1" frame="none" id="v4l2-matrix-type">
+ <title>Matrix Types</title>
+ <tgroup cols="2" align="left">
+ <colspec colwidth="30*" />
+ <colspec colwidth="55*" />
+ <thead>
+ <row>
+ <entry>Type</entry>
+ <entry>Description</entry>
+ </row>
+ </thead>
+ <tbody valign="top">
+ <row>
+ <entry><constant>V4L2_MATRIX_T_MD_REGION</constant></entry>
+ <entry><para>Hardware motion detection divides the image up into
cells. If the image resolution
+ is WxH and the full matrix size is COLSxROWS, then each cell is a
rectangle of (W/COLS)x(H/ROWS)
+ pixels (approximately as there may be some rounding involved). This
matrix type sets the region
+ property for each cell. The type of the region property is a
__u8.</para>
+ <para>Each region will typically have its own set of motion
detection parameters such
+ as thresholds that determines the motion detection sensitivity. By
assigning a region to
+ each cell you can create areas in the image with lower and areas
with higher motion
+ sensitivity.</para>
+ <para>So if the hardware supports 4 regions, each with its own set
of motion detection
+ thresholds, then you can assign each cell to one of these regions
(0-3) and thus decide
+ for each cell how sensitive to motion that part of the image will
be.</para>
+ </entry>
+ </row>
+ <row>
+ <entry><constant>V4L2_MATRIX_T_MD_THRESHOLD</constant></entry>
+ <entry>Hardware motion detection divides the image up into cells.
If the image resolution
+ is WxH and the full matrix size is COLSxROWS, then each cell is a
rectangle of (W/COLS)x(H/ROWS)
+ pixels (approximately as there may be some rounding involved).
Depending on the
+ hardware each cell can have its own motion detection sensitivity
threshold. This matrix
+ type sets the motion detection threshold property for each cell.
The type of the
+ threshold property is a __u16.
+ </entry>
+ </row>
+ </tbody>
+ </tgroup>
+ </table>
+
+ </refsect1>
+ <refsect1>
+ &return-value;
+ </refsect1>
+</refentry>
--
1.8.3.2
--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html