Merge remote-tracking branches 'regulator/fix/88pm800', 'regulator/fix/max8973',...
[linux-drm-fsl-dcu.git] / Documentation / DocBook / media / dvb / audio.xml
1 <title>DVB Audio Device</title>
2 <para>The DVB audio device controls the MPEG2 audio decoder of the DVB hardware. It
3 can be accessed through <constant>/dev/dvb/adapter?/audio?</constant>. Data types and and
4 ioctl definitions can be accessed by including <constant>linux/dvb/audio.h</constant> in your
5 application.
6 </para>
7 <para>Please note that some DVB cards don&#8217;t have their own MPEG decoder, which results in
8 the omission of the audio and video device.
9 </para>
10 <para>
11 These ioctls were also used by V4L2 to control MPEG decoders implemented in V4L2. The use
12 of these ioctls for that purpose has been made obsolete and proper V4L2 ioctls or controls
13 have been created to replace that functionality.</para>
14
15 <section id="audio_data_types">
16 <title>Audio Data Types</title>
17 <para>This section describes the structures, data types and defines used when talking to the
18 audio device.
19 </para>
20
21 <section id="audio-stream-source-t">
22 <title>audio_stream_source_t</title>
23 <para>The audio stream source is set through the AUDIO_SELECT_SOURCE call and can take
24 the following values, depending on whether we are replaying from an internal (demux) or
25 external (user write) source.
26 </para>
27 <programlisting>
28 typedef enum {
29         AUDIO_SOURCE_DEMUX,
30         AUDIO_SOURCE_MEMORY
31 } audio_stream_source_t;
32 </programlisting>
33 <para>AUDIO_SOURCE_DEMUX selects the demultiplexer (fed either by the frontend or the
34 DVR device) as the source of the video stream. If AUDIO_SOURCE_MEMORY
35 is selected the stream comes from the application through the <constant>write()</constant> system
36 call.
37 </para>
38
39 </section>
40 <section id="audio-play-state-t">
41 <title>audio_play_state_t</title>
42 <para>The following values can be returned by the AUDIO_GET_STATUS call representing the
43 state of audio playback.
44 </para>
45 <programlisting>
46 typedef enum {
47         AUDIO_STOPPED,
48         AUDIO_PLAYING,
49         AUDIO_PAUSED
50 } audio_play_state_t;
51 </programlisting>
52
53 </section>
54 <section id="audio-channel-select-t">
55 <title>audio_channel_select_t</title>
56 <para>The audio channel selected via AUDIO_CHANNEL_SELECT is determined by the
57 following values.
58 </para>
59 <programlisting>
60 typedef enum {
61         AUDIO_STEREO,
62         AUDIO_MONO_LEFT,
63         AUDIO_MONO_RIGHT,
64         AUDIO_MONO,
65         AUDIO_STEREO_SWAPPED
66 } audio_channel_select_t;
67 </programlisting>
68
69 </section>
70 <section id="audio-status">
71 <title>struct audio_status</title>
72 <para>The AUDIO_GET_STATUS call returns the following structure informing about various
73 states of the playback operation.
74 </para>
75 <programlisting>
76 typedef struct audio_status {
77         boolean AV_sync_state;
78         boolean mute_state;
79         audio_play_state_t play_state;
80         audio_stream_source_t stream_source;
81         audio_channel_select_t channel_select;
82         boolean bypass_mode;
83         audio_mixer_t mixer_state;
84 } audio_status_t;
85 </programlisting>
86
87 </section>
88 <section id="audio-mixer">
89 <title>struct audio_mixer</title>
90 <para>The following structure is used by the AUDIO_SET_MIXER call to set the audio
91 volume.
92 </para>
93 <programlisting>
94 typedef struct audio_mixer {
95         unsigned int volume_left;
96         unsigned int volume_right;
97 } audio_mixer_t;
98 </programlisting>
99
100 </section>
101 <section id="audio_encodings">
102 <title>audio encodings</title>
103 <para>A call to AUDIO_GET_CAPABILITIES returns an unsigned integer with the following
104 bits set according to the hardwares capabilities.
105 </para>
106 <programlisting>
107  #define AUDIO_CAP_DTS    1
108  #define AUDIO_CAP_LPCM   2
109  #define AUDIO_CAP_MP1    4
110  #define AUDIO_CAP_MP2    8
111  #define AUDIO_CAP_MP3   16
112  #define AUDIO_CAP_AAC   32
113  #define AUDIO_CAP_OGG   64
114  #define AUDIO_CAP_SDDS 128
115  #define AUDIO_CAP_AC3  256
116 </programlisting>
117
118 </section>
119 <section id="audio-karaoke">
120 <title>struct audio_karaoke</title>
121 <para>The ioctl AUDIO_SET_KARAOKE uses the following format:
122 </para>
123 <programlisting>
124 typedef
125 struct audio_karaoke {
126         int vocal1;
127         int vocal2;
128         int melody;
129 } audio_karaoke_t;
130 </programlisting>
131 <para>If Vocal1 or Vocal2 are non-zero, they get mixed into left and right t at 70% each. If both,
132 Vocal1 and Vocal2 are non-zero, Vocal1 gets mixed into the left channel and Vocal2 into the
133 right channel at 100% each. Ff Melody is non-zero, the melody channel gets mixed into left
134 and right.
135 </para>
136
137 </section>
138 <section id="audio-attributes-t">
139 <title>audio attributes</title>
140 <para>The following attributes can be set by a call to AUDIO_SET_ATTRIBUTES:
141 </para>
142 <programlisting>
143  typedef uint16_t audio_attributes_t;
144  /&#x22C6;   bits: descr. &#x22C6;/
145  /&#x22C6;   15-13 audio coding mode (0=ac3, 2=mpeg1, 3=mpeg2ext, 4=LPCM, 6=DTS, &#x22C6;/
146  /&#x22C6;   12    multichannel extension &#x22C6;/
147  /&#x22C6;   11-10 audio type (0=not spec, 1=language included) &#x22C6;/
148  /&#x22C6;    9- 8 audio application mode (0=not spec, 1=karaoke, 2=surround) &#x22C6;/
149  /&#x22C6;    7- 6 Quantization / DRC (mpeg audio: 1=DRC exists)(lpcm: 0=16bit,  &#x22C6;/
150  /&#x22C6;    5- 4 Sample frequency fs (0=48kHz, 1=96kHz) &#x22C6;/
151  /&#x22C6;    2- 0 number of audio channels (n+1 channels) &#x22C6;/
152 </programlisting>
153  </section></section>
154 <section id="audio_function_calls">
155 <title>Audio Function Calls</title>
156
157
158 <section id="audio_fopen">
159 <title>open()</title>
160 <para>DESCRIPTION
161 </para>
162 <informaltable><tgroup cols="1"><tbody><row><entry
163  align="char">
164 <para>This system call opens a named audio device (e.g. /dev/dvb/adapter0/audio0)
165  for subsequent use. When an open() call has succeeded, the device will be ready
166  for use. The significance of blocking or non-blocking mode is described in the
167  documentation for functions where there is a difference. It does not affect the
168  semantics of the open() call itself. A device opened in blocking mode can later
169  be put into non-blocking mode (and vice versa) using the F_SETFL command
170  of the fcntl system call. This is a standard system call, documented in the Linux
171  manual page for fcntl. Only one user can open the Audio Device in O_RDWR
172  mode. All other attempts to open the device in this mode will fail, and an error
173  code will be returned. If the Audio Device is opened in O_RDONLY mode, the
174  only ioctl call that can be used is AUDIO_GET_STATUS. All other call will
175  return with an error code.</para>
176 </entry>
177  </row></tbody></tgroup></informaltable>
178 <para>SYNOPSIS
179 </para>
180 <informaltable><tgroup cols="1"><tbody><row><entry
181  align="char">
182 <para>int open(const char &#x22C6;deviceName, int flags);</para>
183 </entry>
184  </row></tbody></tgroup></informaltable>
185 <para>PARAMETERS
186 </para>
187 <informaltable><tgroup cols="2"><tbody><row><entry
188  align="char">
189 <para>const char
190  *deviceName</para>
191 </entry><entry
192  align="char">
193 <para>Name of specific audio device.</para>
194 </entry>
195  </row><row><entry
196  align="char">
197 <para>int flags</para>
198 </entry><entry
199  align="char">
200 <para>A bit-wise OR of the following flags:</para>
201 </entry>
202  </row><row><entry
203  align="char">
204 </entry><entry
205  align="char">
206 <para>O_RDONLY read-only access</para>
207 </entry>
208  </row><row><entry
209  align="char">
210 </entry><entry
211  align="char">
212 <para>O_RDWR read/write access</para>
213 </entry>
214  </row><row><entry
215  align="char">
216 </entry><entry
217  align="char">
218 <para>O_NONBLOCK open in non-blocking mode</para>
219 </entry>
220  </row><row><entry
221  align="char">
222 </entry><entry
223  align="char">
224 <para>(blocking mode is the default)</para>
225 </entry>
226  </row></tbody></tgroup></informaltable>
227 <para>RETURN VALUE</para>
228 <informaltable><tgroup cols="2"><tbody><row><entry
229  align="char">
230 <para>ENODEV</para>
231 </entry><entry
232  align="char">
233 <para>Device driver not loaded/available.</para>
234 </entry>
235  </row><row><entry
236  align="char">
237 <para>EBUSY</para>
238 </entry><entry
239  align="char">
240 <para>Device or resource busy.</para>
241 </entry>
242  </row><row><entry
243  align="char">
244 <para>EINVAL</para>
245 </entry><entry
246  align="char">
247 <para>Invalid argument.</para>
248 </entry>
249  </row></tbody></tgroup></informaltable>
250
251 </section>
252 <section id="audio_fclose">
253 <title>close()</title>
254 <para>DESCRIPTION
255 </para>
256 <informaltable><tgroup cols="1"><tbody><row><entry
257  align="char">
258 <para>This system call closes a previously opened audio device.</para>
259 </entry>
260  </row></tbody></tgroup></informaltable>
261 <para>SYNOPSIS
262 </para>
263 <informaltable><tgroup cols="1"><tbody><row><entry
264  align="char">
265 <para>int close(int fd);</para>
266 </entry>
267  </row></tbody></tgroup></informaltable>
268 <para>PARAMETERS
269 </para>
270 <informaltable><tgroup cols="2"><tbody><row><entry
271  align="char">
272 <para>int fd</para>
273 </entry><entry
274  align="char">
275 <para>File descriptor returned by a previous call to open().</para>
276 </entry>
277  </row></tbody></tgroup></informaltable>
278 <para>RETURN VALUE</para>
279 <informaltable><tgroup cols="2"><tbody><row><entry
280  align="char">
281 <para>EBADF</para>
282 </entry><entry
283  align="char">
284 <para>fd is not a valid open file descriptor.</para>
285 </entry>
286  </row></tbody></tgroup></informaltable>
287
288 </section>
289 <section id="audio_fwrite">
290 <title>write()</title>
291 <para>DESCRIPTION
292 </para>
293 <informaltable><tgroup cols="1"><tbody><row><entry
294  align="char">
295 <para>This system call can only be used if AUDIO_SOURCE_MEMORY is selected
296  in the ioctl call AUDIO_SELECT_SOURCE. The data provided shall be in
297  PES format. If O_NONBLOCK is not specified the function will block until
298  buffer space is available. The amount of data to be transferred is implied by
299  count.</para>
300 </entry>
301  </row></tbody></tgroup></informaltable>
302 <para>SYNOPSIS
303 </para>
304 <informaltable><tgroup cols="1"><tbody><row><entry
305  align="char">
306 <para>size_t write(int fd, const void &#x22C6;buf, size_t count);</para>
307 </entry>
308  </row></tbody></tgroup></informaltable>
309 <para>PARAMETERS
310 </para>
311 <informaltable><tgroup cols="2"><tbody><row><entry
312  align="char">
313 <para>int fd</para>
314 </entry><entry
315  align="char">
316 <para>File descriptor returned by a previous call to open().</para>
317 </entry>
318  </row><row><entry
319  align="char">
320 <para>void *buf</para>
321 </entry><entry
322  align="char">
323 <para>Pointer to the buffer containing the PES data.</para>
324 </entry>
325  </row><row><entry
326  align="char">
327 <para>size_t count</para>
328 </entry><entry
329  align="char">
330 <para>Size of buf.</para>
331 </entry>
332  </row></tbody></tgroup></informaltable>
333 <para>RETURN VALUE</para>
334 <informaltable><tgroup cols="2"><tbody><row><entry
335  align="char">
336 <para>EPERM</para>
337 </entry><entry
338  align="char">
339 <para>Mode AUDIO_SOURCE_MEMORY not selected.</para>
340 </entry>
341  </row><row><entry
342  align="char">
343 <para>ENOMEM</para>
344 </entry><entry
345  align="char">
346 <para>Attempted to write more data than the internal buffer can
347  hold.</para>
348 </entry>
349  </row><row><entry
350  align="char">
351 <para>EBADF</para>
352 </entry><entry
353  align="char">
354 <para>fd is not a valid open file descriptor.</para>
355 </entry>
356  </row></tbody></tgroup></informaltable>
357
358 </section><section id="AUDIO_STOP"
359 role="subsection"><title>AUDIO_STOP</title>
360 <para>DESCRIPTION
361 </para>
362 <informaltable><tgroup cols="1"><tbody><row><entry
363  align="char">
364 <para>This ioctl call asks the Audio Device to stop playing the current stream.</para>
365 </entry>
366  </row></tbody></tgroup></informaltable>
367 <para>SYNOPSIS
368 </para>
369 <informaltable><tgroup cols="1"><tbody><row><entry
370  align="char">
371 <para>int ioctl(int fd, int request = AUDIO_STOP);</para>
372 </entry>
373  </row></tbody></tgroup></informaltable>
374 <para>PARAMETERS
375 </para>
376 <informaltable><tgroup cols="2"><tbody><row><entry
377  align="char">
378 <para>int fd</para>
379 </entry><entry
380  align="char">
381 <para>File descriptor returned by a previous call to open().</para>
382 </entry>
383  </row><row><entry
384  align="char">
385 <para>int request</para>
386 </entry><entry
387  align="char">
388 <para>Equals AUDIO_STOP for this command.</para>
389 </entry>
390  </row></tbody></tgroup></informaltable>
391 &return-value-dvb;
392
393 </section><section id="AUDIO_PLAY"
394 role="subsection"><title>AUDIO_PLAY</title>
395 <para>DESCRIPTION
396 </para>
397 <informaltable><tgroup cols="1"><tbody><row><entry
398  align="char">
399 <para>This ioctl call asks the Audio Device to start playing an audio stream from the
400  selected source.</para>
401 </entry>
402  </row></tbody></tgroup></informaltable>
403 <para>SYNOPSIS
404 </para>
405 <informaltable><tgroup cols="1"><tbody><row><entry
406  align="char">
407 <para>int ioctl(int fd, int request = AUDIO_PLAY);</para>
408 </entry>
409  </row></tbody></tgroup></informaltable>
410 <para>PARAMETERS
411 </para>
412 <informaltable><tgroup cols="2"><tbody><row><entry
413  align="char">
414 <para>int fd</para>
415 </entry><entry
416  align="char">
417 <para>File descriptor returned by a previous call to open().</para>
418 </entry>
419  </row><row><entry
420  align="char">
421 <para>int request</para>
422 </entry><entry
423  align="char">
424 <para>Equals AUDIO_PLAY for this command.</para>
425 </entry>
426  </row></tbody></tgroup></informaltable>
427 &return-value-dvb;
428
429 </section><section id="AUDIO_PAUSE"
430 role="subsection"><title>AUDIO_PAUSE</title>
431 <para>DESCRIPTION
432 </para>
433 <informaltable><tgroup cols="1"><tbody><row><entry
434  align="char">
435 <para>This ioctl call suspends the audio stream being played. Decoding and playing
436  are paused. It is then possible to restart again decoding and playing process of
437  the audio stream using AUDIO_CONTINUE command.</para>
438 </entry>
439  </row><row><entry
440  align="char">
441 <para>If AUDIO_SOURCE_MEMORY is selected in the ioctl call
442  AUDIO_SELECT_SOURCE, the DVB-subsystem will not decode (consume)
443  any more data until the ioctl call AUDIO_CONTINUE or AUDIO_PLAY is
444  performed.</para>
445 </entry>
446  </row></tbody></tgroup></informaltable>
447 <para>SYNOPSIS
448 </para>
449 <informaltable><tgroup cols="1"><tbody><row><entry
450  align="char">
451 <para>int ioctl(int fd, int request = AUDIO_PAUSE);</para>
452 </entry>
453  </row></tbody></tgroup></informaltable>
454 <para>PARAMETERS
455 </para>
456 <informaltable><tgroup cols="2"><tbody><row><entry
457  align="char">
458 <para>int fd</para>
459 </entry><entry
460  align="char">
461 <para>File descriptor returned by a previous call to open().</para>
462 </entry>
463  </row><row><entry
464  align="char">
465 <para>int request</para>
466 </entry><entry
467  align="char">
468 <para>Equals AUDIO_PAUSE for this command.</para>
469 </entry>
470  </row></tbody></tgroup></informaltable>
471 &return-value-dvb;
472
473 </section><section id="AUDIO_CONTINUE"
474 role="subsection"><title>AUDIO_CONTINUE</title>
475 <para>DESCRIPTION
476 </para>
477 <informaltable><tgroup cols="1"><tbody><row><entry
478  align="char">
479 <para>This ioctl restarts the decoding and playing process previously paused
480 with AUDIO_PAUSE command.</para>
481 </entry>
482  </row><row><entry
483  align="char">
484 <para>It only works if the stream were previously stopped with AUDIO_PAUSE</para>
485 </entry>
486  </row></tbody></tgroup></informaltable>
487 <para>SYNOPSIS
488 </para>
489 <informaltable><tgroup cols="1"><tbody><row><entry
490  align="char">
491 <para>int ioctl(int fd, int request = AUDIO_CONTINUE);</para>
492 </entry>
493  </row></tbody></tgroup></informaltable>
494 <para>PARAMETERS
495 </para>
496 <informaltable><tgroup cols="2"><tbody><row><entry
497  align="char">
498 <para>int fd</para>
499 </entry><entry
500  align="char">
501 <para>File descriptor returned by a previous call to open().</para>
502 </entry>
503  </row><row><entry
504  align="char">
505 <para>int request</para>
506 </entry><entry
507  align="char">
508 <para>Equals AUDIO_CONTINUE for this command.</para>
509 </entry>
510  </row></tbody></tgroup></informaltable>
511 &return-value-dvb;
512
513 </section><section id="AUDIO_SELECT_SOURCE"
514 role="subsection"><title>AUDIO_SELECT_SOURCE</title>
515 <para>DESCRIPTION
516 </para>
517 <informaltable><tgroup cols="1"><tbody><row><entry
518  align="char">
519 <para>This ioctl call informs the audio device which source shall be used
520  for the input data. The possible sources are demux or memory. If
521  AUDIO_SOURCE_MEMORY is selected, the data is fed to the Audio Device
522  through the write command.</para>
523 </entry>
524  </row></tbody></tgroup></informaltable>
525 <para>SYNOPSIS
526 </para>
527 <informaltable><tgroup cols="1"><tbody><row><entry
528  align="char">
529 <para>int ioctl(int fd, int request = AUDIO_SELECT_SOURCE,
530  audio_stream_source_t source);</para>
531 </entry>
532  </row></tbody></tgroup></informaltable>
533 <para>PARAMETERS
534 </para>
535 <informaltable><tgroup cols="2"><tbody><row><entry
536  align="char">
537 <para>int fd</para>
538 </entry><entry
539  align="char">
540 <para>File descriptor returned by a previous call to open().</para>
541 </entry>
542  </row><row><entry
543  align="char">
544 <para>int request</para>
545 </entry><entry
546  align="char">
547 <para>Equals AUDIO_SELECT_SOURCE for this command.</para>
548 </entry>
549  </row><row><entry
550  align="char">
551 <para>audio_stream_source_t
552  source</para>
553 </entry><entry
554  align="char">
555 <para>Indicates the source that shall be used for the Audio
556  stream.</para>
557 </entry>
558  </row></tbody></tgroup></informaltable>
559 &return-value-dvb;
560
561 </section><section id="AUDIO_SET_MUTE"
562 role="subsection"><title>AUDIO_SET_MUTE</title>
563 <para>DESCRIPTION
564 </para>
565 <para>This ioctl is for DVB devices only. To control a V4L2 decoder use the V4L2
566 &VIDIOC-DECODER-CMD; with the <constant>V4L2_DEC_CMD_START_MUTE_AUDIO</constant> flag instead.</para>
567 <informaltable><tgroup cols="1"><tbody><row><entry
568  align="char">
569 <para>This ioctl call asks the audio device to mute the stream that is currently being
570  played.</para>
571 </entry>
572  </row></tbody></tgroup></informaltable>
573 <para>SYNOPSIS
574 </para>
575 <informaltable><tgroup cols="1"><tbody><row><entry
576  align="char">
577 <para>int ioctl(int fd, int request = AUDIO_SET_MUTE,
578  boolean state);</para>
579 </entry>
580  </row></tbody></tgroup></informaltable>
581 <para>PARAMETERS
582 </para>
583 <informaltable><tgroup cols="2"><tbody><row><entry
584  align="char">
585 <para>int fd</para>
586 </entry><entry
587  align="char">
588 <para>File descriptor returned by a previous call to open().</para>
589 </entry>
590  </row><row><entry
591  align="char">
592 <para>int request</para>
593 </entry><entry
594  align="char">
595 <para>Equals AUDIO_SET_MUTE for this command.</para>
596 </entry>
597  </row><row><entry
598  align="char">
599 <para>boolean state</para>
600 </entry><entry
601  align="char">
602 <para>Indicates if audio device shall mute or not.</para>
603 </entry>
604  </row><row><entry
605  align="char">
606 </entry><entry
607  align="char">
608 <para>TRUE Audio Mute</para>
609 </entry>
610  </row><row><entry
611  align="char">
612 </entry><entry
613  align="char">
614 <para>FALSE Audio Un-mute</para>
615 </entry>
616  </row></tbody></tgroup></informaltable>
617 &return-value-dvb;
618
619 </section><section id="AUDIO_SET_AV_SYNC"
620 role="subsection"><title>AUDIO_SET_AV_SYNC</title>
621 <para>DESCRIPTION
622 </para>
623 <informaltable><tgroup cols="1"><tbody><row><entry
624  align="char">
625 <para>This ioctl call asks the Audio Device to turn ON or OFF A/V synchronization.</para>
626 </entry>
627  </row></tbody></tgroup></informaltable>
628 <para>SYNOPSIS
629 </para>
630 <informaltable><tgroup cols="1"><tbody><row><entry
631  align="char">
632 <para>int ioctl(int fd, int request = AUDIO_SET_AV_SYNC,
633  boolean state);</para>
634 </entry>
635  </row></tbody></tgroup></informaltable>
636 <para>PARAMETERS
637 </para>
638 <informaltable><tgroup cols="2"><tbody><row><entry
639  align="char">
640 <para>int fd</para>
641 </entry><entry
642  align="char">
643 <para>File descriptor returned by a previous call to open().</para>
644 </entry>
645  </row><row><entry
646  align="char">
647 <para>int request</para>
648 </entry><entry
649  align="char">
650 <para>Equals AUDIO_AV_SYNC for this command.</para>
651 </entry>
652  </row><row><entry
653  align="char">
654 <para>boolean state</para>
655 </entry><entry
656  align="char">
657 <para>Tells the DVB subsystem if A/V synchronization shall be
658  ON or OFF.</para>
659 </entry>
660  </row><row><entry
661  align="char">
662 </entry><entry
663  align="char">
664 <para>TRUE AV-sync ON</para>
665 </entry>
666  </row><row><entry
667  align="char">
668 </entry><entry
669  align="char">
670 <para>FALSE AV-sync OFF</para>
671 </entry>
672  </row></tbody></tgroup></informaltable>
673 &return-value-dvb;
674
675 </section><section id="AUDIO_SET_BYPASS_MODE"
676 role="subsection"><title>AUDIO_SET_BYPASS_MODE</title>
677 <para>DESCRIPTION
678 </para>
679 <informaltable><tgroup cols="1"><tbody><row><entry
680  align="char">
681 <para>This ioctl call asks the Audio Device to bypass the Audio decoder and forward
682  the stream without decoding. This mode shall be used if streams that can&#8217;t be
683  handled by the DVB system shall be decoded. Dolby DigitalTM streams are
684  automatically forwarded by the DVB subsystem if the hardware can handle it.</para>
685 </entry>
686  </row></tbody></tgroup></informaltable>
687 <para>SYNOPSIS
688 </para>
689 <informaltable><tgroup cols="1"><tbody><row><entry
690  align="char">
691 <para>int ioctl(int fd, int request =
692  AUDIO_SET_BYPASS_MODE, boolean mode);</para>
693 </entry>
694  </row></tbody></tgroup></informaltable>
695 <para>PARAMETERS
696 </para>
697 <informaltable><tgroup cols="2"><tbody><row><entry
698  align="char">
699 <para>int fd</para>
700 </entry><entry
701  align="char">
702 <para>File descriptor returned by a previous call to open().</para>
703 </entry>
704  </row><row><entry
705  align="char">
706 <para>int request</para>
707 </entry><entry
708  align="char">
709 <para>Equals AUDIO_SET_BYPASS_MODE for this
710  command.</para>
711 </entry>
712  </row><row><entry
713  align="char">
714 <para>boolean mode</para>
715 </entry><entry
716  align="char">
717 <para>Enables or disables the decoding of the current Audio
718  stream in the DVB subsystem.</para>
719 </entry>
720  </row><row><entry
721  align="char">
722 </entry><entry
723  align="char">
724 <para>TRUE Bypass is disabled</para>
725 </entry>
726  </row><row><entry
727  align="char">
728 </entry><entry
729  align="char">
730 <para>FALSE Bypass is enabled</para>
731 </entry>
732  </row></tbody></tgroup></informaltable>
733 &return-value-dvb;
734
735 </section><section id="AUDIO_CHANNEL_SELECT"
736 role="subsection"><title>AUDIO_CHANNEL_SELECT</title>
737 <para>DESCRIPTION
738 </para>
739 <para>This ioctl is for DVB devices only. To control a V4L2 decoder use the V4L2
740 <constant>V4L2_CID_MPEG_AUDIO_DEC_PLAYBACK</constant> control instead.</para>
741 <informaltable><tgroup cols="1"><tbody><row><entry
742  align="char">
743 <para>This ioctl call asks the Audio Device to select the requested channel if possible.</para>
744 </entry>
745  </row></tbody></tgroup></informaltable>
746 <para>SYNOPSIS
747 </para>
748 <informaltable><tgroup cols="1"><tbody><row><entry
749  align="char">
750 <para>int ioctl(int fd, int request =
751  AUDIO_CHANNEL_SELECT, audio_channel_select_t);</para>
752 </entry>
753  </row></tbody></tgroup></informaltable>
754 <para>PARAMETERS
755 </para>
756 <informaltable><tgroup cols="2"><tbody><row><entry
757  align="char">
758 <para>int fd</para>
759 </entry><entry
760  align="char">
761 <para>File descriptor returned by a previous call to open().</para>
762 </entry>
763  </row><row><entry
764  align="char">
765 <para>int request</para>
766 </entry><entry
767  align="char">
768 <para>Equals AUDIO_CHANNEL_SELECT for this
769  command.</para>
770 </entry>
771  </row><row><entry
772  align="char">
773 <para>audio_channel_select_t
774  ch</para>
775 </entry><entry
776  align="char">
777 <para>Select the output format of the audio (mono left/right,
778  stereo).</para>
779 </entry>
780  </row></tbody></tgroup></informaltable>
781 &return-value-dvb;
782
783 </section><section id="AUDIO_BILINGUAL_CHANNEL_SELECT"
784 role="subsection"><title>AUDIO_BILINGUAL_CHANNEL_SELECT</title>
785 <para>DESCRIPTION
786 </para>
787 <para>This ioctl is obsolete. Do not use in new drivers. It has been replaced by
788 the V4L2 <constant>V4L2_CID_MPEG_AUDIO_DEC_MULTILINGUAL_PLAYBACK</constant> control
789 for MPEG decoders controlled through V4L2.</para>
790 <informaltable><tgroup cols="1"><tbody><row><entry
791  align="char">
792 <para>This ioctl call asks the Audio Device to select the requested channel for bilingual streams if possible.</para>
793 </entry>
794  </row></tbody></tgroup></informaltable>
795 <para>SYNOPSIS
796 </para>
797 <informaltable><tgroup cols="1"><tbody><row><entry
798  align="char">
799 <para>int ioctl(int fd, int request =
800  AUDIO_BILINGUAL_CHANNEL_SELECT, audio_channel_select_t);</para>
801 </entry>
802  </row></tbody></tgroup></informaltable>
803 <para>PARAMETERS
804 </para>
805 <informaltable><tgroup cols="2"><tbody><row><entry
806  align="char">
807 <para>int fd</para>
808 </entry><entry
809  align="char">
810 <para>File descriptor returned by a previous call to open().</para>
811 </entry>
812  </row><row><entry
813  align="char">
814 <para>int request</para>
815 </entry><entry
816  align="char">
817 <para>Equals AUDIO_BILINGUAL_CHANNEL_SELECT for this
818  command.</para>
819 </entry>
820  </row><row><entry
821  align="char">
822 <para>audio_channel_select_t
823 ch</para>
824 </entry><entry
825  align="char">
826 <para>Select the output format of the audio (mono left/right,
827  stereo).</para>
828 </entry>
829  </row>
830 </tbody></tgroup></informaltable>
831 &return-value-dvb;
832
833 </section><section id="AUDIO_GET_PTS"
834 role="subsection"><title>AUDIO_GET_PTS</title>
835 <para>DESCRIPTION
836 </para>
837 <para>This ioctl is obsolete. Do not use in new drivers. If you need this functionality,
838 then please contact the linux-media mailing list (&v4l-ml;).</para>
839 <informaltable><tgroup cols="1"><tbody><row><entry
840  align="char">
841 <para>This ioctl call asks the Audio Device to return the current PTS timestamp.</para>
842 </entry>
843  </row></tbody></tgroup></informaltable>
844 <para>SYNOPSIS
845 </para>
846 <informaltable><tgroup cols="1"><tbody><row><entry
847  align="char">
848 <para>int ioctl(int fd, int request =
849  AUDIO_GET_PTS, __u64 *pts);</para>
850 </entry>
851  </row></tbody></tgroup></informaltable>
852 <para>PARAMETERS
853 </para>
854 <informaltable><tgroup cols="2"><tbody><row><entry
855  align="char">
856 <para>int fd</para>
857 </entry><entry
858  align="char">
859 <para>File descriptor returned by a previous call to open().</para>
860 </entry>
861  </row><row><entry
862  align="char">
863 <para>int request</para>
864 </entry><entry
865  align="char">
866 <para>Equals AUDIO_GET_PTS for this
867  command.</para>
868 </entry>
869  </row><row><entry
870  align="char">
871 <para>__u64 *pts
872 </para>
873 </entry><entry
874  align="char">
875 <para>Returns the 33-bit timestamp as defined in ITU T-REC-H.222.0 / ISO/IEC 13818-1.
876 </para>
877 <para>
878 The PTS should belong to the currently played
879 frame if possible, but may also be a value close to it
880 like the PTS of the last decoded frame or the last PTS
881 extracted by the PES parser.</para>
882 </entry>
883  </row></tbody></tgroup></informaltable>
884 &return-value-dvb;
885
886 </section><section id="AUDIO_GET_STATUS"
887 role="subsection"><title>AUDIO_GET_STATUS</title>
888 <para>DESCRIPTION
889 </para>
890 <informaltable><tgroup cols="1"><tbody><row><entry
891  align="char">
892 <para>This ioctl call asks the Audio Device to return the current state of the Audio
893  Device.</para>
894 </entry>
895  </row></tbody></tgroup></informaltable>
896 <para>SYNOPSIS
897 </para>
898 <informaltable><tgroup cols="1"><tbody><row><entry
899  align="char">
900 <para>int ioctl(int fd, int request = AUDIO_GET_STATUS,
901  struct audio_status &#x22C6;status);</para>
902 </entry>
903  </row></tbody></tgroup></informaltable>
904 <para>PARAMETERS
905 </para>
906 <informaltable><tgroup cols="2"><tbody><row><entry
907  align="char">
908 <para>int fd</para>
909 </entry><entry
910  align="char">
911 <para>File descriptor returned by a previous call to open().</para>
912 </entry>
913  </row><row><entry
914  align="char">
915 <para>int request</para>
916 </entry><entry
917  align="char">
918 <para>Equals AUDIO_GET_STATUS for this command.</para>
919 </entry>
920  </row><row><entry
921  align="char">
922 <para>struct audio_status
923  *status</para>
924 </entry><entry
925  align="char">
926 <para>Returns the current state of Audio Device.</para>
927 </entry>
928  </row></tbody></tgroup></informaltable>
929 &return-value-dvb;
930
931 </section><section id="AUDIO_GET_CAPABILITIES"
932 role="subsection"><title>AUDIO_GET_CAPABILITIES</title>
933 <para>DESCRIPTION
934 </para>
935 <informaltable><tgroup cols="1"><tbody><row><entry
936  align="char">
937 <para>This ioctl call asks the Audio Device to tell us about the decoding capabilities
938  of the audio hardware.</para>
939 </entry>
940  </row></tbody></tgroup></informaltable>
941 <para>SYNOPSIS
942 </para>
943 <informaltable><tgroup cols="1"><tbody><row><entry
944  align="char">
945 <para>int ioctl(int fd, int request =
946  AUDIO_GET_CAPABILITIES, unsigned int &#x22C6;cap);</para>
947 </entry>
948  </row></tbody></tgroup></informaltable>
949 <para>PARAMETERS
950 </para>
951 <informaltable><tgroup cols="2"><tbody><row><entry
952  align="char">
953 <para>int fd</para>
954 </entry><entry
955  align="char">
956 <para>File descriptor returned by a previous call to open().</para>
957 </entry>
958  </row><row><entry
959  align="char">
960 <para>int request</para>
961 </entry><entry
962  align="char">
963 <para>Equals AUDIO_GET_CAPABILITIES for this
964  command.</para>
965 </entry>
966  </row><row><entry
967  align="char">
968 <para>unsigned int *cap</para>
969 </entry><entry
970  align="char">
971 <para>Returns a bit array of supported sound formats.</para>
972 </entry>
973  </row></tbody></tgroup></informaltable>
974 &return-value-dvb;
975
976 </section><section id="AUDIO_CLEAR_BUFFER"
977 role="subsection"><title>AUDIO_CLEAR_BUFFER</title>
978 <para>DESCRIPTION
979 </para>
980 <informaltable><tgroup cols="1"><tbody><row><entry
981  align="char">
982 <para>This ioctl call asks the Audio Device to clear all software and hardware buffers
983  of the audio decoder device.</para>
984 </entry>
985  </row></tbody></tgroup></informaltable>
986 <para>SYNOPSIS
987 </para>
988 <informaltable><tgroup cols="1"><tbody><row><entry
989  align="char">
990 <para>int ioctl(int fd, int request = AUDIO_CLEAR_BUFFER);</para>
991 </entry>
992  </row></tbody></tgroup></informaltable>
993 <para>PARAMETERS
994 </para>
995 <informaltable><tgroup cols="2"><tbody><row><entry
996  align="char">
997 <para>int fd</para>
998 </entry><entry
999  align="char">
1000 <para>File descriptor returned by a previous call to open().</para>
1001 </entry>
1002  </row><row><entry
1003  align="char">
1004 <para>int request</para>
1005 </entry><entry
1006  align="char">
1007 <para>Equals AUDIO_CLEAR_BUFFER for this command.</para>
1008 </entry>
1009  </row></tbody></tgroup></informaltable>
1010 &return-value-dvb;
1011
1012 </section><section id="AUDIO_SET_ID"
1013 role="subsection"><title>AUDIO_SET_ID</title>
1014 <para>DESCRIPTION
1015 </para>
1016 <informaltable><tgroup cols="1"><tbody><row><entry
1017  align="char">
1018 <para>This ioctl selects which sub-stream is to be decoded if a program or system
1019  stream is sent to the video device. If no audio stream type is set the id has to be
1020  in [0xC0,0xDF] for MPEG sound, in [0x80,0x87] for AC3 and in [0xA0,0xA7]
1021  for LPCM. More specifications may follow for other stream types. If the stream
1022  type is set the id just specifies the substream id of the audio stream and only
1023  the first 5 bits are recognized.</para>
1024 </entry>
1025  </row></tbody></tgroup></informaltable>
1026 <para>SYNOPSIS
1027 </para>
1028 <informaltable><tgroup cols="1"><tbody><row><entry
1029  align="char">
1030 <para>int ioctl(int fd, int request = AUDIO_SET_ID, int
1031  id);</para>
1032 </entry>
1033  </row></tbody></tgroup></informaltable>
1034 <para>PARAMETERS
1035 </para>
1036 <informaltable><tgroup cols="2"><tbody><row><entry
1037  align="char">
1038 <para>int fd</para>
1039 </entry><entry
1040  align="char">
1041 <para>File descriptor returned by a previous call to open().</para>
1042 </entry>
1043  </row><row><entry
1044  align="char">
1045 <para>int request</para>
1046 </entry><entry
1047  align="char">
1048 <para>Equals AUDIO_SET_ID for this command.</para>
1049 </entry>
1050  </row><row><entry
1051  align="char">
1052 <para>int id</para>
1053 </entry><entry
1054  align="char">
1055 <para>audio sub-stream id</para>
1056 </entry>
1057  </row></tbody></tgroup></informaltable>
1058 &return-value-dvb;
1059
1060 </section><section id="AUDIO_SET_MIXER"
1061 role="subsection"><title>AUDIO_SET_MIXER</title>
1062 <para>DESCRIPTION
1063 </para>
1064 <informaltable><tgroup cols="1"><tbody><row><entry
1065  align="char">
1066 <para>This ioctl lets you adjust the mixer settings of the audio decoder.</para>
1067 </entry>
1068  </row></tbody></tgroup></informaltable>
1069 <para>SYNOPSIS
1070 </para>
1071 <informaltable><tgroup cols="1"><tbody><row><entry
1072  align="char">
1073 <para>int ioctl(int fd, int request = AUDIO_SET_MIXER,
1074  audio_mixer_t &#x22C6;mix);</para>
1075 </entry>
1076  </row></tbody></tgroup></informaltable>
1077 <para>PARAMETERS
1078 </para>
1079 <informaltable><tgroup cols="2"><tbody><row><entry
1080  align="char">
1081 <para>int fd</para>
1082 </entry><entry
1083  align="char">
1084 <para>File descriptor returned by a previous call to open().</para>
1085 </entry>
1086  </row><row><entry
1087  align="char">
1088 <para>int request</para>
1089 </entry><entry
1090  align="char">
1091 <para>Equals AUDIO_SET_ID for this command.</para>
1092 </entry>
1093  </row><row><entry
1094  align="char">
1095 <para>audio_mixer_t *mix</para>
1096 </entry><entry
1097  align="char">
1098 <para>mixer settings.</para>
1099 </entry>
1100  </row></tbody></tgroup></informaltable>
1101 &return-value-dvb;
1102
1103 </section><section id="AUDIO_SET_STREAMTYPE"
1104 role="subsection"><title>AUDIO_SET_STREAMTYPE</title>
1105 <para>DESCRIPTION
1106 </para>
1107 <informaltable><tgroup cols="1"><tbody><row><entry
1108  align="char">
1109 <para>This ioctl tells the driver which kind of audio stream to expect. This is useful
1110  if the stream offers several audio sub-streams like LPCM and AC3.</para>
1111 </entry>
1112  </row></tbody></tgroup></informaltable>
1113 <para>SYNOPSIS
1114 </para>
1115 <informaltable><tgroup cols="1"><tbody><row><entry
1116  align="char">
1117 <para>int ioctl(fd, int request = AUDIO_SET_STREAMTYPE,
1118  int type);</para>
1119 </entry>
1120  </row></tbody></tgroup></informaltable>
1121 <para>PARAMETERS
1122 </para>
1123 <informaltable><tgroup cols="2"><tbody><row><entry
1124  align="char">
1125 <para>int fd</para>
1126 </entry><entry
1127  align="char">
1128 <para>File descriptor returned by a previous call to open().</para>
1129 </entry>
1130  </row><row><entry
1131  align="char">
1132 <para>int request</para>
1133 </entry><entry
1134  align="char">
1135 <para>Equals AUDIO_SET_STREAMTYPE for this
1136  command.</para>
1137 </entry>
1138  </row><row><entry
1139  align="char">
1140 <para>int type</para>
1141 </entry><entry
1142  align="char">
1143 <para>stream type</para>
1144 </entry>
1145  </row></tbody></tgroup></informaltable>
1146 &return-value-dvb;
1147 <informaltable><tgroup cols="2"><tbody><row><entry
1148  align="char">
1149 <para>EINVAL</para>
1150 </entry><entry
1151  align="char">
1152 <para>type is not a valid or supported stream type.</para>
1153 </entry>
1154  </row></tbody></tgroup></informaltable>
1155
1156 </section><section id="AUDIO_SET_EXT_ID"
1157 role="subsection"><title>AUDIO_SET_EXT_ID</title>
1158 <para>DESCRIPTION
1159 </para>
1160 <informaltable><tgroup cols="1"><tbody><row><entry
1161  align="char">
1162 <para>This ioctl can be used to set the extension id for MPEG streams in DVD
1163  playback. Only the first 3 bits are recognized.</para>
1164 </entry>
1165  </row></tbody></tgroup></informaltable>
1166 <para>SYNOPSIS
1167 </para>
1168 <informaltable><tgroup cols="1"><tbody><row><entry
1169  align="char">
1170 <para>int ioctl(fd, int request = AUDIO_SET_EXT_ID, int
1171  id);</para>
1172 </entry>
1173  </row></tbody></tgroup></informaltable>
1174 <para>PARAMETERS
1175 </para>
1176 <informaltable><tgroup cols="2"><tbody><row><entry
1177  align="char">
1178 <para>int fd</para>
1179 </entry><entry
1180  align="char">
1181 <para>File descriptor returned by a previous call to open().</para>
1182 </entry>
1183  </row><row><entry
1184  align="char">
1185 <para>int request</para>
1186 </entry><entry
1187  align="char">
1188 <para>Equals AUDIO_SET_EXT_ID for this command.</para>
1189 </entry>
1190  </row><row><entry
1191  align="char">
1192 <para>int id</para>
1193 </entry><entry
1194  align="char">
1195 <para>audio sub_stream_id</para>
1196 </entry>
1197  </row></tbody></tgroup></informaltable>
1198 &return-value-dvb;
1199 <informaltable><tgroup cols="2"><tbody><row><entry
1200  align="char">
1201 <para>EINVAL</para>
1202 </entry><entry
1203  align="char">
1204 <para>id is not a valid id.</para>
1205 </entry>
1206  </row></tbody></tgroup></informaltable>
1207
1208 </section><section id="AUDIO_SET_ATTRIBUTES"
1209 role="subsection"><title>AUDIO_SET_ATTRIBUTES</title>
1210 <para>DESCRIPTION
1211 </para>
1212 <informaltable><tgroup cols="1"><tbody><row><entry
1213  align="char">
1214 <para>This ioctl is intended for DVD playback and allows you to set certain
1215  information about the audio stream.</para>
1216 </entry>
1217  </row></tbody></tgroup></informaltable>
1218 <para>SYNOPSIS
1219 </para>
1220 <informaltable><tgroup cols="1"><tbody><row><entry
1221  align="char">
1222 <para>int ioctl(fd, int request = AUDIO_SET_ATTRIBUTES,
1223  audio_attributes_t attr );</para>
1224 </entry>
1225  </row></tbody></tgroup></informaltable>
1226 <para>PARAMETERS
1227 </para>
1228 <informaltable><tgroup cols="2"><tbody><row><entry
1229  align="char">
1230 <para>int fd</para>
1231 </entry><entry
1232  align="char">
1233 <para>File descriptor returned by a previous call to open().</para>
1234 </entry>
1235  </row><row><entry
1236  align="char">
1237 <para>int request</para>
1238 </entry><entry
1239  align="char">
1240 <para>Equals AUDIO_SET_ATTRIBUTES for this command.</para>
1241 </entry>
1242  </row><row><entry
1243  align="char">
1244 <para>audio_attributes_t
1245  attr</para>
1246 </entry><entry
1247  align="char">
1248 <para>audio attributes according to section ??</para>
1249 </entry>
1250  </row></tbody></tgroup></informaltable>
1251 &return-value-dvb;
1252 <informaltable><tgroup cols="2"><tbody><row><entry
1253  align="char">
1254 <para>EINVAL</para>
1255 </entry><entry
1256  align="char">
1257 <para>attr is not a valid or supported attribute setting.</para>
1258 </entry>
1259  </row></tbody></tgroup></informaltable>
1260
1261 </section><section id="AUDIO_SET_KARAOKE"
1262 role="subsection"><title>AUDIO_SET_KARAOKE</title>
1263 <para>DESCRIPTION
1264 </para>
1265 <informaltable><tgroup cols="1"><tbody><row><entry
1266  align="char">
1267 <para>This ioctl allows one to set the mixer settings for a karaoke DVD.</para>
1268 </entry>
1269  </row></tbody></tgroup></informaltable>
1270 <para>SYNOPSIS
1271 </para>
1272 <informaltable><tgroup cols="1"><tbody><row><entry
1273  align="char">
1274 <para>int ioctl(fd, int request = AUDIO_SET_KARAOKE,
1275  audio_karaoke_t &#x22C6;karaoke);</para>
1276 </entry>
1277  </row></tbody></tgroup></informaltable>
1278 <para>PARAMETERS
1279 </para>
1280 <informaltable><tgroup cols="2"><tbody><row><entry
1281  align="char">
1282 <para>int fd</para>
1283 </entry><entry
1284  align="char">
1285 <para>File descriptor returned by a previous call to open().</para>
1286 </entry>
1287  </row><row><entry
1288  align="char">
1289 <para>int request</para>
1290 </entry><entry
1291  align="char">
1292 <para>Equals AUDIO_SET_KARAOKE for this
1293  command.</para>
1294 </entry>
1295  </row><row><entry
1296  align="char">
1297 <para>audio_karaoke_t
1298  *karaoke</para>
1299 </entry><entry
1300  align="char">
1301 <para>karaoke settings according to section ??.</para>
1302 </entry>
1303  </row></tbody></tgroup></informaltable>
1304 &return-value-dvb;
1305 <informaltable><tgroup cols="2"><tbody><row><entry
1306  align="char">
1307 <para>EINVAL</para>
1308 </entry><entry
1309  align="char">
1310 <para>karaoke is not a valid or supported karaoke setting.</para>
1311 </entry>
1312  </row></tbody></tgroup></informaltable>
1313  </section>
1314 </section>