1 #ifndef USB_AUDIO_H 2 #define USB_AUDIO_H 3 4 // (Partial) USB Device Class Definition for Audio Devices 5 // R1: Release 1.0 March 18, 1998 6 // R2: Release 2.0 May 31, 2006 7 8 #include <SupportDefs.h> 9 10 #define USB_AUDIO_DEVICE_CLASS 0x01 11 #define USB_AUDIO_CLASS_VERSION_1 0x0100 12 #define USB_AUDIO_CLASS_VERSION_2 0x0200 13 14 enum { 15 USB_AUDIO_INTERFACE_AUDIO_CLASS = 0x01 16 }; 17 18 enum { // Audio Interface Subclasses 19 USB_AUDIO_INTERFACE_UNDEFINED_SUBCLASS = 0x00, 20 USB_AUDIO_INTERFACE_AUDIOCONTROL_SUBCLASS = 0x01, 21 USB_AUDIO_INTERFACE_AUDIOSTREAMING_SUBCLASS, 22 USB_AUDIO_INTERFACE_MIDISTREAMING_SUBCLASS 23 }; 24 25 enum { // Audio Interface Protocol Codes 26 USB_AUDIO_PROTOCOL_UNDEFINED = 0x00 27 }; 28 29 enum { // Audio Interface Class-Specific Descriptor Types 30 USB_AUDIO_CS_UNDEFINED = 0x20, 31 USB_AUDIO_CS_DEVICE = 0x21, 32 USB_AUDIO_CS_CONFIGURATION = 0x22, 33 USB_AUDIO_CS_STRING = 0x23, 34 USB_AUDIO_CS_INTERFACE = 0x24, 35 USB_AUDIO_CS_ENDPOINT = 0x25 36 }; 37 38 39 enum { // Audio Class-Specific AudioControl Interface descriptor subtypes 40 USB_AUDIO_AC_DESCRIPTOR_UNDEFINED = 0x00, 41 USB_AUDIO_AC_HEADER = 0x01, 42 USB_AUDIO_AC_INPUT_TERMINAL = 0x02, 43 USB_AUDIO_AC_OUTPUT_TERMINAL = 0x03, 44 USB_AUDIO_AC_MIXER_UNIT = 0x04, 45 USB_AUDIO_AC_SELECTOR_UNIT = 0x05, 46 USB_AUDIO_AC_FEATURE_UNIT = 0x06, 47 USB_AUDIO_AC_PROCESSING_UNIT = 0x07, 48 USB_AUDIO_AC_EXTENSION_UNIT = 0x08, 49 USB_AUDIO_AC_EFFECT_UNIT_R2 = 0x07, 50 USB_AUDIO_AC_PROCESSING_UNIT_R2 = 0x08, 51 USB_AUDIO_AC_EXTENSION_UNIT_R2 = 0x09, 52 USB_AUDIO_AC_CLOCK_SOURCE_R2 = 0x0A, 53 USB_AUDIO_AC_CLOCK_SELECTOR_R2 = 0x0B, 54 USB_AUDIO_AC_CLOCK_MULTIPLIER_R2 = 0x0C, 55 USB_AUDIO_AC_SAMPLE_RATE_CONVERTER_R2 = 0x0D 56 }; 57 58 59 // Class Specific Audio Control Interface Header 60 // R1: Table 4-2 p.37 / R2: Table 4-5 p.48 61 typedef struct { 62 uint8 length; 63 uint8 descriptor_type; // USB_AUDIO_CS_INTERFACE 64 uint8 descriptor_subtype; // USB_AUDIO_AC_HEADER 65 uint16 bcd_release_no; 66 union { 67 struct { 68 uint16 total_length; 69 uint8 in_collection; 70 uint8 interface_numbers[0]; 71 } _PACKED r1; 72 73 struct { 74 uint8 function_category; 75 uint16 total_length; 76 uint8 bm_controls; 77 } _PACKED r2; 78 }; 79 } _PACKED usb_audiocontrol_header_descriptor; 80 81 // Clock Source Descriptor 82 // R2: Table 4-6 p.49 83 typedef struct { 84 uint8 length; 85 uint8 descriptor_type; // USB_AUDIO_CS_INTERFACE 86 uint8 descriptor_subtype; // USB_AUDIO_CLOCKSOURCE_HEADER 87 uint8 clock_id; 88 uint8 bm_attributes; 89 uint8 bm_controls; 90 uint8 assoc_terminal; 91 uint8 clock_source_idx; 92 } _PACKED usb_audio_clocksource_descriptor; 93 94 // Clock Selector Descriptor 95 // R2: Table 4-7 p.50 96 typedef struct { 97 uint8 length; 98 uint8 descriptor_type; // USB_AUDIO_CS_INTERFACE 99 uint8 descriptor_subtype; // USB_AUDIO_CLOCKSELECTOR_HEADER 100 uint8 clock_id; 101 uint8 nrinpins; 102 uint8 Csourceid[1]; 103 uint8 bm_controls; 104 uint8 clockselector; 105 } _PACKED usb_audio_clockselector_descriptor; 106 107 // Clock Multiplier Descriptor 108 // R2: Table 4-8 p.51 109 typedef struct { 110 uint8 length; 111 uint8 descriptor_type; // USB_AUDIO_CS_INTERFACE 112 uint8 descriptor_subtype; // USB_AUDIO_CLOCKMULTIPLIER 113 uint8 clockid; 114 uint8 clksourceid; 115 uint8 bm_controls; 116 uint8 clockmultiplier; 117 } _PACKED usb_audio_clockmultiplier_descriptor; 118 119 // Input Terminal Descriptor 120 // R1: Table 4-3 p.39 / R2: Table 4-9, page 53 121 typedef struct { 122 uint8 length; 123 uint8 descriptor_type; // USB_AUDIO_CS_INTERFACE 124 uint8 descriptor_subtype; // USB_AUDIO_AC_INPUT_TERMINAL 125 uint8 terminal_id; 126 uint16 terminal_type; 127 uint8 assoc_terminal; 128 union { 129 struct { 130 uint8 num_channels; 131 uint8 channel_config; 132 uint8 channel_names; 133 uint8 terminal; 134 } _PACKED r1; 135 136 struct { 137 uint8 clock_source_id; 138 uint8 num_channels; 139 uint32 channel_config; 140 uint8 channel_names; 141 uint16 bm_controls; 142 uint8 terminal; 143 } _PACKED r2; 144 }; 145 } _PACKED usb_audio_input_terminal_descriptor; 146 147 148 // Output Terminal Descriptor 149 // R1: Table 4-4 p.40 / R2: Table 4-10, page 54 150 typedef struct { 151 uint8 length; 152 uint8 descriptor_type; // USB_AUDIO_CS_INTERFACE 153 uint8 descriptor_subtype; // USB_AUDIO_AC_OUTPUT_TERMINAL 154 uint8 terminal_id; 155 uint16 terminal_type; 156 uint8 assoc_terminal; 157 uint8 source_id; 158 union { 159 struct { 160 uint8 terminal; 161 } _PACKED r1; 162 163 struct { 164 uint8 clock_source_id; 165 uint16 bm_controls; 166 uint8 terminal; 167 } _PACKED r2; 168 }; 169 } _PACKED usb_audio_output_terminal_descriptor; 170 171 172 // pseudo-descriptor for a section corresponding to logical output channels 173 // used in mixer, processing and extension descriptions. 174 typedef struct { 175 uint8 num_output_pins; // number of mixer output pins 176 uint16 channel_config; // location of logical channels 177 uint8 channel_names; // id of name string of first logical channel 178 } _PACKED usb_audio_output_channels_descriptor_r1; 179 180 typedef struct { 181 uint8 num_output_pins; // number of mixer output pins 182 uint32 channel_config; // location of logical channels 183 uint8 channel_names; // id of name string of first logical channel 184 } _PACKED usb_audio_output_channels_descriptor; 185 186 187 // Mixer Unit Descriptor 188 // R1: Table 4-5 p.41 / R2: Table 4-11, page 57 189 typedef struct { 190 uint8 length; 191 uint8 descriptor_type; // USB_AUDIO_CS_INTERFACE 192 uint8 descriptor_subtype; // USB_AUDIO_AC_MIXER_UNIT 193 uint8 unit_id; 194 uint8 num_input_pins; 195 uint8 input_pins[1]; 196 // use usb_audio_output_channels_descriptor to parse the rest 197 } _PACKED usb_audio_mixer_unit_descriptor; 198 199 200 // Selector Unit Descriptor 201 // R1: Table 4-6 p.43 / R2: Table 4-12, page 58 202 typedef struct { 203 uint8 length; 204 uint8 descriptor_type; // USB_AUDIO_CS_INTERFACE 205 uint8 descriptor_subtype; // USB_AUDIO_AC_SELECTOR_UNIT 206 uint8 unit_id; 207 uint8 num_input_pins; 208 uint8 input_pins[1]; 209 // uint8 selector_string; 210 } _PACKED usb_audio_selector_unit_descriptor; 211 212 213 // Feature Unit Descriptor 214 // R1: Table 4-7 p.43 / R2: Table 4-13, page 59 215 typedef struct { 216 uint8 length; 217 uint8 descriptor_type; // USB_AUDIO_CS_INTERFACE 218 uint8 descriptor_subtype; // USB_AUDIO_AC_FEATURE_UNIT 219 uint8 unit_id; 220 uint8 source_id; 221 union { 222 struct { 223 uint8 control_size; 224 uint8 bma_controls[1]; 225 // uint8 feature_string; 226 } _PACKED r1; 227 228 struct { 229 uint32 bma_controls[1]; 230 } _PACKED r2; 231 }; 232 } _PACKED usb_audio_feature_unit_descriptor; 233 234 235 // Processing Unit Descriptor 236 // R1: Table 4-8 p.45 / R2: Table 4-20, page 66 237 typedef struct { 238 uint8 length; 239 uint8 descriptor_type; // USB_AUDIO_CS_INTERFACE 240 uint8 descriptor_subtype; // USB_AUDIO_AC_PROCESSING_UNIT 241 uint8 unit_id; 242 uint16 process_type; 243 uint8 num_input_pins; 244 uint8 input_pins[1]; 245 // use usb_audio_output_channels_descriptor to parse the rest 246 // TODO - the bmControl!!!! 247 } _PACKED usb_audio_processing_unit_descriptor; 248 249 // Extension Unit Descriptor 250 // R1: Table 4-15, p. 56 / R2: Table 4-24, p.73 251 typedef struct { 252 uint8 length; 253 uint8 descriptor_type; // USB_AUDIO_CS_INTERFACE 254 uint8 descriptor_subtype; // USB_AUDIO_AC_EXTENSION_UNIT 255 uint8 unit_id; 256 uint16 extension_code; 257 uint8 num_input_pins; 258 uint8 input_pins[1]; 259 // use usb_audio_output_channels_descriptor to parse the rest 260 } _PACKED usb_audio_extension_unit_descriptor; 261 262 263 enum { // Audio Class-Specific AudioStreaming Interface descriptor subtypes 264 USB_AUDIO_AS_DESCRIPTOR_UNDEFINED = 0x00, 265 USB_AUDIO_AS_GENERAL = 0x01, 266 USB_AUDIO_AS_FORMAT_TYPE = 0x02, 267 USB_AUDIO_AS_FORMAT_SPECIFIC = 0x03 268 }; 269 270 // Class Specific Audio Streaming Interface Descriptor 271 // R1: Table 4-19 p.60 / R2: Table 4-27 p.76 272 typedef struct { 273 uint8 length; 274 uint8 descriptor_type; // USB_AUDIO_CS_INTERFACE 275 uint8 descriptor_subtype; // USB_AUDIO_AS_GENERAL 276 uint8 terminal_link; 277 union { 278 struct { 279 uint8 delay; 280 uint16 format_tag; 281 } _PACKED r1; 282 283 struct { 284 uint8 bm_controls; 285 uint8 format_type; 286 uint32 bm_formats; 287 uint8 num_output_pins; 288 uint32 channel_config; 289 uint8 channel_names; 290 } _PACKED r2; 291 }; 292 } _PACKED usb_audio_streaming_interface_descriptor; 293 294 295 // Class-specific As Isochronous Audio Data Endpoint descriptor 296 // R1: Table 4-21, p. 62 / R2: Table 4-34, page 87 297 typedef struct { 298 uint8 length; 299 uint8 descriptor_type; // USB_AUDIO_CS_ENDPOINT 300 uint8 descriptor_subtype; // USB_AUDIO_EP_GENERAL 301 uint8 attributes; 302 uint8 lock_delay_units; 303 uint16 lock_delay; 304 } _PACKED usb_audio_streaming_endpoint_descriptor; 305 306 307 // Sampling Rate are represented as 3-byte integer 308 typedef struct { 309 uint8 bytes[3]; 310 } _PACKED usb_audio_sampling_freq; 311 312 313 // Format Type I/II/III Descriptors 314 // T1: Table 2-1, p.10 etc. 315 // T2: Table 2-2, p.15 etc. 316 typedef struct { 317 uint8 length; 318 uint8 descriptor_type; // USB_AUDIO_CS_INTERFACE 319 uint8 descriptor_subtype; // USB_AUDIO_AS_FORMAT_TYPE 320 uint8 format_type; // USB_AUDIO_FORMAT_TYPE_I/II/III 321 union { 322 struct { 323 uint8 nr_channels; 324 uint8 subframe_size; 325 uint8 bit_resolution; 326 uint8 sam_freq_type; 327 usb_audio_sampling_freq sam_freqs[1]; 328 } _PACKED typeI; 329 330 struct { 331 uint16 max_bit_rate; 332 uint16 samples_per_frame; 333 uint8 sam_freq_type; 334 usb_audio_sampling_freq sam_freqs[1]; 335 } _PACKED typeII; 336 337 struct { 338 uint8 nr_channels; 339 uint8 subframe_size; 340 uint8 bit_resolution; 341 uint8 sam_freq_type; 342 usb_audio_sampling_freq sam_freqs[1]; 343 } _PACKED typeIII; 344 }; 345 } _PACKED usb_audio_format_descriptor; 346 347 348 enum { // Processing Unit Process Types (for USB_AUDIO_AC_PROCESSING_UNIT) 349 USB_AUDIO_UPDOWNMIX_PROCESS = 0x01, 350 USB_AUDIO_DOLBY_PROLOGIC_PROCESS, 351 USB_AUDIO_3D_STEREO_EXTENDER_PROCESS, 352 USB_AUDIO_REVERBERATION_PROCESS, 353 USB_AUDIO_CHORUS_PROCESS, 354 USB_AUDIO_DYN_RANGE_COMP_PROCESS 355 }; 356 357 enum { // Audio Class-Specific Request Codes 358 USB_AUDIO_SET_CUR = 0x01, 359 USB_AUDIO_GET_CUR = 0x81, 360 USB_AUDIO_SET_MIN = 0x02, 361 USB_AUDIO_GET_MIN = 0x82, 362 USB_AUDIO_SET_MAX = 0x03, 363 USB_AUDIO_GET_MAX = 0x83, 364 USB_AUDIO_SET_RES = 0x04, 365 USB_AUDIO_GET_RES = 0x84, 366 USB_AUDIO_SET_MEM = 0x05, 367 USB_AUDIO_GET_MEM = 0x85, 368 USB_AUDIO_GET_STATUS = 0xFF 369 }; 370 371 enum { // Terminal Control Selectors 372 USB_AUDIO_COPY_PROTECT_CONTROL = 0x01 373 }; 374 375 // R2: A.17.5 Mixer Unit Control Selectors 376 enum { 377 USB_AUDIO_MU_CONTROL_UNDEFINED = 0x00, 378 USB_AUDIO_MIXER_CONTROL = 0x01, 379 USB_AUDIO_CLUSTER_CONTROL = 0x02, 380 USB_AUDIO_UNDERFLOW_CONTROL = 0x03, 381 USB_AUDIO_OVERFLOW_CONTROL = 0x04, 382 USB_AUDIO_LATENCY_CONTROL = 0x05 383 }; 384 385 /* A.10.2 Feature Unit Control Selectors */ 386 enum { 387 USB_AUDIO_AC_FU_CONTROL_UNDEFINED = 0x00, 388 USB_AUDIO_MUTE_CONTROL = 0x01, 389 USB_AUDIO_VOLUME_CONTROL = 0x02, 390 USB_AUDIO_BASS_CONTROL = 0x03, 391 USB_AUDIO_MID_CONTROL = 0x04, 392 USB_AUDIO_TREBLE_CONTROL = 0x05, 393 USB_AUDIO_GRAPHIC_EQUALIZER_CONTROL = 0x06, 394 USB_AUDIO_AUTOMATIC_GAIN_CONTROL = 0x07, 395 USB_AUDIO_DELAY_CONTROL = 0x08, 396 USB_AUDIO_BASS_BOOST_CONTROL = 0x09, 397 USB_AUDIO_LOUDNESS_CONTROL = 0x0A 398 }; 399 400 /* A.10.3.1 Up/Down-mix Processing Unit Control Selectors */ 401 #define USB_AUDIO_UD_CONTROL_UNDEFINED 0x00 402 #define USB_AUDIO_UD_ENABLED_CONTROL 0x01 403 #define USB_AUDIO_UD_MODE_SELECT_CONTROL 0x02 404 405 /* A.10.3.2 Dolby Prologic(tm) Processing Unit Control Selectors */ 406 #define USB_AUDIO_DP_CONTROL_UNDEFINED 0x00 407 #define USB_AUDIO_DP_ENABLE_CONTROL 0x01 408 #define USB_AUDIO_DP_MODE_SELECT_CONTROL 0x02 409 410 /* A.10.3.3 3D Stereo Extender Processing Unit Control Selectors */ 411 #define USB_AUDIO_3D_CONTROL_UNDEFINED 0x00 412 #define USB_AUDIO_3D_ENABLED_CONTROL 0x01 413 #define USB_AUDIO_3D_SPACIOUSNESS_CONTROL 0x03 414 415 /* A.10.3.4 Reverberation Processing Unit Control Selectors */ 416 #define USB_AUDIO_RV_CONTROL_UNDEFINED 0x00 417 #define USB_AUDIO_RV_ENABLE_CONTROL 0x01 418 #define USB_AUDIO_RV_REVERB_LEVEL_CONTROL 0x02 419 #define USB_AUDIO_RV_REVERB_TIME_CONTROL 0x03 420 #define USB_AUDIO_RV_REVERB_FEEDBACK_CONTROL 0x04 421 422 /* A.10.3.5 Chorus Processing Unit Control Selectors */ 423 #define USB_AUDIO_CH_CONTROL_UNDEFINED 0x00 424 #define USB_AUDIO_CH_ENABLE_CONTROL 0x01 425 #define USB_AUDIO_CHORUS_LEVEL_CONTROL 0x02 426 #define USB_AUDIO_CHORUS_RATE_CONTROL 0x03 427 #define USB_AUDIO_CHORUS_DETH_CONTROL 0x04 428 429 /* A.10.3.6 Dynamic Range Compressor Processing Unit Control Selectors */ 430 #define USB_AUDIO_DR_CONTROL_UNDEFINED 0x00 431 #define USB_AUDIO_DR_ENABLE_CONTROL 0x01 432 #define USB_AUDIO_COMPRESSION_RATE_CONTROL 0x02 433 #define USB_AUDIO_MAXAMPL_CONTROL 0x03 434 #define USB_AUDIO_THRESHOLD_CONTROL 0x04 435 #define USB_AUDIO_ATTACK_TIME 0x05 436 #define USB_AUDIO_RELEASE_TIME 0x06 437 438 /* A.10.4 Extension Unit Control Selectors */ 439 #define USB_AUDIO_XU_CONTROL_UNDEFINED 0x00 440 #define USB_AUDIO_XU_ENABLE_CONTROL 0x01 441 442 /* A.10.5 Endpoint Control Selectors */ 443 enum { 444 USB_AUDIO_EP_CONTROL_UNDEFINED = 0x00, 445 USB_AUDIO_SAMPLING_FREQ_CONTROL = 0x01, 446 USB_AUDIO_PITCH_CONTROL = 0x02 447 }; 448 449 /* 450 typedef struct 451 { 452 uint8 length; 453 uint8 type; 454 uint8 subtype; 455 uint8 unit_id; 456 uint8 source_id; 457 uint8 control_size; 458 uint16 controls[0]; 459 } _PACKED usb_audio_feature_unit_descriptor; 460 461 typedef struct { 462 uint8 length; 463 uint8 type; 464 uint8 subtype; 465 uint8 format_type; 466 uint8 num_channels; 467 uint8 subframe_size; 468 uint8 bit_resolution; 469 uint8 sample_freq_type; 470 uint8 sample_freq[3]; // [0] + [1] << 8 + [2] << 16 471 // if sample_freq_type != 1, 472 // (sample_freq_type - 1) x uint8 sample_freq[3] follows... 473 } _PACKED usb_audio_format_type_descriptor; 474 */ 475 // bitset for feature control bitmap 476 // Table 4-7, page 44, bmaControls field 477 enum { 478 BMA_CTL_MUTE_R1 = 0X0001, 479 BMA_CTL_VOLUME_R1 = 0X0002, 480 BMA_CTL_BASS_R1 = 0X0004, 481 BMA_CTL_MID_R1 = 0X0008, 482 BMA_CTL_TREBLE_R1 = 0X0010, 483 BMA_CTL_GRAPHEQ_R1 = 0X0020, 484 BMA_CTL_AUTOGAIN_R1 = 0X0040, 485 BMA_CTL_DELAY_R1 = 0X0080, 486 BMA_CTL_BASSBOOST_R1 = 0X0100, 487 BMA_CTL_LOUDNESS_R1 = 0X0200, 488 // Release 2.0 489 BMA_CTL_MUTE = 0X00000003, 490 BMA_CTL_VOLUME = 0X0000000C, 491 BMA_CTL_BASS = 0X00000030, 492 BMA_CTL_MID = 0X000000C0, 493 BMA_CTL_TREBLE = 0X00000300, 494 BMA_CTL_GRAPHEQ = 0X00000C00, 495 BMA_CTL_AUTOGAIN = 0X00003000, 496 BMA_CTL_DELAY = 0X0000C000, 497 BMA_CTL_BASSBOOST = 0X00030000, 498 BMA_CTL_LOUDNESS = 0X000C0000, 499 BMA_CTL_INPUTGAIN = 0X00300000, 500 BMA_CTL_INPUTGAINPAD = 0X00C00000, 501 BMA_CTL_PHASEINVERTER = 0X03000000, 502 BMA_CTL_UNDERFLOW = 0X0C000000, 503 BMA_CTL_OVERFLOW = 0X30000000 504 }; 505 506 // Table A-4, page 30 507 // Format Type Codes 508 enum { 509 USB_AUDIO_FORMAT_TYPE_UNDEFINED = 0x00, 510 USB_AUDIO_FORMAT_TYPE_I = 0x01, 511 USB_AUDIO_FORMAT_TYPE_II = 0x02, 512 USB_AUDIO_FORMAT_TYPE_III = 0x03 513 }; 514 515 // Table A-1, page 29, wFormatTag 516 // Audio Data Format Type I codes 517 enum { 518 USB_AUDIO_FORMAT_TYPE_I_UNDEFINED = 0x0000, 519 USB_AUDIO_FORMAT_PCM = 0x0001, 520 USB_AUDIO_FORMAT_PCM8 = 0x0002, 521 USB_AUDIO_FORMAT_IEEE_FLOAT = 0x0003, 522 USB_AUDIO_FORMAT_ALAW = 0x0004, 523 USB_AUDIO_FORMAT_MULAW = 0x0005 524 }; 525 526 527 enum { 528 // USB Terminal Types 529 USB_AUDIO_UNDEFINED_USB_IO = 0x100, 530 USB_AUDIO_STREAMING_USB_IO = 0x101, 531 USB_AUDIO_VENDOR_USB_IO = 0x1ff, 532 // Input Terminal Types 533 USB_AUDIO_UNDEFINED_IN = 0x200, 534 USB_AUDIO_MICROPHONE_IN = 0x201, 535 USB_AUDIO_DESKTOPMIC_IN = 0x202, 536 USB_AUDIO_PERSONALMIC_IN = 0x203, 537 USB_AUDIO_OMNI_MIC_IN = 0x204, 538 USB_AUDIO_MICS_ARRAY_IN = 0x205, 539 USB_AUDIO_PROC_MICS_ARRAY_IN = 0x206, 540 // Output Terminal Types 541 USB_AUDIO_UNDEFINED_OUT = 0x300, 542 USB_AUDIO_SPEAKER_OUT = 0x301, 543 USB_AUDIO_HEAD_PHONES_OUT = 0x302, 544 USB_AUDIO_HMD_AUDIO_OUT = 0x303, 545 USB_AUDIO_DESKTOP_SPEAKER = 0x304, 546 USB_AUDIO_ROOM_SPEAKER = 0x305, 547 USB_AUDIO_COMM_SPEAKER = 0x306, 548 USB_AUDIO_LFE_SPEAKER = 0x307, 549 // Bi-directional Terminal Types 550 USB_AUDIO_UNDEFINED_IO = 0x400, 551 USB_AUDIO_HANDSET_IO = 0x401, 552 USB_AUDIO_HEADSET_IO = 0x402, 553 USB_AUDIO_SPEAKER_PHONE_IO = 0x403, 554 USB_AUDIO_SPEAKER_PHONEES_IO = 0x404, 555 USB_AUDIO_SPEAKER_PHONEEC_IO = 0x405, 556 // Telephony Terminal Types 557 USB_AUDIO_UNDEF_TELEPHONY_IO = 0x500, 558 USB_AUDIO_PHONE_LINE_IO = 0x501, 559 USB_AUDIO_TELEPHONE_IO = 0x502, 560 USB_AUDIO_DOWNLINE_PHONE_IO = 0x503, 561 // External Terminal Types 562 USB_AUDIO_UNDEFINEDEXT_IO = 0x600, 563 USB_AUDIO_ANALOG_CONNECTOR_IO = 0x601, 564 USB_AUDIO_DAINTERFACE_IO = 0x602, 565 USB_AUDIO_LINE_CONNECTOR_IO = 0x603, 566 USB_AUDIO_LEGACY_CONNECTOR_IO = 0x604, 567 USB_AUDIO_SPDIF_INTERFACE_IO = 0x605, 568 USB_AUDIO_DA1394_STREAM_IO = 0x606, 569 USB_AUDIO_DV1394_STREAMSOUND_IO = 0x607, 570 USB_AUDIO_ADAT_LIGHTPIPE_IO = 0x608, 571 USB_AUDIO_TDIF_IO = 0x609, 572 USB_AUDIO_MADI_IO = 0x60a, 573 // Embedded Terminal Types 574 USB_AUDIO_UNDEF_EMBEDDED_IO = 0x700, 575 USB_AUDIO_LC_NOISE_SOURCE_OUT = 0x701, 576 USB_AUDIO_EQUALIZATION_NOISE_OUT = 0x702, 577 USB_AUDIO_CDPLAYER_IN = 0x703, 578 USB_AUDIO_DAT_IO = 0x704, 579 USB_AUDIO_DCC_IO = 0x705, 580 USB_AUDIO_MINI_DISK_IO = 0x706, 581 USB_AUDIO_ANALOG_TAPE_IO = 0x707, 582 USB_AUDIO_PHONOGRAPH_IN = 0x708, 583 USB_AUDIO_VCR_AUDIO_IN = 0x709, 584 USB_AUDIO_VIDEO_DISC_AUDIO_IN = 0x70a, 585 USB_AUDIO_DVD_AUDIO_IN = 0x70b, 586 USB_AUDIO_TV_TUNER_AUDIO_IN = 0x70c, 587 USB_AUDIO_SAT_RECEIVER_AUDIO_IN = 0x70d, 588 USB_AUDIO_CABLE_TUNER_AUDIO_IN = 0x70e, 589 USB_AUDIO_DSS_AUDIO_IN = 0x70f, 590 USB_AUDIO_RADIO_RECEIVER_IN = 0x710, 591 USB_AUDIO_RADIO_TRANSMITTER_IN = 0x711, 592 USB_AUDIO_MULTI_TRACK_RECORDER_IO = 0x712, 593 USB_AUDIO_SYNTHESIZER_IO = 0x713, 594 USB_AUDIO_PIANO_IO = 0x714, 595 USB_AUDIO_GUITAR_IO = 0x715, 596 USB_AUDIO_DRUMS_IO = 0x716, 597 USB_AUDIO_INSTRUMENT_IO = 0x717 598 }; 599 600 601 #endif // USB_AUDIO_H 602