1<title>DVB Audio Device</title> 2<para>The DVB audio device controls the MPEG2 audio decoder of the DVB hardware. It 3can be accessed through <emphasis role="tt">/dev/dvb/adapter0/audio0</emphasis>. Data types and and 4ioctl definitions can be accessed by including <emphasis role="tt">linux/dvb/video.h</emphasis> in your 5application. 6</para> 7<para>Please note that some DVB cards don’t have their own MPEG decoder, which results in 8the 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 14audio 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 20the following values, depending on whether we are replaying from an internal (demux) or 21external (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 30DVR device) as the source of the video stream. If AUDIO_SOURCE_MEMORY 31is selected the stream comes from the application through the <emphasis role="tt">write()</emphasis> system 32call. 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 39state 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 53following 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 67states 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 84volume. 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 97bits 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, 125Vocal1 and Vocal2 are non-zero, Vocal1 gets mixed into the left channel and Vocal2 into the 126right channel at 100% each. Ff Melody is non-zero, the melody channel gets mixed into left 127and 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 /⋆ bits: descr. ⋆/ 138 /⋆ 15-13 audio coding mode (0=ac3, 2=mpeg1, 3=mpeg2ext, 4=LPCM, 6=DTS, ⋆/ 139 /⋆ 12 multichannel extension ⋆/ 140 /⋆ 11-10 audio type (0=not spec, 1=language included) ⋆/ 141 /⋆ 9- 8 audio application mode (0=not spec, 1=karaoke, 2=surround) ⋆/ 142 /⋆ 7- 6 Quantization / DRC (mpeg audio: 1=DRC exists)(lpcm: 0=16bit, ⋆/ 143 /⋆ 5- 4 Sample frequency fs (0=48kHz, 1=96kHz) ⋆/ 144 /⋆ 2- 0 number of audio channels (n+1 channels) ⋆/ 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 ⋆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 ⋆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 362role="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 413role="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 465role="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 525role="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 596role="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 675role="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 754role="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’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 837role="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 906role="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 ⋆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 974role="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 ⋆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 1042role="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 1094role="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 1165role="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 ⋆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 1231role="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 1292role="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 1352role="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 1413role="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 ⋆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