Merge branch 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media
Pull media updates from Mauro Carvalho Chehab: - Some cleanups at V4L2 documentation - new drivers: ts2020 frontend, ov9650 sensor, s5c73m3 sensor, sh-mobile veu mem2mem driver, radio-ma901, davinci_vpfe staging driver - Lots of missing MAINTAINERS entries added - several em28xx driver improvements, including its conversion to videobuf2 - several fixups on drivers to make them to better comply with the API - DVB core: add support for DVBv5 stats, allowing the implementation of statistics for new standards like ISDB - mb86a20s: add statistics to the driver - lots of new board additions, cleanups, and driver improvements. * 'v4l_for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (596 commits) [media] media: Add 0x3009 USB PID to ttusb2 driver (fixed diff) [media] rtl28xxu: Add USB IDs for Compro VideoMate U620F [media] em28xx: add usb id for terratec h5 rev. 3 [media] media: rc: gpio-ir-recv: add support for device tree parsing [media] mceusb: move check earlier to make smatch happy [media] radio-si470x doc: add info about v4l2-ctl and sox+alsa [media] staging: media: Remove unnecessary OOM messages [media] sh_vou: Use vou_dev instead of vou_file wherever possible [media] sh_vou: Use video_drvdata() [media] drivers/media/platform/soc_camera/pxa_camera.c: use devm_ functions [media] mt9t112: mt9t111 format set up differs from mt9t112 [media] sh-mobile-ceu-camera: fix SHARPNESS control default Revert "[media] fc0011: Return early, if the frequency is already tuned" [media] cx18/ivtv: fix regression: remove __init from a non-init function [media] em28xx: fix analog streaming with USB bulk transfers [media] stv0900: remove unnecessary null pointer check [media] fc0011: Return early, if the frequency is already tuned [media] fc0011: Add some sanity checks and cleanups [media] fc0011: Fix xin value clamping Revert "[media] [PATH,1/2] mxl5007 move reset to attach" ...
This commit is contained in:
@@ -84,7 +84,7 @@ Added ISDB-T test originally written by Patrick Boettcher
|
||||
|
||||
|
||||
<title>LINUX DVB API</title>
|
||||
<subtitle>Version 5.8</subtitle>
|
||||
<subtitle>Version 5.10</subtitle>
|
||||
<!-- ADD THE CHAPTERS HERE -->
|
||||
<chapter id="dvb_introdution">
|
||||
&sub-intro;
|
||||
|
@@ -7,14 +7,41 @@ the capability ioctls weren't implemented yet via the new way.</para>
|
||||
<para>The typical usage for the <constant>FE_GET_PROPERTY/FE_SET_PROPERTY</constant>
|
||||
API is to replace the ioctl's were the <link linkend="dvb-frontend-parameters">
|
||||
struct <constant>dvb_frontend_parameters</constant></link> were used.</para>
|
||||
<section id="dtv-stats">
|
||||
<title>DTV stats type</title>
|
||||
<programlisting>
|
||||
struct dtv_stats {
|
||||
__u8 scale; /* enum fecap_scale_params type */
|
||||
union {
|
||||
__u64 uvalue; /* for counters and relative scales */
|
||||
__s64 svalue; /* for 1/1000 dB measures */
|
||||
};
|
||||
} __packed;
|
||||
</programlisting>
|
||||
</section>
|
||||
<section id="dtv-fe-stats">
|
||||
<title>DTV stats type</title>
|
||||
<programlisting>
|
||||
#define MAX_DTV_STATS 4
|
||||
|
||||
struct dtv_fe_stats {
|
||||
__u8 len;
|
||||
struct dtv_stats stat[MAX_DTV_STATS];
|
||||
} __packed;
|
||||
</programlisting>
|
||||
</section>
|
||||
|
||||
<section id="dtv-property">
|
||||
<title>DTV property type</title>
|
||||
<programlisting>
|
||||
/* Reserved fields should be set to 0 */
|
||||
|
||||
struct dtv_property {
|
||||
__u32 cmd;
|
||||
__u32 reserved[3];
|
||||
union {
|
||||
__u32 data;
|
||||
struct dtv_fe_stats st;
|
||||
struct {
|
||||
__u8 data[32];
|
||||
__u32 len;
|
||||
@@ -440,7 +467,7 @@ typedef enum fe_delivery_system {
|
||||
<title><constant>DTV-ISDBT-LAYER*</constant> parameters</title>
|
||||
<para>ISDB-T channels can be coded hierarchically. As opposed to DVB-T in
|
||||
ISDB-T hierarchical layers can be decoded simultaneously. For that
|
||||
reason a ISDB-T demodulator has 3 viterbi and 3 reed-solomon-decoders.</para>
|
||||
reason a ISDB-T demodulator has 3 Viterbi and 3 Reed-Solomon decoders.</para>
|
||||
<para>ISDB-T has 3 hierarchical layers which each can use a part of the
|
||||
available segments. The total number of segments over all layers has
|
||||
to 13 in ISDB-T.</para>
|
||||
@@ -850,6 +877,147 @@ enum fe_interleaving {
|
||||
<para>use the special macro LNA_AUTO to set LNA auto</para>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section id="frontend-stat-properties">
|
||||
<title>Frontend statistics indicators</title>
|
||||
<para>The values are returned via <constant>dtv_property.stat</constant>.
|
||||
If the property is supported, <constant>dtv_property.stat.len</constant> is bigger than zero.</para>
|
||||
<para>For most delivery systems, <constant>dtv_property.stat.len</constant>
|
||||
will be 1 if the stats is supported, and the properties will
|
||||
return a single value for each parameter.</para>
|
||||
<para>It should be noticed, however, that new OFDM delivery systems
|
||||
like ISDB can use different modulation types for each group of
|
||||
carriers. On such standards, up to 3 groups of statistics can be
|
||||
provided, and <constant>dtv_property.stat.len</constant> is updated
|
||||
to reflect the "global" metrics, plus one metric per each carrier
|
||||
group (called "layer" on ISDB).</para>
|
||||
<para>So, in order to be consistent with other delivery systems, the first
|
||||
value at <link linkend="dtv-stats"><constant>dtv_property.stat.dtv_stats</constant></link>
|
||||
array refers to the global metric. The other elements of the array
|
||||
represent each layer, starting from layer A(index 1),
|
||||
layer B (index 2) and so on.</para>
|
||||
<para>The number of filled elements are stored at <constant>dtv_property.stat.len</constant>.</para>
|
||||
<para>Each element of the <constant>dtv_property.stat.dtv_stats</constant> array consists on two elements:</para>
|
||||
<itemizedlist mark='opencircle'>
|
||||
<listitem><para><constant>svalue</constant> or <constant>uvalue</constant>, where
|
||||
<constant>svalue</constant> is for signed values of the measure (dB measures)
|
||||
and <constant>uvalue</constant> is for unsigned values (counters, relative scale)</para></listitem>
|
||||
<listitem><para><constant>scale</constant> - Scale for the value. It can be:</para>
|
||||
<section id = "fecap-scale-params">
|
||||
<itemizedlist mark='bullet'>
|
||||
<listitem><para><constant>FE_SCALE_NOT_AVAILABLE</constant> - The parameter is supported by the frontend, but it was not possible to collect it (could be a transitory or permanent condition)</para></listitem>
|
||||
<listitem><para><constant>FE_SCALE_DECIBEL</constant> - parameter is a signed value, measured in 1/1000 dB</para></listitem>
|
||||
<listitem><para><constant>FE_SCALE_RELATIVE</constant> - parameter is a unsigned value, where 0 means 0% and 65535 means 100%.</para></listitem>
|
||||
<listitem><para><constant>FE_SCALE_COUNTER</constant> - parameter is a unsigned value that counts the occurrence of an event, like bit error, block error, or lapsed time.</para></listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<section id="DTV-STAT-SIGNAL-STRENGTH">
|
||||
<title><constant>DTV_STAT_SIGNAL_STRENGTH</constant></title>
|
||||
<para>Indicates the signal strength level at the analog part of the tuner or of the demod.</para>
|
||||
<para>Possible scales for this metric are:</para>
|
||||
<itemizedlist mark='bullet'>
|
||||
<listitem><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</listitem>
|
||||
<listitem><constant>FE_SCALE_DECIBEL</constant> - signal strength is in 0.0001 dBm units, power measured in miliwatts. This value is generally negative.</listitem>
|
||||
<listitem><constant>FE_SCALE_RELATIVE</constant> - The frontend provides a 0% to 100% measurement for power (actually, 0 to 65535).</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
<section id="DTV-STAT-CNR">
|
||||
<title><constant>DTV_STAT_CNR</constant></title>
|
||||
<para>Indicates the Signal to Noise ratio for the main carrier.</para>
|
||||
<para>Possible scales for this metric are:</para>
|
||||
<itemizedlist mark='bullet'>
|
||||
<listitem><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</listitem>
|
||||
<listitem><constant>FE_SCALE_DECIBEL</constant> - Signal/Noise ratio is in 0.0001 dB units.</listitem>
|
||||
<listitem><constant>FE_SCALE_RELATIVE</constant> - The frontend provides a 0% to 100% measurement for Signal/Noise (actually, 0 to 65535).</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
<section id="DTV-STAT-PRE-ERROR-BIT-COUNT">
|
||||
<title><constant>DTV_STAT_PRE_ERROR_BIT_COUNT</constant></title>
|
||||
<para>Measures the number of bit errors before the forward error correction (FEC) on the inner coding block (before Viterbi, LDPC or other inner code).</para>
|
||||
<para>This measure is taken during the same interval as <constant>DTV_STAT_PRE_TOTAL_BIT_COUNT</constant>.</para>
|
||||
<para>In order to get the BER (Bit Error Rate) measurement, it should be divided by
|
||||
<link linkend="DTV-STAT-PRE-TOTAL-BIT-COUNT"><constant>DTV_STAT_PRE_TOTAL_BIT_COUNT</constant></link>.</para>
|
||||
<para>This measurement is monotonically increased, as the frontend gets more bit count measurements.
|
||||
The frontend may reset it when a channel/transponder is tuned.</para>
|
||||
<para>Possible scales for this metric are:</para>
|
||||
<itemizedlist mark='bullet'>
|
||||
<listitem><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</listitem>
|
||||
<listitem><constant>FE_SCALE_COUNTER</constant> - Number of error bits counted before the inner coding.</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
<section id="DTV-STAT-PRE-TOTAL-BIT-COUNT">
|
||||
<title><constant>DTV_STAT_PRE_TOTAL_BIT_COUNT</constant></title>
|
||||
<para>Measures the amount of bits received before the inner code block, during the same period as
|
||||
<link linkend="DTV-STAT-PRE-ERROR-BIT-COUNT"><constant>DTV_STAT_PRE_ERROR_BIT_COUNT</constant></link> measurement was taken.</para>
|
||||
<para>It should be noticed that this measurement can be smaller than the total amount of bits on the transport stream,
|
||||
as the frontend may need to manually restart the measurement, loosing some data between each measurement interval.</para>
|
||||
<para>This measurement is monotonically increased, as the frontend gets more bit count measurements.
|
||||
The frontend may reset it when a channel/transponder is tuned.</para>
|
||||
<para>Possible scales for this metric are:</para>
|
||||
<itemizedlist mark='bullet'>
|
||||
<listitem><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</listitem>
|
||||
<listitem><constant>FE_SCALE_COUNTER</constant> - Number of bits counted while measuring
|
||||
<link linkend="DTV-STAT-PRE-ERROR-BIT-COUNT"><constant>DTV_STAT_PRE_ERROR_BIT_COUNT</constant></link>.</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
<section id="DTV-STAT-POST-ERROR-BIT-COUNT">
|
||||
<title><constant>DTV_STAT_POST_ERROR_BIT_COUNT</constant></title>
|
||||
<para>Measures the number of bit errors after the forward error correction (FEC) done by inner code block (after Viterbi, LDPC or other inner code).</para>
|
||||
<para>This measure is taken during the same interval as <constant>DTV_STAT_POST_TOTAL_BIT_COUNT</constant>.</para>
|
||||
<para>In order to get the BER (Bit Error Rate) measurement, it should be divided by
|
||||
<link linkend="DTV-STAT-POST-TOTAL-BIT-COUNT"><constant>DTV_STAT_POST_TOTAL_BIT_COUNT</constant></link>.</para>
|
||||
<para>This measurement is monotonically increased, as the frontend gets more bit count measurements.
|
||||
The frontend may reset it when a channel/transponder is tuned.</para>
|
||||
<para>Possible scales for this metric are:</para>
|
||||
<itemizedlist mark='bullet'>
|
||||
<listitem><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</listitem>
|
||||
<listitem><constant>FE_SCALE_COUNTER</constant> - Number of error bits counted after the inner coding.</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
<section id="DTV-STAT-POST-TOTAL-BIT-COUNT">
|
||||
<title><constant>DTV_STAT_POST_TOTAL_BIT_COUNT</constant></title>
|
||||
<para>Measures the amount of bits received after the inner coding, during the same period as
|
||||
<link linkend="DTV-STAT-POST-ERROR-BIT-COUNT"><constant>DTV_STAT_POST_ERROR_BIT_COUNT</constant></link> measurement was taken.</para>
|
||||
<para>It should be noticed that this measurement can be smaller than the total amount of bits on the transport stream,
|
||||
as the frontend may need to manually restart the measurement, loosing some data between each measurement interval.</para>
|
||||
<para>This measurement is monotonically increased, as the frontend gets more bit count measurements.
|
||||
The frontend may reset it when a channel/transponder is tuned.</para>
|
||||
<para>Possible scales for this metric are:</para>
|
||||
<itemizedlist mark='bullet'>
|
||||
<listitem><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</listitem>
|
||||
<listitem><constant>FE_SCALE_COUNTER</constant> - Number of bits counted while measuring
|
||||
<link linkend="DTV-STAT-POST-ERROR-BIT-COUNT"><constant>DTV_STAT_POST_ERROR_BIT_COUNT</constant></link>.</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
<section id="DTV-STAT-ERROR-BLOCK-COUNT">
|
||||
<title><constant>DTV_STAT_ERROR_BLOCK_COUNT</constant></title>
|
||||
<para>Measures the number of block errors after the outer forward error correction coding (after Reed-Solomon or other outer code).</para>
|
||||
<para>This measurement is monotonically increased, as the frontend gets more bit count measurements.
|
||||
The frontend may reset it when a channel/transponder is tuned.</para>
|
||||
<para>Possible scales for this metric are:</para>
|
||||
<itemizedlist mark='bullet'>
|
||||
<listitem><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</listitem>
|
||||
<listitem><constant>FE_SCALE_COUNTER</constant> - Number of error blocks counted after the outer coding.</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
<section id="DTV-STAT-TOTAL-BLOCK-COUNT">
|
||||
<title><constant>DTV-STAT_TOTAL_BLOCK_COUNT</constant></title>
|
||||
<para>Measures the total number of blocks received during the same period as
|
||||
<link linkend="DTV-STAT-ERROR-BLOCK-COUNT"><constant>DTV_STAT_ERROR_BLOCK_COUNT</constant></link> measurement was taken.</para>
|
||||
<para>It can be used to calculate the PER indicator, by dividing
|
||||
<link linkend="DTV-STAT-ERROR-BLOCK-COUNT"><constant>DTV_STAT_ERROR_BLOCK_COUNT</constant></link>
|
||||
by <link linkend="DTV-STAT-TOTAL-BLOCK-COUNT"><constant>DTV-STAT-TOTAL-BLOCK-COUNT</constant></link>.</para>
|
||||
<para>Possible scales for this metric are:</para>
|
||||
<itemizedlist mark='bullet'>
|
||||
<listitem><constant>FE_SCALE_NOT_AVAILABLE</constant> - it failed to measure it, or the measurement was not complete yet.</listitem>
|
||||
<listitem><constant>FE_SCALE_COUNTER</constant> - Number of blocks counted while measuring
|
||||
<link linkend="DTV-STAT-ERROR-BLOCK-COUNT"><constant>DTV_STAT_ERROR_BLOCK_COUNT</constant></link>.</listitem>
|
||||
</itemizedlist>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section id="frontend-property-terrestrial-systems">
|
||||
<title>Properties used on terrestrial delivery systems</title>
|
||||
<section id="dvbt-params">
|
||||
@@ -871,6 +1039,7 @@ enum fe_interleaving {
|
||||
<listitem><para><link linkend="DTV-HIERARCHY"><constant>DTV_HIERARCHY</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-LNA"><constant>DTV_LNA</constant></link></para></listitem>
|
||||
</itemizedlist>
|
||||
<para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
|
||||
</section>
|
||||
<section id="dvbt2-params">
|
||||
<title>DVB-T2 delivery system</title>
|
||||
@@ -895,6 +1064,7 @@ enum fe_interleaving {
|
||||
<listitem><para><link linkend="DTV-STREAM-ID"><constant>DTV_STREAM_ID</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-LNA"><constant>DTV_LNA</constant></link></para></listitem>
|
||||
</itemizedlist>
|
||||
<para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
|
||||
</section>
|
||||
<section id="isdbt">
|
||||
<title>ISDB-T delivery system</title>
|
||||
@@ -948,6 +1118,7 @@ enum fe_interleaving {
|
||||
<listitem><para><link linkend="DTV-ISDBT-LAYER-SEGMENT-COUNT"><constant>DTV_ISDBT_LAYERC_SEGMENT_COUNT</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-ISDBT-LAYER-TIME-INTERLEAVING"><constant>DTV_ISDBT_LAYERC_TIME_INTERLEAVING</constant></link></para></listitem>
|
||||
</itemizedlist>
|
||||
<para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
|
||||
</section>
|
||||
<section id="atsc-params">
|
||||
<title>ATSC delivery system</title>
|
||||
@@ -961,6 +1132,7 @@ enum fe_interleaving {
|
||||
<listitem><para><link linkend="DTV-MODULATION"><constant>DTV_MODULATION</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-BANDWIDTH-HZ"><constant>DTV_BANDWIDTH_HZ</constant></link></para></listitem>
|
||||
</itemizedlist>
|
||||
<para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
|
||||
</section>
|
||||
<section id="atscmh-params">
|
||||
<title>ATSC-MH delivery system</title>
|
||||
@@ -988,6 +1160,7 @@ enum fe_interleaving {
|
||||
<listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE-MODE-C"><constant>DTV_ATSCMH_SCCC_CODE_MODE_C</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-ATSCMH-SCCC-CODE-MODE-D"><constant>DTV_ATSCMH_SCCC_CODE_MODE_D</constant></link></para></listitem>
|
||||
</itemizedlist>
|
||||
<para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
|
||||
</section>
|
||||
<section id="dtmb-params">
|
||||
<title>DTMB delivery system</title>
|
||||
@@ -1007,6 +1180,7 @@ enum fe_interleaving {
|
||||
<listitem><para><link linkend="DTV-INTERLEAVING"><constant>DTV_INTERLEAVING</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-LNA"><constant>DTV_LNA</constant></link></para></listitem>
|
||||
</itemizedlist>
|
||||
<para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
|
||||
</section>
|
||||
</section>
|
||||
<section id="frontend-property-cable-systems">
|
||||
@@ -1028,6 +1202,7 @@ enum fe_interleaving {
|
||||
<listitem><para><link linkend="DTV-INNER-FEC"><constant>DTV_INNER_FEC</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-LNA"><constant>DTV_LNA</constant></link></para></listitem>
|
||||
</itemizedlist>
|
||||
<para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
|
||||
</section>
|
||||
<section id="dvbc-annex-b-params">
|
||||
<title>DVB-C Annex B delivery system</title>
|
||||
@@ -1043,6 +1218,7 @@ enum fe_interleaving {
|
||||
<listitem><para><link linkend="DTV-INVERSION"><constant>DTV_INVERSION</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-LNA"><constant>DTV_LNA</constant></link></para></listitem>
|
||||
</itemizedlist>
|
||||
<para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
|
||||
</section>
|
||||
</section>
|
||||
<section id="frontend-property-satellital-systems">
|
||||
@@ -1062,6 +1238,7 @@ enum fe_interleaving {
|
||||
<listitem><para><link linkend="DTV-VOLTAGE"><constant>DTV_VOLTAGE</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-TONE"><constant>DTV_TONE</constant></link></para></listitem>
|
||||
</itemizedlist>
|
||||
<para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
|
||||
<para>Future implementations might add those two missing parameters:</para>
|
||||
<itemizedlist mark='opencircle'>
|
||||
<listitem><para><link linkend="DTV-DISEQC-MASTER"><constant>DTV_DISEQC_MASTER</constant></link></para></listitem>
|
||||
@@ -1077,6 +1254,7 @@ enum fe_interleaving {
|
||||
<listitem><para><link linkend="DTV-ROLLOFF"><constant>DTV_ROLLOFF</constant></link></para></listitem>
|
||||
<listitem><para><link linkend="DTV-STREAM-ID"><constant>DTV_STREAM_ID</constant></link></para></listitem>
|
||||
</itemizedlist>
|
||||
<para>In addition, the <link linkend="frontend-stat-properties">DTV QoS statistics</link> are also valid.</para>
|
||||
</section>
|
||||
<section id="turbo-params">
|
||||
<title>Turbo code delivery system</title>
|
||||
|
@@ -230,7 +230,7 @@ typedef enum fe_status {
|
||||
<entry align="char">The frontend has found a DVB signal</entry>
|
||||
</row><row>
|
||||
<entry align="char">FE_HAS_VITERBI</entry>
|
||||
<entry align="char">The frontend FEC code is stable</entry>
|
||||
<entry align="char">The frontend FEC inner coding (Viterbi, LDPC or other inner code) is stable</entry>
|
||||
</row><row>
|
||||
<entry align="char">FE_HAS_SYNC</entry>
|
||||
<entry align="char">Syncronization bytes was found</entry>
|
||||
|
@@ -609,7 +609,7 @@ to zero and the <constant>VIDIOC_G_STD</constant>,
|
||||
<para>Applications can make use of the <xref linkend="input-capabilities" /> and
|
||||
<xref linkend="output-capabilities"/> flags to determine whether the video standard ioctls
|
||||
are available for the device.</para>
|
||||
&ENOTTY;.
|
||||
|
||||
<para>See <xref linkend="buffer" /> for a rationale. Probably
|
||||
even USB cameras follow some well known video standard. It might have
|
||||
been better to explicitly indicate elsewhere if a device cannot live
|
||||
|
@@ -2477,6 +2477,22 @@ that used it. It was originally scheduled for removal in 2.6.35.
|
||||
</orderedlist>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<title>V4L2 in Linux 3.9</title>
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>Added timestamp types to
|
||||
<structfield>flags</structfield> field in
|
||||
<structname>v4l2_buffer</structname>. See <xref
|
||||
linkend="buffer-flags" />.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Added <constant>V4L2_EVENT_CTRL_CH_RANGE</constant> control event
|
||||
changes flag. See <xref linkend="changes-flags"/>.</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
</section>
|
||||
|
||||
<section id="other">
|
||||
<title>Relation of V4L2 to other Linux multimedia APIs</title>
|
||||
|
||||
|
@@ -203,29 +203,6 @@ and should not be used in new drivers and applications.</entry>
|
||||
<entry>boolean</entry>
|
||||
<entry>Mirror the picture vertically.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_CID_HCENTER_DEPRECATED</constant> (formerly <constant>V4L2_CID_HCENTER</constant>)</entry>
|
||||
<entry>integer</entry>
|
||||
<entry>Horizontal image centering. This control is
|
||||
deprecated. New drivers and applications should use the <link
|
||||
linkend="camera-controls">Camera class controls</link>
|
||||
<constant>V4L2_CID_PAN_ABSOLUTE</constant>,
|
||||
<constant>V4L2_CID_PAN_RELATIVE</constant> and
|
||||
<constant>V4L2_CID_PAN_RESET</constant> instead.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_CID_VCENTER_DEPRECATED</constant>
|
||||
(formerly <constant>V4L2_CID_VCENTER</constant>)</entry>
|
||||
<entry>integer</entry>
|
||||
<entry>Vertical image centering. Centering is intended to
|
||||
<emphasis>physically</emphasis> adjust cameras. For image cropping see
|
||||
<xref linkend="crop" />, for clipping <xref linkend="overlay" />. This
|
||||
control is deprecated. New drivers and applications should use the
|
||||
<link linkend="camera-controls">Camera class controls</link>
|
||||
<constant>V4L2_CID_TILT_ABSOLUTE</constant>,
|
||||
<constant>V4L2_CID_TILT_RELATIVE</constant> and
|
||||
<constant>V4L2_CID_TILT_RESET</constant> instead.</entry>
|
||||
</row>
|
||||
<row id="v4l2-power-line-frequency">
|
||||
<entry><constant>V4L2_CID_POWER_LINE_FREQUENCY</constant></entry>
|
||||
<entry>enum</entry>
|
||||
|
@@ -477,7 +477,7 @@ rest should be evident.</para>
|
||||
|
||||
<note>
|
||||
<title>Experimental</title>
|
||||
<para>This is an <link linkend="experimental"> experimental </link>
|
||||
<para>This is an <link linkend="experimental">experimental</link>
|
||||
interface and may change in the future.</para>
|
||||
</note>
|
||||
|
||||
@@ -488,7 +488,7 @@ DMA buffer from userspace using a file descriptor previously exported for a
|
||||
different or the same device (known as the importer role), or both. This
|
||||
section describes the DMABUF importer role API in V4L2.</para>
|
||||
|
||||
<para>Refer to <link linked="vidioc-expbuf"> DMABUF exporting </link> for
|
||||
<para>Refer to <link linkend="vidioc-expbuf">DMABUF exporting</link> for
|
||||
details about exporting V4L2 buffers as DMABUF file descriptors.</para>
|
||||
|
||||
<para>Input and output devices support the streaming I/O method when the
|
||||
@@ -741,17 +741,19 @@ applications when an output stream.</entry>
|
||||
<entry>struct timeval</entry>
|
||||
<entry><structfield>timestamp</structfield></entry>
|
||||
<entry></entry>
|
||||
<entry><para>For input streams this is the
|
||||
system time (as returned by the <function>gettimeofday()</function>
|
||||
function) when the first data byte was captured. For output streams
|
||||
the data will not be displayed before this time, secondary to the
|
||||
nominal frame rate determined by the current video standard in
|
||||
enqueued order. Applications can for example zero this field to
|
||||
display frames as soon as possible. The driver stores the time at
|
||||
which the first data byte was actually sent out in the
|
||||
<structfield>timestamp</structfield> field. This permits
|
||||
applications to monitor the drift between the video and system
|
||||
clock.</para></entry>
|
||||
<entry><para>For input streams this is time when the first data
|
||||
byte was captured, as returned by the
|
||||
<function>clock_gettime()</function> function for the relevant
|
||||
clock id; see <constant>V4L2_BUF_FLAG_TIMESTAMP_*</constant> in
|
||||
<xref linkend="buffer-flags" />. For output streams the data
|
||||
will not be displayed before this time, secondary to the nominal
|
||||
frame rate determined by the current video standard in enqueued
|
||||
order. Applications can for example zero this field to display
|
||||
frames as soon as possible. The driver stores the time at which
|
||||
the first data byte was actually sent out in the
|
||||
<structfield>timestamp</structfield> field. This permits
|
||||
applications to monitor the drift between the video and system
|
||||
clock.</para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>&v4l2-timecode;</entry>
|
||||
@@ -903,7 +905,7 @@ should set this to 0.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry></entry>
|
||||
<entry>__unsigned long</entry>
|
||||
<entry>unsigned long</entry>
|
||||
<entry><structfield>userptr</structfield></entry>
|
||||
<entry>When the memory type in the containing &v4l2-buffer; is
|
||||
<constant>V4L2_MEMORY_USERPTR</constant>, this is a userspace
|
||||
@@ -1114,6 +1116,35 @@ Typically applications shall use this flag for output buffers if the data
|
||||
in this buffer has not been created by the CPU but by some DMA-capable unit,
|
||||
in which case caches have not been used.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_BUF_FLAG_TIMESTAMP_MASK</constant></entry>
|
||||
<entry>0xe000</entry>
|
||||
<entry>Mask for timestamp types below. To test the
|
||||
timestamp type, mask out bits not belonging to timestamp
|
||||
type by performing a logical and operation with buffer
|
||||
flags and timestamp mask.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_BUF_FLAG_TIMESTAMP_UNKNOWN</constant></entry>
|
||||
<entry>0x0000</entry>
|
||||
<entry>Unknown timestamp type. This type is used by
|
||||
drivers before Linux 3.9 and may be either monotonic (see
|
||||
below) or realtime (wall clock). Monotonic clock has been
|
||||
favoured in embedded systems whereas most of the drivers
|
||||
use the realtime clock. Either kinds of timestamps are
|
||||
available in user space via
|
||||
<function>clock_gettime(2)</function> using clock IDs
|
||||
<constant>CLOCK_MONOTONIC</constant> and
|
||||
<constant>CLOCK_REALTIME</constant>, respectively.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_BUF_FLAG_TIMESTAMP_MONOTONIC</constant></entry>
|
||||
<entry>0x2000</entry>
|
||||
<entry>The buffer timestamp has been taken from the
|
||||
<constant>CLOCK_MONOTONIC</constant> clock. To access the
|
||||
same clock outside V4L2, use
|
||||
<function>clock_gettime(2)</function> .</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
|
@@ -6,7 +6,7 @@
|
||||
<refnamediv>
|
||||
<refname id="V4L2-PIX-FMT-NV12M"><constant>V4L2_PIX_FMT_NV12M</constant></refname>
|
||||
<refname id="V4L2-PIX-FMT-NV21M"><constant>V4L2_PIX_FMT_NV21M</constant></refname>
|
||||
<refname id="V4L2-PIX-FMT-NV12MT_16X16"><constant>V4L2_PIX_FMT_NV12MT_16X16</constant></refname>
|
||||
<refname id="V4L2-PIX-FMT-NV12MT-16X16"><constant>V4L2_PIX_FMT_NV12MT_16X16</constant></refname>
|
||||
<refpurpose>Variation of <constant>V4L2_PIX_FMT_NV12</constant> and <constant>V4L2_PIX_FMT_NV21</constant> with planes
|
||||
non contiguous in memory. </refpurpose>
|
||||
</refnamediv>
|
||||
|
34
Documentation/DocBook/media/v4l/pixfmt-srggb10alaw8.xml
Normal file
34
Documentation/DocBook/media/v4l/pixfmt-srggb10alaw8.xml
Normal file
@@ -0,0 +1,34 @@
|
||||
<refentry>
|
||||
<refmeta>
|
||||
<refentrytitle>
|
||||
V4L2_PIX_FMT_SBGGR10ALAW8 ('aBA8'),
|
||||
V4L2_PIX_FMT_SGBRG10ALAW8 ('aGA8'),
|
||||
V4L2_PIX_FMT_SGRBG10ALAW8 ('agA8'),
|
||||
V4L2_PIX_FMT_SRGGB10ALAW8 ('aRA8'),
|
||||
</refentrytitle>
|
||||
&manvol;
|
||||
</refmeta>
|
||||
<refnamediv>
|
||||
<refname id="V4L2-PIX-FMT-SBGGR10ALAW8">
|
||||
<constant>V4L2_PIX_FMT_SBGGR10ALAW8</constant>
|
||||
</refname>
|
||||
<refname id="V4L2-PIX-FMT-SGBRG10ALAW8">
|
||||
<constant>V4L2_PIX_FMT_SGBRG10ALAW8</constant>
|
||||
</refname>
|
||||
<refname id="V4L2-PIX-FMT-SGRBG10ALAW8">
|
||||
<constant>V4L2_PIX_FMT_SGRBG10ALAW8</constant>
|
||||
</refname>
|
||||
<refname id="V4L2-PIX-FMT-SRGGB10ALAW8">
|
||||
<constant>V4L2_PIX_FMT_SRGGB10ALAW8</constant>
|
||||
</refname>
|
||||
<refpurpose>10-bit Bayer formats compressed to 8 bits</refpurpose>
|
||||
</refnamediv>
|
||||
<refsect1>
|
||||
<title>Description</title>
|
||||
<para>The following four pixel formats are raw sRGB / Bayer
|
||||
formats with 10 bits per color compressed to 8 bits each,
|
||||
using the A-LAW algorithm. Each color component consumes 8
|
||||
bits of memory. In other respects this format is similar to
|
||||
<xref linkend="V4L2-PIX-FMT-SRGGB8"></xref>.</para>
|
||||
</refsect1>
|
||||
</refentry>
|
62
Documentation/DocBook/media/v4l/pixfmt-uv8.xml
Normal file
62
Documentation/DocBook/media/v4l/pixfmt-uv8.xml
Normal file
@@ -0,0 +1,62 @@
|
||||
<refentry id="V4L2-PIX-FMT-UV8">
|
||||
<refmeta>
|
||||
<refentrytitle>V4L2_PIX_FMT_UV8 ('UV8')</refentrytitle>
|
||||
&manvol;
|
||||
</refmeta>
|
||||
<refnamediv>
|
||||
<refname><constant>V4L2_PIX_FMT_UV8</constant></refname>
|
||||
<refpurpose>UV plane interleaved</refpurpose>
|
||||
</refnamediv>
|
||||
<refsect1>
|
||||
<title>Description</title>
|
||||
<para>In this format there is no Y plane, Only CbCr plane. ie
|
||||
(UV interleaved)</para>
|
||||
<example>
|
||||
<title>
|
||||
<constant>V4L2_PIX_FMT_UV8</constant>
|
||||
pixel image
|
||||
</title>
|
||||
|
||||
<formalpara>
|
||||
<title>Byte Order.</title>
|
||||
<para>Each cell is one byte.
|
||||
<informaltable frame="none">
|
||||
<tgroup cols="5" align="center">
|
||||
<colspec align="left" colwidth="2*" />
|
||||
<tbody valign="top">
|
||||
<row>
|
||||
<entry>start + 0:</entry>
|
||||
<entry>Cb<subscript>00</subscript></entry>
|
||||
<entry>Cr<subscript>00</subscript></entry>
|
||||
<entry>Cb<subscript>01</subscript></entry>
|
||||
<entry>Cr<subscript>01</subscript></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>start + 4:</entry>
|
||||
<entry>Cb<subscript>10</subscript></entry>
|
||||
<entry>Cr<subscript>10</subscript></entry>
|
||||
<entry>Cb<subscript>11</subscript></entry>
|
||||
<entry>Cr<subscript>11</subscript></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>start + 8:</entry>
|
||||
<entry>Cb<subscript>20</subscript></entry>
|
||||
<entry>Cr<subscript>20</subscript></entry>
|
||||
<entry>Cb<subscript>21</subscript></entry>
|
||||
<entry>Cr<subscript>21</subscript></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>start + 12:</entry>
|
||||
<entry>Cb<subscript>30</subscript></entry>
|
||||
<entry>Cr<subscript>30</subscript></entry>
|
||||
<entry>Cb<subscript>31</subscript></entry>
|
||||
<entry>Cr<subscript>31</subscript></entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</informaltable>
|
||||
</para>
|
||||
</formalpara>
|
||||
</example>
|
||||
</refsect1>
|
||||
</refentry>
|
@@ -673,6 +673,7 @@ access the palette, this must be done with ioctls of the Linux framebuffer API.<
|
||||
&sub-srggb8;
|
||||
&sub-sbggr16;
|
||||
&sub-srggb10;
|
||||
&sub-srggb10alaw8;
|
||||
&sub-srggb10dpcm8;
|
||||
&sub-srggb12;
|
||||
</section>
|
||||
@@ -701,6 +702,7 @@ information.</para>
|
||||
&sub-y12;
|
||||
&sub-y10b;
|
||||
&sub-y16;
|
||||
&sub-uv8;
|
||||
&sub-yuyv;
|
||||
&sub-uyvy;
|
||||
&sub-yvyu;
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -139,6 +139,16 @@ structs, ioctls) must be noted in more detail in the history chapter
|
||||
(compat.xml), along with the possible impact on existing drivers and
|
||||
applications. -->
|
||||
|
||||
<revision>
|
||||
<revnumber>3.9</revnumber>
|
||||
<date>2012-12-03</date>
|
||||
<authorinitials>sa, sn</authorinitials>
|
||||
<revremark>Added timestamp types to v4l2_buffer.
|
||||
Added <constant>V4L2_EVENT_CTRL_CH_RANGE</constant> control
|
||||
event changes flag, see <xref linkend="changes-flags"/>.
|
||||
</revremark>
|
||||
</revision>
|
||||
|
||||
<revision>
|
||||
<revnumber>3.6</revnumber>
|
||||
<date>2012-07-02</date>
|
||||
@@ -472,7 +482,7 @@ and discussions on the V4L mailing list.</revremark>
|
||||
</partinfo>
|
||||
|
||||
<title>Video for Linux Two API Specification</title>
|
||||
<subtitle>Revision 3.6</subtitle>
|
||||
<subtitle>Revision 3.9</subtitle>
|
||||
|
||||
<chapter id="common">
|
||||
&sub-common;
|
||||
|
@@ -261,6 +261,12 @@
|
||||
<entry>This control event was triggered because the control flags
|
||||
changed.</entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry><constant>V4L2_EVENT_CTRL_CH_RANGE</constant></entry>
|
||||
<entry>0x0004</entry>
|
||||
<entry>This control event was triggered because the minimum,
|
||||
maximum, step or the default value of the control changed.</entry>
|
||||
</row>
|
||||
</tbody>
|
||||
</tgroup>
|
||||
</table>
|
||||
|
@@ -83,15 +83,14 @@ descriptor. The application may pass it to other DMABUF-aware devices. Refer to
|
||||
<link linkend="dmabuf">DMABUF importing</link> for details about importing
|
||||
DMABUF files into V4L2 nodes. It is recommended to close a DMABUF file when it
|
||||
is no longer used to allow the associated memory to be reclaimed. </para>
|
||||
|
||||
</refsect1>
|
||||
<refsect1>
|
||||
<section>
|
||||
<title>Examples</title>
|
||||
|
||||
<example>
|
||||
<title>Exporting a buffer.</title>
|
||||
<programlisting>
|
||||
<refsect1>
|
||||
<title>Examples</title>
|
||||
|
||||
<example>
|
||||
<title>Exporting a buffer.</title>
|
||||
<programlisting>
|
||||
int buffer_export(int v4lfd, &v4l2-buf-type; bt, int index, int *dmafd)
|
||||
{
|
||||
&v4l2-exportbuffer; expbuf;
|
||||
@@ -108,12 +107,12 @@ int buffer_export(int v4lfd, &v4l2-buf-type; bt, int index, int *dmafd)
|
||||
|
||||
return 0;
|
||||
}
|
||||
</programlisting>
|
||||
</example>
|
||||
</programlisting>
|
||||
</example>
|
||||
|
||||
<example>
|
||||
<title>Exporting a buffer using the multi-planar API.</title>
|
||||
<programlisting>
|
||||
<example>
|
||||
<title>Exporting a buffer using the multi-planar API.</title>
|
||||
<programlisting>
|
||||
int buffer_export_mp(int v4lfd, &v4l2-buf-type; bt, int index,
|
||||
int dmafd[], int n_planes)
|
||||
{
|
||||
@@ -137,12 +136,9 @@ int buffer_export_mp(int v4lfd, &v4l2-buf-type; bt, int index,
|
||||
|
||||
return 0;
|
||||
}
|
||||
</programlisting>
|
||||
</example>
|
||||
</section>
|
||||
</refsect1>
|
||||
</programlisting>
|
||||
</example>
|
||||
|
||||
<refsect1>
|
||||
<table pgwide="1" frame="none" id="v4l2-exportbuffer">
|
||||
<title>struct <structname>v4l2_exportbuffer</structname></title>
|
||||
<tgroup cols="3">
|
||||
|
@@ -64,7 +64,9 @@ return an &EINVAL;. When the <structfield>value</structfield> is out
|
||||
of bounds drivers can choose to take the closest valid value or return
|
||||
an &ERANGE;, whatever seems more appropriate. However,
|
||||
<constant>VIDIOC_S_CTRL</constant> is a write-only ioctl, it does not
|
||||
return the actual new value.</para>
|
||||
return the actual new value. If the <structfield>value</structfield>
|
||||
is inappropriate for the control (e.g. if it refers to an unsupported
|
||||
menu index of a menu control), then &EINVAL; is returned as well.</para>
|
||||
|
||||
<para>These ioctls work only with user controls. For other
|
||||
control classes the &VIDIOC-G-EXT-CTRLS;, &VIDIOC-S-EXT-CTRLS; or
|
||||
@@ -99,7 +101,9 @@ application.</entry>
|
||||
<term><errorcode>EINVAL</errorcode></term>
|
||||
<listitem>
|
||||
<para>The &v4l2-control; <structfield>id</structfield> is
|
||||
invalid.</para>
|
||||
invalid or the <structfield>value</structfield> is inappropriate for
|
||||
the given control (i.e. if a menu item is selected that is not supported
|
||||
by the driver according to &VIDIOC-QUERYMENU;).</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
|
@@ -106,7 +106,9 @@ value or if an error is returned.</para>
|
||||
&EINVAL;. When the value is out of bounds drivers can choose to take
|
||||
the closest valid value or return an &ERANGE;, whatever seems more
|
||||
appropriate. In the first case the new value is set in
|
||||
&v4l2-ext-control;.</para>
|
||||
&v4l2-ext-control;. If the new control value is inappropriate (e.g. the
|
||||
given menu index is not supported by the menu control), then this will
|
||||
also result in an &EINVAL; error.</para>
|
||||
|
||||
<para>The driver will only set/get these controls if all control
|
||||
values are correct. This prevents the situation where only some of the
|
||||
@@ -199,13 +201,46 @@ also be zero.</entry>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
<entry><structfield>error_idx</structfield></entry>
|
||||
<entry>Set by the driver in case of an error. If it is equal
|
||||
to <structfield>count</structfield>, then no actual changes were made to
|
||||
controls. In other words, the error was not associated with setting a particular
|
||||
control. If it is another value, then only the controls up to <structfield>error_idx-1</structfield>
|
||||
were modified and control <structfield>error_idx</structfield> is the one that
|
||||
caused the error. The <structfield>error_idx</structfield> value is undefined
|
||||
if the ioctl returned 0 (success).</entry>
|
||||
<entry><para>Set by the driver in case of an error. If the error is
|
||||
associated with a particular control, then <structfield>error_idx</structfield>
|
||||
is set to the index of that control. If the error is not related to a specific
|
||||
control, or the validation step failed (see below), then
|
||||
<structfield>error_idx</structfield> is set to <structfield>count</structfield>.
|
||||
The value is undefined if the ioctl returned 0 (success).</para>
|
||||
|
||||
<para>Before controls are read from/written to hardware a validation step
|
||||
takes place: this checks if all controls in the list are valid controls,
|
||||
if no attempt is made to write to a read-only control or read from a write-only
|
||||
control, and any other up-front checks that can be done without accessing the
|
||||
hardware. The exact validations done during this step are driver dependent
|
||||
since some checks might require hardware access for some devices, thus making
|
||||
it impossible to do those checks up-front. However, drivers should make a
|
||||
best-effort to do as many up-front checks as possible.</para>
|
||||
|
||||
<para>This check is done to avoid leaving the hardware in an inconsistent state due
|
||||
to easy-to-avoid problems. But it leads to another problem: the application needs to
|
||||
know whether an error came from the validation step (meaning that the hardware
|
||||
was not touched) or from an error during the actual reading from/writing to hardware.</para>
|
||||
|
||||
<para>The, in hindsight quite poor, solution for that is to set <structfield>error_idx</structfield>
|
||||
to <structfield>count</structfield> if the validation failed. This has the
|
||||
unfortunate side-effect that it is not possible to see which control failed the
|
||||
validation. If the validation was successful and the error happened while
|
||||
accessing the hardware, then <structfield>error_idx</structfield> is less than
|
||||
<structfield>count</structfield> and only the controls up to
|
||||
<structfield>error_idx-1</structfield> were read or written correctly, and the
|
||||
state of the remaining controls is undefined.</para>
|
||||
|
||||
<para>Since <constant>VIDIOC_TRY_EXT_CTRLS</constant> does not access hardware
|
||||
there is also no need to handle the validation step in this special way,
|
||||
so <structfield>error_idx</structfield> will just be set to the control that
|
||||
failed the validation step instead of to <structfield>count</structfield>.
|
||||
This means that if <constant>VIDIOC_S_EXT_CTRLS</constant> fails with
|
||||
<structfield>error_idx</structfield> set to <structfield>count</structfield>,
|
||||
then you can call <constant>VIDIOC_TRY_EXT_CTRLS</constant> to try to discover
|
||||
the actual control that failed the validation step. Unfortunately, there
|
||||
is no <constant>TRY</constant> equivalent for <constant>VIDIOC_G_EXT_CTRLS</constant>.
|
||||
</para></entry>
|
||||
</row>
|
||||
<row>
|
||||
<entry>__u32</entry>
|
||||
@@ -298,8 +333,10 @@ These controls are described in <xref
|
||||
<term><errorcode>EINVAL</errorcode></term>
|
||||
<listitem>
|
||||
<para>The &v4l2-ext-control; <structfield>id</structfield>
|
||||
is invalid or the &v4l2-ext-controls;
|
||||
<structfield>ctrl_class</structfield> is invalid. This error code is
|
||||
is invalid, the &v4l2-ext-controls;
|
||||
<structfield>ctrl_class</structfield> is invalid, or the &v4l2-ext-control;
|
||||
<structfield>value</structfield> was inappropriate (e.g. the given menu
|
||||
index is not supported by the driver). This error code is
|
||||
also returned by the <constant>VIDIOC_S_EXT_CTRLS</constant> and
|
||||
<constant>VIDIOC_TRY_EXT_CTRLS</constant> ioctls if two or more
|
||||
control values are in conflict.</para>
|
||||
|
@@ -76,7 +76,7 @@ make sure the strings are properly NUL-terminated.</para></entry>
|
||||
<row>
|
||||
<entry>__u8</entry>
|
||||
<entry><structfield>card</structfield>[32]</entry>
|
||||
<entry>Name of the device, a NUL-terminated ASCII string.
|
||||
<entry>Name of the device, a NUL-terminated UTF-8 string.
|
||||
For example: "Yoyodyne TV/FM". One driver may support different brands
|
||||
or models of video hardware. This information is intended for users,
|
||||
for example in a menu of available devices. Since multiple TV cards of
|
||||
|
@@ -22,6 +22,7 @@
|
||||
|
||||
<!-- LinuxTV v4l-dvb repository. -->
|
||||
<!ENTITY v4l-dvb "<ulink url='http://linuxtv.org/repo/'>http://linuxtv.org/repo/</ulink>">
|
||||
<!ENTITY dash-ent-10 "<entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry><entry>-</entry>">
|
||||
]>
|
||||
|
||||
<book id="media_api">
|
||||
|
Reference in New Issue
Block a user