1 Linux Standard Base Trial Use Specification 3.2 2 3 Copyright © 2007 Linux Foundation 4 5 Permission is granted to copy, distribute and/or modify this 6 document under the terms of the GNU Free Documentation License, 7 Version 1.1; with no Invariant Sections, with no Front-Cover 8 Texts, and with no Back-Cover Texts. A copy of the license is 9 included in the section entitled "GNU Free Documentation 10 License". 11 12 Portions of the text may be copyrighted by the following 13 parties: 14 15 * The Regents of the University of California 16 * Free Software Foundation 17 * Ian F. Darwin 18 * Paul Vixie 19 * BSDI (now Wind River) 20 * Andrew G Morgan 21 * Jean-loup Gailly and Mark Adler 22 * Massachusetts Institute of Technology 23 * Apple Inc. 24 * Easy Software Products 25 * artofcode LLC 26 * Till Kamppeter 27 * Manfred Wassman 28 * Python Software Foundation 29 30 These excerpts are being used in accordance with their 31 respective licenses. 32 33 Linux is the registered trademark of Linus Torvalds in the U.S. 34 and other countries. 35 36 UNIX is a registered trademark of The Open Group. 37 38 LSB is a trademark of the Linux Foundation in the United States 39 and other countries. 40 41 AMD is a trademark of Advanced Micro Devices, Inc. 42 43 Intel and Itanium are registered trademarks and Intel386 is a 44 trademark of Intel Corporation. 45 46 PowerPC is a registered trademark and PowerPC Architecture is a 47 trademark of the IBM Corporation. 48 49 S/390 is a registered trademark of the IBM Corporation. 50 51 OpenGL is a registered trademark of Silicon Graphics, Inc. 52 __________________________________________________________ 53 54 Table of Contents 55 Foreword 56 Introduction 57 I. Introductory Elements 58 59 1. Scope 60 2. Normative References 61 3. Requirements 62 63 3.1. Relevant Libraries 64 65 4. Definitions 66 5. Terminology 67 68 II. ALSA sound library 69 70 6. Libraries 71 72 6.1. Interfaces for libasound 73 6.2. Data Definitions for libasound 74 75 III. Trial Use Module 76 77 7. Trial Use Module 78 79 7.1. Introduction 80 7.2. Xdg-utils 81 82 A. GNU Free Documentation License (Informative) 83 84 A.1. PREAMBLE 85 A.2. APPLICABILITY AND DEFINITIONS 86 A.3. VERBATIM COPYING 87 A.4. COPYING IN QUANTITY 88 A.5. MODIFICATIONS 89 A.6. COMBINING DOCUMENTS 90 A.7. COLLECTIONS OF DOCUMENTS 91 A.8. AGGREGATION WITH INDEPENDENT WORKS 92 A.9. TRANSLATION 93 A.10. TERMINATION 94 A.11. FUTURE REVISIONS OF THIS LICENSE 95 A.12. How to use this License for your documents 96 97 List of Tables 98 2-1. Informative References 99 3-1. Standard Library Names 100 6-1. libasound Definition 101 6-2. libasound - ALSA Configuration Interface Function 102 Interfaces 103 104 6-3. libasound - ALSA Configuration Interface Data Interfaces 105 6-4. libasound - ALSA Control Interface Function Interfaces 106 6-5. libasound - ALSA Global defines and functions Function 107 Interfaces 108 109 6-6. libasound - ALSA Hardware Dependant Interface Function 110 Interfaces 111 112 6-7. libasound - ALSA High level Control Interface Function 113 Interfaces 114 115 6-8. libasound - ALSA Input Interface Function Interfaces 116 6-9. libasound - ALSA MIDI Sequencer Function Interfaces 117 6-10. libasound - ALSA Mixer Interface Function Interfaces 118 6-11. libasound - ALSA Output Interface Function Interfaces 119 6-12. libasound - ALSA PCM Interface - General Functions 120 Function Interfaces 121 122 6-13. libasound - ALSA PCM Interface - Access Mask Functions 123 Function Interfaces 124 125 6-14. libasound - ALSA PCM Interface - Debug Functions Function 126 Interfaces 127 128 6-15. libasound - ALSA PCM Interface - Description Functions 129 Function Interfaces 130 131 6-16. libasound - ALSA PCM Interface - Direct Access (MMAP) 132 Functions Function Interfaces 133 134 6-17. libasound - ALSA PCM Interface - Format Mask Functions 135 Function Interfaces 136 137 6-18. libasound - ALSA PCM Interface - Hardware Parameters 138 Function Interfaces 139 140 6-19. libasound - ALSA PCM Interface - Helper Functions 141 Function Interfaces 142 143 6-20. libasound - ALSA PCM Interface - Software Parameters 144 Function Interfaces 145 146 6-21. libasound - ALSA PCM Interface - Status Functions 147 Function Interfaces 148 149 6-22. libasound - ALSA PCM Interface - Stream Information 150 Function Interfaces 151 152 6-23. libasound - ALSA Sequencer Event Type Checks Data 153 Interfaces 154 155 6-24. libasound - ALSA Error Handling Function Interfaces 156 6-25. libasound - ALSA RawMidi Interface Function Interfaces 157 6-26. libasound - ALSA Sequencer Client Interface Function 158 Interfaces 159 160 6-27. libasound - ALSA Sequencer Event API Function Interfaces 161 6-28. libasound - ALSA Sequencer Middle Level Interface 162 Function Interfaces 163 164 6-29. libasound - ALSA Sequencer Port Interface Function 165 Interfaces 166 167 6-30. libasound - ALSA Sequencer Port Subscription Function 168 Interfaces 169 170 6-31. libasound - ALSA Sequencer Queue Interface Function 171 Interfaces 172 173 6-32. libasound - ALSA Sequencer event - MIDI byte stream coder 174 Function Interfaces 175 176 6-33. libasound - ALSA Simple Mixer Interface Function 177 Interfaces 178 179 6-34. libasound - ALSA Timer Interface Function Interfaces 180 7-1. Commands And Utilities 181 __________________________________________________________ 182 183 Foreword 184 185 This is version 3.2 of the Trial Use Specification. This 186 version is a preliminary version for review only. Conclusion of 187 work on this version will result in version 3.2 of the Trial 188 Use Specification. 189 190 This specification describes components which have Trial Use 191 Specification status, and as such there is no formal compliance 192 process for this specification. Implementations may claim to 193 provide these components in a manner that agrees with this 194 specification, but such a claim is not part of a conformance 195 statement for the LSB version in which this module appears. 196 197 Applications may not assume that the components of this 198 specification are present or operate as described in this 199 specification on any given implementation. 200 __________________________________________________________ 201 202 Introduction 203 204 The Trial Use Specification describes components which may or 205 may not be present on an otherwise conforming system. The 206 purpose is to indicate that these components are on a Standards 207 Track, that is, they are intended to become part of the LSB 208 Specification in a future edition. 209 210 This document should be used in conjunction with the documents 211 it references. Information referenced in this way is as much a 212 part of this document as is the information explicitly included 213 here. 214 215 I. Introductory Elements 216 217 Table of Contents 218 1. Scope 219 2. Normative References 220 3. Requirements 221 222 3.1. Relevant Libraries 223 224 4. Definitions 225 5. Terminology 226 __________________________________________________________ 227 228 Chapter 1. Scope 229 230 The Trial Use Specification defines components which are not 231 required parts of the LSB Specification. 232 __________________________________________________________ 233 234 Chapter 2. Normative References 235 236 The specifications listed below are referenced in whole or in 237 part by the Trial Use Specification. Such references may be 238 normative or informative; a reference to specification shall 239 only be considered normative if it is explicitly cited as such. 240 The Trial Use Specification may make normative references to a 241 portion of these specifications (that is, to define a specific 242 function or group of functions); in such cases, only the 243 explicitly referenced portion of the specification is to be 244 considered normative. 245 246 Table 2-1. Informative References 247 Name Title URL 248 ALSA Library API Reference ALSA Library API Reference 249 http://www.alsa-project.org/alsa-doc/alsa-lib/ 250 ISO C (1999) ISO/IEC 9899: 1999, Programming Languages --C 251 xdg-utils reference Portland Project XDG Utilities Reference 252 1.0 http://portland.freedesktop.org/xdg-utils-1.0/ 253 __________________________________________________________ 254 255 Chapter 3. Requirements 256 257 3.1. Relevant Libraries 258 259 The libraries listed in Table 3-1 shall be available on a Linux 260 Standard Base system, with the specified runtime names. This 261 list may be supplemented or amended by the 262 architecture-specific specification. 263 264 Table 3-1. Standard Library Names 265 Library Runtime Name 266 libasound libasound.so.2 267 268 These libraries will be in an implementation-defined directory 269 which the dynamic linker shall search by default. 270 __________________________________________________________ 271 272 Chapter 4. Definitions 273 274 For the purposes of this document, the following definitions, 275 as specified in the ISO/IEC Directives, Part 2, 2001, 4th 276 Edition, apply: 277 278 can 279 280 be able to; there is a possibility of; it is possible to 281 cannot 282 283 be unable to; there is no possibilty of; it is not possible to 284 may 285 286 is permitted; is allowed; is permissible 287 need not 288 289 it is not required that; no...is required 290 shall 291 292 is to; is required to; it is required that; has to; only...is 293 permitted; it is necessary 294 shall not 295 296 is not allowed [permitted] [acceptable] [permissible]; is 297 required to be not; is required that...be not; is not to be 298 should 299 300 it is recommended that; ought to 301 should not 302 303 it is not recommended that; ought not to 304 __________________________________________________________ 305 306 Chapter 5. Terminology 307 308 For the purposes of this document, the following terms apply: 309 310 implementation-defined 311 Describes a value or behavior that is not defined by 312 this document but is selected by an implementor. The 313 value or behavior may vary among implementations that 314 conform to this document. An application should not rely 315 on the existence of the value or behavior. An 316 application that relies on such a value or behavior 317 cannot be assured to be portable across conforming 318 implementations. The implementor shall document such a 319 value or behavior so that it can be used correctly by an 320 application. 321 322 Shell Script 323 A file that is read by an interpreter (e.g., awk). The 324 first line of the shell script includes a reference to 325 its interpreter binary. 326 327 undefined 328 Describes the nature of a value or behavior not defined 329 by this document which results from use of an invalid 330 program construct or invalid data input. The value or 331 behavior may vary among implementations that conform to 332 this document. An application should not rely on the 333 existence or validity of the value or behavior. An 334 application that relies on any particular value or 335 behavior cannot be assured to be portable across 336 conforming implementations. 337 338 unspecified 339 Describes the nature of a value or behavior not 340 specified by this document which results from use of a 341 valid program construct or valid data input. The value 342 or behavior may vary among implementations that conform 343 to this document. An application should not rely on the 344 existence or validity of the value or behavior. An 345 application that relies on any particular value or 346 behavior cannot be assured to be portable across 347 conforming implementations. 348 349 II. ALSA sound library 350 351 Table of Contents 352 6. Libraries 353 354 6.1. Interfaces for libasound 355 356 6.1.1. Default LibGroup for libasound 357 6.1.2. ALSA Configuration Interface 358 6.1.3. ALSA Control Interface 359 6.1.4. ALSA Global defines and functions 360 6.1.5. ALSA Hardware Dependant Interface 361 6.1.6. ALSA High level Control Interface 362 6.1.7. ALSA Input Interface 363 6.1.8. ALSA MIDI Sequencer 364 6.1.9. ALSA Mixer Interface 365 6.1.10. ALSA Output Interface 366 6.1.11. ALSA PCM Interface - General Functions 367 6.1.12. ALSA PCM Interface - Access Mask Functions 368 6.1.13. ALSA PCM Interface - Debug Functions 369 6.1.14. ALSA PCM Interface - Description Functions 370 6.1.15. ALSA PCM Interface - Direct Access (MMAP) 371 Functions 372 373 6.1.16. ALSA PCM Interface - Format Mask Functions 374 6.1.17. ALSA PCM Interface - Hardware Parameters 375 6.1.18. ALSA PCM Interface - Helper Functions 376 6.1.19. ALSA PCM Interface - Software Parameters 377 6.1.20. ALSA PCM Interface - Status Functions 378 6.1.21. ALSA PCM Interface - Stream Information 379 6.1.22. ALSA Sequencer Event Type Checks 380 6.1.23. ALSA Error Handling 381 6.1.24. ALSA RawMidi Interface 382 6.1.25. ALSA Sequencer Client Interface 383 6.1.26. ALSA Sequencer Event API 384 6.1.27. ALSA Sequencer Middle Level Interface 385 6.1.28. ALSA Sequencer Port Interface 386 6.1.29. ALSA Sequencer Port Subscription 387 6.1.30. ALSA Sequencer Queue Interface 388 6.1.31. ALSA Sequencer event - MIDI byte stream 389 coder 390 391 6.1.32. ALSA Simple Mixer Interface 392 6.1.33. ALSA Timer Interface 393 394 6.2. Data Definitions for libasound 395 396 6.2.1. alsa/conf.h 397 6.2.2. alsa/control.h 398 6.2.3. alsa/control_external.h 399 6.2.4. alsa/error.h 400 6.2.5. alsa/global.h 401 6.2.6. alsa/hwdep.h 402 6.2.7. alsa/iatomic.h 403 6.2.8. alsa/input.h 404 6.2.9. alsa/instr.h 405 6.2.10. alsa/mixer.h 406 6.2.11. alsa/mixer_abst.h 407 6.2.12. alsa/output.h 408 6.2.13. alsa/pcm.h 409 6.2.14. alsa/pcm_extplug.h 410 6.2.15. alsa/pcm_plugin.h 411 6.2.16. alsa/rawmidi.h 412 6.2.17. alsa/seq.h 413 6.2.18. alsa/seq_event.h 414 6.2.19. alsa/seq_midi_event.h 415 6.2.20. alsa/seqmid.h 416 6.2.21. alsa/timer.h 417 __________________________________________________________ 418 419 Chapter 6. Libraries 420 421 6.1. Interfaces for libasound 422 423 Table 6-1 defines the library name and shared object name for 424 the libasound library 425 426 Table 6-1. libasound Definition 427 Library: libasound 428 SONAME: libasound.so.2 429 430 The behavior of the interfaces in this library is specified by 431 the following specifications: 432 433 [ALSA] ALSA Library API Reference 434 __________________________________________________________ 435 436 6.1.1. Default LibGroup for libasound 437 __________________________________________________________ 438 439 6.1.1.1. Interfaces for Default LibGroup for libasound 440 441 No external functions are defined for libasound - Default 442 LibGroup for libasound in this part of the specification. See 443 also the relevant architecture specific part of this 444 specification. 445 __________________________________________________________ 446 447 6.1.2. ALSA Configuration Interface 448 __________________________________________________________ 449 450 6.1.2.1. Interfaces for ALSA Configuration Interface 451 452 An LSB conforming implementation shall provide the generic 453 functions for ALSA Configuration Interface specified in Table 454 6-2, with the full mandatory functionality as described in the 455 referenced underlying specification. 456 457 Table 6-2. libasound - ALSA Configuration Interface Function 458 Interfaces 459 snd_config_add(ALSA_0.9) [ALSA] snd_config_copy(ALSA_0.9) 460 [ALSA] snd_config_delete(ALSA_0.9) [ALSA] 461 snd_config_get_ascii(ALSA_0.9) [ALSA] 462 snd_config_get_id(ALSA_0.9) [ALSA] 463 snd_config_get_integer(ALSA_0.9) [ALSA] 464 snd_config_get_integer64(ALSA_0.9) [ALSA] 465 snd_config_get_string(ALSA_0.9) [ALSA] 466 snd_config_get_type(ALSA_0.9) [ALSA] 467 snd_config_imake_integer(ALSA_0.9) [ALSA] 468 snd_config_imake_integer64(ALSA_0.9) [ALSA] 469 snd_config_imake_string(ALSA_0.9) [ALSA] 470 snd_config_iterator_end(ALSA_0.9) [ALSA] 471 snd_config_iterator_entry(ALSA_0.9) [ALSA] 472 snd_config_iterator_first(ALSA_0.9) [ALSA] 473 snd_config_iterator_next(ALSA_0.9) [ALSA] 474 snd_config_load(ALSA_0.9) [ALSA] 475 snd_config_make_compound(ALSA_0.9) [ALSA] 476 snd_config_make_integer(ALSA_0.9) [ALSA] 477 snd_config_make_integer64(ALSA_0.9) [ALSA] 478 snd_config_make_string(ALSA_0.9) [ALSA] 479 snd_config_save(ALSA_0.9) [ALSA] snd_config_search(ALSA_0.9) 480 [ALSA] snd_config_searchv(ALSA_0.9) [ALSA] 481 snd_config_set_ascii(ALSA_0.9) [ALSA] 482 snd_config_set_integer(ALSA_0.9) [ALSA] 483 snd_config_set_integer64(ALSA_0.9) [ALSA] 484 snd_config_set_string(ALSA_0.9) [ALSA] snd_config_top(ALSA_0.9) 485 [ALSA] snd_config_update(ALSA_0.9) [ALSA] 486 snd_config_update_free_global(ALSA_0.9) [ALSA] 487 488 An LSB conforming implementation shall provide the generic data 489 interfaces for ALSA Configuration Interface specified in Table 490 6-3, with the full mandatory functionality as described in the 491 referenced underlying specification. 492 493 Table 6-3. libasound - ALSA Configuration Interface Data 494 Interfaces 495 snd_config(ALSA_0.9) [ALSA] 496 __________________________________________________________ 497 498 6.1.3. ALSA Control Interface 499 __________________________________________________________ 500 501 6.1.3.1. Interfaces for ALSA Control Interface 502 503 An LSB conforming implementation shall provide the generic 504 functions for ALSA Control Interface specified in Table 6-4, 505 with the full mandatory functionality as described in the 506 referenced underlying specification. 507 508 Table 6-4. libasound - ALSA Control Interface Function 509 Interfaces 510 snd_async_add_ctl_handler(ALSA_0.9) [ALSA] 511 snd_async_handler_get_ctl(ALSA_0.9) [ALSA] 512 snd_card_get_index(ALSA_0.9) [ALSA] 513 snd_card_get_longname(ALSA_0.9) [ALSA] 514 snd_card_get_name(ALSA_0.9) [ALSA] snd_card_load(ALSA_0.9) 515 [ALSA] 516 snd_card_next(ALSA_0.9) [ALSA] snd_ctl_card_info(ALSA_0.9) 517 [ALSA] snd_ctl_card_info_clear(ALSA_0.9) [ALSA] 518 snd_ctl_card_info_copy(ALSA_0.9) [ALSA] 519 snd_ctl_card_info_free(ALSA_0.9) [ALSA] 520 snd_ctl_card_info_get_components(ALSA_0.9) [ALSA] 521 snd_ctl_card_info_get_driver(ALSA_0.9) [ALSA] 522 snd_ctl_card_info_get_id(ALSA_0.9) [ALSA] 523 snd_ctl_card_info_get_longname(ALSA_0.9) [ALSA] 524 snd_ctl_card_info_get_mixername(ALSA_0.9) [ALSA] 525 snd_ctl_card_info_get_name(ALSA_0.9) [ALSA] 526 snd_ctl_card_info_malloc(ALSA_0.9) [ALSA] 527 snd_ctl_card_info_sizeof(ALSA_0.9) [ALSA] 528 snd_ctl_close(ALSA_0.9) [ALSA] 529 snd_ctl_elem_add_boolean(ALSA_0.9) [ALSA] 530 snd_ctl_elem_add_iec958(ALSA_0.9) [ALSA] 531 snd_ctl_elem_add_integer(ALSA_0.9) [ALSA] 532 snd_ctl_elem_id_clear(ALSA_0.9) [ALSA] 533 snd_ctl_elem_id_copy(ALSA_0.9) [ALSA] 534 snd_ctl_elem_id_free(ALSA_0.9) [ALSA] 535 snd_ctl_elem_id_get_device(ALSA_0.9) [ALSA] 536 snd_ctl_elem_id_get_index(ALSA_0.9) [ALSA] 537 snd_ctl_elem_id_get_interface(ALSA_0.9) [ALSA] 538 snd_ctl_elem_id_get_name(ALSA_0.9) [ALSA] 539 snd_ctl_elem_id_get_numid(ALSA_0.9) [ALSA] 540 snd_ctl_elem_id_get_subdevice(ALSA_0.9) [ALSA] 541 snd_ctl_elem_id_malloc(ALSA_0.9) [ALSA] 542 snd_ctl_elem_id_set_device(ALSA_0.9) [ALSA] 543 snd_ctl_elem_id_set_index(ALSA_0.9) [ALSA] 544 snd_ctl_elem_id_set_interface(ALSA_0.9) [ALSA] 545 snd_ctl_elem_id_set_name(ALSA_0.9) [ALSA] 546 snd_ctl_elem_id_set_numid(ALSA_0.9) [ALSA] 547 snd_ctl_elem_id_set_subdevice(ALSA_0.9) [ALSA] 548 snd_ctl_elem_id_sizeof(ALSA_0.9) [ALSA] 549 snd_ctl_elem_iface_name(ALSA_0.9) [ALSA] 550 snd_ctl_elem_info(ALSA_0.9) [ALSA] 551 snd_ctl_elem_info_clear(ALSA_0.9) [ALSA] 552 snd_ctl_elem_info_copy(ALSA_0.9) [ALSA] 553 snd_ctl_elem_info_free(ALSA_0.9) [ALSA] 554 snd_ctl_elem_info_get_count(ALSA_0.9) [ALSA] 555 snd_ctl_elem_info_get_id(ALSA_0.9) [ALSA] 556 snd_ctl_elem_info_get_item_name(ALSA_0.9) [ALSA] 557 snd_ctl_elem_info_get_items(ALSA_0.9) [ALSA] 558 snd_ctl_elem_info_get_max(ALSA_0.9) [ALSA] 559 snd_ctl_elem_info_get_max64(ALSA_0.9) [ALSA] 560 snd_ctl_elem_info_get_min(ALSA_0.9) [ALSA] 561 snd_ctl_elem_info_get_min64(ALSA_0.9) [ALSA] 562 snd_ctl_elem_info_get_name(ALSA_0.9) [ALSA] 563 snd_ctl_elem_info_get_numid(ALSA_0.9) [ALSA] 564 snd_ctl_elem_info_get_step(ALSA_0.9) [ALSA] 565 snd_ctl_elem_info_get_step64(ALSA_0.9) [ALSA] 566 snd_ctl_elem_info_get_type(ALSA_0.9) [ALSA] 567 snd_ctl_elem_info_is_inactive(ALSA_0.9) [ALSA] 568 snd_ctl_elem_info_is_locked(ALSA_0.9) [ALSA] 569 snd_ctl_elem_info_is_readable(ALSA_0.9) [ALSA] 570 snd_ctl_elem_info_is_user(ALSA_0.9) [ALSA] 571 snd_ctl_elem_info_is_volatile(ALSA_0.9) [ALSA] 572 snd_ctl_elem_info_is_writable(ALSA_0.9) [ALSA] 573 snd_ctl_elem_info_malloc(ALSA_0.9) [ALSA] 574 snd_ctl_elem_info_set_id(ALSA_0.9) [ALSA] 575 snd_ctl_elem_info_set_item(ALSA_0.9) [ALSA] 576 snd_ctl_elem_info_sizeof(ALSA_0.9) [ALSA] 577 snd_ctl_elem_list(ALSA_0.9) [ALSA] 578 snd_ctl_elem_list_alloc_space(ALSA_0.9) [ALSA] 579 snd_ctl_elem_list_clear(ALSA_0.9) [ALSA] 580 snd_ctl_elem_list_copy(ALSA_0.9) [ALSA] 581 snd_ctl_elem_list_free(ALSA_0.9) [ALSA] 582 snd_ctl_elem_list_free_space(ALSA_0.9) [ALSA] 583 snd_ctl_elem_list_get_count(ALSA_0.9) [ALSA] 584 snd_ctl_elem_list_get_id(ALSA_0.9) [ALSA] 585 snd_ctl_elem_list_get_name(ALSA_0.9) [ALSA] 586 snd_ctl_elem_list_get_used(ALSA_0.9) [ALSA] 587 snd_ctl_elem_list_malloc(ALSA_0.9) [ALSA] 588 snd_ctl_elem_list_set_offset(ALSA_0.9) [ALSA] 589 snd_ctl_elem_list_sizeof(ALSA_0.9) [ALSA] 590 snd_ctl_elem_read(ALSA_0.9) [ALSA] 591 snd_ctl_elem_remove(ALSA_0.9) [ALSA] 592 snd_ctl_elem_type_name(ALSA_0.9) [ALSA] 593 snd_ctl_elem_value_clear(ALSA_0.9) [ALSA] 594 snd_ctl_elem_value_copy(ALSA_0.9) [ALSA] 595 snd_ctl_elem_value_free(ALSA_0.9) [ALSA] 596 snd_ctl_elem_value_get_boolean(ALSA_0.9) [ALSA] 597 snd_ctl_elem_value_get_byte(ALSA_0.9) [ALSA] 598 snd_ctl_elem_value_get_bytes(ALSA_0.9) [ALSA] 599 snd_ctl_elem_value_get_enumerated(ALSA_0.9) [ALSA] 600 snd_ctl_elem_value_get_id(ALSA_0.9) [ALSA] 601 snd_ctl_elem_value_get_iec958(ALSA_0.9) [ALSA] 602 snd_ctl_elem_value_get_integer(ALSA_0.9) [ALSA] 603 snd_ctl_elem_value_get_integer64(ALSA_0.9) [ALSA] 604 snd_ctl_elem_value_malloc(ALSA_0.9) [ALSA] 605 snd_ctl_elem_value_set_boolean(ALSA_0.9) [ALSA] 606 snd_ctl_elem_value_set_byte(ALSA_0.9) [ALSA] 607 snd_ctl_elem_value_set_enumerated(ALSA_0.9) [ALSA] 608 snd_ctl_elem_value_set_id(ALSA_0.9) [ALSA] 609 snd_ctl_elem_value_set_iec958(ALSA_0.9) [ALSA] 610 snd_ctl_elem_value_set_integer(ALSA_0.9) [ALSA] 611 snd_ctl_elem_value_set_integer64(ALSA_0.9) [ALSA] 612 snd_ctl_elem_value_sizeof(ALSA_0.9) [ALSA] 613 snd_ctl_elem_write(ALSA_0.9) [ALSA] 614 snd_ctl_event_clear(ALSA_0.9) [ALSA] 615 snd_ctl_event_copy(ALSA_0.9) [ALSA] 616 snd_ctl_event_elem_get_id(ALSA_0.9) [ALSA] 617 snd_ctl_event_elem_get_mask(ALSA_0.9) [ALSA] 618 snd_ctl_event_free(ALSA_0.9) [ALSA] 619 snd_ctl_event_malloc(ALSA_0.9) [ALSA] 620 snd_ctl_event_sizeof(ALSA_0.9) [ALSA] 621 snd_ctl_hwdep_info(ALSA_0.9) [ALSA] 622 snd_ctl_hwdep_next_device(ALSA_0.9) [ALSA] 623 snd_ctl_name(ALSA_0.9) [ALSA] snd_ctl_nonblock(ALSA_0.9) [ALSA] 624 snd_ctl_open(ALSA_0.9) [ALSA] 625 snd_ctl_pcm_info(ALSA_0.9) [ALSA] 626 snd_ctl_pcm_next_device(ALSA_0.9) [ALSA] 627 snd_ctl_poll_descriptors(ALSA_0.9) [ALSA] 628 snd_ctl_poll_descriptors_count(ALSA_0.9) [ALSA] 629 snd_ctl_rawmidi_info(ALSA_0.9) [ALSA] 630 snd_ctl_rawmidi_next_device(ALSA_0.9) [ALSA] 631 snd_ctl_read(ALSA_0.9) [ALSA] 632 snd_ctl_subscribe_events(ALSA_0.9) [ALSA] 633 __________________________________________________________ 634 635 6.1.4. ALSA Global defines and functions 636 __________________________________________________________ 637 638 6.1.4.1. Interfaces for ALSA Global defines and functions 639 640 An LSB conforming implementation shall provide the generic 641 functions for ALSA Global defines and functions specified in 642 Table 6-5, with the full mandatory functionality as described 643 in the referenced underlying specification. 644 645 Table 6-5. libasound - ALSA Global defines and functions 646 Function Interfaces 647 snd_asoundlib_version(ALSA_0.9) [ALSA] 648 snd_async_add_handler(ALSA_0.9) [ALSA] 649 snd_async_del_handler(ALSA_0.9) [ALSA] 650 snd_async_handler_get_callback_private(ALSA_0.9) [ALSA] 651 __________________________________________________________ 652 653 6.1.5. ALSA Hardware Dependant Interface 654 __________________________________________________________ 655 656 6.1.5.1. Interfaces for ALSA Hardware Dependant Interface 657 658 An LSB conforming implementation shall provide the generic 659 functions for ALSA Hardware Dependant Interface specified in 660 Table 6-6, with the full mandatory functionality as described 661 in the referenced underlying specification. 662 663 Table 6-6. libasound - ALSA Hardware Dependant Interface 664 Function Interfaces 665 snd_hwdep_close(ALSA_0.9) [ALSA] 666 snd_hwdep_dsp_image_copy(ALSA_0.9) [ALSA] 667 snd_hwdep_dsp_image_free(ALSA_0.9) [ALSA] 668 snd_hwdep_dsp_image_get_image(ALSA_0.9) [ALSA] 669 snd_hwdep_dsp_image_get_index(ALSA_0.9) [ALSA] 670 snd_hwdep_dsp_image_get_length(ALSA_0.9) [ALSA] 671 snd_hwdep_dsp_image_get_name(ALSA_0.9) [ALSA] 672 snd_hwdep_dsp_image_malloc(ALSA_0.9) [ALSA] 673 snd_hwdep_dsp_image_set_image(ALSA_0.9) [ALSA] 674 snd_hwdep_dsp_image_set_index(ALSA_0.9) [ALSA] 675 snd_hwdep_dsp_image_set_length(ALSA_0.9) [ALSA] 676 snd_hwdep_dsp_image_set_name(ALSA_0.9) [ALSA] 677 snd_hwdep_dsp_image_sizeof(ALSA_0.9) [ALSA] 678 snd_hwdep_dsp_load(ALSA_0.9) [ALSA] 679 snd_hwdep_dsp_status(ALSA_0.9) [ALSA] 680 snd_hwdep_dsp_status_copy(ALSA_0.9) [ALSA] 681 snd_hwdep_dsp_status_free(ALSA_0.9) [ALSA] 682 snd_hwdep_dsp_status_get_chip_ready(ALSA_0.9) [ALSA] 683 snd_hwdep_dsp_status_get_dsp_loaded(ALSA_0.9) [ALSA] 684 snd_hwdep_dsp_status_get_id(ALSA_0.9) [ALSA] 685 snd_hwdep_dsp_status_get_num_dsps(ALSA_0.9) [ALSA] 686 snd_hwdep_dsp_status_get_version(ALSA_0.9) [ALSA] 687 snd_hwdep_dsp_status_malloc(ALSA_0.9) [ALSA] 688 snd_hwdep_dsp_status_sizeof(ALSA_0.9) [ALSA] 689 snd_hwdep_info(ALSA_0.9) [ALSA] snd_hwdep_info_copy(ALSA_0.9) 690 [ALSA] snd_hwdep_info_free(ALSA_0.9) [ALSA] 691 snd_hwdep_info_get_card(ALSA_0.9) [ALSA] 692 snd_hwdep_info_get_device(ALSA_0.9) [ALSA] 693 snd_hwdep_info_get_id(ALSA_0.9) [ALSA] 694 snd_hwdep_info_get_iface(ALSA_0.9) [ALSA] 695 snd_hwdep_info_get_name(ALSA_0.9) [ALSA] 696 snd_hwdep_info_malloc(ALSA_0.9) [ALSA] 697 snd_hwdep_info_set_device(ALSA_0.9) [ALSA] 698 snd_hwdep_info_sizeof(ALSA_0.9) [ALSA] 699 snd_hwdep_ioctl(ALSA_0.9) [ALSA] 700 snd_hwdep_open(ALSA_0.9) [ALSA] 701 snd_hwdep_poll_descriptors(ALSA_0.9) [ALSA] 702 snd_hwdep_read(ALSA_0.9) [ALSA] 703 snd_hwdep_write(ALSA_0.9) [ALSA] 704 __________________________________________________________ 705 706 6.1.6. ALSA High level Control Interface 707 __________________________________________________________ 708 709 6.1.6.1. Interfaces for ALSA High level Control Interface 710 711 An LSB conforming implementation shall provide the generic 712 functions for ALSA High level Control Interface specified in 713 Table 6-7, with the full mandatory functionality as described 714 in the referenced underlying specification. 715 716 Table 6-7. libasound - ALSA High level Control Interface 717 Function Interfaces 718 snd_hctl_close(ALSA_0.9) [ALSA] 719 snd_hctl_elem_get_callback_private(ALSA_0.9) [ALSA] 720 snd_hctl_elem_get_id(ALSA_0.9) [ALSA] 721 snd_hctl_elem_info(ALSA_0.9) [ALSA] 722 snd_hctl_elem_next(ALSA_0.9) [ALSA] 723 snd_hctl_elem_prev(ALSA_0.9) [ALSA] 724 snd_hctl_elem_read(ALSA_0.9) [ALSA] 725 snd_hctl_elem_set_callback(ALSA_0.9) [ALSA] 726 snd_hctl_elem_set_callback_private(ALSA_0.9) [ALSA] 727 snd_hctl_elem_write(ALSA_0.9) [ALSA] 728 snd_hctl_find_elem(ALSA_0.9) [ALSA] 729 snd_hctl_first_elem(ALSA_0.9) [ALSA] 730 snd_hctl_free(ALSA_0.9) [ALSA] 731 snd_hctl_get_callback_private(ALSA_0.9) [ALSA] 732 snd_hctl_last_elem(ALSA_0.9) [ALSA] 733 snd_hctl_load(ALSA_0.9) [ALSA] snd_hctl_open(ALSA_0.9) [ALSA] 734 snd_hctl_set_callback(ALSA_0.9) [ALSA] 735 snd_hctl_set_callback_private(ALSA_0.9) [ALSA] 736 __________________________________________________________ 737 738 6.1.7. ALSA Input Interface 739 __________________________________________________________ 740 741 6.1.7.1. Interfaces for ALSA Input Interface 742 743 An LSB conforming implementation shall provide the generic 744 functions for ALSA Input Interface specified in Table 6-8, with 745 the full mandatory functionality as described in the referenced 746 underlying specification. 747 748 Table 6-8. libasound - ALSA Input Interface Function Interfaces 749 snd_input_buffer_open(ALSA_0.9) [ALSA] 750 snd_input_close(ALSA_0.9) [ALSA] 751 snd_input_stdio_attach(ALSA_0.9) [ALSA] 752 snd_input_stdio_open(ALSA_0.9) [ALSA] 753 __________________________________________________________ 754 755 6.1.8. ALSA MIDI Sequencer 756 __________________________________________________________ 757 758 6.1.8.1. Interfaces for ALSA MIDI Sequencer 759 760 An LSB conforming implementation shall provide the generic 761 functions for ALSA MIDI Sequencer specified in Table 6-9, with 762 the full mandatory functionality as described in the referenced 763 underlying specification. 764 765 Table 6-9. libasound - ALSA MIDI Sequencer Function Interfaces 766 snd_seq_client_id(ALSA_0.9) [ALSA] snd_seq_close(ALSA_0.9) 767 [ALSA] snd_seq_get_input_buffer_size(ALSA_0.9) [ALSA] 768 snd_seq_get_output_buffer_size(ALSA_0.9) [ALSA] 769 snd_seq_nonblock(ALSA_0.9) [ALSA] snd_seq_open(ALSA_0.9) [ALSA] 770 snd_seq_poll_descriptors(ALSA_0.9) [ALSA] 771 snd_seq_poll_descriptors_count(ALSA_0.9) [ALSA] 772 snd_seq_poll_descriptors_revents(ALSA_0.9) [ALSA] 773 snd_seq_set_input_buffer_size(ALSA_0.9) [ALSA] 774 snd_seq_set_output_buffer_size(ALSA_0.9) [ALSA] 775 snd_seq_system_info(ALSA_0.9) [ALSA] 776 snd_seq_system_info_copy(ALSA_0.9) [ALSA] 777 snd_seq_system_info_free(ALSA_0.9) [ALSA] 778 snd_seq_system_info_get_clients(ALSA_0.9) [ALSA] 779 snd_seq_system_info_get_ports(ALSA_0.9) [ALSA] 780 snd_seq_system_info_get_queues(ALSA_0.9) [ALSA] 781 snd_seq_system_info_malloc(ALSA_0.9) [ALSA] 782 snd_seq_system_info_sizeof(ALSA_0.9) [ALSA] 783 __________________________________________________________ 784 785 6.1.9. ALSA Mixer Interface 786 __________________________________________________________ 787 788 6.1.9.1. Interfaces for ALSA Mixer Interface 789 790 An LSB conforming implementation shall provide the generic 791 functions for ALSA Mixer Interface specified in Table 6-10, 792 with the full mandatory functionality as described in the 793 referenced underlying specification. 794 795 Table 6-10. libasound - ALSA Mixer Interface Function 796 Interfaces 797 snd_mixer_attach(ALSA_0.9) [ALSA] snd_mixer_close(ALSA_0.9) 798 [ALSA] snd_mixer_detach(ALSA_0.9) [ALSA] 799 snd_mixer_elem_get_callback_private(ALSA_0.9) [ALSA] 800 snd_mixer_elem_get_type(ALSA_0.9) [ALSA] 801 snd_mixer_elem_next(ALSA_0.9) [ALSA] 802 snd_mixer_elem_prev(ALSA_0.9) [ALSA] 803 snd_mixer_elem_set_callback(ALSA_0.9) [ALSA] 804 snd_mixer_elem_set_callback_private(ALSA_0.9) [ALSA] 805 snd_mixer_first_elem(ALSA_0.9) [ALSA] snd_mixer_free(ALSA_0.9) 806 [ALSA] snd_mixer_get_callback_private(ALSA_0.9) [ALSA] 807 snd_mixer_get_count(ALSA_0.9) [ALSA] 808 snd_mixer_handle_events(ALSA_0.9) [ALSA] 809 snd_mixer_last_elem(ALSA_0.9) [ALSA] 810 snd_mixer_load(ALSA_0.9) [ALSA] snd_mixer_open(ALSA_0.9) [ALSA] 811 snd_mixer_poll_descriptors(ALSA_0.9) [ALSA] 812 snd_mixer_poll_descriptors_count(ALSA_0.9) [ALSA] 813 snd_mixer_poll_descriptors_revents(ALSA_0.9) [ALSA] 814 snd_mixer_set_callback(ALSA_0.9) [ALSA] 815 snd_mixer_set_callback_private(ALSA_0.9) [ALSA] 816 snd_mixer_wait(ALSA_0.9) [ALSA] snd_pcm_type_name(ALSA_0.9.0) 817 [ALSA] 818 __________________________________________________________ 819 820 6.1.10. ALSA Output Interface 821 __________________________________________________________ 822 823 6.1.10.1. Interfaces for ALSA Output Interface 824 825 An LSB conforming implementation shall provide the generic 826 functions for ALSA Output Interface specified in Table 6-11, 827 with the full mandatory functionality as described in the 828 referenced underlying specification. 829 830 Table 6-11. libasound - ALSA Output Interface Function 831 Interfaces 832 snd_output_buffer_open(ALSA_0.9) [ALSA] 833 snd_output_buffer_string(ALSA_0.9) [ALSA] 834 snd_output_close(ALSA_0.9) [ALSA] 835 snd_output_putc(ALSA_0.9) [ALSA] snd_output_puts(ALSA_0.9) 836 [ALSA] snd_output_stdio_attach(ALSA_0.9) [ALSA] 837 snd_output_stdio_open(ALSA_0.9) [ALSA] 838 __________________________________________________________ 839 840 6.1.11. ALSA PCM Interface - General Functions 841 __________________________________________________________ 842 843 6.1.11.1. Interfaces for ALSA PCM Interface - General Functions 844 845 An LSB conforming implementation shall provide the generic 846 functions for ALSA PCM Interface - General Functions specified 847 in Table 6-12, with the full mandatory functionality as 848 described in the referenced underlying specification. 849 850 Table 6-12. libasound - ALSA PCM Interface - General Functions 851 Function Interfaces 852 snd_async_add_pcm_handler(ALSA_0.9) [ALSA] 853 snd_async_handler_get_pcm(ALSA_0.9) [ALSA] 854 snd_pcm_avail_update(ALSA_0.9) [ALSA] 855 snd_pcm_close(ALSA_0.9) [ALSA] snd_pcm_delay(ALSA_0.9) [ALSA] 856 snd_pcm_drain(ALSA_0.9) [ALSA] 857 snd_pcm_drop(ALSA_0.9) [ALSA] snd_pcm_forward(ALSA_0.9.0rc8) 858 [ALSA] snd_pcm_hw_free(ALSA_0.9) [ALSA] 859 snd_pcm_hw_params(ALSA_0.9) [ALSA] 860 snd_pcm_hw_params_current(ALSA_0.9) [ALSA] 861 snd_pcm_hwsync(ALSA_0.9) [ALSA] 862 snd_pcm_info(ALSA_0.9) [ALSA] snd_pcm_link(ALSA_0.9) [ALSA] 863 snd_pcm_name(ALSA_0.9) [ALSA] 864 snd_pcm_nonblock(ALSA_0.9) [ALSA] snd_pcm_open(ALSA_0.9) [ALSA] 865 snd_pcm_open_lconf(ALSA_0.9) [ALSA] 866 snd_pcm_pause(ALSA_0.9) [ALSA] 867 snd_pcm_poll_descriptors(ALSA_0.9) [ALSA] 868 snd_pcm_poll_descriptors_count(ALSA_0.9) [ALSA] 869 snd_pcm_poll_descriptors_revents(ALSA_0.9) [ALSA] 870 snd_pcm_prepare(ALSA_0.9) [ALSA] snd_pcm_readi(ALSA_0.9) [ALSA] 871 snd_pcm_readn(ALSA_0.9) [ALSA] snd_pcm_recover(ALSA_0.9) [ALSA] 872 snd_pcm_reset(ALSA_0.9) [ALSA] 873 snd_pcm_resume(ALSA_0.9) [ALSA] snd_pcm_rewind(ALSA_0.9) [ALSA] 874 snd_pcm_start(ALSA_0.9) [ALSA] 875 snd_pcm_state(ALSA_0.9) [ALSA] snd_pcm_status(ALSA_0.9) [ALSA] 876 snd_pcm_stream(ALSA_0.9) [ALSA] 877 snd_pcm_sw_params(ALSA_0.9) [ALSA] 878 snd_pcm_sw_params_current(ALSA_0.9) [ALSA] 879 snd_pcm_type(ALSA_0.9) [ALSA] 880 snd_pcm_unlink(ALSA_0.9) [ALSA] snd_pcm_wait(ALSA_0.9) [ALSA] 881 snd_pcm_writei(ALSA_0.9) [ALSA] 882 snd_pcm_writen(ALSA_0.9) [ALSA] 883 __________________________________________________________ 884 885 6.1.12. ALSA PCM Interface - Access Mask Functions 886 __________________________________________________________ 887 888 6.1.12.1. Interfaces for ALSA PCM Interface - Access Mask Functions 889 890 An LSB conforming implementation shall provide the generic 891 functions for ALSA PCM Interface - Access Mask Functions 892 specified in Table 6-13, with the full mandatory functionality 893 as described in the referenced underlying specification. 894 895 Table 6-13. libasound - ALSA PCM Interface - Access Mask 896 Functions Function Interfaces 897 snd_pcm_access_mask_any(ALSA_0.9) [ALSA] 898 snd_pcm_access_mask_copy(ALSA_0.9) [ALSA] 899 snd_pcm_access_mask_free(ALSA_0.9) [ALSA] 900 snd_pcm_access_mask_malloc(ALSA_0.9) [ALSA] 901 snd_pcm_access_mask_none(ALSA_0.9) [ALSA] 902 snd_pcm_access_mask_set(ALSA_0.9) [ALSA] 903 snd_pcm_access_mask_sizeof(ALSA_0.9) [ALSA] 904 snd_pcm_access_mask_test(ALSA_0.9) [ALSA] 905 __________________________________________________________ 906 907 6.1.13. ALSA PCM Interface - Debug Functions 908 __________________________________________________________ 909 910 6.1.13.1. Interfaces for ALSA PCM Interface - Debug Functions 911 912 An LSB conforming implementation shall provide the generic 913 functions for ALSA PCM Interface - Debug Functions specified in 914 Table 6-14, with the full mandatory functionality as described 915 in the referenced underlying specification. 916 917 Table 6-14. libasound - ALSA PCM Interface - Debug Functions 918 Function Interfaces 919 snd_pcm_dump(ALSA_0.9) [ALSA] snd_pcm_hw_params_dump(ALSA_0.9) 920 [ALSA] snd_pcm_status_dump(ALSA_0.9) [ALSA] 921 snd_pcm_sw_params_dump(ALSA_0.9) [ALSA] 922 __________________________________________________________ 923 924 6.1.14. ALSA PCM Interface - Description Functions 925 __________________________________________________________ 926 927 6.1.14.1. Interfaces for ALSA PCM Interface - Description Functions 928 929 An LSB conforming implementation shall provide the generic 930 functions for ALSA PCM Interface - Description Functions 931 specified in Table 6-15, with the full mandatory functionality 932 as described in the referenced underlying specification. 933 934 Table 6-15. libasound - ALSA PCM Interface - Description 935 Functions Function Interfaces 936 snd_pcm_access_name(ALSA_0.9) [ALSA] 937 snd_pcm_format_description(ALSA_0.9) [ALSA] 938 snd_pcm_format_name(ALSA_0.9) [ALSA] 939 snd_pcm_format_value(ALSA_0.9) [ALSA] 940 snd_pcm_state_name(ALSA_0.9) [ALSA] 941 snd_pcm_stream_name(ALSA_0.9) [ALSA] 942 __________________________________________________________ 943 944 6.1.15. ALSA PCM Interface - Direct Access (MMAP) Functions 945 __________________________________________________________ 946 947 6.1.15.1. Interfaces for ALSA PCM Interface - Direct Access (MMAP) Functions 948 949 An LSB conforming implementation shall provide the generic 950 functions for ALSA PCM Interface - Direct Access (MMAP) 951 Functions specified in Table 6-16, with the full mandatory 952 functionality as described in the referenced underlying 953 specification. 954 955 Table 6-16. libasound - ALSA PCM Interface - Direct Access 956 (MMAP) Functions Function Interfaces 957 snd_pcm_mmap_begin(ALSA_0.9) [ALSA] 958 snd_pcm_mmap_commit(ALSA_0.9) [ALSA] 959 snd_pcm_mmap_readi(ALSA_0.9) [ALSA] 960 snd_pcm_mmap_readn(ALSA_0.9) [ALSA] 961 snd_pcm_mmap_writei(ALSA_0.9) [ALSA] 962 snd_pcm_mmap_writen(ALSA_0.9) [ALSA] 963 __________________________________________________________ 964 965 6.1.16. ALSA PCM Interface - Format Mask Functions 966 __________________________________________________________ 967 968 6.1.16.1. Interfaces for ALSA PCM Interface - Format Mask Functions 969 970 An LSB conforming implementation shall provide the generic 971 functions for ALSA PCM Interface - Format Mask Functions 972 specified in Table 6-17, with the full mandatory functionality 973 as described in the referenced underlying specification. 974 975 Table 6-17. libasound - ALSA PCM Interface - Format Mask 976 Functions Function Interfaces 977 snd_pcm_format_mask_any(ALSA_0.9) [ALSA] 978 snd_pcm_format_mask_copy(ALSA_0.9) [ALSA] 979 snd_pcm_format_mask_free(ALSA_0.9) [ALSA] 980 snd_pcm_format_mask_malloc(ALSA_0.9) [ALSA] 981 snd_pcm_format_mask_none(ALSA_0.9) [ALSA] 982 snd_pcm_format_mask_set(ALSA_0.9) [ALSA] 983 snd_pcm_format_mask_sizeof(ALSA_0.9) [ALSA] 984 snd_pcm_format_mask_test(ALSA_0.9) [ALSA] 985 __________________________________________________________ 986 987 6.1.17. ALSA PCM Interface - Hardware Parameters 988 __________________________________________________________ 989 990 6.1.17.1. Interfaces for ALSA PCM Interface - Hardware Parameters 991 992 An LSB conforming implementation shall provide the generic 993 functions for ALSA PCM Interface - Hardware Parameters 994 specified in Table 6-18, with the full mandatory functionality 995 as described in the referenced underlying specification. 996 997 Table 6-18. libasound - ALSA PCM Interface - Hardware 998 Parameters Function Interfaces 999 snd_pcm_hw_params_any(ALSA_0.9) [ALSA] 1000 snd_pcm_hw_params_can_mmap_sample_resolution(ALSA_0.9) [ALSA] 1001 snd_pcm_hw_params_can_pause(ALSA_0.9) [ALSA] 1002 snd_pcm_hw_params_can_resume(ALSA_0.9) [ALSA] 1003 snd_pcm_hw_params_can_sync_start(ALSA_0.9) [ALSA] 1004 snd_pcm_hw_params_copy(ALSA_0.9) [ALSA] 1005 snd_pcm_hw_params_free(ALSA_0.9) [ALSA] 1006 snd_pcm_hw_params_get_access(ALSA_0.9.0rc4) [ALSA] 1007 snd_pcm_hw_params_get_access_mask(ALSA_0.9) [ALSA] 1008 snd_pcm_hw_params_get_buffer_size(ALSA_0.9.0rc4) [ALSA] 1009 snd_pcm_hw_params_get_buffer_size_max(ALSA_0.9.0rc4) [ALSA] 1010 snd_pcm_hw_params_get_buffer_size_min(ALSA_0.9.0rc4) [ALSA] 1011 snd_pcm_hw_params_get_buffer_time(ALSA_0.9.0rc4) [ALSA] 1012 snd_pcm_hw_params_get_buffer_time_max(ALSA_0.9.0rc4) [ALSA] 1013 snd_pcm_hw_params_get_buffer_time_min(ALSA_0.9.0rc4) [ALSA] 1014 snd_pcm_hw_params_get_channels(ALSA_0.9.0rc4) [ALSA] 1015 snd_pcm_hw_params_get_channels_max(ALSA_0.9.0rc4) [ALSA] 1016 snd_pcm_hw_params_get_channels_min(ALSA_0.9.0rc4) [ALSA] 1017 snd_pcm_hw_params_get_format(ALSA_0.9.0rc4) [ALSA] 1018 snd_pcm_hw_params_get_format_mask(ALSA_0.9) [ALSA] 1019 snd_pcm_hw_params_get_period_size(ALSA_0.9.0rc4) [ALSA] 1020 snd_pcm_hw_params_get_period_size_max(ALSA_0.9.0rc4) [ALSA] 1021 snd_pcm_hw_params_get_period_size_min(ALSA_0.9.0rc4) [ALSA] 1022 snd_pcm_hw_params_get_period_time(ALSA_0.9.0rc4) [ALSA] 1023 snd_pcm_hw_params_get_period_time_max(ALSA_0.9.0rc4) [ALSA] 1024 snd_pcm_hw_params_get_period_time_min(ALSA_0.9.0rc4) [ALSA] 1025 snd_pcm_hw_params_get_periods(ALSA_0.9.0rc4) [ALSA] 1026 snd_pcm_hw_params_get_periods_max(ALSA_0.9.0rc4) [ALSA] 1027 snd_pcm_hw_params_get_periods_min(ALSA_0.9.0rc4) [ALSA] 1028 snd_pcm_hw_params_get_rate(ALSA_0.9.0rc4) [ALSA] 1029 snd_pcm_hw_params_get_rate_max(ALSA_0.9.0rc4) [ALSA] 1030 snd_pcm_hw_params_get_rate_min(ALSA_0.9.0rc4) [ALSA] 1031 snd_pcm_hw_params_get_rate_numden(ALSA_0.9) [ALSA] 1032 snd_pcm_hw_params_get_rate_resample(ALSA_0.9) [ALSA] 1033 snd_pcm_hw_params_get_sbits(ALSA_0.9) [ALSA] 1034 snd_pcm_hw_params_is_double(ALSA_0.9) [ALSA] 1035 snd_pcm_hw_params_is_half_duplex(ALSA_0.9) [ALSA] 1036 snd_pcm_hw_params_is_joint_duplex(ALSA_0.9) [ALSA] 1037 snd_pcm_hw_params_malloc(ALSA_0.9) [ALSA] 1038 snd_pcm_hw_params_set_access(ALSA_0.9) [ALSA] 1039 snd_pcm_hw_params_set_access_mask(ALSA_0.9) [ALSA] 1040 snd_pcm_hw_params_set_buffer_size(ALSA_0.9) [ALSA] 1041 snd_pcm_hw_params_set_buffer_size_near(ALSA_0.9.0rc4) [ALSA] 1042 snd_pcm_hw_params_set_buffer_time(ALSA_0.9) [ALSA] 1043 snd_pcm_hw_params_set_buffer_time_near(ALSA_0.9.0rc4) [ALSA] 1044 snd_pcm_hw_params_set_channels(ALSA_0.9) [ALSA] 1045 snd_pcm_hw_params_set_channels_near(ALSA_0.9.0rc4) [ALSA] 1046 snd_pcm_hw_params_set_format(ALSA_0.9) [ALSA] 1047 snd_pcm_hw_params_set_format_mask(ALSA_0.9) [ALSA] 1048 snd_pcm_hw_params_set_period_size(ALSA_0.9) [ALSA] 1049 snd_pcm_hw_params_set_period_size_near(ALSA_0.9.0rc4) [ALSA] 1050 snd_pcm_hw_params_set_period_time(ALSA_0.9) [ALSA] 1051 snd_pcm_hw_params_set_period_time_near(ALSA_0.9.0rc4) [ALSA] 1052 snd_pcm_hw_params_set_periods(ALSA_0.9) [ALSA] 1053 snd_pcm_hw_params_set_periods_integer(ALSA_0.9) [ALSA] 1054 snd_pcm_hw_params_set_periods_near(ALSA_0.9.0rc4) [ALSA] 1055 snd_pcm_hw_params_set_rate(ALSA_0.9) [ALSA] 1056 snd_pcm_hw_params_set_rate_near(ALSA_0.9.0rc4) [ALSA] 1057 snd_pcm_hw_params_set_rate_resample(ALSA_0.9) [ALSA] 1058 snd_pcm_hw_params_sizeof(ALSA_0.9) [ALSA] 1059 snd_pcm_hw_params_test_access(ALSA_0.9) [ALSA] 1060 snd_pcm_hw_params_test_buffer_size(ALSA_0.9) [ALSA] 1061 snd_pcm_hw_params_test_buffer_time(ALSA_0.9) [ALSA] 1062 snd_pcm_hw_params_test_channels(ALSA_0.9) [ALSA] 1063 snd_pcm_hw_params_test_format(ALSA_0.9) [ALSA] 1064 snd_pcm_hw_params_test_period_size(ALSA_0.9) [ALSA] 1065 snd_pcm_hw_params_test_period_time(ALSA_0.9) [ALSA] 1066 snd_pcm_hw_params_test_periods(ALSA_0.9) [ALSA] 1067 snd_pcm_hw_params_test_rate(ALSA_0.9) [ALSA] 1068 __________________________________________________________ 1069 1070 6.1.18. ALSA PCM Interface - Helper Functions 1071 __________________________________________________________ 1072 1073 6.1.18.1. Interfaces for ALSA PCM Interface - Helper Functions 1074 1075 An LSB conforming implementation shall provide the generic 1076 functions for ALSA PCM Interface - Helper Functions specified 1077 in Table 6-19, with the full mandatory functionality as 1078 described in the referenced underlying specification. 1079 1080 Table 6-19. libasound - ALSA PCM Interface - Helper Functions 1081 Function Interfaces 1082 snd_pcm_area_copy(ALSA_0.9) [ALSA] 1083 snd_pcm_area_silence(ALSA_0.9) [ALSA] 1084 snd_pcm_areas_copy(ALSA_0.9) [ALSA] 1085 snd_pcm_areas_silence(ALSA_0.9) [ALSA] 1086 snd_pcm_build_linear_format(ALSA_0.9) [ALSA] 1087 snd_pcm_bytes_to_frames(ALSA_0.9) [ALSA] 1088 snd_pcm_bytes_to_samples(ALSA_0.9) [ALSA] 1089 snd_pcm_format_big_endian(ALSA_0.9) [ALSA] 1090 snd_pcm_format_cpu_endian(ALSA_0.9) [ALSA] 1091 snd_pcm_format_float(ALSA_0.9) [ALSA] 1092 snd_pcm_format_linear(ALSA_0.9) [ALSA] 1093 snd_pcm_format_little_endian(ALSA_0.9) [ALSA] 1094 snd_pcm_format_physical_width(ALSA_0.9) [ALSA] 1095 snd_pcm_format_set_silence(ALSA_0.9) [ALSA] 1096 snd_pcm_format_signed(ALSA_0.9) [ALSA] 1097 snd_pcm_format_size(ALSA_0.9) [ALSA] 1098 snd_pcm_format_unsigned(ALSA_0.9) [ALSA] 1099 snd_pcm_format_width(ALSA_0.9) [ALSA] 1100 snd_pcm_frames_to_bytes(ALSA_0.9) [ALSA] 1101 snd_pcm_samples_to_bytes(ALSA_0.9) [ALSA] 1102 __________________________________________________________ 1103 1104 6.1.19. ALSA PCM Interface - Software Parameters 1105 __________________________________________________________ 1106 1107 6.1.19.1. Interfaces for ALSA PCM Interface - Software Parameters 1108 1109 An LSB conforming implementation shall provide the generic 1110 functions for ALSA PCM Interface - Software Parameters 1111 specified in Table 6-20, with the full mandatory functionality 1112 as described in the referenced underlying specification. 1113 1114 Table 6-20. libasound - ALSA PCM Interface - Software 1115 Parameters Function Interfaces 1116 snd_pcm_sw_params_copy(ALSA_0.9) [ALSA] 1117 snd_pcm_sw_params_free(ALSA_0.9) [ALSA] 1118 snd_pcm_sw_params_get_avail_min(ALSA_0.9.0rc4) [ALSA] 1119 snd_pcm_sw_params_get_boundary(ALSA_0.9) [ALSA] 1120 snd_pcm_sw_params_get_silence_size(ALSA_0.9.0rc4) [ALSA] 1121 snd_pcm_sw_params_get_silence_threshold(ALSA_0.9.0rc4) [ALSA] 1122 snd_pcm_sw_params_get_start_threshold(ALSA_0.9.0rc4) [ALSA] 1123 snd_pcm_sw_params_get_stop_threshold(ALSA_0.9.0rc4) [ALSA] 1124 snd_pcm_sw_params_get_tstamp_mode(ALSA_0.9.0rc4) [ALSA] 1125 snd_pcm_sw_params_malloc(ALSA_0.9) [ALSA] 1126 snd_pcm_sw_params_set_avail_min(ALSA_0.9) [ALSA] 1127 snd_pcm_sw_params_set_silence_size(ALSA_0.9) [ALSA] 1128 snd_pcm_sw_params_set_silence_threshold(ALSA_0.9) [ALSA] 1129 snd_pcm_sw_params_set_start_threshold(ALSA_0.9) [ALSA] 1130 snd_pcm_sw_params_set_stop_threshold(ALSA_0.9) [ALSA] 1131 snd_pcm_sw_params_set_tstamp_mode(ALSA_0.9) [ALSA] 1132 snd_pcm_sw_params_set_xfer_align(ALSA_0.9) [ALSA] 1133 snd_pcm_sw_params_sizeof(ALSA_0.9) [ALSA] 1134 __________________________________________________________ 1135 1136 6.1.20. ALSA PCM Interface - Status Functions 1137 __________________________________________________________ 1138 1139 6.1.20.1. Interfaces for ALSA PCM Interface - Status Functions 1140 1141 An LSB conforming implementation shall provide the generic 1142 functions for ALSA PCM Interface - Status Functions specified 1143 in Table 6-21, with the full mandatory functionality as 1144 described in the referenced underlying specification. 1145 1146 Table 6-21. libasound - ALSA PCM Interface - Status Functions 1147 Function Interfaces 1148 snd_pcm_status_copy(ALSA_0.9) [ALSA] 1149 snd_pcm_status_free(ALSA_0.9) [ALSA] 1150 snd_pcm_status_get_avail(ALSA_0.9) [ALSA] 1151 snd_pcm_status_get_avail_max(ALSA_0.9) [ALSA] 1152 snd_pcm_status_get_delay(ALSA_0.9) [ALSA] 1153 snd_pcm_status_get_state(ALSA_0.9) [ALSA] 1154 snd_pcm_status_get_trigger_tstamp(ALSA_0.9) [ALSA] 1155 snd_pcm_status_get_tstamp(ALSA_0.9) [ALSA] 1156 snd_pcm_status_malloc(ALSA_0.9) [ALSA] 1157 snd_pcm_status_sizeof(ALSA_0.9) [ALSA] 1158 __________________________________________________________ 1159 1160 6.1.21. ALSA PCM Interface - Stream Information 1161 __________________________________________________________ 1162 1163 6.1.21.1. Interfaces for ALSA PCM Interface - Stream Information 1164 1165 An LSB conforming implementation shall provide the generic 1166 functions for ALSA PCM Interface - Stream Information specified 1167 in Table 6-22, with the full mandatory functionality as 1168 described in the referenced underlying specification. 1169 1170 Table 6-22. libasound - ALSA PCM Interface - Stream Information 1171 Function Interfaces 1172 snd_pcm_info_copy(ALSA_0.9) [ALSA] snd_pcm_info_free(ALSA_0.9) 1173 [ALSA] snd_pcm_info_get_card(ALSA_0.9) [ALSA] 1174 snd_pcm_info_get_class(ALSA_0.9) [ALSA] 1175 snd_pcm_info_get_device(ALSA_0.9) [ALSA] 1176 snd_pcm_info_get_id(ALSA_0.9) [ALSA] 1177 snd_pcm_info_get_name(ALSA_0.9) [ALSA] 1178 snd_pcm_info_get_stream(ALSA_0.9) [ALSA] 1179 snd_pcm_info_get_subdevice(ALSA_0.9) [ALSA] 1180 snd_pcm_info_get_subdevice_name(ALSA_0.9) [ALSA] 1181 snd_pcm_info_get_subdevices_avail(ALSA_0.9) [ALSA] 1182 snd_pcm_info_get_subdevices_count(ALSA_0.9) [ALSA] 1183 snd_pcm_info_malloc(ALSA_0.9) [ALSA] 1184 snd_pcm_info_set_device(ALSA_0.9) [ALSA] 1185 snd_pcm_info_set_stream(ALSA_0.9) [ALSA] 1186 snd_pcm_info_set_subdevice(ALSA_0.9) [ALSA] 1187 snd_pcm_info_sizeof(ALSA_0.9) [ALSA] 1188 __________________________________________________________ 1189 1190 6.1.22. ALSA Sequencer Event Type Checks 1191 __________________________________________________________ 1192 1193 6.1.22.1. Interfaces for ALSA Sequencer Event Type Checks 1194 1195 No external functions are defined for libasound - ALSA 1196 Sequencer Event Type Checks in this part of the specification. 1197 See also the relevant architecture specific part of this 1198 specification. 1199 1200 An LSB conforming implementation shall provide the generic data 1201 interfaces for ALSA Sequencer Event Type Checks specified in 1202 Table 6-23, with the full mandatory functionality as described 1203 in the referenced underlying specification. 1204 1205 Table 6-23. libasound - ALSA Sequencer Event Type Checks Data 1206 Interfaces 1207 snd_seq_event_types(ALSA_0.9) [ALSA] 1208 __________________________________________________________ 1209 1210 6.1.23. ALSA Error Handling 1211 __________________________________________________________ 1212 1213 6.1.23.1. Interfaces for ALSA Error Handling 1214 1215 An LSB conforming implementation shall provide the generic 1216 functions for ALSA Error Handling specified in Table 6-24, with 1217 the full mandatory functionality as described in the referenced 1218 underlying specification. 1219 1220 Table 6-24. libasound - ALSA Error Handling Function Interfaces 1221 snd_lib_error_set_handler(ALSA_0.9) [ALSA] 1222 snd_strerror(ALSA_0.9) [ALSA] 1223 __________________________________________________________ 1224 1225 6.1.24. ALSA RawMidi Interface 1226 __________________________________________________________ 1227 1228 6.1.24.1. Interfaces for ALSA RawMidi Interface 1229 1230 An LSB conforming implementation shall provide the generic 1231 functions for ALSA RawMidi Interface specified in Table 6-25, 1232 with the full mandatory functionality as described in the 1233 referenced underlying specification. 1234 1235 Table 6-25. libasound - ALSA RawMidi Interface Function 1236 Interfaces 1237 snd_rawmidi_close(ALSA_0.9) [ALSA] snd_rawmidi_drain(ALSA_0.9) 1238 [ALSA] snd_rawmidi_drop(ALSA_0.9) [ALSA] 1239 snd_rawmidi_info_free(ALSA_0.9) [ALSA] 1240 snd_rawmidi_info_get_id(ALSA_0.9) [ALSA] 1241 snd_rawmidi_info_get_name(ALSA_0.9) [ALSA] 1242 snd_rawmidi_info_get_subdevices_count(ALSA_0.9) [ALSA] 1243 snd_rawmidi_info_malloc(ALSA_0.9) [ALSA] 1244 snd_rawmidi_info_set_device(ALSA_0.9) [ALSA] 1245 snd_rawmidi_info_set_stream(ALSA_0.9) [ALSA] 1246 snd_rawmidi_info_set_subdevice(ALSA_0.9) [ALSA] 1247 snd_rawmidi_nonblock(ALSA_0.9) [ALSA] 1248 snd_rawmidi_open(ALSA_0.9) [ALSA] 1249 snd_rawmidi_poll_descriptors(ALSA_0.9) [ALSA] 1250 snd_rawmidi_poll_descriptors_count(ALSA_0.9) [ALSA] 1251 snd_rawmidi_poll_descriptors_revents(ALSA_0.9) [ALSA] 1252 snd_rawmidi_read(ALSA_0.9) [ALSA] snd_rawmidi_write(ALSA_0.9) 1253 [ALSA] 1254 __________________________________________________________ 1255 1256 6.1.25. ALSA Sequencer Client Interface 1257 __________________________________________________________ 1258 1259 6.1.25.1. Interfaces for ALSA Sequencer Client Interface 1260 1261 An LSB conforming implementation shall provide the generic 1262 functions for ALSA Sequencer Client Interface specified in 1263 Table 6-26, with the full mandatory functionality as described 1264 in the referenced underlying specification. 1265 1266 Table 6-26. libasound - ALSA Sequencer Client Interface 1267 Function Interfaces 1268 snd_seq_client_info_copy(ALSA_0.9) [ALSA] 1269 snd_seq_client_info_free(ALSA_0.9) [ALSA] 1270 snd_seq_client_info_get_client(ALSA_0.9) [ALSA] 1271 snd_seq_client_info_get_name(ALSA_0.9) [ALSA] 1272 snd_seq_client_info_get_num_ports(ALSA_0.9) [ALSA] 1273 snd_seq_client_info_get_type(ALSA_0.9) [ALSA] 1274 snd_seq_client_info_malloc(ALSA_0.9) [ALSA] 1275 snd_seq_client_info_set_client(ALSA_0.9) [ALSA] 1276 snd_seq_client_info_set_name(ALSA_0.9) [ALSA] 1277 snd_seq_client_info_sizeof(ALSA_0.9) [ALSA] 1278 snd_seq_get_any_client_info(ALSA_0.9) [ALSA] 1279 snd_seq_get_client_info(ALSA_0.9) [ALSA] 1280 snd_seq_query_next_client(ALSA_0.9) [ALSA] 1281 snd_seq_set_client_info(ALSA_0.9) [ALSA] 1282 __________________________________________________________ 1283 1284 6.1.26. ALSA Sequencer Event API 1285 __________________________________________________________ 1286 1287 6.1.26.1. Interfaces for ALSA Sequencer Event API 1288 1289 An LSB conforming implementation shall provide the generic 1290 functions for ALSA Sequencer Event API specified in Table 6-27, 1291 with the full mandatory functionality as described in the 1292 referenced underlying specification. 1293 1294 Table 6-27. libasound - ALSA Sequencer Event API Function 1295 Interfaces 1296 snd_seq_drain_output(ALSA_0.9) [ALSA] 1297 snd_seq_drop_output(ALSA_0.9) [ALSA] 1298 snd_seq_drop_output_buffer(ALSA_0.9) [ALSA] 1299 snd_seq_event_input(ALSA_0.9) [ALSA] 1300 snd_seq_event_input_pending(ALSA_0.9) [ALSA] 1301 snd_seq_event_length(ALSA_0.9) [ALSA] 1302 snd_seq_event_output(ALSA_0.9) [ALSA] 1303 snd_seq_event_output_direct(ALSA_0.9) [ALSA] 1304 snd_seq_free_event(ALSA_0.9) [ALSA] 1305 __________________________________________________________ 1306 1307 6.1.27. ALSA Sequencer Middle Level Interface 1308 __________________________________________________________ 1309 1310 6.1.27.1. Interfaces for ALSA Sequencer Middle Level Interface 1311 1312 An LSB conforming implementation shall provide the generic 1313 functions for ALSA Sequencer Middle Level Interface specified 1314 in Table 6-28, with the full mandatory functionality as 1315 described in the referenced underlying specification. 1316 1317 Table 6-28. libasound - ALSA Sequencer Middle Level Interface 1318 Function Interfaces 1319 snd_seq_connect_from(ALSA_0.9) [ALSA] 1320 snd_seq_connect_to(ALSA_0.9) [ALSA] 1321 snd_seq_control_queue(ALSA_0.9) [ALSA] 1322 snd_seq_create_simple_port(ALSA_0.9) [ALSA] 1323 snd_seq_delete_simple_port(ALSA_0.9) [ALSA] 1324 snd_seq_disconnect_from(ALSA_0.9) [ALSA] 1325 snd_seq_disconnect_to(ALSA_0.9) [ALSA] 1326 snd_seq_parse_address(ALSA_0.9) [ALSA] 1327 snd_seq_set_client_name(ALSA_0.9) [ALSA] 1328 snd_seq_sync_output_queue(ALSA_0.9) [ALSA] 1329 __________________________________________________________ 1330 1331 6.1.28. ALSA Sequencer Port Interface 1332 __________________________________________________________ 1333 1334 6.1.28.1. Interfaces for ALSA Sequencer Port Interface 1335 1336 An LSB conforming implementation shall provide the generic 1337 functions for ALSA Sequencer Port Interface specified in Table 1338 6-29, with the full mandatory functionality as described in the 1339 referenced underlying specification. 1340 1341 Table 6-29. libasound - ALSA Sequencer Port Interface Function 1342 Interfaces 1343 snd_seq_create_port(ALSA_0.9) [ALSA] 1344 snd_seq_delete_port(ALSA_0.9) [ALSA] 1345 snd_seq_get_any_port_info(ALSA_0.9) [ALSA] 1346 snd_seq_get_port_info(ALSA_0.9) [ALSA] 1347 snd_seq_port_info_copy(ALSA_0.9) [ALSA] 1348 snd_seq_port_info_free(ALSA_0.9) [ALSA] 1349 snd_seq_port_info_get_addr(ALSA_0.9) [ALSA] 1350 snd_seq_port_info_get_capability(ALSA_0.9) [ALSA] 1351 snd_seq_port_info_get_client(ALSA_0.9) [ALSA] 1352 snd_seq_port_info_get_name(ALSA_0.9) [ALSA] 1353 snd_seq_port_info_get_port(ALSA_0.9) [ALSA] 1354 snd_seq_port_info_get_type(ALSA_0.9) [ALSA] 1355 snd_seq_port_info_malloc(ALSA_0.9) [ALSA] 1356 snd_seq_port_info_set_capability(ALSA_0.9) [ALSA] 1357 snd_seq_port_info_set_client(ALSA_0.9) [ALSA] 1358 snd_seq_port_info_set_midi_channels(ALSA_0.9) [ALSA] 1359 snd_seq_port_info_set_name(ALSA_0.9) [ALSA] 1360 snd_seq_port_info_set_port(ALSA_0.9) [ALSA] 1361 snd_seq_port_info_set_port_specified(ALSA_0.9) [ALSA] 1362 snd_seq_port_info_set_timestamp_queue(ALSA_0.9) [ALSA] 1363 snd_seq_port_info_set_timestamp_real(ALSA_0.9) [ALSA] 1364 snd_seq_port_info_set_timestamping(ALSA_0.9) [ALSA] 1365 snd_seq_port_info_set_type(ALSA_0.9) [ALSA] 1366 snd_seq_port_info_sizeof(ALSA_0.9) [ALSA] 1367 snd_seq_query_next_port(ALSA_0.9) [ALSA] 1368 snd_seq_set_port_info(ALSA_0.9) [ALSA] 1369 __________________________________________________________ 1370 1371 6.1.29. ALSA Sequencer Port Subscription 1372 __________________________________________________________ 1373 1374 6.1.29.1. Interfaces for ALSA Sequencer Port Subscription 1375 1376 An LSB conforming implementation shall provide the generic 1377 functions for ALSA Sequencer Port Subscription specified in 1378 Table 6-30, with the full mandatory functionality as described 1379 in the referenced underlying specification. 1380 1381 Table 6-30. libasound - ALSA Sequencer Port Subscription 1382 Function Interfaces 1383 snd_seq_get_port_subscription(ALSA_0.9) [ALSA] 1384 snd_seq_port_subscribe_copy(ALSA_0.9) [ALSA] 1385 snd_seq_port_subscribe_free(ALSA_0.9) [ALSA] 1386 snd_seq_port_subscribe_get_dest(ALSA_0.9) [ALSA] 1387 snd_seq_port_subscribe_get_exclusive(ALSA_0.9) [ALSA] 1388 snd_seq_port_subscribe_get_queue(ALSA_0.9) [ALSA] 1389 snd_seq_port_subscribe_get_sender(ALSA_0.9) [ALSA] 1390 snd_seq_port_subscribe_get_time_real(ALSA_0.9) [ALSA] 1391 snd_seq_port_subscribe_get_time_update(ALSA_0.9) [ALSA] 1392 snd_seq_port_subscribe_malloc(ALSA_0.9) [ALSA] 1393 snd_seq_port_subscribe_set_dest(ALSA_0.9) [ALSA] 1394 snd_seq_port_subscribe_set_exclusive(ALSA_0.9) [ALSA] 1395 snd_seq_port_subscribe_set_queue(ALSA_0.9) [ALSA] 1396 snd_seq_port_subscribe_set_sender(ALSA_0.9) [ALSA] 1397 snd_seq_port_subscribe_set_time_real(ALSA_0.9) [ALSA] 1398 snd_seq_port_subscribe_set_time_update(ALSA_0.9) [ALSA] 1399 snd_seq_port_subscribe_sizeof(ALSA_0.9) [ALSA] 1400 snd_seq_query_port_subscribers(ALSA_0.9) [ALSA] 1401 snd_seq_query_subscribe_copy(ALSA_0.9) [ALSA] 1402 snd_seq_query_subscribe_free(ALSA_0.9) [ALSA] 1403 snd_seq_query_subscribe_get_addr(ALSA_0.9) [ALSA] 1404 snd_seq_query_subscribe_get_exclusive(ALSA_0.9) [ALSA] 1405 snd_seq_query_subscribe_get_index(ALSA_0.9) [ALSA] 1406 snd_seq_query_subscribe_get_queue(ALSA_0.9) [ALSA] 1407 snd_seq_query_subscribe_get_root(ALSA_0.9) [ALSA] 1408 snd_seq_query_subscribe_get_time_real(ALSA_0.9) [ALSA] 1409 snd_seq_query_subscribe_get_time_update(ALSA_0.9) [ALSA] 1410 snd_seq_query_subscribe_malloc(ALSA_0.9) [ALSA] 1411 snd_seq_query_subscribe_set_index(ALSA_0.9) [ALSA] 1412 snd_seq_query_subscribe_set_root(ALSA_0.9) [ALSA] 1413 snd_seq_query_subscribe_set_type(ALSA_0.9) [ALSA] 1414 snd_seq_query_subscribe_sizeof(ALSA_0.9) [ALSA] 1415 snd_seq_subscribe_port(ALSA_0.9) [ALSA] 1416 snd_seq_unsubscribe_port(ALSA_0.9) [ALSA] 1417 __________________________________________________________ 1418 1419 6.1.30. ALSA Sequencer Queue Interface 1420 __________________________________________________________ 1421 1422 6.1.30.1. Interfaces for ALSA Sequencer Queue Interface 1423 1424 An LSB conforming implementation shall provide the generic 1425 functions for ALSA Sequencer Queue Interface specified in Table 1426 6-31, with the full mandatory functionality as described in the 1427 referenced underlying specification. 1428 1429 Table 6-31. libasound - ALSA Sequencer Queue Interface Function 1430 Interfaces 1431 snd_seq_alloc_named_queue(ALSA_0.9) [ALSA] 1432 snd_seq_alloc_queue(ALSA_0.9) [ALSA] 1433 snd_seq_free_queue(ALSA_0.9) [ALSA] 1434 snd_seq_get_queue_status(ALSA_0.9) [ALSA] 1435 snd_seq_get_queue_tempo(ALSA_0.9) [ALSA] 1436 snd_seq_queue_status_copy(ALSA_0.9) [ALSA] 1437 snd_seq_queue_status_free(ALSA_0.9) [ALSA] 1438 snd_seq_queue_status_get_real_time(ALSA_0.9) [ALSA] 1439 snd_seq_queue_status_get_tick_time(ALSA_0.9) [ALSA] 1440 snd_seq_queue_status_malloc(ALSA_0.9) [ALSA] 1441 snd_seq_queue_status_sizeof(ALSA_0.9) [ALSA] 1442 snd_seq_queue_tempo_copy(ALSA_0.9) [ALSA] 1443 snd_seq_queue_tempo_free(ALSA_0.9) [ALSA] 1444 snd_seq_queue_tempo_get_ppq(ALSA_0.9) [ALSA] 1445 snd_seq_queue_tempo_get_tempo(ALSA_0.9) [ALSA] 1446 snd_seq_queue_tempo_malloc(ALSA_0.9) [ALSA] 1447 snd_seq_queue_tempo_set_ppq(ALSA_0.9) [ALSA] 1448 snd_seq_queue_tempo_set_tempo(ALSA_0.9) [ALSA] 1449 snd_seq_queue_tempo_sizeof(ALSA_0.9) [ALSA] 1450 snd_seq_set_queue_tempo(ALSA_0.9) [ALSA] 1451 __________________________________________________________ 1452 1453 6.1.31. ALSA Sequencer event - MIDI byte stream coder 1454 __________________________________________________________ 1455 1456 6.1.31.1. Interfaces for ALSA Sequencer event - MIDI byte stream coder 1457 1458 An LSB conforming implementation shall provide the generic 1459 functions for ALSA Sequencer event - MIDI byte stream coder 1460 specified in Table 6-32, with the full mandatory functionality 1461 as described in the referenced underlying specification. 1462 1463 Table 6-32. libasound - ALSA Sequencer event - MIDI byte stream 1464 coder Function Interfaces 1465 snd_midi_event_decode(ALSA_0.9) [ALSA] 1466 snd_midi_event_encode(ALSA_0.9) [ALSA] 1467 snd_midi_event_encode_byte(ALSA_0.9) [ALSA] 1468 snd_midi_event_free(ALSA_0.9) [ALSA] 1469 snd_midi_event_init(ALSA_0.9) [ALSA] 1470 snd_midi_event_new(ALSA_0.9) [ALSA] 1471 snd_midi_event_reset_decode(ALSA_0.9) [ALSA] 1472 snd_midi_event_reset_encode(ALSA_0.9) [ALSA] 1473 __________________________________________________________ 1474 1475 6.1.32. ALSA Simple Mixer Interface 1476 __________________________________________________________ 1477 1478 6.1.32.1. Interfaces for ALSA Simple Mixer Interface 1479 1480 An LSB conforming implementation shall provide the generic 1481 functions for ALSA Simple Mixer Interface specified in Table 1482 6-33, with the full mandatory functionality as described in the 1483 referenced underlying specification. 1484 1485 Table 6-33. libasound - ALSA Simple Mixer Interface Function 1486 Interfaces 1487 snd_mixer_find_selem(ALSA_0.9) [ALSA] 1488 snd_mixer_selem_channel_name(ALSA_0.9) [ALSA] 1489 snd_mixer_selem_get_capture_group(ALSA_0.9) [ALSA] 1490 snd_mixer_selem_get_capture_switch(ALSA_0.9) [ALSA] 1491 snd_mixer_selem_get_capture_volume(ALSA_0.9) [ALSA] 1492 snd_mixer_selem_get_capture_volume_range(ALSA_0.9) [ALSA] 1493 snd_mixer_selem_get_enum_item(ALSA_0.9) [ALSA] 1494 snd_mixer_selem_get_enum_item_name(ALSA_0.9) [ALSA] 1495 snd_mixer_selem_get_enum_items(ALSA_0.9) [ALSA] 1496 snd_mixer_selem_get_id(ALSA_0.9) [ALSA] 1497 snd_mixer_selem_get_index(ALSA_0.9) [ALSA] 1498 snd_mixer_selem_get_name(ALSA_0.9) [ALSA] 1499 snd_mixer_selem_get_playback_switch(ALSA_0.9) [ALSA] 1500 snd_mixer_selem_get_playback_volume(ALSA_0.9) [ALSA] 1501 snd_mixer_selem_get_playback_volume_range(ALSA_0.9) [ALSA] 1502 snd_mixer_selem_has_capture_channel(ALSA_0.9) [ALSA] 1503 snd_mixer_selem_has_capture_switch(ALSA_0.9) [ALSA] 1504 snd_mixer_selem_has_capture_switch_exclusive(ALSA_0.9) [ALSA] 1505 snd_mixer_selem_has_capture_switch_joined(ALSA_0.9) [ALSA] 1506 snd_mixer_selem_has_capture_volume(ALSA_0.9) [ALSA] 1507 snd_mixer_selem_has_capture_volume_joined(ALSA_0.9) [ALSA] 1508 snd_mixer_selem_has_common_switch(ALSA_0.9) [ALSA] 1509 snd_mixer_selem_has_common_volume(ALSA_0.9) [ALSA] 1510 snd_mixer_selem_has_playback_channel(ALSA_0.9) [ALSA] 1511 snd_mixer_selem_has_playback_switch(ALSA_0.9) [ALSA] 1512 snd_mixer_selem_has_playback_switch_joined(ALSA_0.9) [ALSA] 1513 snd_mixer_selem_has_playback_volume(ALSA_0.9) [ALSA] 1514 snd_mixer_selem_has_playback_volume_joined(ALSA_0.9) [ALSA] 1515 snd_mixer_selem_id_copy(ALSA_0.9) [ALSA] 1516 snd_mixer_selem_id_free(ALSA_0.9) [ALSA] 1517 snd_mixer_selem_id_get_index(ALSA_0.9) [ALSA] 1518 snd_mixer_selem_id_get_name(ALSA_0.9) [ALSA] 1519 snd_mixer_selem_id_malloc(ALSA_0.9) [ALSA] 1520 snd_mixer_selem_id_set_index(ALSA_0.9) [ALSA] 1521 snd_mixer_selem_id_set_name(ALSA_0.9) [ALSA] 1522 snd_mixer_selem_id_sizeof(ALSA_0.9) [ALSA] 1523 snd_mixer_selem_is_active(ALSA_0.9) [ALSA] 1524 snd_mixer_selem_is_capture_mono(ALSA_0.9) [ALSA] 1525 snd_mixer_selem_is_enum_capture(ALSA_0.9) [ALSA] 1526 snd_mixer_selem_is_enum_playback(ALSA_0.9) [ALSA] 1527 snd_mixer_selem_is_enumerated(ALSA_0.9) [ALSA] 1528 snd_mixer_selem_is_playback_mono(ALSA_0.9) [ALSA] 1529 snd_mixer_selem_register(ALSA_0.9) [ALSA] 1530 snd_mixer_selem_set_capture_switch(ALSA_0.9) [ALSA] 1531 snd_mixer_selem_set_capture_switch_all(ALSA_0.9) [ALSA] 1532 snd_mixer_selem_set_capture_volume(ALSA_0.9) [ALSA] 1533 snd_mixer_selem_set_capture_volume_all(ALSA_0.9) [ALSA] 1534 snd_mixer_selem_set_capture_volume_range(ALSA_0.9) [ALSA] 1535 snd_mixer_selem_set_enum_item(ALSA_0.9) [ALSA] 1536 snd_mixer_selem_set_playback_switch(ALSA_0.9) [ALSA] 1537 snd_mixer_selem_set_playback_switch_all(ALSA_0.9) [ALSA] 1538 snd_mixer_selem_set_playback_volume(ALSA_0.9) [ALSA] 1539 snd_mixer_selem_set_playback_volume_all(ALSA_0.9) [ALSA] 1540 snd_mixer_selem_set_playback_volume_range(ALSA_0.9) [ALSA] 1541 __________________________________________________________ 1542 1543 6.1.33. ALSA Timer Interface 1544 __________________________________________________________ 1545 1546 6.1.33.1. Interfaces for ALSA Timer Interface 1547 1548 An LSB conforming implementation shall provide the generic 1549 functions for ALSA Timer Interface specified in Table 6-34, 1550 with the full mandatory functionality as described in the 1551 referenced underlying specification. 1552 1553 Table 6-34. libasound - ALSA Timer Interface Function 1554 Interfaces 1555 snd_timer_close(ALSA_0.9) [ALSA] snd_timer_continue(ALSA_0.9) 1556 [ALSA] snd_timer_id_copy(ALSA_0.9) [ALSA] 1557 snd_timer_id_free(ALSA_0.9) [ALSA] 1558 snd_timer_id_get_card(ALSA_0.9) [ALSA] 1559 snd_timer_id_get_class(ALSA_0.9) [ALSA] 1560 snd_timer_id_get_device(ALSA_0.9) [ALSA] 1561 snd_timer_id_get_sclass(ALSA_0.9) [ALSA] 1562 snd_timer_id_get_subdevice(ALSA_0.9) [ALSA] 1563 snd_timer_id_malloc(ALSA_0.9) [ALSA] 1564 snd_timer_id_set_card(ALSA_0.9) [ALSA] 1565 snd_timer_id_set_class(ALSA_0.9) [ALSA] 1566 snd_timer_id_set_device(ALSA_0.9) [ALSA] 1567 snd_timer_id_set_sclass(ALSA_0.9) [ALSA] 1568 snd_timer_id_set_subdevice(ALSA_0.9) [ALSA] 1569 snd_timer_id_sizeof(ALSA_0.9) [ALSA] snd_timer_info(ALSA_0.9) 1570 [ALSA] snd_timer_info_copy(ALSA_0.9) [ALSA] 1571 snd_timer_info_free(ALSA_0.9) [ALSA] 1572 snd_timer_info_get_card(ALSA_0.9) [ALSA] 1573 snd_timer_info_get_id(ALSA_0.9) [ALSA] 1574 snd_timer_info_get_name(ALSA_0.9) [ALSA] 1575 snd_timer_info_get_resolution(ALSA_0.9) [ALSA] 1576 snd_timer_info_malloc(ALSA_0.9) [ALSA] 1577 snd_timer_info_sizeof(ALSA_0.9) [ALSA] snd_timer_open(ALSA_0.9) 1578 [ALSA] snd_timer_params(ALSA_0.9) [ALSA] 1579 snd_timer_params_get_ticks(ALSA_0.9) [ALSA] 1580 snd_timer_params_malloc(ALSA_0.9) [ALSA] 1581 snd_timer_params_set_auto_start(ALSA_0.9) [ALSA] 1582 snd_timer_params_set_ticks(ALSA_0.9) [ALSA] 1583 snd_timer_poll_descriptors(ALSA_0.9) [ALSA] 1584 snd_timer_poll_descriptors_count(ALSA_0.9) [ALSA] 1585 snd_timer_read(ALSA_0.9) [ALSA] snd_timer_start(ALSA_0.9) 1586 [ALSA] snd_timer_status(ALSA_0.9) [ALSA] 1587 snd_timer_stop(ALSA_0.9) [ALSA] 1588 __________________________________________________________ 1589 1590 6.2. Data Definitions for libasound 1591 1592 This section defines global identifiers and their values that 1593 are associated with interfaces contained in libasound. These 1594 definitions are organized into groups that correspond to system 1595 headers. This convention is used as a convenience for the 1596 reader, and does not imply the existence of these headers, or 1597 their content. Where an interface is defined as requiring a 1598 particular system header file all of the data definitions for 1599 that system header file presented here shall be in effect. 1600 1601 This section gives data definitions to promote binary 1602 application portability, not to repeat source interface 1603 definitions available elsewhere. System providers and 1604 application developers should use this ABI to supplement - not 1605 to replace - source interface definition specifications. 1606 1607 This specification uses the ISO C (1999) C Language as the 1608 reference programming language, and data definitions are 1609 specified in ISO C format. The C language is used here as a 1610 convenient notation. Using a C language description of these 1611 data objects does not preclude their use by other programming 1612 languages. 1613 __________________________________________________________ 1614 1615 6.2.1. alsa/conf.h 1616 1617 typedef struct _snd_config_iterator *snd_config_iterator_t; 1618 typedef struct _snd_config snd_config_t; 1619 typedef enum _snd_config_type { 1620 SND_CONFIG_TYPE_INTEGER, 1621 SND_CONFIG_TYPE_INTEGER64, 1622 SND_CONFIG_TYPE_REAL, 1623 SND_CONFIG_TYPE_STRING, 1624 SND_CONFIG_TYPE_POINTER, 1625 SND_CONFIG_TYPE_COMPOUND 1626 } snd_config_type_t; 1627 typedef struct _snd_config_update snd_config_update_t; 1628 typedef struct snd_devname { 1629 char *name; 1630 char *comment; 1631 snd_devname_t *next; 1632 } snd_devname_t; 1633 extern int snd_config_add(snd_config_t *, snd_config_t *); 1634 extern int snd_config_copy(snd_config_t * *, snd_config_t *); 1635 extern int snd_config_delete(snd_config_t *); 1636 extern int snd_config_get_ascii(const snd_config_t *, char **); 1637 extern int snd_config_get_id(const snd_config_t *, const char **); 1638 extern int snd_config_get_integer64(const snd_config_t *, long long int*); 1639 extern int snd_config_get_integer(const snd_config_t *, long int *); 1640 extern int snd_config_get_string(const snd_config_t *, const char **); 1641 extern snd_config_type_t snd_config_get_type(const snd_config_t *); 1642 extern int snd_config_imake_integer64(snd_config_t * *, const char *, 1643 const long long int); 1644 extern int snd_config_imake_integer(snd_config_t * *, const char *, 1645 const long int); 1646 extern int snd_config_imake_string(snd_config_t * *, const char *, 1647 const char *); 1648 extern snd_config_iterator_t snd_config_iterator_end(const snd_config_t*); 1649 extern snd_config_t *snd_config_iterator_entry(const 1650 snd_config_iterator_t); 1651 extern snd_config_iterator_t snd_config_iterator_first(const snd_config_t 1652 *); 1653 extern snd_config_iterator_t snd_config_iterator_next(const 1654 snd_config_iterator_t); 1655 extern int snd_config_load(snd_config_t *, snd_input_t *); 1656 extern int snd_config_make_compound(snd_config_t * *, const char *, int); 1657 extern int snd_config_make_integer64(snd_config_t * *, const char *); 1658 extern int snd_config_make_integer(snd_config_t * *, const char *); 1659 extern int snd_config_make_string(snd_config_t * *, const char *); 1660 extern int snd_config_save(snd_config_t *, snd_output_t *); 1661 extern int snd_config_search(snd_config_t *, const char *, 1662 snd_config_t * *); 1663 extern int snd_config_searchv(snd_config_t *, snd_config_t * *, ...); 1664 extern int snd_config_set_ascii(snd_config_t *, const char *); 1665 extern int snd_config_set_integer64(snd_config_t *, long long int); 1666 extern int snd_config_set_integer(snd_config_t *, long int); 1667 extern int snd_config_set_string(snd_config_t *, const char *); 1668 extern int snd_config_top(snd_config_t * *); 1669 extern int snd_config_update(void); 1670 extern int snd_config_update_free_global(void); 1671 extern snd_config_t *snd_config; 1672 __________________________________________________________ 1673 1674 6.2.2. alsa/control.h 1675 1676 #define SND_CTL_EVENT_MASK_VALUE (1<<0) 1677 #define SND_CTL_EVENT_MASK_INFO (1<<1) 1678 #define SND_CTL_EVENT_MASK_ADD (1<<2) 1679 #define SND_CTL_EVENT_MASK_TLV (1<<3) 1680 #define SND_CTL_POWER_D3hot (SND_CTL_POWER_D3|0x0000) 1681 #define SND_CTL_POWER_D3cold (SND_CTL_POWER_D3|0x0001) 1682 #define SND_CTL_EVENT_MASK_REMOVE (~0U) 1683 #define SND_CTL_TLV_DB_GAIN_MUTE -9999999 1684 #define SND_CTL_POWER_D0 0x0000 1685 #define SND_CTL_TLVT_CONTAINER 0x0000 1686 #define SND_CTL_NONBLOCK 0x0001 1687 #define SND_CTL_TLVT_DB_SCALE 0x0001 1688 #define SND_SCTL_NOFREE 0x0001 1689 #define SND_CTL_ASYNC 0x0002 1690 #define SND_CTL_TLVT_DB_LINEAR 0x0002 1691 #define SND_CTL_TLVT_DB_RANGE 0x0003 1692 #define SND_CTL_READONLY 0x0004 1693 #define SND_CTL_POWER_D1 0x0100 1694 #define SND_CTL_POWER_D2 0x0200 1695 #define SND_CTL_POWER_D3 0x0300 1696 #define SND_CTL_POWER_MASK 0xff00 1697 1698 typedef struct snd_aes_iec958 { 1699 unsigned char status[24]; 1700 unsigned char subcode[147]; 1701 unsigned char pad; 1702 unsigned char dig_subframe[4]; 1703 } snd_aes_iec958_t; 1704 typedef struct _snd_ctl_card_info snd_ctl_card_info_t; 1705 typedef struct sndrv_ctl_elem_id snd_ctl_elem_id_t; 1706 typedef enum _snd_ctl_elem_iface { 1707 SND_CTL_ELEM_IFACE_CARD, 1708 SND_CTL_ELEM_IFACE_HWDEP, 1709 SND_CTL_ELEM_IFACE_MIXER, 1710 SND_CTL_ELEM_IFACE_PCM, 1711 SND_CTL_ELEM_IFACE_RAWMIDI, 1712 SND_CTL_ELEM_IFACE_TIMER, 1713 SND_CTL_ELEM_IFACE_SEQUENCER, 1714 SND_CTL_ELEM_IFACE_LAST 1715 } snd_ctl_elem_iface_t; 1716 typedef struct _snd_ctl_elem_info snd_ctl_elem_info_t; 1717 typedef struct sndrv_ctl_elem_list snd_ctl_elem_list_t; 1718 typedef enum _snd_ctl_elem_type { 1719 SND_CTL_ELEM_TYPE_NONE, 1720 SND_CTL_ELEM_TYPE_BOOLEAN, 1721 SND_CTL_ELEM_TYPE_INTEGER, 1722 SND_CTL_ELEM_TYPE_ENUMERATED, 1723 SND_CTL_ELEM_TYPE_BYTES, 1724 SND_CTL_ELEM_TYPE_IEC958, 1725 SND_CTL_ELEM_TYPE_INTEGER64, 1726 SND_CTL_ELEM_TYPE_LAST 1727 } snd_ctl_elem_type_t; 1728 typedef struct _snd_ctl_elem_value snd_ctl_elem_value_t; 1729 typedef struct sndrv_ctl_event snd_ctl_event_t; 1730 typedef enum _snd_ctl_event_type { 1731 SND_CTL_EVENT_ELEM, 1732 SND_CTL_EVENT_LAST 1733 } snd_ctl_event_type_t; 1734 typedef struct _snd_ctl snd_ctl_t; 1735 typedef enum _snd_ctl_type { 1736 SND_CTL_TYPE_HW, 1737 SND_CTL_TYPE_SHM, 1738 SND_CTL_TYPE_INET, 1739 SND_CTL_TYPE_EXT 1740 } snd_ctl_type_t; 1741 typedef struct _snd_hctl snd_hctl_t; 1742 typedef struct _snd_sctl snd_sctl_t; 1743 typedef struct _snd_hctl_elem snd_hctl_elem_t; 1744 typedef int (*snd_hctl_compare_t) (void); 1745 typedef int (*snd_hctl_callback_t) (void); 1746 typedef int (*snd_hctl_elem_callback_t) (void); 1747 extern int snd_async_add_ctl_handler(snd_async_handler_t * *, snd_ctl_t*, 1748 snd_async_callback_t, void *); 1749 extern snd_ctl_t *snd_async_handler_get_ctl(snd_async_handler_t *); 1750 extern int snd_card_get_index(const char *); 1751 extern int snd_card_get_longname(int, char **); 1752 extern int snd_card_get_name(int, char **); 1753 extern int snd_card_load(int); 1754 extern int snd_card_next(int *); 1755 extern int snd_ctl_card_info(snd_ctl_t *, snd_ctl_card_info_t *); 1756 extern void snd_ctl_card_info_clear(snd_ctl_card_info_t *); 1757 extern void snd_ctl_card_info_copy(snd_ctl_card_info_t *, 1758 const snd_ctl_card_info_t *); 1759 extern void snd_ctl_card_info_free(snd_ctl_card_info_t *); 1760 extern const char *snd_ctl_card_info_get_components(const 1761 snd_ctl_card_info_t*); 1762 extern const char *snd_ctl_card_info_get_driver(const snd_ctl_card_info_t 1763 *); 1764 extern const char *snd_ctl_card_info_get_id(const snd_ctl_card_info_t *); 1765 extern const char *snd_ctl_card_info_get_longname(const snd_ctl_card_info_t 1766 *); 1767 extern const char *snd_ctl_card_info_get_mixername(const 1768 snd_ctl_card_info_t *); 1769 extern const char *snd_ctl_card_info_get_name(const snd_ctl_card_info_t*); 1770 extern int snd_ctl_card_info_malloc(snd_ctl_card_info_t * *); 1771 extern size_t snd_ctl_card_info_sizeof(void); 1772 extern int snd_ctl_close(snd_ctl_t *); 1773 extern int snd_ctl_elem_add_boolean(snd_ctl_t *, const snd_ctl_elem_id_t *, 1774 unsigned int); 1775 extern int snd_ctl_elem_add_iec958(snd_ctl_t *, const snd_ctl_elem_id_t*); 1776 extern int snd_ctl_elem_add_integer(snd_ctl_t *, const snd_ctl_elem_id_t *, 1777 unsigned int, long int, long int, 1778 long int); 1779 extern void snd_ctl_elem_id_clear(snd_ctl_elem_id_t *); 1780 extern void snd_ctl_elem_id_copy(snd_ctl_elem_id_t *, 1781 const snd_ctl_elem_id_t *); 1782 extern void snd_ctl_elem_id_free(snd_ctl_elem_id_t *); 1783 extern unsigned int snd_ctl_elem_id_get_device(const snd_ctl_elem_id_t *); 1784 extern unsigned int snd_ctl_elem_id_get_index(const snd_ctl_elem_id_t *); 1785 extern snd_ctl_elem_iface_t snd_ctl_elem_id_get_interface(const 1786 snd_ctl_elem_id_t 1787 *); 1788 extern const char *snd_ctl_elem_id_get_name(const snd_ctl_elem_id_t *); 1789 extern unsigned int snd_ctl_elem_id_get_numid(const snd_ctl_elem_id_t *); 1790 extern unsigned int snd_ctl_elem_id_get_subdevice(const snd_ctl_elem_id_t 1791 *); 1792 extern int snd_ctl_elem_id_malloc(snd_ctl_elem_id_t * *); 1793 extern void snd_ctl_elem_id_set_device(snd_ctl_elem_id_t *, unsigned int); 1794 extern void snd_ctl_elem_id_set_index(snd_ctl_elem_id_t *, unsigned int); 1795 extern void snd_ctl_elem_id_set_interface(snd_ctl_elem_id_t *, 1796 snd_ctl_elem_iface_t); 1797 extern void snd_ctl_elem_id_set_name(snd_ctl_elem_id_t *, const char *); 1798 extern void snd_ctl_elem_id_set_numid(snd_ctl_elem_id_t *, unsigned int); 1799 extern void snd_ctl_elem_id_set_subdevice(snd_ctl_elem_id_t *, 1800 unsigned int); 1801 extern size_t snd_ctl_elem_id_sizeof(void); 1802 extern const char *snd_ctl_elem_iface_name(snd_ctl_elem_iface_t); 1803 extern int snd_ctl_elem_info(snd_ctl_t *, snd_ctl_elem_info_t *); 1804 extern void snd_ctl_elem_info_clear(snd_ctl_elem_info_t *); 1805 extern void snd_ctl_elem_info_copy(snd_ctl_elem_info_t *, 1806 const snd_ctl_elem_info_t *); 1807 extern void snd_ctl_elem_info_free(snd_ctl_elem_info_t *); 1808 extern unsigned int snd_ctl_elem_info_get_count(const snd_ctl_elem_info_t 1809 *); 1810 extern void snd_ctl_elem_info_get_id(const snd_ctl_elem_info_t *, 1811 snd_ctl_elem_id_t *); 1812 extern const char *snd_ctl_elem_info_get_item_name(const 1813 snd_ctl_elem_info_t *); 1814 extern unsigned int snd_ctl_elem_info_get_items(const snd_ctl_elem_info_t 1815 *); 1816 extern long long int snd_ctl_elem_info_get_max64(const snd_ctl_elem_info_t 1817 *); 1818 extern long int snd_ctl_elem_info_get_max(const snd_ctl_elem_info_t *); 1819 extern long long int snd_ctl_elem_info_get_min64(const snd_ctl_elem_info_t 1820 *); 1821 extern long int snd_ctl_elem_info_get_min(const snd_ctl_elem_info_t *); 1822 extern const char *snd_ctl_elem_info_get_name(const snd_ctl_elem_info_t*); 1823 extern unsigned int snd_ctl_elem_info_get_numid(const snd_ctl_elem_info_t 1824 *); 1825 extern long long int snd_ctl_elem_info_get_step64(const snd_ctl_elem_info_t 1826 *); 1827 extern long int snd_ctl_elem_info_get_step(const snd_ctl_elem_info_t *); 1828 extern snd_ctl_elem_type_t snd_ctl_elem_info_get_type(const 1829 snd_ctl_elem_info_t 1830 *); 1831 extern int snd_ctl_elem_info_is_inactive(const snd_ctl_elem_info_t *); 1832 extern int snd_ctl_elem_info_is_locked(const snd_ctl_elem_info_t *); 1833 extern int snd_ctl_elem_info_is_readable(const snd_ctl_elem_info_t *); 1834 extern int snd_ctl_elem_info_is_user(const snd_ctl_elem_info_t *); 1835 extern int snd_ctl_elem_info_is_volatile(const snd_ctl_elem_info_t *); 1836 extern int snd_ctl_elem_info_is_writable(const snd_ctl_elem_info_t *); 1837 extern int snd_ctl_elem_info_malloc(snd_ctl_elem_info_t * *); 1838 extern void snd_ctl_elem_info_set_id(snd_ctl_elem_info_t *, 1839 const snd_ctl_elem_id_t *); 1840 extern void snd_ctl_elem_info_set_item(snd_ctl_elem_info_t *, 1841 unsigned int); 1842 extern size_t snd_ctl_elem_info_sizeof(void); 1843 extern int snd_ctl_elem_list(snd_ctl_t *, snd_ctl_elem_list_t *); 1844 extern int snd_ctl_elem_list_alloc_space(snd_ctl_elem_list_t *, 1845 unsigned int); 1846 extern void snd_ctl_elem_list_clear(snd_ctl_elem_list_t *); 1847 extern void snd_ctl_elem_list_copy(snd_ctl_elem_list_t *, 1848 const snd_ctl_elem_list_t *); 1849 extern void snd_ctl_elem_list_free(snd_ctl_elem_list_t *); 1850 extern void snd_ctl_elem_list_free_space(snd_ctl_elem_list_t *); 1851 extern unsigned int snd_ctl_elem_list_get_count(const snd_ctl_elem_list_t 1852 *); 1853 extern void snd_ctl_elem_list_get_id(const snd_ctl_elem_list_t *, 1854 unsigned int, snd_ctl_elem_id_t *); 1855 extern const char *snd_ctl_elem_list_get_name(const snd_ctl_elem_list_t*, 1856 unsigned int); 1857 extern unsigned int snd_ctl_elem_list_get_used(const snd_ctl_elem_list_t 1858 *); 1859 extern int snd_ctl_elem_list_malloc(snd_ctl_elem_list_t * *); 1860 extern void snd_ctl_elem_list_set_offset(snd_ctl_elem_list_t *, 1861 unsigned int); 1862 extern size_t snd_ctl_elem_list_sizeof(void); 1863 extern int snd_ctl_elem_read(snd_ctl_t *, snd_ctl_elem_value_t *); 1864 extern int snd_ctl_elem_remove(snd_ctl_t *, snd_ctl_elem_id_t *); 1865 extern const char *snd_ctl_elem_type_name(snd_ctl_elem_type_t); 1866 extern void snd_ctl_elem_value_clear(snd_ctl_elem_value_t *); 1867 extern void snd_ctl_elem_value_copy(snd_ctl_elem_value_t *, 1868 const snd_ctl_elem_value_t *); 1869 extern void snd_ctl_elem_value_free(snd_ctl_elem_value_t *); 1870 extern int snd_ctl_elem_value_get_boolean(const snd_ctl_elem_value_t *, 1871 unsigned int); 1872 extern unsigned char snd_ctl_elem_value_get_byte(const snd_ctl_elem_value_t 1873 *, unsigned int); 1874 extern const void *snd_ctl_elem_value_get_bytes(const snd_ctl_elem_value_t 1875 *); 1876 extern unsigned int snd_ctl_elem_value_get_enumerated(const 1877 snd_ctl_elem_value_t 1878 *, unsigned int); 1879 extern void snd_ctl_elem_value_get_id(const snd_ctl_elem_value_t *, 1880 snd_ctl_elem_id_t *); 1881 extern void snd_ctl_elem_value_get_iec958(const snd_ctl_elem_value_t *, 1882 snd_aes_iec958_t *); 1883 extern long long int snd_ctl_elem_value_get_integer64(const 1884 snd_ctl_elem_value_t 1885 *, unsigned int); 1886 extern long int snd_ctl_elem_value_get_integer(const snd_ctl_elem_value_t 1887 *, unsigned int); 1888 extern int snd_ctl_elem_value_malloc(snd_ctl_elem_value_t * *); 1889 extern void snd_ctl_elem_value_set_boolean(snd_ctl_elem_value_t *, 1890 unsigned int, long int); 1891 extern void snd_ctl_elem_value_set_byte(snd_ctl_elem_value_t *, 1892 unsigned int, unsigned char); 1893 extern void snd_ctl_elem_value_set_enumerated(snd_ctl_elem_value_t *, 1894 unsigned int, unsigned int); 1895 extern void snd_ctl_elem_value_set_id(snd_ctl_elem_value_t *, 1896 const snd_ctl_elem_id_t *); 1897 extern void snd_ctl_elem_value_set_iec958(snd_ctl_elem_value_t *, 1898 const snd_aes_iec958_t *); 1899 extern void snd_ctl_elem_value_set_integer64(snd_ctl_elem_value_t *, 1900 unsigned int, long long int); 1901 extern void snd_ctl_elem_value_set_integer(snd_ctl_elem_value_t *, 1902 unsigned int, long int); 1903 extern size_t snd_ctl_elem_value_sizeof(void); 1904 extern int snd_ctl_elem_write(snd_ctl_t *, snd_ctl_elem_value_t *); 1905 extern void snd_ctl_event_clear(snd_ctl_event_t *); 1906 extern void snd_ctl_event_copy(snd_ctl_event_t *, const snd_ctl_event_t*); 1907 extern void snd_ctl_event_elem_get_id(const snd_ctl_event_t *, 1908 snd_ctl_elem_id_t *); 1909 extern unsigned int snd_ctl_event_elem_get_mask(const snd_ctl_event_t *); 1910 extern void snd_ctl_event_free(snd_ctl_event_t *); 1911 extern int snd_ctl_event_malloc(snd_ctl_event_t * *); 1912 extern size_t snd_ctl_event_sizeof(void); 1913 extern int snd_ctl_hwdep_info(snd_ctl_t *, snd_hwdep_info_t *); 1914 extern int snd_ctl_hwdep_next_device(snd_ctl_t *, int *); 1915 extern const char *snd_ctl_name(snd_ctl_t *); 1916 extern int snd_ctl_nonblock(snd_ctl_t *, int); 1917 extern int snd_ctl_open(snd_ctl_t * *, const char *, int); 1918 extern int snd_ctl_pcm_info(snd_ctl_t *, snd_pcm_info_t *); 1919 extern int snd_ctl_pcm_next_device(snd_ctl_t *, int *); 1920 extern int snd_ctl_poll_descriptors(snd_ctl_t *, struct pollfd *, 1921 unsigned int); 1922 extern int snd_ctl_poll_descriptors_count(snd_ctl_t *); 1923 extern int snd_ctl_rawmidi_info(snd_ctl_t *, snd_rawmidi_info_t *); 1924 extern int snd_ctl_rawmidi_next_device(snd_ctl_t *, int *); 1925 extern int snd_ctl_read(snd_ctl_t *, snd_ctl_event_t *); 1926 extern int snd_ctl_subscribe_events(snd_ctl_t *, int); 1927 extern int snd_hctl_close(snd_hctl_t *); 1928 extern void *snd_hctl_elem_get_callback_private(const snd_hctl_elem_t *); 1929 extern void snd_hctl_elem_get_id(const snd_hctl_elem_t *, 1930 snd_ctl_elem_id_t *); 1931 extern int snd_hctl_elem_info(snd_hctl_elem_t *, snd_ctl_elem_info_t *); 1932 extern snd_hctl_elem_t *snd_hctl_elem_next(snd_hctl_elem_t *); 1933 extern snd_hctl_elem_t *snd_hctl_elem_prev(snd_hctl_elem_t *); 1934 extern int snd_hctl_elem_read(snd_hctl_elem_t *, snd_ctl_elem_value_t *); 1935 extern void snd_hctl_elem_set_callback(snd_hctl_elem_t *, 1936 snd_hctl_elem_callback_t); 1937 extern void snd_hctl_elem_set_callback_private(snd_hctl_elem_t *, void *); 1938 extern int snd_hctl_elem_write(snd_hctl_elem_t *, snd_ctl_elem_value_t *); 1939 extern snd_hctl_elem_t *snd_hctl_find_elem(snd_hctl_t *, 1940 const snd_ctl_elem_id_t *); 1941 extern snd_hctl_elem_t *snd_hctl_first_elem(snd_hctl_t *); 1942 extern int snd_hctl_free(snd_hctl_t *); 1943 extern void *snd_hctl_get_callback_private(snd_hctl_t *); 1944 extern snd_hctl_elem_t *snd_hctl_last_elem(snd_hctl_t *); 1945 extern int snd_hctl_load(snd_hctl_t *); 1946 extern int snd_hctl_open(snd_hctl_t * *, const char *, int); 1947 extern void snd_hctl_set_callback(snd_hctl_t *, snd_hctl_callback_t); 1948 extern void snd_hctl_set_callback_private(snd_hctl_t *, void *); 1949 __________________________________________________________ 1950 1951 6.2.3. alsa/control_external.h 1952 1953 #define SND_CTL_EXT_VERSION ((SND_CTL_EXT_VERSION_MAJOR<<16) | (SND_CTL_EXT_VERSION_MINOR<<8) | (SND_CTL_EXT_VERSION_TINY)) 1954 #define SND_CTL_EXT_KEY_NOT_FOUND (snd_ctl_ext_key_t)(-1) 1955 #define SND_CTL_EXT_VERSION_MINOR 0 1956 #define SND_CTL_EXT_VERSION_TINY 0 1957 #define SND_CTL_EXT_VERSION_MAJOR 1 1958 1959 typedef struct snd_ctl_ext_callback { 1960 void (*close) (void); 1961 int (*elem_count) (void); 1962 int (*elem_list) (void); 1963 snd_ctl_ext_key_t(*find_elem) (void); 1964 void (*free_key) (void); 1965 int (*get_attribute) (void); 1966 int (*get_integer_info) (void); 1967 int (*get_integer64_info) (void); 1968 int (*get_enumerated_info) (void); 1969 int (*get_enumerated_name) (void); 1970 int (*read_integer) (void); 1971 int (*read_integer64) (void); 1972 int (*read_enumerated) (void); 1973 int (*read_bytes) (void); 1974 int (*read_iec958) (void); 1975 int (*write_integer) (void); 1976 int (*write_integer64) (void); 1977 int (*write_enumerated) (void); 1978 int (*write_bytes) (void); 1979 int (*write_iec958) (void); 1980 void (*subscribe_events) (void); 1981 int (*read_event) (void); 1982 int (*poll_descriptors_count) (void); 1983 int (*poll_descriptors) (void); 1984 int (*poll_revents) (void); 1985 } snd_ctl_ext_callback_t; 1986 typedef long unsigned int snd_ctl_ext_key_t; 1987 typedef struct snd_ctl_ext { 1988 unsigned int version; 1989 int card_idx; 1990 char id[16]; 1991 char driver[16]; 1992 char name[32]; 1993 char longname[80]; 1994 char mixername[80]; 1995 int poll_fd; 1996 const snd_ctl_ext_callback_t *callback; 1997 void *private_data; 1998 snd_ctl_t *handle; 1999 int nonblock; 2000 int subscribed; 2001 } snd_ctl_ext_t; 2002 __________________________________________________________ 2003 2004 6.2.4. alsa/error.h 2005 2006 #define SND_ERROR_INCOMPATIBLE_VERSION (SND_ERROR_BEGIN+0) 2007 #define SND_ERROR_ALISP_NIL (SND_ERROR_BEGIN+1) 2008 #define SND_ERROR_BEGIN 500000 2009 2010 typedef void (*snd_lib_error_handler_t) (void); 2011 extern int snd_lib_error_set_handler(snd_lib_error_handler_t); 2012 extern const char *snd_strerror(int); 2013 __________________________________________________________ 2014 2015 6.2.5. alsa/global.h 2016 2017 typedef struct _snd_async_handler snd_async_handler_t; 2018 typedef void (*snd_async_callback_t) (void); 2019 typedef struct timespec snd_htimestamp_t; 2020 typedef struct timeval snd_timestamp_t; 2021 extern const char *snd_asoundlib_version(void); 2022 extern int snd_async_add_handler(snd_async_handler_t * *, int, 2023 snd_async_callback_t, void *); 2024 extern int snd_async_del_handler(snd_async_handler_t *); 2025 extern void *snd_async_handler_get_callback_private(snd_async_handler_t*); 2026 __________________________________________________________ 2027 2028 6.2.6. alsa/hwdep.h 2029 2030 #define SND_HWDEP_OPEN_NONBLOCK (O_NONBLOCK) 2031 #define SND_HWDEP_OPEN_READ (O_RDONLY) 2032 #define SND_HWDEP_OPEN_DUPLEX (O_RDWR) 2033 #define SND_HWDEP_OPEN_WRITE (O_WRONLY) 2034 2035 typedef struct sndrv_hwdep_dsp_image snd_hwdep_dsp_image_t; 2036 typedef struct sndrv_hwdep_dsp_status snd_hwdep_dsp_status_t; 2037 typedef enum _snd_hwdep_iface { 2038 SND_HWDEP_IFACE_OPL2, 2039 SND_HWDEP_IFACE_OPL3, 2040 SND_HWDEP_IFACE_OPL4, 2041 SND_HWDEP_IFACE_SB16CSP, 2042 SND_HWDEP_IFACE_EMU10K1, 2043 SND_HWDEP_IFACE_YSS225, 2044 SND_HWDEP_IFACE_ICS2115, 2045 SND_HWDEP_IFACE_SSCAPE, 2046 SND_HWDEP_IFACE_VX, 2047 SND_HWDEP_IFACE_MIXART, 2048 SND_HWDEP_IFACE_USX2Y, 2049 SND_HWDEP_IFACE_EMUX_WAVETABLE, 2050 SND_HWDEP_IFACE_BLUETOOTH, 2051 SND_HWDEP_IFACE_USX2Y_PCM, 2052 SND_HWDEP_IFACE_PCXHR, 2053 SND_HWDEP_IFACE_SB_RC, 2054 SND_HWDEP_IFACE_LAST 2055 } snd_hwdep_iface_t; 2056 typedef struct sndrv_hwdep_info snd_hwdep_info_t; 2057 typedef struct _snd_hwdep snd_hwdep_t; 2058 typedef enum _snd_hwdep_type { 2059 SND_HWDEP_TYPE_HW, 2060 SND_HWDEP_TYPE_SHM, 2061 SND_HWDEP_TYPE_INET 2062 } snd_hwdep_type_t; 2063 extern int snd_hwdep_close(snd_hwdep_t *); 2064 extern void snd_hwdep_dsp_image_copy(snd_hwdep_dsp_image_t *, 2065 const snd_hwdep_dsp_image_t *); 2066 extern void snd_hwdep_dsp_image_free(snd_hwdep_dsp_image_t *); 2067 extern const void *snd_hwdep_dsp_image_get_image(const 2068 snd_hwdep_dsp_image_t *); 2069 extern unsigned int snd_hwdep_dsp_image_get_index(const 2070 snd_hwdep_dsp_image_t*); 2071 extern size_t snd_hwdep_dsp_image_get_length(const snd_hwdep_dsp_image_t 2072 *); 2073 extern const char *snd_hwdep_dsp_image_get_name(const snd_hwdep_dsp_image_t 2074 *); 2075 extern int snd_hwdep_dsp_image_malloc(snd_hwdep_dsp_image_t * *); 2076 extern void snd_hwdep_dsp_image_set_image(snd_hwdep_dsp_image_t *, void*); 2077 extern void snd_hwdep_dsp_image_set_index(snd_hwdep_dsp_image_t *, 2078 unsigned int); 2079 extern void snd_hwdep_dsp_image_set_length(snd_hwdep_dsp_image_t *, 2080 size_t); 2081 extern void snd_hwdep_dsp_image_set_name(snd_hwdep_dsp_image_t *, 2082 const char *); 2083 extern size_t snd_hwdep_dsp_image_sizeof(void); 2084 extern int snd_hwdep_dsp_load(snd_hwdep_t *, snd_hwdep_dsp_image_t *); 2085 extern int snd_hwdep_dsp_status(snd_hwdep_t *, snd_hwdep_dsp_status_t *); 2086 extern void snd_hwdep_dsp_status_copy(snd_hwdep_dsp_status_t *, 2087 const snd_hwdep_dsp_status_t *); 2088 extern void snd_hwdep_dsp_status_free(snd_hwdep_dsp_status_t *); 2089 extern unsigned int snd_hwdep_dsp_status_get_chip_ready(const 2090 snd_hwdep_dsp_status_t 2091 *); 2092 extern unsigned int snd_hwdep_dsp_status_get_dsp_loaded(const 2093 snd_hwdep_dsp_status_t 2094 *); 2095 extern const char *snd_hwdep_dsp_status_get_id(const snd_hwdep_dsp_status_t 2096 *); 2097 extern unsigned int snd_hwdep_dsp_status_get_num_dsps(const 2098 snd_hwdep_dsp_status_t 2099 *); 2100 extern unsigned int snd_hwdep_dsp_status_get_version(const 2101 snd_hwdep_dsp_status_t 2102 *); 2103 extern int snd_hwdep_dsp_status_malloc(snd_hwdep_dsp_status_t * *); 2104 extern size_t snd_hwdep_dsp_status_sizeof(void); 2105 extern int snd_hwdep_info(snd_hwdep_t *, snd_hwdep_info_t *); 2106 extern void snd_hwdep_info_copy(snd_hwdep_info_t *, 2107 const snd_hwdep_info_t *); 2108 extern void snd_hwdep_info_free(snd_hwdep_info_t *); 2109 extern int snd_hwdep_info_get_card(const snd_hwdep_info_t *); 2110 extern unsigned int snd_hwdep_info_get_device(const snd_hwdep_info_t *); 2111 extern const char *snd_hwdep_info_get_id(const snd_hwdep_info_t *); 2112 extern snd_hwdep_iface_t snd_hwdep_info_get_iface(const snd_hwdep_info_t 2113 *); 2114 extern const char *snd_hwdep_info_get_name(const snd_hwdep_info_t *); 2115 extern int snd_hwdep_info_malloc(snd_hwdep_info_t * *); 2116 extern void snd_hwdep_info_set_device(snd_hwdep_info_t *, unsigned int); 2117 extern size_t snd_hwdep_info_sizeof(void); 2118 extern int snd_hwdep_ioctl(snd_hwdep_t *, unsigned int, void *); 2119 extern int snd_hwdep_open(snd_hwdep_t * *, const char *, int); 2120 extern int snd_hwdep_poll_descriptors(snd_hwdep_t *, struct pollfd *, 2121 unsigned int); 2122 extern ssize_t snd_hwdep_read(snd_hwdep_t *, void *, size_t); 2123 extern ssize_t snd_hwdep_write(snd_hwdep_t *, const void *, size_t); 2124 __________________________________________________________ 2125 2126 6.2.7. alsa/iatomic.h 2127 2128 #define atomic_set(v,i) (((v)->counter) = (i)) 2129 #define atomic_read(v) ((v)->counter) 2130 #define ATOMIC_INIT(i) { (i) } 2131 2132 typedef struct { 2133 unsigned int begin; 2134 unsigned int end; 2135 } snd_atomic_write_t; 2136 typedef struct { 2137 const volatile snd_atomic_write_t *write; 2138 unsigned int end; 2139 } snd_atomic_read_t; 2140 __________________________________________________________ 2141 2142 6.2.8. alsa/input.h 2143 2144 typedef struct _snd_input snd_input_t; 2145 extern int snd_input_buffer_open(snd_input_t * *, const char *, ssize_t); 2146 extern int snd_input_close(snd_input_t *); 2147 extern int snd_input_stdio_attach(snd_input_t * *, FILE *, int); 2148 extern int snd_input_stdio_open(snd_input_t * *, const char *, 2149 const char *); 2150 __________________________________________________________ 2151 2152 6.2.9. alsa/instr.h 2153 2154 #define SND_SEQ_INSTR_ID_DLS1 "DLS1" 2155 #define SND_SEQ_INSTR_ID_DLS2 "DLS2" 2156 #define SND_SEQ_INSTR_ID_GUS_PATCH "GUS Patch" 2157 #define SND_SEQ_INSTR_ID_INTERWAVE "Interwave FFFF" 2158 #define SND_SEQ_INSTR_ID_OPL2_3 "OPL2/3 FM" 2159 #define SND_SEQ_INSTR_ID_OPL4 "OPL4" 2160 #define SND_SEQ_INSTR_ID_SIMPLE "Simple Wave" 2161 #define SND_SEQ_INSTR_ID_SOUNDFONT "SoundFont" 2162 #define SND_SEQ_INSTR_QUERY_FOLLOW_ALIAS (1<<0) 2163 #define SND_SEQ_INSTR_TYPE0_DLS1 (1<<0) 2164 #define SND_SEQ_INSTR_TYPE1_SIMPLE (1<<0) 2165 #define SND_SEQ_INSTR_TYPE2_OPL2_3 (1<<0) 2166 #define SND_SEQ_INSTR_TYPE0_DLS2 (1<<1) 2167 #define SND_SEQ_INSTR_TYPE1_SOUNDFONT (1<<1) 2168 #define SND_SEQ_INSTR_TYPE2_OPL4 (1<<1) 2169 #define SND_SEQ_INSTR_TYPE1_GUS_PATCH (1<<2) 2170 #define SND_SEQ_INSTR_TYPE1_INTERWAVE (1<<3) 2171 #define SND_SEQ_INSTR_ATYPE_DATA 0 2172 #define SND_SEQ_INSTR_FREE_CMD_ALL 0 2173 #define SND_SEQ_INSTR_GET_CMD_FULL 0 2174 #define SND_SEQ_INSTR_PUT_CMD_CREATE 0 2175 #define SND_SEQ_INSTR_ATYPE_ALIAS 1 2176 #define SND_SEQ_INSTR_FREE_CMD_PRIVATE 1 2177 #define SND_SEQ_INSTR_GET_CMD_PARTIAL 1 2178 #define SND_SEQ_INSTR_PUT_CMD_REPLACE 1 2179 #define SND_SEQ_INSTR_FREE_CMD_CLUSTER 2 2180 #define SND_SEQ_INSTR_PUT_CMD_MODIFY 2 2181 #define SND_SEQ_INSTR_FREE_CMD_SINGLE 3 2182 #define SND_SEQ_INSTR_PUT_CMD_ADD 3 2183 #define SND_SEQ_INSTR_PUT_CMD_REMOVE 4 2184 2185 typedef void snd_instr_fm_t; 2186 typedef struct sndrv_seq_instr_header snd_instr_header_t; 2187 typedef void snd_instr_iwffff_t; 2188 typedef void snd_instr_simple_t; 2189 typedef struct _snd_iwffff_handle snd_iwffff_handle_t; 2190 __________________________________________________________ 2191 2192 6.2.10. alsa/mixer.h 2193 2194 typedef struct _snd_mixer snd_mixer_t; 2195 typedef struct _snd_mixer_elem snd_mixer_elem_t; 2196 typedef enum _snd_mixer_elem_type { 2197 SND_MIXER_ELEM_SIMPLE, 2198 SND_MIXER_ELEM_LAST 2199 } snd_mixer_elem_type_t; 2200 typedef struct _snd_mixer_class snd_mixer_class_t; 2201 typedef int (*snd_mixer_compare_t) (void); 2202 typedef int (*snd_mixer_elem_callback_t) (void); 2203 typedef int (*snd_mixer_callback_t) (void); 2204 typedef int (*snd_mixer_event_t) (void); 2205 typedef enum _snd_mixer_selem_channel_id { 2206 SND_MIXER_SCHN_UNKNOWN, 2207 SND_MIXER_SCHN_FRONT_LEFT, 2208 SND_MIXER_SCHN_FRONT_RIGHT, 2209 SND_MIXER_SCHN_REAR_LEFT, 2210 SND_MIXER_SCHN_REAR_RIGHT, 2211 SND_MIXER_SCHN_FRONT_CENTER, 2212 SND_MIXER_SCHN_WOOFER, 2213 SND_MIXER_SCHN_SIDE_LEFT, 2214 SND_MIXER_SCHN_SIDE_RIGHT, 2215 SND_MIXER_SCHN_REAR_CENTER, 2216 SND_MIXER_SCHN_LAST, 2217 SND_MIXER_SCHN_MONO 2218 } snd_mixer_selem_channel_id_t; 2219 typedef struct _snd_mixer_selem_id snd_mixer_selem_id_t; 2220 enum snd_mixer_selem_regopt_abstract { 2221 SND_MIXER_SABSTRACT_NONE, 2222 SND_MIXER_SABSTRACT_BASIC 2223 }; 2224 struct snd_mixer_selem_regopt { 2225 int ver; 2226 enum snd_mixer_selem_regopt_abstract abstract; 2227 const char *device; 2228 snd_pcm_t *playback_pcm; 2229 snd_pcm_t *capture_pcm; 2230 }; 2231 extern int snd_mixer_attach(snd_mixer_t *, const char *); 2232 extern int snd_mixer_close(snd_mixer_t *); 2233 extern int snd_mixer_detach(snd_mixer_t *, const char *); 2234 extern void *snd_mixer_elem_get_callback_private(const snd_mixer_elem_t*); 2235 extern snd_mixer_elem_type_t snd_mixer_elem_get_type(const snd_mixer_elem_t 2236 *); 2237 extern snd_mixer_elem_t *snd_mixer_elem_next(snd_mixer_elem_t *); 2238 extern snd_mixer_elem_t *snd_mixer_elem_prev(snd_mixer_elem_t *); 2239 extern void snd_mixer_elem_set_callback(snd_mixer_elem_t *, 2240 snd_mixer_elem_callback_t); 2241 extern void snd_mixer_elem_set_callback_private(snd_mixer_elem_t *, 2242 void *); 2243 extern snd_mixer_elem_t *snd_mixer_find_selem(snd_mixer_t *, 2244 const snd_mixer_selem_id_t 2245 *); 2246 extern snd_mixer_elem_t *snd_mixer_first_elem(snd_mixer_t *); 2247 extern void snd_mixer_free(snd_mixer_t *); 2248 extern void *snd_mixer_get_callback_private(const snd_mixer_t *); 2249 extern unsigned int snd_mixer_get_count(const snd_mixer_t *); 2250 extern int snd_mixer_handle_events(snd_mixer_t *); 2251 extern snd_mixer_elem_t *snd_mixer_last_elem(snd_mixer_t *); 2252 extern int snd_mixer_load(snd_mixer_t *); 2253 extern int snd_mixer_open(snd_mixer_t * *, int); 2254 extern int snd_mixer_poll_descriptors(snd_mixer_t *, struct pollfd *, 2255 unsigned int); 2256 extern int snd_mixer_poll_descriptors_count(snd_mixer_t *); 2257 extern int snd_mixer_poll_descriptors_revents(snd_mixer_t *, 2258 struct pollfd *, 2259 unsigned int, 2260 short unsigned int *); 2261 extern const char 2262 *snd_mixer_selem_channel_name(snd_mixer_selem_channel_id_t); 2263 extern int snd_mixer_selem_get_capture_group(snd_mixer_elem_t *); 2264 extern int snd_mixer_selem_get_capture_switch(snd_mixer_elem_t *, 2265 snd_mixer_selem_channel_id_t, 2266 int *); 2267 extern int snd_mixer_selem_get_capture_volume(snd_mixer_elem_t *, 2268 snd_mixer_selem_channel_id_t, 2269 long int *); 2270 extern int snd_mixer_selem_get_capture_volume_range(snd_mixer_elem_t *, 2271 long int *, 2272 long int *); 2273 extern int snd_mixer_selem_get_enum_item(snd_mixer_elem_t *, 2274 snd_mixer_selem_channel_id_t, 2275 unsigned int *); 2276 extern int snd_mixer_selem_get_enum_item_name(snd_mixer_elem_t *, 2277 unsigned int, size_t, 2278 char *); 2279 extern int snd_mixer_selem_get_enum_items(snd_mixer_elem_t *); 2280 extern void snd_mixer_selem_get_id(snd_mixer_elem_t *, 2281 snd_mixer_selem_id_t *); 2282 extern unsigned int snd_mixer_selem_get_index(snd_mixer_elem_t *); 2283 extern const char *snd_mixer_selem_get_name(snd_mixer_elem_t *); 2284 extern int snd_mixer_selem_get_playback_switch(snd_mixer_elem_t *, 2285 snd_mixer_selem_channel_id_t, 2286 int *); 2287 extern int snd_mixer_selem_get_playback_volume(snd_mixer_elem_t *, 2288 snd_mixer_selem_channel_id_t, 2289 long int *); 2290 extern int snd_mixer_selem_get_playback_volume_range(snd_mixer_elem_t *, 2291 long int *, 2292 long int *); 2293 extern int snd_mixer_selem_has_capture_channel(snd_mixer_elem_t *, 2294 snd_mixer_selem_channel_id_t); 2295 extern int snd_mixer_selem_has_capture_switch(snd_mixer_elem_t *); 2296 extern int snd_mixer_selem_has_capture_switch_exclusive(snd_mixer_elem_t 2297 *); 2298 extern int snd_mixer_selem_has_capture_switch_joined(snd_mixer_elem_t *); 2299 extern int snd_mixer_selem_has_capture_volume(snd_mixer_elem_t *); 2300 extern int snd_mixer_selem_has_capture_volume_joined(snd_mixer_elem_t *); 2301 extern int snd_mixer_selem_has_common_switch(snd_mixer_elem_t *); 2302 extern int snd_mixer_selem_has_common_volume(snd_mixer_elem_t *); 2303 extern int snd_mixer_selem_has_playback_channel(snd_mixer_elem_t *, 2304 snd_mixer_selem_channel_id_t); 2305 extern int snd_mixer_selem_has_playback_switch(snd_mixer_elem_t *); 2306 extern int snd_mixer_selem_has_playback_switch_joined(snd_mixer_elem_t *); 2307 extern int snd_mixer_selem_has_playback_volume(snd_mixer_elem_t *); 2308 extern int snd_mixer_selem_has_playback_volume_joined(snd_mixer_elem_t *); 2309 extern void snd_mixer_selem_id_copy(snd_mixer_selem_id_t *, 2310 const snd_mixer_selem_id_t *); 2311 extern void snd_mixer_selem_id_free(snd_mixer_selem_id_t *); 2312 extern unsigned int snd_mixer_selem_id_get_index(const snd_mixer_selem_id_t 2313 *); 2314 extern const char *snd_mixer_selem_id_get_name(const snd_mixer_selem_id_t 2315 *); 2316 extern int snd_mixer_selem_id_malloc(snd_mixer_selem_id_t * *); 2317 extern void snd_mixer_selem_id_set_index(snd_mixer_selem_id_t *, 2318 unsigned int); 2319 extern void snd_mixer_selem_id_set_name(snd_mixer_selem_id_t *, 2320 const char *); 2321 extern size_t snd_mixer_selem_id_sizeof(void); 2322 extern int snd_mixer_selem_is_active(snd_mixer_elem_t *); 2323 extern int snd_mixer_selem_is_capture_mono(snd_mixer_elem_t *); 2324 extern int snd_mixer_selem_is_enum_capture(snd_mixer_elem_t *); 2325 extern int snd_mixer_selem_is_enum_playback(snd_mixer_elem_t *); 2326 extern int snd_mixer_selem_is_enumerated(snd_mixer_elem_t *); 2327 extern int snd_mixer_selem_is_playback_mono(snd_mixer_elem_t *); 2328 extern int snd_mixer_selem_register(snd_mixer_t *, 2329 struct snd_mixer_selem_regopt *, 2330 snd_mixer_class_t * *); 2331 extern int snd_mixer_selem_set_capture_switch(snd_mixer_elem_t *, 2332 snd_mixer_selem_channel_id_t, 2333 int); 2334 extern int snd_mixer_selem_set_capture_switch_all(snd_mixer_elem_t *, int); 2335 extern int snd_mixer_selem_set_capture_volume(snd_mixer_elem_t *, 2336 snd_mixer_selem_channel_id_t, 2337 long int); 2338 extern int snd_mixer_selem_set_capture_volume_all(snd_mixer_elem_t *, 2339 long int); 2340 extern int snd_mixer_selem_set_capture_volume_range(snd_mixer_elem_t *, 2341 long int, long int); 2342 extern int snd_mixer_selem_set_enum_item(snd_mixer_elem_t *, 2343 snd_mixer_selem_channel_id_t, 2344 unsigned int); 2345 extern int snd_mixer_selem_set_playback_switch(snd_mixer_elem_t *, 2346 snd_mixer_selem_channel_id_t, 2347 int); 2348 extern int snd_mixer_selem_set_playback_switch_all(snd_mixer_elem_t *, 2349 int); 2350 extern int snd_mixer_selem_set_playback_volume(snd_mixer_elem_t *, 2351 snd_mixer_selem_channel_id_t, 2352 long int); 2353 extern int snd_mixer_selem_set_playback_volume_all(snd_mixer_elem_t *, 2354 long int); 2355 extern int snd_mixer_selem_set_playback_volume_range(snd_mixer_elem_t *, 2356 long int, long int); 2357 extern void snd_mixer_set_callback(snd_mixer_t *, snd_mixer_callback_t); 2358 extern void snd_mixer_set_callback_private(snd_mixer_t *, void *); 2359 extern int snd_mixer_wait(snd_mixer_t *, int); 2360 __________________________________________________________ 2361 2362 6.2.11. alsa/mixer_abst.h 2363 2364 #define sm_selem(x) ((sm_selem_t *)((x)->private_data)) 2365 #define sm_selem_ops(x) ((sm_selem_t *)((x)->private_data))->ops 2366 #define SM_CAP_GVOLUME (1<<1) 2367 #define SM_CAP_CSWITCH_JOIN (1<<10) 2368 #define SM_CAP_CSWITCH_EXCL (1<<11) 2369 #define SM_CAP_PENUM (1<<12) 2370 #define SM_CAP_CENUM (1<<13) 2371 #define SM_CAP_GSWITCH (1<<2) 2372 #define SM_CAP_PVOLUME (1<<3) 2373 #define SM_CAP_PVOLUME_JOIN (1<<4) 2374 #define SM_CAP_PSWITCH (1<<5) 2375 #define SM_CAP_PSWITCH_JOIN (1<<6) 2376 #define SM_CAP_CVOLUME (1<<7) 2377 #define SM_CAP_CVOLUME_JOIN (1<<8) 2378 #define SM_CAP_CSWITCH (1<<9) 2379 #define SM_OPS_IS_ACTIVE 0 2380 #define SM_OPS_IS_MONO 1 2381 #define SM_OPS_IS_CHANNEL 2 2382 #define SM_OPS_IS_ENUMERATED 3 2383 #define SM_OPS_IS_ENUMCNT 4 2384 2385 typedef struct _sm_class_basic { 2386 char *device; 2387 snd_ctl_t *ctl; 2388 snd_hctl_t *hctl; 2389 snd_ctl_card_info_t *info; 2390 } sm_class_basic_t; 2391 __________________________________________________________ 2392 2393 6.2.12. alsa/output.h 2394 2395 typedef struct _snd_output snd_output_t; 2396 extern int snd_output_buffer_open(snd_output_t * *); 2397 extern size_t snd_output_buffer_string(snd_output_t *, char **); 2398 extern int snd_output_close(snd_output_t *); 2399 extern int snd_output_putc(snd_output_t *, int); 2400 extern int snd_output_puts(snd_output_t *, const char *); 2401 extern int snd_output_stdio_attach(snd_output_t * *, FILE *, int); 2402 extern int snd_output_stdio_open(snd_output_t * *, const char *, 2403 const char *); 2404 __________________________________________________________ 2405 2406 6.2.13. alsa/pcm.h 2407 2408 #define SND_PCM_NONBLOCK 0x0001 2409 #define SND_PCM_ASYNC 0x0002 2410 2411 typedef struct sndrv_mask snd_pcm_access_mask_t; 2412 typedef enum _snd_pcm_access { 2413 SND_PCM_ACCESS_MMAP_INTERLEAVED, 2414 SND_PCM_ACCESS_MMAP_NONINTERLEAVED, 2415 SND_PCM_ACCESS_MMAP_COMPLEX, 2416 SND_PCM_ACCESS_RW_INTERLEAVED, 2417 SND_PCM_ACCESS_RW_NONINTERLEAVED, 2418 SND_PCM_ACCESS_LAST 2419 } snd_pcm_access_t; 2420 typedef struct _snd_pcm_channel_area { 2421 void *addr; 2422 unsigned int first; 2423 unsigned int step; 2424 } snd_pcm_channel_area_t; 2425 typedef enum _snd_pcm_class { 2426 SND_PCM_CLASS_GENERIC, 2427 SND_PCM_CLASS_MULTI, 2428 SND_PCM_CLASS_MODEM, 2429 SND_PCM_CLASS_DIGITIZER, 2430 SND_PCM_CLASS_LAST 2431 } snd_pcm_class_t; 2432 typedef struct sndrv_mask snd_pcm_format_mask_t; 2433 typedef enum _snd_pcm_format { 2434 SND_PCM_FORMAT_UNKNOWN, 2435 SND_PCM_FORMAT_S8, 2436 SND_PCM_FORMAT_U8, 2437 SND_PCM_FORMAT_S16_LE, 2438 SND_PCM_FORMAT_S16_BE, 2439 SND_PCM_FORMAT_U16_LE, 2440 SND_PCM_FORMAT_U16_BE, 2441 SND_PCM_FORMAT_S24_LE, 2442 SND_PCM_FORMAT_S24_BE, 2443 SND_PCM_FORMAT_U24_LE, 2444 SND_PCM_FORMAT_U24_BE, 2445 SND_PCM_FORMAT_S32_LE, 2446 SND_PCM_FORMAT_S32_BE, 2447 SND_PCM_FORMAT_U32_LE, 2448 SND_PCM_FORMAT_U32_BE, 2449 SND_PCM_FORMAT_FLOAT_LE, 2450 SND_PCM_FORMAT_FLOAT_BE, 2451 SND_PCM_FORMAT_FLOAT64_LE, 2452 SND_PCM_FORMAT_FLOAT64_BE, 2453 SND_PCM_FORMAT_IEC958_SUBFRAME_LE, 2454 SND_PCM_FORMAT_IEC958_SUBFRAME_BE, 2455 SND_PCM_FORMAT_MU_LAW, 2456 SND_PCM_FORMAT_A_LAW, 2457 SND_PCM_FORMAT_IMA_ADPCM, 2458 SND_PCM_FORMAT_MPEG, 2459 SND_PCM_FORMAT_GSM, 2460 SND_PCM_FORMAT_SPECIAL, 2461 SND_PCM_FORMAT_S24_3LE, 2462 SND_PCM_FORMAT_S24_3BE, 2463 SND_PCM_FORMAT_U24_3LE, 2464 SND_PCM_FORMAT_U24_3BE, 2465 SND_PCM_FORMAT_S20_3LE, 2466 SND_PCM_FORMAT_S20_3BE, 2467 SND_PCM_FORMAT_U20_3LE, 2468 SND_PCM_FORMAT_U20_3BE, 2469 SND_PCM_FORMAT_S18_3LE, 2470 SND_PCM_FORMAT_S18_3BE, 2471 SND_PCM_FORMAT_U18_3LE, 2472 SND_PCM_FORMAT_U18_3BE, 2473 SND_PCM_FORMAT_LAST, 2474 SND_PCM_FORMAT_S16, 2475 SND_PCM_FORMAT_U16, 2476 SND_PCM_FORMAT_S24, 2477 SND_PCM_FORMAT_U24, 2478 SND_PCM_FORMAT_S32, 2479 SND_PCM_FORMAT_U32, 2480 SND_PCM_FORMAT_FLOAT, 2481 SND_PCM_FORMAT_FLOAT64, 2482 SND_PCM_FORMAT_IEC958_SUBFRAME 2483 } snd_pcm_format_t; 2484 typedef struct _snd_pcm_hook snd_pcm_hook_t; 2485 typedef int (*snd_pcm_hook_func_t) (void); 2486 typedef enum _snd_pcm_hook_type { 2487 SND_PCM_HOOK_TYPE_HW_PARAMS, 2488 SND_PCM_HOOK_TYPE_HW_FREE, 2489 SND_PCM_HOOK_TYPE_CLOSE, 2490 SND_PCM_HOOK_TYPE_LAST 2491 } snd_pcm_hook_type_t; 2492 typedef struct sndrv_pcm_hw_params snd_pcm_hw_params_t; 2493 typedef struct sndrv_pcm_info snd_pcm_info_t; 2494 typedef struct _snd_pcm_scope_ops { 2495 int (*enable) (void); 2496 void (*disable) (void); 2497 void (*start) (void); 2498 void (*stop) (void); 2499 void (*update) (void); 2500 void (*reset) (void); 2501 void (*close) (void); 2502 } snd_pcm_scope_ops_t; 2503 typedef struct _snd_pcm_scope snd_pcm_scope_t; 2504 typedef long int snd_pcm_sframes_t; 2505 typedef enum _snd_pcm_start { 2506 SND_PCM_START_DATA, 2507 SND_PCM_START_EXPLICIT, 2508 SND_PCM_START_LAST 2509 } snd_pcm_start_t; 2510 typedef enum _snd_pcm_state { 2511 SND_PCM_STATE_OPEN, 2512 SND_PCM_STATE_SETUP, 2513 SND_PCM_STATE_PREPARED, 2514 SND_PCM_STATE_RUNNING, 2515 SND_PCM_STATE_XRUN, 2516 SND_PCM_STATE_DRAINING, 2517 SND_PCM_STATE_PAUSED, 2518 SND_PCM_STATE_SUSPENDED, 2519 SND_PCM_STATE_DISCONNECTED, 2520 SND_PCM_STATE_LAST 2521 } snd_pcm_state_t; 2522 typedef struct sndrv_pcm_status snd_pcm_status_t; 2523 typedef enum _snd_pcm_stream { 2524 SND_PCM_STREAM_PLAYBACK, 2525 SND_PCM_STREAM_CAPTURE, 2526 SND_PCM_STREAM_LAST 2527 } snd_pcm_stream_t; 2528 typedef enum _snd_pcm_subclass { 2529 SND_PCM_SUBCLASS_GENERIC_MIX, 2530 SND_PCM_SUBCLASS_MULTI_MIX, 2531 SND_PCM_SUBCLASS_LAST 2532 } snd_pcm_subclass_t; 2533 typedef struct sndrv_mask snd_pcm_subformat_mask_t; 2534 typedef enum _snd_pcm_subformat { 2535 SND_PCM_SUBFORMAT_STD, 2536 SND_PCM_SUBFORMAT_LAST 2537 } snd_pcm_subformat_t; 2538 typedef struct sndrv_pcm_sw_params snd_pcm_sw_params_t; 2539 typedef union _snd_pcm_sync_id { 2540 unsigned char id[16]; 2541 short unsigned int id16[8]; 2542 unsigned int id32[4]; 2543 } snd_pcm_sync_id_t; 2544 typedef struct _snd_pcm snd_pcm_t; 2545 typedef enum _snd_pcm_tstamp { 2546 SND_PCM_TSTAMP_NONE, 2547 SND_PCM_TSTAMP_MMAP, 2548 SND_PCM_TSTAMP_LAST 2549 } snd_pcm_tstamp_t; 2550 typedef enum _snd_pcm_type { 2551 SND_PCM_TYPE_HW, 2552 SND_PCM_TYPE_HOOKS, 2553 SND_PCM_TYPE_MULTI, 2554 SND_PCM_TYPE_FILE, 2555 SND_PCM_TYPE_NULL, 2556 SND_PCM_TYPE_SHM, 2557 SND_PCM_TYPE_INET, 2558 SND_PCM_TYPE_COPY, 2559 SND_PCM_TYPE_LINEAR, 2560 SND_PCM_TYPE_ALAW, 2561 SND_PCM_TYPE_MULAW, 2562 SND_PCM_TYPE_ADPCM, 2563 SND_PCM_TYPE_RATE, 2564 SND_PCM_TYPE_ROUTE, 2565 SND_PCM_TYPE_PLUG, 2566 SND_PCM_TYPE_SHARE, 2567 SND_PCM_TYPE_METER, 2568 SND_PCM_TYPE_MIX, 2569 SND_PCM_TYPE_DROUTE, 2570 SND_PCM_TYPE_LBSERVER, 2571 SND_PCM_TYPE_LINEAR_FLOAT, 2572 SND_PCM_TYPE_LADSPA, 2573 SND_PCM_TYPE_DMIX, 2574 SND_PCM_TYPE_JACK, 2575 SND_PCM_TYPE_DSNOOP, 2576 SND_PCM_TYPE_DSHARE, 2577 SND_PCM_TYPE_IEC958, 2578 SND_PCM_TYPE_SOFTVOL, 2579 SND_PCM_TYPE_IOPLUG, 2580 SND_PCM_TYPE_EXTPLUG, 2581 SND_PCM_TYPE_LAST 2582 } snd_pcm_type_t; 2583 typedef long unsigned int snd_pcm_uframes_t; 2584 typedef enum _snd_pcm_xrun { 2585 SND_PCM_XRUN_NONE, 2586 SND_PCM_XRUN_STOP, 2587 SND_PCM_XRUN_LAST 2588 } snd_pcm_xrun_t; 2589 typedef enum _snd_spcm_duplex_type { 2590 SND_SPCM_DUPLEX_LIBERAL, 2591 SND_SPCM_DUPLEX_PEDANTIC 2592 } snd_spcm_duplex_type_t; 2593 typedef enum _snd_spcm_latency { 2594 SND_SPCM_LATENCY_STANDARD, 2595 SND_SPCM_LATENCY_MEDIUM, 2596 SND_SPCM_LATENCY_REALTIME 2597 } snd_spcm_latency_t; 2598 typedef enum _snd_spcm_xrun_type { 2599 SND_SPCM_XRUN_IGNORE, 2600 SND_SPCM_XRUN_STOP 2601 } snd_spcm_xrun_type_t; 2602 extern int snd_async_add_pcm_handler(snd_async_handler_t * *, snd_pcm_t*, 2603 snd_async_callback_t, void *); 2604 extern snd_pcm_t *snd_async_handler_get_pcm(snd_async_handler_t *); 2605 extern void snd_pcm_access_mask_any(snd_pcm_access_mask_t *); 2606 extern void snd_pcm_access_mask_copy(snd_pcm_access_mask_t *, 2607 const snd_pcm_access_mask_t *); 2608 extern void snd_pcm_access_mask_free(snd_pcm_access_mask_t *); 2609 extern int snd_pcm_access_mask_malloc(snd_pcm_access_mask_t * *); 2610 extern void snd_pcm_access_mask_none(snd_pcm_access_mask_t *); 2611 extern void snd_pcm_access_mask_set(snd_pcm_access_mask_t *, 2612 snd_pcm_access_t); 2613 extern size_t snd_pcm_access_mask_sizeof(void); 2614 extern int snd_pcm_access_mask_test(const snd_pcm_access_mask_t *, 2615 snd_pcm_access_t); 2616 extern const char *snd_pcm_access_name(snd_pcm_access_t); 2617 extern int snd_pcm_area_copy(const snd_pcm_channel_area_t *, 2618 snd_pcm_uframes_t, 2619 const snd_pcm_channel_area_t *, 2620 snd_pcm_uframes_t, unsigned int, 2621 snd_pcm_format_t); 2622 extern int snd_pcm_area_silence(const snd_pcm_channel_area_t *, 2623 snd_pcm_uframes_t, unsigned int, 2624 snd_pcm_format_t); 2625 extern int snd_pcm_areas_copy(const snd_pcm_channel_area_t *, 2626 snd_pcm_uframes_t, 2627 const snd_pcm_channel_area_t *, 2628 snd_pcm_uframes_t, unsigned int, 2629 snd_pcm_uframes_t, snd_pcm_format_t); 2630 extern int snd_pcm_areas_silence(const snd_pcm_channel_area_t *, 2631 snd_pcm_uframes_t, unsigned int, 2632 snd_pcm_uframes_t, snd_pcm_format_t); 2633 extern snd_pcm_sframes_t snd_pcm_avail_update(snd_pcm_t *); 2634 extern snd_pcm_format_t snd_pcm_build_linear_format(int, int, int, int); 2635 extern snd_pcm_sframes_t snd_pcm_bytes_to_frames(snd_pcm_t *, ssize_t); 2636 extern long int snd_pcm_bytes_to_samples(snd_pcm_t *, ssize_t); 2637 extern int snd_pcm_close(snd_pcm_t *); 2638 extern int snd_pcm_delay(snd_pcm_t *, snd_pcm_sframes_t *); 2639 extern int snd_pcm_drain(snd_pcm_t *); 2640 extern int snd_pcm_drop(snd_pcm_t *); 2641 extern int snd_pcm_dump(snd_pcm_t *, snd_output_t *); 2642 extern int snd_pcm_format_big_endian(snd_pcm_format_t); 2643 extern int snd_pcm_format_cpu_endian(snd_pcm_format_t); 2644 extern const char *snd_pcm_format_description(snd_pcm_format_t); 2645 extern int snd_pcm_format_float(snd_pcm_format_t); 2646 extern int snd_pcm_format_linear(snd_pcm_format_t); 2647 extern int snd_pcm_format_little_endian(snd_pcm_format_t); 2648 extern void snd_pcm_format_mask_any(snd_pcm_format_mask_t *); 2649 extern void snd_pcm_format_mask_copy(snd_pcm_format_mask_t *, 2650 const snd_pcm_format_mask_t *); 2651 extern void snd_pcm_format_mask_free(snd_pcm_format_mask_t *); 2652 extern int snd_pcm_format_mask_malloc(snd_pcm_format_mask_t * *); 2653 extern void snd_pcm_format_mask_none(snd_pcm_format_mask_t *); 2654 extern void snd_pcm_format_mask_set(snd_pcm_format_mask_t *, 2655 snd_pcm_format_t); 2656 extern size_t snd_pcm_format_mask_sizeof(void); 2657 extern int snd_pcm_format_mask_test(const snd_pcm_format_mask_t *, 2658 snd_pcm_format_t); 2659 extern const char *snd_pcm_format_name(snd_pcm_format_t); 2660 extern int snd_pcm_format_physical_width(snd_pcm_format_t); 2661 extern int snd_pcm_format_set_silence(snd_pcm_format_t, void *, 2662 unsigned int); 2663 extern int snd_pcm_format_signed(snd_pcm_format_t); 2664 extern ssize_t snd_pcm_format_size(snd_pcm_format_t, size_t); 2665 extern int snd_pcm_format_unsigned(snd_pcm_format_t); 2666 extern snd_pcm_format_t snd_pcm_format_value(const char *); 2667 extern int snd_pcm_format_width(snd_pcm_format_t); 2668 extern ssize_t snd_pcm_frames_to_bytes(snd_pcm_t *, snd_pcm_sframes_t); 2669 extern int snd_pcm_hw_free(snd_pcm_t *); 2670 extern int snd_pcm_hw_params(snd_pcm_t *, snd_pcm_hw_params_t *); 2671 extern int snd_pcm_hw_params_any(snd_pcm_t *, snd_pcm_hw_params_t *); 2672 extern int snd_pcm_hw_params_can_mmap_sample_resolution(const 2673 snd_pcm_hw_params_t 2674 *); 2675 extern int snd_pcm_hw_params_can_pause(const snd_pcm_hw_params_t *); 2676 extern int snd_pcm_hw_params_can_resume(const snd_pcm_hw_params_t *); 2677 extern int snd_pcm_hw_params_can_sync_start(const snd_pcm_hw_params_t *); 2678 extern void snd_pcm_hw_params_copy(snd_pcm_hw_params_t *, 2679 const snd_pcm_hw_params_t *); 2680 extern int snd_pcm_hw_params_current(snd_pcm_t *, snd_pcm_hw_params_t *); 2681 extern int snd_pcm_hw_params_dump(snd_pcm_hw_params_t *, snd_output_t *); 2682 extern void snd_pcm_hw_params_free(snd_pcm_hw_params_t *); 2683 extern int snd_pcm_hw_params_get_access_mask(snd_pcm_hw_params_t *, 2684 snd_pcm_access_mask_t *); 2685 extern void snd_pcm_hw_params_get_format_mask(snd_pcm_hw_params_t *, 2686 snd_pcm_format_mask_t *); 2687 extern int snd_pcm_hw_params_get_rate_numden(const snd_pcm_hw_params_t *, 2688 unsigned int *, 2689 unsigned int *); 2690 extern int snd_pcm_hw_params_get_rate_resample(snd_pcm_t *, 2691 snd_pcm_hw_params_t *, 2692 unsigned int *); 2693 extern int snd_pcm_hw_params_get_sbits(const snd_pcm_hw_params_t *); 2694 extern int snd_pcm_hw_params_is_double(const snd_pcm_hw_params_t *); 2695 extern int snd_pcm_hw_params_is_half_duplex(const snd_pcm_hw_params_t *); 2696 extern int snd_pcm_hw_params_is_joint_duplex(const snd_pcm_hw_params_t *); 2697 extern int snd_pcm_hw_params_malloc(snd_pcm_hw_params_t * *); 2698 extern int snd_pcm_hw_params_set_access(snd_pcm_t *, snd_pcm_hw_params_t *, 2699 snd_pcm_access_t); 2700 extern int snd_pcm_hw_params_set_access_mask(snd_pcm_t *, 2701 snd_pcm_hw_params_t *, 2702 snd_pcm_access_mask_t *); 2703 extern int snd_pcm_hw_params_set_buffer_size(snd_pcm_t *, 2704 snd_pcm_hw_params_t *, 2705 snd_pcm_uframes_t); 2706 extern int snd_pcm_hw_params_set_buffer_time(snd_pcm_t *, 2707 snd_pcm_hw_params_t *, 2708 unsigned int, int); 2709 extern int snd_pcm_hw_params_set_channels(snd_pcm_t *, 2710 snd_pcm_hw_params_t *, 2711 unsigned int); 2712 extern int snd_pcm_hw_params_set_format(snd_pcm_t *, snd_pcm_hw_params_t *, 2713 snd_pcm_format_t); 2714 extern int snd_pcm_hw_params_set_format_mask(snd_pcm_t *, 2715 snd_pcm_hw_params_t *, 2716 snd_pcm_format_mask_t *); 2717 extern int snd_pcm_hw_params_set_period_size(snd_pcm_t *, 2718 snd_pcm_hw_params_t *, 2719 snd_pcm_uframes_t, int); 2720 extern int snd_pcm_hw_params_set_period_time(snd_pcm_t *, 2721 snd_pcm_hw_params_t *, 2722 unsigned int, int); 2723 extern int snd_pcm_hw_params_set_periods(snd_pcm_t *, 2724 snd_pcm_hw_params_t *, 2725 unsigned int, int); 2726 extern int snd_pcm_hw_params_set_periods_integer(snd_pcm_t *, 2727 snd_pcm_hw_params_t *); 2728 extern int snd_pcm_hw_params_set_rate(snd_pcm_t *, snd_pcm_hw_params_t *, 2729 unsigned int, int); 2730 extern int snd_pcm_hw_params_set_rate_resample(snd_pcm_t *, 2731 snd_pcm_hw_params_t *, 2732 unsigned int); 2733 extern size_t snd_pcm_hw_params_sizeof(void); 2734 extern int snd_pcm_hw_params_test_access(snd_pcm_t *, 2735 snd_pcm_hw_params_t *, 2736 snd_pcm_access_t); 2737 extern int snd_pcm_hw_params_test_buffer_size(snd_pcm_t *, 2738 snd_pcm_hw_params_t *, 2739 snd_pcm_uframes_t); 2740 extern int snd_pcm_hw_params_test_buffer_time(snd_pcm_t *, 2741 snd_pcm_hw_params_t *, 2742 unsigned int, int); 2743 extern int snd_pcm_hw_params_test_channels(snd_pcm_t *, 2744 snd_pcm_hw_params_t *, 2745 unsigned int); 2746 extern int snd_pcm_hw_params_test_format(snd_pcm_t *, 2747 snd_pcm_hw_params_t *, 2748 snd_pcm_format_t); 2749 extern int snd_pcm_hw_params_test_period_size(snd_pcm_t *, 2750 snd_pcm_hw_params_t *, 2751 snd_pcm_uframes_t, int); 2752 extern int snd_pcm_hw_params_test_period_time(snd_pcm_t *, 2753 snd_pcm_hw_params_t *, 2754 unsigned int, int); 2755 extern int snd_pcm_hw_params_test_periods(snd_pcm_t *, 2756 snd_pcm_hw_params_t *, 2757 unsigned int, int); 2758 extern int snd_pcm_hw_params_test_rate(snd_pcm_t *, snd_pcm_hw_params_t*, 2759 unsigned int, int); 2760 extern int snd_pcm_hwsync(snd_pcm_t *); 2761 extern int snd_pcm_info(snd_pcm_t *, snd_pcm_info_t *); 2762 extern void snd_pcm_info_copy(snd_pcm_info_t *, const snd_pcm_info_t *); 2763 extern void snd_pcm_info_free(snd_pcm_info_t *); 2764 extern int snd_pcm_info_get_card(const snd_pcm_info_t *); 2765 extern snd_pcm_class_t snd_pcm_info_get_class(const snd_pcm_info_t *); 2766 extern unsigned int snd_pcm_info_get_device(const snd_pcm_info_t *); 2767 extern const char *snd_pcm_info_get_id(const snd_pcm_info_t *); 2768 extern const char *snd_pcm_info_get_name(const snd_pcm_info_t *); 2769 extern snd_pcm_stream_t snd_pcm_info_get_stream(const snd_pcm_info_t *); 2770 extern unsigned int snd_pcm_info_get_subdevice(const snd_pcm_info_t *); 2771 extern const char *snd_pcm_info_get_subdevice_name(const snd_pcm_info_t*); 2772 extern unsigned int snd_pcm_info_get_subdevices_avail(const snd_pcm_info_t 2773 *); 2774 extern unsigned int snd_pcm_info_get_subdevices_count(const snd_pcm_info_t 2775 *); 2776 extern int snd_pcm_info_malloc(snd_pcm_info_t * *); 2777 extern void snd_pcm_info_set_device(snd_pcm_info_t *, unsigned int); 2778 extern void snd_pcm_info_set_stream(snd_pcm_info_t *, snd_pcm_stream_t); 2779 extern void snd_pcm_info_set_subdevice(snd_pcm_info_t *, unsigned int); 2780 extern size_t snd_pcm_info_sizeof(void); 2781 extern int snd_pcm_link(snd_pcm_t *, snd_pcm_t *); 2782 extern int snd_pcm_mmap_begin(snd_pcm_t *, 2783 const snd_pcm_channel_area_t * *, 2784 snd_pcm_uframes_t *, snd_pcm_uframes_t *); 2785 extern snd_pcm_sframes_t snd_pcm_mmap_commit(snd_pcm_t *, 2786 snd_pcm_uframes_t, 2787 snd_pcm_uframes_t); 2788 extern snd_pcm_sframes_t snd_pcm_mmap_readi(snd_pcm_t *, void *, 2789 snd_pcm_uframes_t); 2790 extern snd_pcm_sframes_t snd_pcm_mmap_readn(snd_pcm_t *, void **, 2791 snd_pcm_uframes_t); 2792 extern snd_pcm_sframes_t snd_pcm_mmap_writei(snd_pcm_t *, const void *, 2793 snd_pcm_uframes_t); 2794 extern snd_pcm_sframes_t snd_pcm_mmap_writen(snd_pcm_t *, void **, 2795 snd_pcm_uframes_t); 2796 extern const char *snd_pcm_name(snd_pcm_t *); 2797 extern int snd_pcm_nonblock(snd_pcm_t *, int); 2798 extern int snd_pcm_open(snd_pcm_t * *, const char *, snd_pcm_stream_t, 2799 int); 2800 extern int snd_pcm_open_lconf(snd_pcm_t * *, const char *, 2801 snd_pcm_stream_t, int, snd_config_t *); 2802 extern int snd_pcm_pause(snd_pcm_t *, int); 2803 extern int snd_pcm_poll_descriptors(snd_pcm_t *, struct pollfd *, 2804 unsigned int); 2805 extern int snd_pcm_poll_descriptors_count(snd_pcm_t *); 2806 extern int snd_pcm_poll_descriptors_revents(snd_pcm_t *, struct pollfd *, 2807 unsigned int, 2808 short unsigned int *); 2809 extern int snd_pcm_prepare(snd_pcm_t *); 2810 extern snd_pcm_sframes_t snd_pcm_readi(snd_pcm_t *, void *, 2811 snd_pcm_uframes_t); 2812 extern snd_pcm_sframes_t snd_pcm_readn(snd_pcm_t *, void **, 2813 snd_pcm_uframes_t); 2814 extern int snd_pcm_recover(snd_pcm_t *, int, int); 2815 extern int snd_pcm_reset(snd_pcm_t *); 2816 extern int snd_pcm_resume(snd_pcm_t *); 2817 extern snd_pcm_sframes_t snd_pcm_rewind(snd_pcm_t *, snd_pcm_uframes_t); 2818 extern ssize_t snd_pcm_samples_to_bytes(snd_pcm_t *, long int); 2819 extern int snd_pcm_start(snd_pcm_t *); 2820 extern snd_pcm_state_t snd_pcm_state(snd_pcm_t *); 2821 extern const char *snd_pcm_state_name(snd_pcm_state_t); 2822 extern int snd_pcm_status(snd_pcm_t *, snd_pcm_status_t *); 2823 extern void snd_pcm_status_copy(snd_pcm_status_t *, 2824 const snd_pcm_status_t *); 2825 extern int snd_pcm_status_dump(snd_pcm_status_t *, snd_output_t *); 2826 extern void snd_pcm_status_free(snd_pcm_status_t *); 2827 extern snd_pcm_uframes_t snd_pcm_status_get_avail(const snd_pcm_status_t 2828 *); 2829 extern snd_pcm_uframes_t snd_pcm_status_get_avail_max(const 2830 snd_pcm_status_t *); 2831 extern snd_pcm_sframes_t snd_pcm_status_get_delay(const snd_pcm_status_t 2832 *); 2833 extern snd_pcm_state_t snd_pcm_status_get_state(const snd_pcm_status_t *); 2834 extern void snd_pcm_status_get_trigger_tstamp(const snd_pcm_status_t *, 2835 snd_timestamp_t *); 2836 extern void snd_pcm_status_get_tstamp(const snd_pcm_status_t *, 2837 snd_timestamp_t *); 2838 extern int snd_pcm_status_malloc(snd_pcm_status_t * *); 2839 extern size_t snd_pcm_status_sizeof(void); 2840 extern snd_pcm_stream_t snd_pcm_stream(snd_pcm_t *); 2841 extern const char *snd_pcm_stream_name(snd_pcm_stream_t); 2842 extern int snd_pcm_sw_params(snd_pcm_t *, snd_pcm_sw_params_t *); 2843 extern void snd_pcm_sw_params_copy(snd_pcm_sw_params_t *, 2844 const snd_pcm_sw_params_t *); 2845 extern int snd_pcm_sw_params_current(snd_pcm_t *, snd_pcm_sw_params_t *); 2846 extern int snd_pcm_sw_params_dump(snd_pcm_sw_params_t *, snd_output_t *); 2847 extern void snd_pcm_sw_params_free(snd_pcm_sw_params_t *); 2848 extern int snd_pcm_sw_params_get_boundary(const snd_pcm_sw_params_t *, 2849 snd_pcm_uframes_t *); 2850 extern int snd_pcm_sw_params_malloc(snd_pcm_sw_params_t * *); 2851 extern int snd_pcm_sw_params_set_avail_min(snd_pcm_t *, 2852 snd_pcm_sw_params_t *, 2853 snd_pcm_uframes_t); 2854 extern int snd_pcm_sw_params_set_silence_size(snd_pcm_t *, 2855 snd_pcm_sw_params_t *, 2856 snd_pcm_uframes_t); 2857 extern int snd_pcm_sw_params_set_silence_threshold(snd_pcm_t *, 2858 snd_pcm_sw_params_t *, 2859 snd_pcm_uframes_t); 2860 extern int snd_pcm_sw_params_set_start_threshold(snd_pcm_t *, 2861 snd_pcm_sw_params_t *, 2862 snd_pcm_uframes_t); 2863 extern int snd_pcm_sw_params_set_stop_threshold(snd_pcm_t *, 2864 snd_pcm_sw_params_t *, 2865 snd_pcm_uframes_t); 2866 extern int snd_pcm_sw_params_set_tstamp_mode(snd_pcm_t *, 2867 snd_pcm_sw_params_t *, 2868 snd_pcm_tstamp_t); 2869 extern int snd_pcm_sw_params_set_xfer_align(snd_pcm_t *, 2870 snd_pcm_sw_params_t *, 2871 snd_pcm_uframes_t); 2872 extern size_t snd_pcm_sw_params_sizeof(void); 2873 extern snd_pcm_type_t snd_pcm_type(snd_pcm_t *); 2874 extern int snd_pcm_unlink(snd_pcm_t *); 2875 extern int snd_pcm_wait(snd_pcm_t *, int); 2876 extern snd_pcm_sframes_t snd_pcm_writei(snd_pcm_t *, const void *, 2877 snd_pcm_uframes_t); 2878 extern snd_pcm_sframes_t snd_pcm_writen(snd_pcm_t *, void **, 2879 snd_pcm_uframes_t); 2880 extern int snd_pcm_hw_params_get_rate_min(const snd_pcm_hw_params_t *, 2881 unsigned int *, int *); 2882 extern int snd_pcm_sw_params_get_avail_min(const snd_pcm_sw_params_t *, 2883 snd_pcm_uframes_t *); 2884 extern int snd_pcm_hw_params_get_period_time(const snd_pcm_hw_params_t *, 2885 unsigned int *, int *); 2886 extern int snd_pcm_hw_params_set_buffer_time_near(snd_pcm_t *, 2887 snd_pcm_hw_params_t *, 2888 unsigned int *, int *); 2889 extern int snd_pcm_hw_params_get_format(const snd_pcm_hw_params_t *, 2890 snd_pcm_format_t *); 2891 extern int snd_pcm_hw_params_get_channels_min(const snd_pcm_hw_params_t*, 2892 unsigned int *); 2893 extern int snd_pcm_sw_params_get_start_threshold(const snd_pcm_sw_params_t 2894 *, snd_pcm_uframes_t *); 2895 extern int snd_pcm_hw_params_set_period_time_near(snd_pcm_t *, 2896 snd_pcm_hw_params_t *, 2897 unsigned int *, int *); 2898 extern int snd_pcm_hw_params_set_channels_near(snd_pcm_t *, 2899 snd_pcm_hw_params_t *, 2900 unsigned int *); 2901 extern int snd_pcm_hw_params_get_rate_max(const snd_pcm_hw_params_t *, 2902 unsigned int *, int *); 2903 extern int snd_pcm_hw_params_get_period_size(const snd_pcm_hw_params_t *, 2904 snd_pcm_uframes_t *, int *); 2905 extern int snd_pcm_hw_params_get_period_time_max(const snd_pcm_hw_params_t 2906 *, unsigned int *, int*); 2907 extern int snd_pcm_hw_params_get_buffer_size(const snd_pcm_hw_params_t *, 2908 snd_pcm_uframes_t *); 2909 extern int snd_pcm_sw_params_get_silence_threshold(const 2910 snd_pcm_sw_params_t *, 2911 snd_pcm_uframes_t *); 2912 extern int snd_pcm_hw_params_get_access(const snd_pcm_hw_params_t *, 2913 snd_pcm_access_t *); 2914 extern int snd_pcm_hw_params_get_buffer_time_min(const snd_pcm_hw_params_t 2915 *, unsigned int *, int*); 2916 extern int snd_pcm_hw_params_get_buffer_time(const snd_pcm_hw_params_t *, 2917 unsigned int *, int *); 2918 extern int snd_pcm_hw_params_get_rate(const snd_pcm_hw_params_t *, 2919 unsigned int *, int *); 2920 extern int snd_pcm_sw_params_get_stop_threshold(const snd_pcm_sw_params_t 2921 *, snd_pcm_uframes_t *); 2922 extern int snd_pcm_hw_params_get_period_size_max(const snd_pcm_hw_params_t 2923 *, snd_pcm_uframes_t *, 2924 int *); 2925 extern int snd_pcm_hw_params_get_buffer_size_min(const snd_pcm_hw_params_t 2926 *, snd_pcm_uframes_t *); 2927 extern const char *snd_pcm_type_name(snd_pcm_type_t); 2928 extern int snd_pcm_sw_params_get_silence_size(const snd_pcm_sw_params_t*, 2929 snd_pcm_uframes_t *); 2930 extern int snd_pcm_hw_params_get_periods(const snd_pcm_hw_params_t *, 2931 unsigned int *, int *); 2932 extern int snd_pcm_hw_params_get_buffer_size_max(const snd_pcm_hw_params_t 2933 *, snd_pcm_uframes_t *); 2934 extern int snd_pcm_sw_params_get_tstamp_mode(const snd_pcm_sw_params_t *, 2935 snd_pcm_tstamp_t *); 2936 extern int snd_pcm_hw_params_set_period_size_near(snd_pcm_t *, 2937 snd_pcm_hw_params_t *, 2938 snd_pcm_uframes_t *, 2939 int *); 2940 extern int snd_pcm_hw_params_get_buffer_time_max(const snd_pcm_hw_params_t 2941 *, unsigned int *, int*); 2942 extern int snd_pcm_hw_params_get_period_time_min(const snd_pcm_hw_params_t 2943 *, unsigned int *, int*); 2944 extern int snd_pcm_hw_params_set_periods_near(snd_pcm_t *, 2945 snd_pcm_hw_params_t *, 2946 unsigned int *, int *); 2947 extern snd_pcm_sframes_t snd_pcm_forward(snd_pcm_t *, snd_pcm_uframes_t); 2948 extern int snd_pcm_hw_params_set_rate_near(snd_pcm_t *, 2949 snd_pcm_hw_params_t *, 2950 unsigned int *, int *); 2951 extern int snd_pcm_hw_params_get_period_size_min(const snd_pcm_hw_params_t 2952 *, snd_pcm_uframes_t *, 2953 int *); 2954 extern int snd_pcm_hw_params_get_periods_min(const snd_pcm_hw_params_t *, 2955 unsigned int *, int *); 2956 extern int snd_pcm_hw_params_get_channels(const snd_pcm_hw_params_t *, 2957 unsigned int *); 2958 extern int snd_pcm_hw_params_get_channels_max(const snd_pcm_hw_params_t*, 2959 unsigned int *); 2960 extern int snd_pcm_hw_params_get_periods_max(const snd_pcm_hw_params_t *, 2961 unsigned int *, int *); 2962 extern int snd_pcm_hw_params_set_buffer_size_near(snd_pcm_t *, 2963 snd_pcm_hw_params_t *, 2964 snd_pcm_uframes_t *); 2965 __________________________________________________________ 2966 2967 6.2.14. alsa/pcm_extplug.h 2968 2969 #define SND_PCM_EXTPLUG_VERSION ((SND_PCM_EXTPLUG_VERSION_MAJOR<<16) | (SND_PCM_EXTPLUG_VERSION_MINOR<<8) | (SND_PCM_EXTPLUG_VERSION_TINY)) 2970 #define SND_PCM_EXTPLUG_VERSION_MINOR 0 2971 #define SND_PCM_EXTPLUG_VERSION_MAJOR 1 2972 #define SND_PCM_EXTPLUG_VERSION_TINY 1 2973 2974 typedef struct snd_pcm_extplug_callback { 2975 snd_pcm_sframes_t(*transfer) (void); 2976 int (*close) (void); 2977 int (*hw_params) (void); 2978 int (*hw_free) (void); 2979 void (*dump) (void); 2980 int (*init) (void); 2981 } snd_pcm_extplug_callback_t; 2982 typedef struct snd_pcm_extplug { 2983 unsigned int version; 2984 const char *name; 2985 const snd_pcm_extplug_callback_t *callback; 2986 void *private_data; 2987 snd_pcm_t *pcm; 2988 snd_pcm_stream_t stream; 2989 snd_pcm_format_t format; 2990 snd_pcm_subformat_t subformat; 2991 unsigned int channels; 2992 unsigned int rate; 2993 snd_pcm_format_t slave_format; 2994 snd_pcm_subformat_t slave_subformat; 2995 unsigned int slave_channels; 2996 } snd_pcm_extplug_t; 2997 __________________________________________________________ 2998 2999 6.2.15. alsa/pcm_plugin.h 3000 3001 #define SND_PCM_PLUGIN_ROUTE_HALF 0.5 3002 #define SND_PCM_PLUGIN_ROUTE_FLOAT 1 3003 #define SND_PCM_PLUGIN_ROUTE_FULL 1.0 3004 #define SND_PCM_PLUGIN_ROUTE_RESOLUTION 16 3005 #define SND_PCM_PLUGIN_RATE_MAX 192000 3006 #define SND_PCM_PLUGIN_RATE_MIN 4000 3007 3008 typedef float snd_pcm_route_ttable_entry_t; 3009 __________________________________________________________ 3010 3011 6.2.16. alsa/rawmidi.h 3012 3013 #define SND_RAWMIDI_APPEND 0x0001 3014 #define SND_RAWMIDI_NONBLOCK 0x0002 3015 #define SND_RAWMIDI_SYNC 0x0004 3016 3017 typedef struct sndrv_rawmidi_info snd_rawmidi_info_t; 3018 typedef struct sndrv_rawmidi_params snd_rawmidi_params_t; 3019 typedef struct sndrv_rawmidi_status snd_rawmidi_status_t; 3020 typedef enum _snd_rawmidi_stream { 3021 SND_RAWMIDI_STREAM_OUTPUT, 3022 SND_RAWMIDI_STREAM_INPUT, 3023 SND_RAWMIDI_STREAM_LAST 3024 } snd_rawmidi_stream_t; 3025 typedef struct _snd_rawmidi snd_rawmidi_t; 3026 typedef enum _snd_rawmidi_type { 3027 SND_RAWMIDI_TYPE_HW, 3028 SND_RAWMIDI_TYPE_SHM, 3029 SND_RAWMIDI_TYPE_INET, 3030 SND_RAWMIDI_TYPE_VIRTUAL 3031 } snd_rawmidi_type_t; 3032 extern int snd_rawmidi_close(snd_rawmidi_t *); 3033 extern int snd_rawmidi_drain(snd_rawmidi_t *); 3034 extern int snd_rawmidi_drop(snd_rawmidi_t *); 3035 extern void snd_rawmidi_info_free(snd_rawmidi_info_t *); 3036 extern const char *snd_rawmidi_info_get_id(const snd_rawmidi_info_t *); 3037 extern const char *snd_rawmidi_info_get_name(const snd_rawmidi_info_t *); 3038 extern unsigned int snd_rawmidi_info_get_subdevices_count(const 3039 snd_rawmidi_info_t 3040 *); 3041 extern int snd_rawmidi_info_malloc(snd_rawmidi_info_t * *); 3042 extern void snd_rawmidi_info_set_device(snd_rawmidi_info_t *, 3043 unsigned int); 3044 extern void snd_rawmidi_info_set_stream(snd_rawmidi_info_t *, 3045 snd_rawmidi_stream_t); 3046 extern void snd_rawmidi_info_set_subdevice(snd_rawmidi_info_t *, 3047 unsigned int); 3048 extern int snd_rawmidi_nonblock(snd_rawmidi_t *, int); 3049 extern int snd_rawmidi_open(snd_rawmidi_t * *, snd_rawmidi_t * *, 3050 const char *, int); 3051 extern int snd_rawmidi_poll_descriptors(snd_rawmidi_t *, struct pollfd *, 3052 unsigned int); 3053 extern int snd_rawmidi_poll_descriptors_count(snd_rawmidi_t *); 3054 extern int snd_rawmidi_poll_descriptors_revents(snd_rawmidi_t *, 3055 struct pollfd *, 3056 unsigned int, 3057 short unsigned int *); 3058 extern ssize_t snd_rawmidi_read(snd_rawmidi_t *, void *, size_t); 3059 extern ssize_t snd_rawmidi_write(snd_rawmidi_t *, const void *, size_t); 3060 __________________________________________________________ 3061 3062 6.2.17. alsa/seq.h 3063 3064 #define snd_seq_ev_is_prior(ev) \ 3065 (((ev)->flags & SND_SEQ_PRIORITY_MASK) == SND_SEQ_PRIORITY_HIGH) 3066 #define snd_seq_ev_length_type(ev) \ 3067 ((ev)->flags & SND_SEQ_EVENT_LENGTH_MASK) 3068 #define snd_seq_ev_timemode_type(ev) \ 3069 ((ev)->flags & SND_SEQ_TIME_MODE_MASK) 3070 #define snd_seq_ev_timestamp_type(ev) \ 3071 ((ev)->flags & SND_SEQ_TIME_STAMP_MASK) 3072 #define snd_seq_ev_is_channel_type(ev) \ 3073 (snd_seq_event_types[(ev)->type] & (_SND_SEQ_TYPE(SND_SEQ_EVFLG_NOTE) \ 3074 | _SND_SEQ_TYPE(SND_SEQ_EVFLG_CONTROL))) 3075 #define snd_seq_type_check(ev,x) \ 3076 (snd_seq_event_types[(ev)->type] & _SND_SEQ_TYPE(x)) 3077 #define snd_seq_ev_is_fixed(ev) \ 3078 (snd_seq_ev_length_type(ev) == SND_SEQ_EVENT_LENGTH_FIXED) 3079 #define snd_seq_ev_is_variable(ev) \ 3080 (snd_seq_ev_length_type(ev) == SND_SEQ_EVENT_LENGTH_VARIABLE) 3081 #define snd_seq_ev_is_varusr(ev) \ 3082 (snd_seq_ev_length_type(ev) == SND_SEQ_EVENT_LENGTH_VARUSR) 3083 #define snd_seq_ev_is_abstime(ev) \ 3084 (snd_seq_ev_timemode_type(ev) == SND_SEQ_TIME_MODE_ABS) 3085 #define snd_seq_ev_is_reltime(ev) \ 3086 (snd_seq_ev_timemode_type(ev) == SND_SEQ_TIME_MODE_REL) 3087 #define snd_seq_ev_is_real(ev) \ 3088 (snd_seq_ev_timestamp_type(ev) == SND_SEQ_TIME_STAMP_REAL) 3089 #define snd_seq_ev_is_tick(ev) \ 3090 (snd_seq_ev_timestamp_type(ev) == SND_SEQ_TIME_STAMP_TICK) 3091 #define snd_seq_ev_is_subscribe_type(ev) \ 3092 snd_seq_type_check(ev, SND_SEQ_EVFLG_CONNECTION) 3093 #define snd_seq_ev_is_control_type(ev) \ 3094 snd_seq_type_check(ev, SND_SEQ_EVFLG_CONTROL) 3095 #define snd_seq_ev_is_fixed_type(ev) \ 3096 snd_seq_type_check(ev, SND_SEQ_EVFLG_FIXED) 3097 #define snd_seq_ev_is_instr_type(ev) \ 3098 snd_seq_type_check(ev, SND_SEQ_EVFLG_INSTR) 3099 #define snd_seq_ev_is_message_type(ev) \ 3100 snd_seq_type_check(ev, SND_SEQ_EVFLG_MESSAGE) 3101 #define snd_seq_ev_is_note_type(ev) \ 3102 snd_seq_type_check(ev, SND_SEQ_EVFLG_NOTE) 3103 #define snd_seq_ev_is_queue_type(ev) \ 3104 snd_seq_type_check(ev, SND_SEQ_EVFLG_QUEUE) 3105 #define snd_seq_ev_is_result_type(ev) \ 3106 snd_seq_type_check(ev, SND_SEQ_EVFLG_RESULT) 3107 #define snd_seq_ev_is_sample_type(ev) \ 3108 snd_seq_type_check(ev, SND_SEQ_EVFLG_SAMPLE) 3109 #define snd_seq_ev_is_user_type(ev) \ 3110 snd_seq_type_check(ev, SND_SEQ_EVFLG_USERS) 3111 #define snd_seq_ev_is_variable_type(ev) \ 3112 snd_seq_type_check(ev, SND_SEQ_EVFLG_VARIABLE) 3113 #define snd_seq_ev_is_varusr_type(ev) \ 3114 snd_seq_type_check(ev, SND_SEQ_EVFLG_VARUSR) 3115 #define snd_seq_ev_is_reserved(ev) (! snd_seq_event_types[(ev)->type]) 3116 #define snd_seq_ev_is_direct(ev) ((ev)->queue == SND_SEQ_QUEUE_DIRECT) 3117 #define _SND_SEQ_TYPE_OPT(x) ((x)<<24) 3118 #define _SND_SEQ_TYPE(x) (1<<(x)) 3119 #define SND_SEQ_PORT_CAP_READ (1<<0) 3120 #define SND_SEQ_PORT_TYPE_SPECIFIC (1<<0) 3121 #define SND_SEQ_REMOVE_INPUT (1<<0) 3122 #define SND_SEQ_PORT_CAP_WRITE (1<<1) 3123 #define SND_SEQ_PORT_TYPE_MIDI_GENERIC (1<<1) 3124 #define SND_SEQ_REMOVE_OUTPUT (1<<1) 3125 #define SND_SEQ_PORT_TYPE_SYNTH (1<<10) 3126 #define SND_SEQ_PORT_TYPE_DIRECT_SAMPLE (1<<11) 3127 #define SND_SEQ_PORT_TYPE_SAMPLE (1<<12) 3128 #define SND_SEQ_PORT_TYPE_HARDWARE (1<<16) 3129 #define SND_SEQ_PORT_TYPE_SOFTWARE (1<<17) 3130 #define SND_SEQ_PORT_TYPE_SYNTHESIZER (1<<18) 3131 #define SND_SEQ_PORT_TYPE_PORT (1<<19) 3132 #define SND_SEQ_PORT_CAP_SYNC_READ (1<<2) 3133 #define SND_SEQ_PORT_TYPE_MIDI_GM (1<<2) 3134 #define SND_SEQ_REMOVE_DEST (1<<2) 3135 #define SND_SEQ_PORT_TYPE_APPLICATION (1<<20) 3136 #define SND_SEQ_PORT_CAP_SYNC_WRITE (1<<3) 3137 #define SND_SEQ_PORT_TYPE_MIDI_GS (1<<3) 3138 #define SND_SEQ_REMOVE_DEST_CHANNEL (1<<3) 3139 #define SND_SEQ_PORT_CAP_DUPLEX (1<<4) 3140 #define SND_SEQ_PORT_TYPE_MIDI_XG (1<<4) 3141 #define SND_SEQ_REMOVE_TIME_BEFORE (1<<4) 3142 #define SND_SEQ_PORT_CAP_SUBS_READ (1<<5) 3143 #define SND_SEQ_PORT_TYPE_MIDI_MT32 (1<<5) 3144 #define SND_SEQ_REMOVE_TIME_AFTER (1<<5) 3145 #define SND_SEQ_PORT_CAP_SUBS_WRITE (1<<6) 3146 #define SND_SEQ_PORT_TYPE_MIDI_GM2 (1<<6) 3147 #define SND_SEQ_REMOVE_TIME_TICK (1<<6) 3148 #define SND_SEQ_PORT_CAP_NO_EXPORT (1<<7) 3149 #define SND_SEQ_REMOVE_EVENT_TYPE (1<<7) 3150 #define SND_SEQ_REMOVE_IGNORE_OFF (1<<8) 3151 #define SND_SEQ_REMOVE_TAG_MATCH (1<<9) 3152 #define SND_SEQ_OPEN_DUPLEX (SND_SEQ_OPEN_OUTPUT|SND_SEQ_OPEN_INPUT) 3153 #define SND_SEQ_CLIENT_SYSTEM 0 3154 #define SND_SEQ_PORT_SYSTEM_TIMER 0 3155 #define SND_SEQ_NONBLOCK 0x0001 3156 #define SND_SEQ_OPEN_OUTPUT 1 3157 #define SND_SEQ_PORT_SYSTEM_ANNOUNCE 1 3158 #define SND_SEQ_OPEN_INPUT 2 3159 #define SND_SEQ_ADDRESS_UNKNOWN 253 3160 #define SND_SEQ_QUEUE_DIRECT 253 3161 #define SND_SEQ_ADDRESS_SUBSCRIBERS 254 3162 #define SND_SEQ_ADDRESS_BROADCAST 255 3163 3164 typedef struct sndrv_seq_client_info snd_seq_client_info_t; 3165 typedef struct sndrv_seq_client_pool snd_seq_client_pool_t; 3166 typedef enum snd_seq_client_type { 3167 SND_SEQ_USER_CLIENT, 3168 SND_SEQ_KERNEL_CLIENT 3169 } snd_seq_client_type_t; 3170 typedef struct sndrv_seq_port_info snd_seq_port_info_t; 3171 typedef struct sndrv_seq_port_subscribe snd_seq_port_subscribe_t; 3172 typedef enum { 3173 SND_SEQ_QUERY_SUBS_READ, 3174 SND_SEQ_QUERY_SUBS_WRITE 3175 } snd_seq_query_subs_type_t; 3176 typedef struct sndrv_seq_query_subs snd_seq_query_subscribe_t; 3177 typedef struct sndrv_seq_queue_info snd_seq_queue_info_t; 3178 typedef struct sndrv_seq_queue_status snd_seq_queue_status_t; 3179 typedef struct sndrv_seq_queue_tempo snd_seq_queue_tempo_t; 3180 typedef struct sndrv_seq_queue_timer snd_seq_queue_timer_t; 3181 typedef enum { 3182 SND_SEQ_TIMER_ALSA, 3183 SND_SEQ_TIMER_MIDI_CLOCK, 3184 SND_SEQ_TIMER_MIDI_TICK 3185 } snd_seq_queue_timer_type_t; 3186 typedef struct sndrv_seq_remove_events snd_seq_remove_events_t; 3187 typedef struct sndrv_seq_system_info snd_seq_system_info_t; 3188 typedef struct _snd_seq snd_seq_t; 3189 typedef enum _snd_seq_type { 3190 SND_SEQ_TYPE_HW, 3191 SND_SEQ_TYPE_SHM, 3192 SND_SEQ_TYPE_INET 3193 } snd_seq_type_t; 3194 extern int snd_seq_alloc_named_queue(snd_seq_t *, const char *); 3195 extern int snd_seq_alloc_queue(snd_seq_t *); 3196 extern int snd_seq_client_id(snd_seq_t *); 3197 extern void snd_seq_client_info_copy(snd_seq_client_info_t *, 3198 const snd_seq_client_info_t *); 3199 extern void snd_seq_client_info_free(snd_seq_client_info_t *); 3200 extern int snd_seq_client_info_get_client(const snd_seq_client_info_t *); 3201 extern const char *snd_seq_client_info_get_name(snd_seq_client_info_t *); 3202 extern int snd_seq_client_info_get_num_ports(const snd_seq_client_info_t 3203 *); 3204 extern snd_seq_client_type_t snd_seq_client_info_get_type(const 3205 snd_seq_client_info_t 3206 *); 3207 extern int snd_seq_client_info_malloc(snd_seq_client_info_t * *); 3208 extern void snd_seq_client_info_set_client(snd_seq_client_info_t *, int); 3209 extern void snd_seq_client_info_set_name(snd_seq_client_info_t *, 3210 const char *); 3211 extern size_t snd_seq_client_info_sizeof(void); 3212 extern int snd_seq_close(snd_seq_t *); 3213 extern int snd_seq_create_port(snd_seq_t *, snd_seq_port_info_t *); 3214 extern int snd_seq_delete_port(snd_seq_t *, int); 3215 extern int snd_seq_drain_output(snd_seq_t *); 3216 extern int snd_seq_drop_output(snd_seq_t *); 3217 extern int snd_seq_drop_output_buffer(snd_seq_t *); 3218 extern int snd_seq_event_input(snd_seq_t *, snd_seq_event_t * *); 3219 extern int snd_seq_event_input_pending(snd_seq_t *, int); 3220 extern ssize_t snd_seq_event_length(snd_seq_event_t *); 3221 extern int snd_seq_event_output(snd_seq_t *, snd_seq_event_t *); 3222 extern int snd_seq_event_output_direct(snd_seq_t *, snd_seq_event_t *); 3223 extern int snd_seq_free_event(snd_seq_event_t *); 3224 extern int snd_seq_free_queue(snd_seq_t *, int); 3225 extern int snd_seq_get_any_client_info(snd_seq_t *, int, 3226 snd_seq_client_info_t *); 3227 extern int snd_seq_get_any_port_info(snd_seq_t *, int, int, 3228 snd_seq_port_info_t *); 3229 extern int snd_seq_get_client_info(snd_seq_t *, snd_seq_client_info_t *); 3230 extern size_t snd_seq_get_input_buffer_size(snd_seq_t *); 3231 extern size_t snd_seq_get_output_buffer_size(snd_seq_t *); 3232 extern int snd_seq_get_port_info(snd_seq_t *, int, snd_seq_port_info_t *); 3233 extern int snd_seq_get_port_subscription(snd_seq_t *, 3234 snd_seq_port_subscribe_t *); 3235 extern int snd_seq_get_queue_status(snd_seq_t *, int, 3236 snd_seq_queue_status_t *); 3237 extern int snd_seq_get_queue_tempo(snd_seq_t *, int, 3238 snd_seq_queue_tempo_t *); 3239 extern int snd_seq_nonblock(snd_seq_t *, int); 3240 extern int snd_seq_open(snd_seq_t * *, const char *, int, int); 3241 extern int snd_seq_poll_descriptors(snd_seq_t *, struct pollfd *, 3242 unsigned int, short int); 3243 extern int snd_seq_poll_descriptors_count(snd_seq_t *, short int); 3244 extern int snd_seq_poll_descriptors_revents(snd_seq_t *, struct pollfd *, 3245 unsigned int, 3246 short unsigned int *); 3247 extern void snd_seq_port_info_copy(snd_seq_port_info_t *, 3248 const snd_seq_port_info_t *); 3249 extern void snd_seq_port_info_free(snd_seq_port_info_t *); 3250 extern const snd_seq_addr_t *snd_seq_port_info_get_addr(const 3251 snd_seq_port_info_t 3252 *); 3253 extern unsigned int snd_seq_port_info_get_capability(const 3254 snd_seq_port_info_t 3255 *); 3256 extern int snd_seq_port_info_get_client(const snd_seq_port_info_t *); 3257 extern const char *snd_seq_port_info_get_name(const snd_seq_port_info_t*); 3258 extern int snd_seq_port_info_get_port(const snd_seq_port_info_t *); 3259 extern unsigned int snd_seq_port_info_get_type(const snd_seq_port_info_t 3260 *); 3261 extern int snd_seq_port_info_malloc(snd_seq_port_info_t * *); 3262 extern void snd_seq_port_info_set_capability(snd_seq_port_info_t *, 3263 unsigned int); 3264 extern void snd_seq_port_info_set_client(snd_seq_port_info_t *, int); 3265 extern void snd_seq_port_info_set_midi_channels(snd_seq_port_info_t *, 3266 int); 3267 extern void snd_seq_port_info_set_name(snd_seq_port_info_t *, 3268 const char *); 3269 extern void snd_seq_port_info_set_port(snd_seq_port_info_t *, int); 3270 extern void snd_seq_port_info_set_port_specified(snd_seq_port_info_t *, 3271 int); 3272 extern void snd_seq_port_info_set_timestamp_queue(snd_seq_port_info_t *, 3273 int); 3274 extern void snd_seq_port_info_set_timestamp_real(snd_seq_port_info_t *, 3275 int); 3276 extern void snd_seq_port_info_set_timestamping(snd_seq_port_info_t *, int); 3277 extern void snd_seq_port_info_set_type(snd_seq_port_info_t *, 3278 unsigned int); 3279 extern size_t snd_seq_port_info_sizeof(void); 3280 extern void snd_seq_port_subscribe_copy(snd_seq_port_subscribe_t *, 3281 const snd_seq_port_subscribe_t *); 3282 extern void snd_seq_port_subscribe_free(snd_seq_port_subscribe_t *); 3283 extern const snd_seq_addr_t *snd_seq_port_subscribe_get_dest(const 3284 snd_seq_port_subscribe_t 3285 *); 3286 extern int snd_seq_port_subscribe_get_exclusive(const 3287 snd_seq_port_subscribe_t 3288 *); 3289 extern int snd_seq_port_subscribe_get_queue(const snd_seq_port_subscribe_t 3290 *); 3291 extern const snd_seq_addr_t *snd_seq_port_subscribe_get_sender(const 3292 snd_seq_port_subscribe_t 3293 *); 3294 extern int snd_seq_port_subscribe_get_time_real(const 3295 snd_seq_port_subscribe_t 3296 *); 3297 extern int snd_seq_port_subscribe_get_time_update(const 3298 snd_seq_port_subscribe_t 3299 *); 3300 extern int snd_seq_port_subscribe_malloc(snd_seq_port_subscribe_t * *); 3301 extern void snd_seq_port_subscribe_set_dest(snd_seq_port_subscribe_t *, 3302 const snd_seq_addr_t *); 3303 extern void snd_seq_port_subscribe_set_exclusive(snd_seq_port_subscribe_t 3304 *, int); 3305 extern void snd_seq_port_subscribe_set_queue(snd_seq_port_subscribe_t *, 3306 int); 3307 extern void snd_seq_port_subscribe_set_sender(snd_seq_port_subscribe_t *, 3308 const snd_seq_addr_t *); 3309 extern void snd_seq_port_subscribe_set_time_real(snd_seq_port_subscribe_t 3310 *, int); 3311 extern void snd_seq_port_subscribe_set_time_update(snd_seq_port_subscribe_t 3312 *, int); 3313 extern size_t snd_seq_port_subscribe_sizeof(void); 3314 extern int snd_seq_query_next_client(snd_seq_t *, snd_seq_client_info_t*); 3315 extern int snd_seq_query_next_port(snd_seq_t *, snd_seq_port_info_t *); 3316 extern int snd_seq_query_port_subscribers(snd_seq_t *, 3317 snd_seq_query_subscribe_t *); 3318 extern void snd_seq_query_subscribe_copy(snd_seq_query_subscribe_t *, 3319 const snd_seq_query_subscribe_t 3320 *); 3321 extern void snd_seq_query_subscribe_free(snd_seq_query_subscribe_t *); 3322 extern const snd_seq_addr_t *snd_seq_query_subscribe_get_addr(const 3323 snd_seq_query_subscribe_t 3324 *); 3325 extern int snd_seq_query_subscribe_get_exclusive(const 3326 snd_seq_query_subscribe_t 3327 *); 3328 extern int snd_seq_query_subscribe_get_index(const 3329 snd_seq_query_subscribe_t *); 3330 extern int snd_seq_query_subscribe_get_queue(const 3331 snd_seq_query_subscribe_t *); 3332 extern const snd_seq_addr_t *snd_seq_query_subscribe_get_root(const 3333 snd_seq_query_subscribe_t 3334 *); 3335 extern int snd_seq_query_subscribe_get_time_real(const 3336 snd_seq_query_subscribe_t 3337 *); 3338 extern int snd_seq_query_subscribe_get_time_update(const 3339 snd_seq_query_subscribe_t 3340 *); 3341 extern int snd_seq_query_subscribe_malloc(snd_seq_query_subscribe_t * *); 3342 extern void snd_seq_query_subscribe_set_index(snd_seq_query_subscribe_t*, 3343 int); 3344 extern void snd_seq_query_subscribe_set_root(snd_seq_query_subscribe_t *, 3345 const snd_seq_addr_t *); 3346 extern void snd_seq_query_subscribe_set_type(snd_seq_query_subscribe_t *, 3347 snd_seq_query_subs_type_t); 3348 extern size_t snd_seq_query_subscribe_sizeof(void); 3349 extern void snd_seq_queue_status_copy(snd_seq_queue_status_t *, 3350 const snd_seq_queue_status_t *); 3351 extern void snd_seq_queue_status_free(snd_seq_queue_status_t *); 3352 extern const snd_seq_real_time_t *snd_seq_queue_status_get_real_time(const 3353 snd_seq_queue_status_t 3354 *); 3355 extern snd_seq_tick_time_t snd_seq_queue_status_get_tick_time(const 3356 snd_seq_queue_status_t 3357 *); 3358 extern int snd_seq_queue_status_malloc(snd_seq_queue_status_t * *); 3359 extern size_t snd_seq_queue_status_sizeof(void); 3360 extern void snd_seq_queue_tempo_copy(snd_seq_queue_tempo_t *, 3361 const snd_seq_queue_tempo_t *); 3362 extern void snd_seq_queue_tempo_free(snd_seq_queue_tempo_t *); 3363 extern int snd_seq_queue_tempo_get_ppq(const snd_seq_queue_tempo_t *); 3364 extern unsigned int snd_seq_queue_tempo_get_tempo(const 3365 snd_seq_queue_tempo_t*); 3366 extern int snd_seq_queue_tempo_malloc(snd_seq_queue_tempo_t * *); 3367 extern void snd_seq_queue_tempo_set_ppq(snd_seq_queue_tempo_t *, int); 3368 extern void snd_seq_queue_tempo_set_tempo(snd_seq_queue_tempo_t *, 3369 unsigned int); 3370 extern size_t snd_seq_queue_tempo_sizeof(void); 3371 extern int snd_seq_set_client_info(snd_seq_t *, snd_seq_client_info_t *); 3372 extern int snd_seq_set_input_buffer_size(snd_seq_t *, size_t); 3373 extern int snd_seq_set_output_buffer_size(snd_seq_t *, size_t); 3374 extern int snd_seq_set_port_info(snd_seq_t *, int, snd_seq_port_info_t *); 3375 extern int snd_seq_set_queue_tempo(snd_seq_t *, int, 3376 snd_seq_queue_tempo_t *); 3377 extern int snd_seq_subscribe_port(snd_seq_t *, snd_seq_port_subscribe_t*); 3378 extern int snd_seq_system_info(snd_seq_t *, snd_seq_system_info_t *); 3379 extern void snd_seq_system_info_copy(snd_seq_system_info_t *, 3380 const snd_seq_system_info_t *); 3381 extern void snd_seq_system_info_free(snd_seq_system_info_t *); 3382 extern int snd_seq_system_info_get_clients(const snd_seq_system_info_t *); 3383 extern int snd_seq_system_info_get_ports(const snd_seq_system_info_t *); 3384 extern int snd_seq_system_info_get_queues(const snd_seq_system_info_t *); 3385 extern int snd_seq_system_info_malloc(snd_seq_system_info_t * *); 3386 extern size_t snd_seq_system_info_sizeof(void); 3387 extern int snd_seq_unsubscribe_port(snd_seq_t *, 3388 snd_seq_port_subscribe_t *); 3389 extern const unsigned int snd_seq_event_types[]; 3390 __________________________________________________________ 3391 3392 6.2.18. alsa/seq_event.h 3393 3394 #define SND_SEQ_TIME_STAMP_TICK (0<<0) 3395 #define SND_SEQ_TIME_MODE_ABS (0<<1) 3396 #define SND_SEQ_EVENT_LENGTH_FIXED (0<<2) 3397 #define SND_SEQ_PRIORITY_NORMAL (0<<4) 3398 #define SND_SEQ_TIME_STAMP_MASK (1<<0) 3399 #define SND_SEQ_TIME_STAMP_REAL (1<<0) 3400 #define SND_SEQ_TIME_MODE_MASK (1<<1) 3401 #define SND_SEQ_TIME_MODE_REL (1<<1) 3402 #define SND_SEQ_EVENT_LENGTH_VARIABLE (1<<2) 3403 #define SND_SEQ_PRIORITY_HIGH (1<<4) 3404 #define SND_SEQ_PRIORITY_MASK (1<<4) 3405 #define SND_SEQ_EVENT_LENGTH_VARUSR (2<<2) 3406 #define SND_SEQ_EVENT_LENGTH_MASK (3<<2) 3407 3408 typedef struct snd_seq_addr { 3409 unsigned char client; 3410 unsigned char port; 3411 } snd_seq_addr_t; 3412 typedef struct snd_seq_connect { 3413 snd_seq_addr_t sender; 3414 snd_seq_addr_t dest; 3415 } snd_seq_connect_t; 3416 typedef struct snd_seq_ev_cluster { 3417 snd_seq_instr_cluster_t cluster; 3418 } snd_seq_ev_cluster_t; 3419 typedef struct snd_seq_ev_ctrl { 3420 unsigned char channel; 3421 unsigned char unused[3]; 3422 unsigned int param; 3423 int value; 3424 } snd_seq_ev_ctrl_t; 3425 typedef struct snd_seq_ev_ext { 3426 unsigned int len; 3427 void *ptr; 3428 } __attribute__ (packed) 3429 snd_seq_ev_ext_t; 3430 typedef struct snd_seq_ev_instr_begin { 3431 int timeout; 3432 } snd_seq_ev_instr_begin_t; 3433 typedef struct snd_seq_ev_loop { 3434 unsigned int start; 3435 unsigned int end; 3436 } snd_seq_ev_loop_t; 3437 typedef struct snd_seq_ev_note { 3438 unsigned char channel; 3439 unsigned char note; 3440 unsigned char velocity; 3441 unsigned char off_velocity; 3442 unsigned int duration; 3443 } snd_seq_ev_note_t; 3444 typedef struct snd_seq_ev_queue_control { 3445 unsigned char queue; 3446 unsigned char unused[3]; 3447 union { 3448 int value; 3449 snd_seq_timestamp_t time; 3450 unsigned int position; 3451 snd_seq_queue_skew_t skew; 3452 unsigned int d32[2]; 3453 unsigned char d8[8]; 3454 } param; 3455 } snd_seq_ev_queue_control_t; 3456 typedef struct snd_seq_ev_raw32 { 3457 unsigned int d[3]; 3458 } snd_seq_ev_raw32_t; 3459 typedef struct snd_seq_ev_raw8 { 3460 unsigned char d[12]; 3461 } snd_seq_ev_raw8_t; 3462 typedef struct snd_seq_ev_sample_control { 3463 unsigned char channel; 3464 unsigned char unused[3]; 3465 union { 3466 snd_seq_ev_sample_t sample; 3467 snd_seq_ev_cluster_t cluster; 3468 snd_seq_position_t position; 3469 snd_seq_stop_mode_t stop_mode; 3470 snd_seq_frequency_t frequency; 3471 snd_seq_ev_volume_t volume; 3472 snd_seq_ev_loop_t loop; 3473 unsigned char raw8[8]; 3474 } param; 3475 } snd_seq_ev_sample_control_t; 3476 typedef struct snd_seq_ev_sample { 3477 unsigned int std; 3478 short unsigned int bank; 3479 short unsigned int prg; 3480 } snd_seq_ev_sample_t; 3481 typedef struct snd_seq_ev_volume { 3482 short int volume; 3483 short int lr; 3484 short int fr; 3485 short int du; 3486 } snd_seq_ev_volume_t; 3487 typedef struct snd_seq_event { 3488 snd_seq_event_type_t type; 3489 unsigned char flags; 3490 unsigned char tag; 3491 unsigned char queue; 3492 snd_seq_timestamp_t time; 3493 snd_seq_addr_t source; 3494 snd_seq_addr_t dest; 3495 union { 3496 snd_seq_ev_note_t note; 3497 snd_seq_ev_ctrl_t control; 3498 snd_seq_ev_raw8_t raw8; 3499 snd_seq_ev_raw32_t raw32; 3500 snd_seq_ev_ext_t ext; 3501 snd_seq_ev_queue_control_t queue; 3502 snd_seq_timestamp_t time; 3503 snd_seq_addr_t addr; 3504 snd_seq_connect_t connect; 3505 snd_seq_result_t result; 3506 snd_seq_ev_instr_begin_t instr_begin; 3507 snd_seq_ev_sample_control_t sample; 3508 } data; 3509 } snd_seq_event_t; 3510 typedef unsigned char snd_seq_event_type_t; 3511 typedef int snd_seq_frequency_t; 3512 typedef unsigned int snd_seq_instr_cluster_t; 3513 typedef struct snd_seq_instr { 3514 snd_seq_instr_cluster_t cluster; 3515 unsigned int std; 3516 short unsigned int bank; 3517 short unsigned int prg; 3518 } snd_seq_instr_t; 3519 typedef unsigned int snd_seq_position_t; 3520 typedef struct snd_seq_queue_skew { 3521 unsigned int value; 3522 unsigned int base; 3523 } snd_seq_queue_skew_t; 3524 union snd_seq_timestamp { 3525 snd_seq_tick_time_t tick; 3526 struct snd_seq_real_time time; 3527 }; 3528 typedef struct snd_seq_real_time { 3529 unsigned int tv_sec; 3530 unsigned int tv_nsec; 3531 } snd_seq_real_time_t; 3532 typedef struct snd_seq_result { 3533 int event; 3534 int result; 3535 } snd_seq_result_t; 3536 typedef enum snd_seq_stop_mode { 3537 SND_SEQ_SAMPLE_STOP_IMMEDIATELY, 3538 SND_SEQ_SAMPLE_STOP_VENVELOPE, 3539 SND_SEQ_SAMPLE_STOP_LOOP 3540 } snd_seq_stop_mode_t; 3541 typedef unsigned int snd_seq_tick_time_t; 3542 typedef union snd_seq_timestamp { 3543 snd_seq_tick_time_t tick; 3544 struct snd_seq_real_time time; 3545 } snd_seq_timestamp_t; 3546 __________________________________________________________ 3547 3548 6.2.19. alsa/seq_midi_event.h 3549 3550 typedef struct snd_midi_event snd_midi_event_t; 3551 extern long int snd_midi_event_decode(snd_midi_event_t *, unsigned char*, 3552 long int, const snd_seq_event_t *); 3553 extern long int snd_midi_event_encode(snd_midi_event_t *, 3554 const unsigned char *, long int, 3555 snd_seq_event_t *); 3556 extern int snd_midi_event_encode_byte(snd_midi_event_t *, int, 3557 snd_seq_event_t *); 3558 extern void snd_midi_event_free(snd_midi_event_t *); 3559 extern void snd_midi_event_init(snd_midi_event_t *); 3560 extern int snd_midi_event_new(size_t, snd_midi_event_t * *); 3561 extern void snd_midi_event_reset_decode(snd_midi_event_t *); 3562 extern void snd_midi_event_reset_encode(snd_midi_event_t *); 3563 __________________________________________________________ 3564 3565 6.2.20. alsa/seqmid.h 3566 3567 #define snd_seq_ev_set_dest(ev,c,p) \ 3568 ((ev)->dest.client = (c), (ev)->dest.port = (p)) 3569 #define snd_seq_ev_set_broadcast(ev) \ 3570 ((ev)->dest.client = SND_SEQ_ADDRESS_BROADCAST, (ev)->dest.port= \ 3571 SND_SEQ_ADDRESS_BROADCAST) 3572 #define snd_seq_ev_set_subs(ev) \ 3573 ((ev)->dest.client = SND_SEQ_ADDRESS_SUBSCRIBERS, (ev)->dest.port = \ 3574 SND_SEQ_ADDRESS_UNKNOWN) 3575 #define snd_seq_ev_set_fixed(ev) \ 3576 ((ev)->flags &= ~SND_SEQ_EVENT_LENGTH_MASK, (ev)->flags |= \ 3577 SND_SEQ_EVENT_LENGTH_FIXED) 3578 #define snd_seq_ev_set_chanpress(ev,ch,val) \ 3579 ((ev)->type = SND_SEQ_EVENT_CHANPRESS, snd_seq_ev_set_fixed(ev), \ 3580 (ev)->data.control.channel = (ch), (ev)->data.control.value = (val)) 3581 #define snd_seq_ev_set_controller(ev,ch,cc,val) \ 3582 ((ev)->type = SND_SEQ_EVENT_CONTROLLER, snd_seq_ev_set_fixed(ev), \ 3583 (ev)->data.control.channel = (ch), (ev)->data.control.param = (cc), \ 3584 (ev)->data.control.value = (val)) 3585 #define snd_seq_ev_set_keypress(ev,ch,key,vel) \ 3586 ((ev)->type = SND_SEQ_EVENT_KEYPRESS, snd_seq_ev_set_fixed(ev),\ 3587 (ev)->data.note.channel = (ch), (ev)->data.note.note = (key), \ 3588 (ev)->data.note.velocity = (vel)) 3589 #define snd_seq_ev_set_pgmchange(ev,ch,val) \ 3590 ((ev)->type = SND_SEQ_EVENT_PGMCHANGE, snd_seq_ev_set_fixed(ev), \ 3591 (ev)->data.control.channel = (ch), (ev)->data.control.value = (val)) 3592 #define snd_seq_ev_set_pitchbend(ev,ch,val) \ 3593 ((ev)->type = SND_SEQ_EVENT_PITCHBEND, snd_seq_ev_set_fixed(ev), \ 3594 (ev)->data.control.channel = (ch), (ev)->data.control.value = (val)) 3595 #define snd_seq_ev_set_direct(ev) ((ev)->queue = SND_SEQ_QUEUE_DIRECT) 3596 #define snd_seq_ev_set_source(ev,p) ((ev)->source.port = (p)) 3597 #define snd_seq_ev_set_tag(ev,t) ((ev)->tag = (t)) 3598 #define snd_seq_ev_clear(ev) memset(ev, 0, sizeof(snd_seq_event_t)) 3599 3600 extern int snd_seq_connect_from(snd_seq_t *, int, int, int); 3601 extern int snd_seq_connect_to(snd_seq_t *, int, int, int); 3602 extern int snd_seq_control_queue(snd_seq_t *, int, int, int, 3603 snd_seq_event_t *); 3604 extern int snd_seq_create_simple_port(snd_seq_t *, const char *, 3605 unsigned int, unsigned int); 3606 extern int snd_seq_delete_simple_port(snd_seq_t *, int); 3607 extern int snd_seq_disconnect_from(snd_seq_t *, int, int, int); 3608 extern int snd_seq_disconnect_to(snd_seq_t *, int, int, int); 3609 extern int snd_seq_parse_address(snd_seq_t *, snd_seq_addr_t *, 3610 const char *); 3611 extern int snd_seq_set_client_name(snd_seq_t *, const char *); 3612 extern int snd_seq_sync_output_queue(snd_seq_t *); 3613 __________________________________________________________ 3614 3615 6.2.21. alsa/timer.h 3616 3617 #define SND_TIMER_OPEN_NONBLOCK (1<<0) 3618 #define SND_TIMER_OPEN_TREAD (1<<1) 3619 #define SND_TIMER_GLOBAL_SYSTEM 0 3620 #define SND_TIMER_GLOBAL_RTC 1 3621 #define SND_TIMER_GLOBAL_HPET 2 3622 3623 typedef struct sndrv_timer_ginfo snd_timer_ginfo_t; 3624 typedef struct sndrv_timer_gparams snd_timer_gparams_t; 3625 typedef struct sndrv_timer_gstatus snd_timer_gstatus_t; 3626 typedef struct sndrv_timer_id snd_timer_id_t; 3627 typedef struct sndrv_timer_info snd_timer_info_t; 3628 typedef struct sndrv_timer_params snd_timer_params_t; 3629 typedef struct _snd_timer_query snd_timer_query_t; 3630 typedef struct sndrv_timer_status snd_timer_status_t; 3631 typedef struct _snd_timer snd_timer_t; 3632 typedef enum _snd_timer_type { 3633 SND_TIMER_TYPE_HW, 3634 SND_TIMER_TYPE_SHM, 3635 SND_TIMER_TYPE_INET 3636 } snd_timer_type_t; 3637 extern int snd_timer_close(snd_timer_t *); 3638 extern int snd_timer_continue(snd_timer_t *); 3639 extern void snd_timer_id_copy(snd_timer_id_t *, const snd_timer_id_t *); 3640 extern void snd_timer_id_free(snd_timer_id_t *); 3641 extern int snd_timer_id_get_card(snd_timer_id_t *); 3642 extern int snd_timer_id_get_class(snd_timer_id_t *); 3643 extern int snd_timer_id_get_device(snd_timer_id_t *); 3644 extern int snd_timer_id_get_sclass(snd_timer_id_t *); 3645 extern int snd_timer_id_get_subdevice(snd_timer_id_t *); 3646 extern int snd_timer_id_malloc(snd_timer_id_t * *); 3647 extern void snd_timer_id_set_card(snd_timer_id_t *, int); 3648 extern void snd_timer_id_set_class(snd_timer_id_t *, int); 3649 extern void snd_timer_id_set_device(snd_timer_id_t *, int); 3650 extern void snd_timer_id_set_sclass(snd_timer_id_t *, int); 3651 extern void snd_timer_id_set_subdevice(snd_timer_id_t *, int); 3652 extern size_t snd_timer_id_sizeof(void); 3653 extern int snd_timer_info(snd_timer_t *, snd_timer_info_t *); 3654 extern void snd_timer_info_copy(snd_timer_info_t *, 3655 const snd_timer_info_t *); 3656 extern void snd_timer_info_free(snd_timer_info_t *); 3657 extern int snd_timer_info_get_card(snd_timer_info_t *); 3658 extern const char *snd_timer_info_get_id(snd_timer_info_t *); 3659 extern const char *snd_timer_info_get_name(snd_timer_info_t *); 3660 extern long int snd_timer_info_get_resolution(snd_timer_info_t *); 3661 extern int snd_timer_info_malloc(snd_timer_info_t * *); 3662 extern size_t snd_timer_info_sizeof(void); 3663 extern int snd_timer_open(snd_timer_t * *, const char *, int); 3664 extern int snd_timer_params(snd_timer_t *, snd_timer_params_t *); 3665 extern long int snd_timer_params_get_ticks(snd_timer_params_t *); 3666 extern int snd_timer_params_malloc(snd_timer_params_t * *); 3667 extern int snd_timer_params_set_auto_start(snd_timer_params_t *, int); 3668 extern void snd_timer_params_set_ticks(snd_timer_params_t *, long int); 3669 extern int snd_timer_poll_descriptors(snd_timer_t *, struct pollfd *, 3670 unsigned int); 3671 extern int snd_timer_poll_descriptors_count(snd_timer_t *); 3672 extern ssize_t snd_timer_read(snd_timer_t *, void *, size_t); 3673 extern int snd_timer_start(snd_timer_t *); 3674 extern int snd_timer_status(snd_timer_t *, snd_timer_status_t *); 3675 extern int snd_timer_stop(snd_timer_t *); 3676 3677 III. Trial Use Module 3678 3679 Table of Contents 3680 7. Trial Use Module 3681 3682 7.1. Introduction 3683 7.2. Xdg-utils 3684 3685 7.2.1. Xdg-utils Commands 3686 __________________________________________________________ 3687 3688 Chapter 7. Trial Use Module 3689 3690 7.1. Introduction 3691 3692 The Trial Use Module decribes components in Trial Use status. 3693 Trial Use Specifications are non-mandatory components of the 3694 Linux Standard Base. 3695 __________________________________________________________ 3696 3697 7.2. Xdg-utils 3698 3699 Xdg-utils is a set of command line utilities that assist 3700 applications with a variety of desktop integration tasks. Some 3701 of the utilities focus on tasks commonly required during the 3702 installation of a desktop application. The remainder focus on 3703 integration with the desktop environment while the application 3704 is running. 3705 3706 These utilities operate as described at xdg-utils reference 3707 __________________________________________________________ 3708 3709 7.2.1. Xdg-utils Commands 3710 3711 An LSB conforming implementation shall provide the commands and 3712 utilities as described in Table 7-1, with at least the behavior 3713 described as mandatory in the referenced underlying 3714 specification, with the following exceptions: 3715 3716 1. If any operand (except one which follows --) starts with a 3717 hyphen, the behavior is unspecified. 3718 3719 Rationale (Informative): Applications should place options 3720 before operands, or use --, as needed. This text is needed 3721 because, by default, GNU option parsing differs from POSIX, 3722 unless the environment variable POSIXLY_CORRECT is set. For 3723 example, ls . -a in GNU ls means to list the current 3724 directory, showing all files (that is, "." is an operand and 3725 -a is an option). In POSIX, "." and -a are both operands, 3726 and the command means to list the current directory, and 3727 also the file named -a. Suggesting that applications rely on 3728 the setting of the POSIXLY_CORRECT environment variable, or 3729 try to set it, seems worse than just asking the applications 3730 to invoke commands in ways which work with either the POSIX 3731 or GNU behaviors. 3732 3733 Table 7-1. Commands And Utilities 3734 xdg-desktop-icon [1] xdg-email [1] xdg-mime [1] xdg-screensaver 3735 [1] 3736 xdg-desktop-menu [1] xdg-icon-resource [1] xdg-open [1] 3737 3738 Referenced Specification(s) 3739 3740 [1]. xdg-utils reference 3741 __________________________________________________________ 3742 3743 Appendix A. GNU Free Documentation License (Informative) 3744 3745 This specification is published under the terms of the GNU Free 3746 Documentation License, Version 1.1, March 2000 3747 3748 Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple 3749 Place, Suite 330, Boston, MA 02111-1307 USA Everyone is 3750 permitted to copy and distribute verbatim copies of this 3751 license document, but changing it is not allowed. 3752 __________________________________________________________ 3753 3754 A.1. PREAMBLE 3755 3756 The purpose of this License is to make a manual, textbook, or 3757 other written document "free" in the sense of freedom: to 3758 assure everyone the effective freedom to copy and redistribute 3759 it, with or without modifying it, either commercially or 3760 noncommercially. Secondarily, this License preserves for the 3761 author and publisher a way to get credit for their work, while 3762 not being considered responsible for modifications made by 3763 others. 3764 3765 This License is a kind of "copyleft", which means that 3766 derivative works of the document must themselves be free in the 3767 same sense. It complements the GNU General Public License, 3768 which is a copyleft license designed for free software. 3769 3770 We have designed this License in order to use it for manuals 3771 for free software, because free software needs free 3772 documentation: a free program should come with manuals 3773 providing the same freedoms that the software does. But this 3774 License is not limited to software manuals; it can be used for 3775 any textual work, regardless of subject matter or whether it is 3776 published as a printed book. We recommend this License 3777 principally for works whose purpose is instruction or 3778 reference. 3779 __________________________________________________________ 3780 3781 A.2. APPLICABILITY AND DEFINITIONS 3782 3783 This License applies to any manual or other work that contains 3784 a notice placed by the copyright holder saying it can be 3785 distributed under the terms of this License. The "Document", 3786 below, refers to any such manual or work. Any member of the 3787 public is a licensee, and is addressed as "you". 3788 3789 A "Modified Version" of the Document means any work containing 3790 the Document or a portion of it, either copied verbatim, or 3791 with modifications and/or translated into another language. 3792 3793 A "Secondary Section" is a named appendix or a front-matter 3794 section of the Document that deals exclusively with the 3795 relationship of the publishers or authors of the Document to 3796 the Document's overall subject (or to related matters) and 3797 contains nothing that could fall directly within that overall 3798 subject. (For example, if the Document is in part a textbook of 3799 mathematics, a Secondary Section may not explain any 3800 mathematics.) The relationship could be a matter of historical 3801 connection with the subject or with related matters, or of 3802 legal, commercial, philosophical, ethical or political position 3803 regarding them. 3804 3805 The "Invariant Sections" are certain Secondary Sections whose 3806 titles are designated, as being those of Invariant Sections, in 3807 the notice that says that the Document is released under this 3808 License. 3809 3810 The "Cover Texts" are certain short passages of text that are 3811 listed, as Front-Cover Texts or Back-Cover Texts, in the notice 3812 that says that the Document is released under this License. 3813 3814 A "Transparent" copy of the Document means a machine-readable 3815 copy, represented in a format whose specification is available 3816 to the general public, whose contents can be viewed and edited 3817 directly and straightforwardly with generic text editors or 3818 (for images composed of pixels) generic paint programs or (for 3819 drawings) some widely available drawing editor, and that is 3820 suitable for input to text formatters or for automatic 3821 translation to a variety of formats suitable for input to text 3822 formatters. A copy made in an otherwise Transparent file format 3823 whose markup has been designed to thwart or discourage 3824 subsequent modification by readers is not Transparent. A copy 3825 that is not "Transparent" is called "Opaque". 3826 3827 Examples of suitable formats for Transparent copies include 3828 plain ASCII without markup, Texinfo input format, LaTeX input 3829 format, SGML or XML using a publicly available DTD, and 3830 standard-conforming simple HTML designed for human 3831 modification. Opaque formats include PostScript, PDF, 3832 proprietary formats that can be read and edited only by 3833 proprietary word processors, SGML or XML for which the DTD 3834 and/or processing tools are not generally available, and the 3835 machine-generated HTML produced by some word processors for 3836 output purposes only. 3837 3838 The "Title Page" means, for a printed book, the title page 3839 itself, plus such following pages as are needed to hold, 3840 legibly, the material this License requires to appear in the 3841 title page. For works in formats which do not have any title 3842 page as such, "Title Page" means the text near the most 3843 prominent appearance of the work's title, preceding the 3844 beginning of the body of the text. 3845 __________________________________________________________ 3846 3847 A.3. VERBATIM COPYING 3848 3849 You may copy and distribute the Document in any medium, either 3850 commercially or noncommercially, provided that this License, 3851 the copyright notices, and the license notice saying this 3852 License applies to the Document are reproduced in all copies, 3853 and that you add no other conditions whatsoever to those of 3854 this License. You may not use technical measures to obstruct or 3855 control the reading or further copying of the copies you make 3856 or distribute. However, you may accept compensation in exchange 3857 for copies. If you distribute a large enough number of copies 3858 you must also follow the conditions in section 3. 3859 3860 You may also lend copies, under the same conditions stated 3861 above, and you may publicly display copies. 3862 __________________________________________________________ 3863 3864 A.4. COPYING IN QUANTITY 3865 3866 If you publish printed copies of the Document numbering more 3867 than 100, and the Document's license notice requires Cover 3868 Texts, you must enclose the copies in covers that carry, 3869 clearly and legibly, all these Cover Texts: Front-Cover Texts 3870 on the front cover, and Back-Cover Texts on the back cover. 3871 Both covers must also clearly and legibly identify you as the 3872 publisher of these copies. The front cover must present the 3873 full title with all words of the title equally prominent and 3874 visible. You may add other material on the covers in addition. 3875 Copying with changes limited to the covers, as long as they 3876 preserve the title of the Document and satisfy these 3877 conditions, can be treated as verbatim copying in other 3878 respects. 3879 3880 If the required texts for either cover are too voluminous to 3881 fit legibly, you should put the first ones listed (as many as 3882 fit reasonably) on the actual cover, and continue the rest onto 3883 adjacent pages. 3884 3885 If you publish or distribute Opaque copies of the Document 3886 numbering more than 100, you must either include a 3887 machine-readable Transparent copy along with each Opaque copy, 3888 or state in or with each Opaque copy a publicly-accessible 3889 computer-network location containing a complete Transparent 3890 copy of the Document, free of added material, which the general 3891 network-using public has access to download anonymously at no 3892 charge using public-standard network protocols. If you use the 3893 latter option, you must take reasonably prudent steps, when you 3894 begin distribution of Opaque copies in quantity, to ensure that 3895 this Transparent copy will remain thus accessible at the stated 3896 location until at least one year after the last time you 3897 distribute an Opaque copy (directly or through your agents or 3898 retailers) of that edition to the public. 3899 3900 It is requested, but not required, that you contact the authors 3901 of the Document well before redistributing any large number of 3902 copies, to give them a chance to provide you with an updated 3903 version of the Document. 3904 __________________________________________________________ 3905 3906 A.5. MODIFICATIONS 3907 3908 You may copy and distribute a Modified Version of the Document 3909 under the conditions of sections 2 and 3 above, provided that 3910 you release the Modified Version under precisely this License, 3911 with the Modified Version filling the role of the Document, 3912 thus licensing distribution and modification of the Modified 3913 Version to whoever possesses a copy of it. In addition, you 3914 must do these things in the Modified Version: 3915 3916 A. Use in the Title Page (and on the covers, if any) a title 3917 distinct from that of the Document, and from those of 3918 previous versions (which should, if there were any, be 3919 listed in the History section of the Document). You may use 3920 the same title as a previous version if the original 3921 publisher of that version gives permission. 3922 B. List on the Title Page, as authors, one or more persons or 3923 entities responsible for authorship of the modifications in 3924 the Modified Version, together with at least five of the 3925 principal authors of the Document (all of its principal 3926 authors, if it has less than five). 3927 C. State on the Title page the name of the publisher of the 3928 Modified Version, as the publisher. 3929 D. Preserve all the copyright notices of the Document. 3930 E. Add an appropriate copyright notice for your modifications 3931 adjacent to the other copyright notices. 3932 F. Include, immediately after the copyright notices, a license 3933 notice giving the public permission to use the Modified 3934 Version under the terms of this License, in the form shown 3935 in the Addendum below. 3936 G. Preserve in that license notice the full lists of Invariant 3937 Sections and required Cover Texts given in the Document's 3938 license notice. 3939 H. Include an unaltered copy of this License. 3940 I. Preserve the section entitled "History", and its title, and 3941 add to it an item stating at least the title, year, new 3942 authors, and publisher of the Modified Version as given on 3943 the Title Page. If there is no section entitled "History" 3944 in the Document, create one stating the title, year, 3945 authors, and publisher of the Document as given on its 3946 Title Page, then add an item describing the Modified 3947 Version as stated in the previous sentence. 3948 J. Preserve the network location, if any, given in the 3949 Document for public access to a Transparent copy of the 3950 Document, and likewise the network locations given in the 3951 Document for previous versions it was based on. These may 3952 be placed in the "History" section. You may omit a network 3953 location for a work that was published at least four years 3954 before the Document itself, or if the original publisher of 3955 the version it refers to gives permission. 3956 K. In any section entitled "Acknowledgements" or 3957 "Dedications", preserve the section's title, and preserve 3958 in the section all the substance and tone of each of the 3959 contributor acknowledgements and/or dedications given 3960 therein. 3961 L. Preserve all the Invariant Sections of the Document, 3962 unaltered in their text and in their titles. Section 3963 numbers or the equivalent are not considered part of the 3964 section titles. 3965 M. Delete any section entitled "Endorsements". Such a section 3966 may not be included in the Modified Version. 3967 N. Do not retitle any existing section as "Endorsements" or to 3968 conflict in title with any Invariant Section. 3969 3970 If the Modified Version includes new front-matter sections or 3971 appendices that qualify as Secondary Sections and contain no 3972 material copied from the Document, you may at your option 3973 designate some or all of these sections as invariant. To do 3974 this, add their titles to the list of Invariant Sections in the 3975 Modified Version's license notice. These titles must be 3976 distinct from any other section titles. 3977 3978 You may add a section entitled "Endorsements", provided it 3979 contains nothing but endorsements of your Modified Version by 3980 various parties--for example, statements of peer review or that 3981 the text has been approved by an organization as the 3982 authoritative definition of a standard. 3983 3984 You may add a passage of up to five words as a Front-Cover 3985 Text, and a passage of up to 25 words as a Back-Cover Text, to 3986 the end of the list of Cover Texts in the Modified Version. 3987 Only one passage of Front-Cover Text and one of Back-Cover Text 3988 may be added by (or through arrangements made by) any one 3989 entity. If the Document already includes a cover text for the 3990 same cover, previously added by you or by arrangement made by 3991 the same entity you are acting on behalf of, you may not add 3992 another; but you may replace the old one, on explicit 3993 permission from the previous publisher that added the old one. 3994 3995 The author(s) and publisher(s) of the Document do not by this 3996 License give permission to use their names for publicity for or 3997 to assert or imply endorsement of any Modified Version. 3998 __________________________________________________________ 3999 4000 A.6. COMBINING DOCUMENTS 4001 4002 You may combine the Document with other documents released 4003 under this License, under the terms defined in section 4 above 4004 for modified versions, provided that you include in the 4005 combination all of the Invariant Sections of all of the 4006 original documents, unmodified, and list them all as Invariant 4007 Sections of your combined work in its license notice. 4008 4009 The combined work need only contain one copy of this License, 4010 and multiple identical Invariant Sections may be replaced with 4011 a single copy. If there are multiple Invariant Sections with 4012 the same name but different contents, make the title of each 4013 such section unique by adding at the end of it, in parentheses, 4014 the name of the original author or publisher of that section if 4015 known, or else a unique number. Make the same adjustment to the 4016 section titles in the list of Invariant Sections in the license 4017 notice of the combined work. 4018 4019 In the combination, you must combine any sections entitled 4020 "History" in the various original documents, forming one 4021 section entitled "History"; likewise combine any sections 4022 entitled "Acknowledgements", and any sections entitled 4023 "Dedications". You must delete all sections entitled 4024 "Endorsements." 4025 __________________________________________________________ 4026 4027 A.7. COLLECTIONS OF DOCUMENTS 4028 4029 You may make a collection consisting of the Document and other 4030 documents released under this License, and replace the 4031 individual copies of this License in the various documents with 4032 a single copy that is included in the collection, provided that 4033 you follow the rules of this License for verbatim copying of 4034 each of the documents in all other respects. 4035 4036 You may extract a single document from such a collection, and 4037 distribute it individually under this License, provided you 4038 insert a copy of this License into the extracted document, and 4039 follow this License in all other respects regarding verbatim 4040 copying of that document. 4041 __________________________________________________________ 4042 4043 A.8. AGGREGATION WITH INDEPENDENT WORKS 4044 4045 A compilation of the Document or its derivatives with other 4046 separate and independent documents or works, in or on a volume 4047 of a storage or distribution medium, does not as a whole count 4048 as a Modified Version of the Document, provided no compilation 4049 copyright is claimed for the compilation. Such a compilation is 4050 called an "aggregate", and this License does not apply to the 4051 other self-contained works thus compiled with the Document, on 4052 account of their being thus compiled, if they are not 4053 themselves derivative works of the Document. 4054 4055 If the Cover Text requirement of section 3 is applicable to 4056 these copies of the Document, then if the Document is less than 4057 one quarter of the entire aggregate, the Document's Cover Texts 4058 may be placed on covers that surround only the Document within 4059 the aggregate. Otherwise they must appear on covers around the 4060 whole aggregate. 4061 __________________________________________________________ 4062 4063 A.9. TRANSLATION 4064 4065 Translation is considered a kind of modification, so you may 4066 distribute translations of the Document under the terms of 4067 section 4. Replacing Invariant Sections with translations 4068 requires special permission from their copyright holders, but 4069 you may include translations of some or all Invariant Sections 4070 in addition to the original versions of these Invariant 4071 Sections. You may include a translation of this License 4072 provided that you also include the original English version of 4073 this License. In case of a disagreement between the translation 4074 and the original English version of this License, the original 4075 English version will prevail. 4076 __________________________________________________________ 4077 4078 A.10. TERMINATION 4079 4080 You may not copy, modify, sublicense, or distribute the 4081 Document except as expressly provided for under this License. 4082 Any other attempt to copy, modify, sublicense or distribute the 4083 Document is void, and will automatically terminate your rights 4084 under this License. However, parties who have received copies, 4085 or rights, from you under this License will not have their 4086 licenses terminated so long as such parties remain in full 4087 compliance. 4088 __________________________________________________________ 4089 4090 A.11. FUTURE REVISIONS OF THIS LICENSE 4091 4092 The Free Software Foundation may publish new, revised versions 4093 of the GNU Free Documentation License from time to time. Such 4094 new versions will be similar in spirit to the present version, 4095 but may differ in detail to address new problems or concerns. 4096 See http://www.gnu.org/copyleft/. 4097 4098 Each version of the License is given a distinguishing version 4099 number. If the Document specifies that a particular numbered 4100 version of this License "or any later version" applies to it, 4101 you have the option of following the terms and conditions 4102 either of that specified version or of any later version that 4103 has been published (not as a draft) by the Free Software 4104 Foundation. If the Document does not specify a version number 4105 of this License, you may choose any version ever published (not 4106 as a draft) by the Free Software Foundation. 4107 __________________________________________________________ 4108 4109 A.12. How to use this License for your documents 4110 4111 To use this License in a document you have written, include a 4112 copy of the License in the document and put the following 4113 copyright and license notices just after the title page: 4114 4115 Copyright (c) YEAR YOUR NAME. Permission is granted to copy, 4116 distribute and/or modify this document under the terms of 4117 the GNU Free Documentation License, Version 1.1 or any later 4118 version published by the Free Software Foundation; with the 4119 Invariant Sections being LIST THEIR TITLES, with the 4120 Front-Cover Texts being LIST, and with the Back-Cover Texts 4121 being LIST. A copy of the license is included in the section 4122 entitled "GNU Free Documentation License". 4123 4124 If you have no Invariant Sections, write "with no Invariant 4125 Sections" instead of saying which ones are invariant. If you 4126 have no Front-Cover Texts, write "no Front-Cover Texts" instead 4127 of "Front-Cover Texts being LIST"; likewise for Back-Cover 4128 Texts. 4129 4130 If your document contains nontrivial examples of program code, 4131 we recommend releasing these examples in parallel under your 4132 choice of free software license, such as the GNU General Public 4133 License, to permit their use in free software.