Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/Documentation/DocBook/dvb/audio.xml
10823 views
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>
10
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>
16
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>
34
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>
48
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>
62
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>
79
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>
92
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>
110
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>
129
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>
149
150
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>
251
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>
289
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>
360
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>
411
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>
463
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>
523
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>
594
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>
673
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>
752
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>
835
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>
904
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>
972
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>
1040
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>
1092
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>
1163
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>
1229
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>
1290
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>
1350
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>
1411
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>
1474
1475