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