123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- <refentry id="vidioc-g-modulator">
- <refmeta>
- <refentrytitle>ioctl VIDIOC_G_MODULATOR, VIDIOC_S_MODULATOR</refentrytitle>
- &manvol;
- </refmeta>
- <refnamediv>
- <refname>VIDIOC_G_MODULATOR</refname>
- <refname>VIDIOC_S_MODULATOR</refname>
- <refpurpose>Get or set modulator attributes</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_modulator
- *<parameter>argp</parameter></paramdef>
- </funcprototype>
- </funcsynopsis>
- <funcsynopsis>
- <funcprototype>
- <funcdef>int <function>ioctl</function></funcdef>
- <paramdef>int <parameter>fd</parameter></paramdef>
- <paramdef>int <parameter>request</parameter></paramdef>
- <paramdef>const struct v4l2_modulator
- *<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_MODULATOR, VIDIOC_S_MODULATOR</para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><parameter>argp</parameter></term>
- <listitem>
- <para></para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect1>
- <refsect1>
- <title>Description</title>
- <para>To query the attributes of a modulator applications initialize
- the <structfield>index</structfield> field and zero out the
- <structfield>reserved</structfield> array of a &v4l2-modulator; and
- call the <constant>VIDIOC_G_MODULATOR</constant> ioctl with a pointer
- to this structure. Drivers fill the rest of the structure or return an
- &EINVAL; when the index is out of bounds. To enumerate all modulators
- applications shall begin at index zero, incrementing by one until the
- driver returns <errorcode>EINVAL</errorcode>.</para>
- <para>Modulators have two writable properties, an audio
- modulation set and the radio frequency. To change the modulated audio
- subprograms, applications initialize the <structfield>index
- </structfield> and <structfield>txsubchans</structfield> fields and the
- <structfield>reserved</structfield> array and call the
- <constant>VIDIOC_S_MODULATOR</constant> ioctl. Drivers may choose a
- different audio modulation if the request cannot be satisfied. However
- this is a write-only ioctl, it does not return the actual audio
- modulation selected.</para>
- <para><link linkend="sdr">SDR</link> specific modulator types are
- <constant>V4L2_TUNER_SDR</constant> and <constant>V4L2_TUNER_RF</constant>.
- For SDR devices <structfield>txsubchans</structfield> field must be
- initialized to zero.
- The term 'modulator' means SDR transmitter in this context.</para>
- <para>To change the radio frequency the &VIDIOC-S-FREQUENCY; ioctl
- is available.</para>
- <table pgwide="1" frame="none" id="v4l2-modulator">
- <title>struct <structname>v4l2_modulator</structname></title>
- <tgroup cols="3">
- &cs-str;
- <tbody valign="top">
- <row>
- <entry>__u32</entry>
- <entry><structfield>index</structfield></entry>
- <entry>Identifies the modulator, set by the
- application.</entry>
- </row>
- <row>
- <entry>__u8</entry>
- <entry><structfield>name</structfield>[32]</entry>
- <entry>Name of the modulator, a NUL-terminated ASCII
- string. This information is intended for the user.</entry>
- </row>
- <row>
- <entry>__u32</entry>
- <entry><structfield>capability</structfield></entry>
- <entry>Modulator capability flags. No flags are defined
- for this field, the tuner flags in &v4l2-tuner;
- are used accordingly. The audio flags indicate the ability
- to encode audio subprograms. They will <emphasis>not</emphasis>
- change for example with the current video standard.</entry>
- </row>
- <row>
- <entry>__u32</entry>
- <entry><structfield>rangelow</structfield></entry>
- <entry>The lowest tunable frequency in units of 62.5
- KHz, or if the <structfield>capability</structfield> flag
- <constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5
- Hz, or if the <structfield>capability</structfield> flag
- <constant>V4L2_TUNER_CAP_1HZ</constant> is set, in units of 1 Hz.</entry>
- </row>
- <row>
- <entry>__u32</entry>
- <entry><structfield>rangehigh</structfield></entry>
- <entry>The highest tunable frequency in units of 62.5
- KHz, or if the <structfield>capability</structfield> flag
- <constant>V4L2_TUNER_CAP_LOW</constant> is set, in units of 62.5
- Hz, or if the <structfield>capability</structfield> flag
- <constant>V4L2_TUNER_CAP_1HZ</constant> is set, in units of 1 Hz.</entry>
- </row>
- <row>
- <entry>__u32</entry>
- <entry><structfield>txsubchans</structfield></entry>
- <entry>With this field applications can determine how
- audio sub-carriers shall be modulated. It contains a set of flags as
- defined in <xref linkend="modulator-txsubchans" />. Note the tuner
- <structfield>rxsubchans</structfield> flags are reused, but the
- semantics are different. Video output devices are assumed to have an
- analog or PCM audio input with 1-3 channels. The
- <structfield>txsubchans</structfield> flags select one or more
- channels for modulation, together with some audio subprogram
- indicator, for example a stereo pilot tone.</entry>
- </row>
- <row>
- <entry>__u32</entry>
- <entry><structfield>type</structfield></entry>
- <entry spanname="hspan">Type of the modulator, see <xref
- linkend="v4l2-tuner-type" />.</entry>
- </row>
- <row>
- <entry>__u32</entry>
- <entry><structfield>reserved</structfield>[3]</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="modulator-txsubchans">
- <title>Modulator Audio Transmission Flags</title>
- <tgroup cols="3">
- &cs-def;
- <tbody valign="top">
- <row>
- <entry><constant>V4L2_TUNER_SUB_MONO</constant></entry>
- <entry>0x0001</entry>
- <entry>Modulate channel 1 as mono audio, when the input
- has more channels, a down-mix of channel 1 and 2. This flag does not
- combine with <constant>V4L2_TUNER_SUB_STEREO</constant> or
- <constant>V4L2_TUNER_SUB_LANG1</constant>.</entry>
- </row>
- <row>
- <entry><constant>V4L2_TUNER_SUB_STEREO</constant></entry>
- <entry>0x0002</entry>
- <entry>Modulate channel 1 and 2 as left and right
- channel of a stereo audio signal. When the input has only one channel
- or two channels and <constant>V4L2_TUNER_SUB_SAP</constant> is also
- set, channel 1 is encoded as left and right channel. This flag does
- not combine with <constant>V4L2_TUNER_SUB_MONO</constant> or
- <constant>V4L2_TUNER_SUB_LANG1</constant>. When the driver does not
- support stereo audio it shall fall back to mono.</entry>
- </row>
- <row>
- <entry><constant>V4L2_TUNER_SUB_LANG1</constant></entry>
- <entry>0x0008</entry>
- <entry>Modulate channel 1 and 2 as primary and secondary
- language of a bilingual audio signal. When the input has only one
- channel it is used for both languages. It is not possible to encode
- the primary or secondary language only. This flag does not combine
- with <constant>V4L2_TUNER_SUB_MONO</constant>,
- <constant>V4L2_TUNER_SUB_STEREO</constant> or
- <constant>V4L2_TUNER_SUB_SAP</constant>. If the hardware does not
- support the respective audio matrix, or the current video standard
- does not permit bilingual audio the
- <constant>VIDIOC_S_MODULATOR</constant> ioctl shall return an &EINVAL;
- and the driver shall fall back to mono or stereo mode.</entry>
- </row>
- <row>
- <entry><constant>V4L2_TUNER_SUB_LANG2</constant></entry>
- <entry>0x0004</entry>
- <entry>Same effect as
- <constant>V4L2_TUNER_SUB_SAP</constant>.</entry>
- </row>
- <row>
- <entry><constant>V4L2_TUNER_SUB_SAP</constant></entry>
- <entry>0x0004</entry>
- <entry>When combined with <constant>V4L2_TUNER_SUB_MONO
- </constant> the first channel is encoded as mono audio, the last
- channel as Second Audio Program. When the input has only one channel
- it is used for both audio tracks. When the input has three channels
- the mono track is a down-mix of channel 1 and 2. When combined with
- <constant>V4L2_TUNER_SUB_STEREO</constant> channel 1 and 2 are
- encoded as left and right stereo audio, channel 3 as Second Audio
- Program. When the input has only two channels, the first is encoded as
- left and right channel and the second as SAP. When the input has only
- one channel it is used for all audio tracks. It is not possible to
- encode a Second Audio Program only. This flag must combine with
- <constant>V4L2_TUNER_SUB_MONO</constant> or
- <constant>V4L2_TUNER_SUB_STEREO</constant>. If the hardware does not
- support the respective audio matrix, or the current video standard
- does not permit SAP the <constant>VIDIOC_S_MODULATOR</constant> ioctl
- shall return an &EINVAL; and driver shall fall back to mono or stereo
- mode.</entry>
- </row>
- <row>
- <entry><constant>V4L2_TUNER_SUB_RDS</constant></entry>
- <entry>0x0010</entry>
- <entry>Enable the RDS encoder for a radio FM transmitter.</entry>
- </row>
- </tbody>
- </tgroup>
- </table>
- </refsect1>
- <refsect1>
- &return-value;
- <variablelist>
- <varlistentry>
- <term><errorcode>EINVAL</errorcode></term>
- <listitem>
- <para>The &v4l2-modulator;
- <structfield>index</structfield> is out of bounds.</para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect1>
- </refentry>
|