Terms used in this document | Reference |
---|---|
USB Audio 1.0 USB Audio 2.0 | Revisions of the USB Device Class Definition for Audio Devices |
USB Audio Data Formats 1.0USB Audio Data Formats 2.0 | Revisions of the USB Device Class Definition for Audio Data Formats |
USB 1.0USB 1.1USB 2.0 | Revisions of the Universal Serial Bus Specification |
Feature | USB Audio 1.0devices | USB Audio 2.0devices | Notes | Document section |
---|---|---|---|---|
Input stream sample synchronous to output stream | X | X | Streams must meet requirements to occupy the same engine | Unified Engine Model |
Synchronous endpoints | X | X | Endpoint Synchronization Types | |
Output adaptive endpoints | X | X | Usually paired with an asynchronous input endpoint. Input adaptive endpoints are not supported. | Endpoint Synchronization Types |
Asynchronous endpoints | X | X | Endpoint Synchronization Types | |
Status interrupts | X | X | Device informs host of volume, mute, input selector, clock validity | Status Interrupts |
Predefined and custom channel names | X | X | Uses iChannelNames | Descriptive Naming |
Clock entity descriptors | X | Clock Source, Clock Selector, Clock Multiplier | Clock Entities | |
High speed isochronous audio data transfers | X | Can support high channel count/sample rates. Example: 10 channels of input and 10 channels of output, 32-bit @ 192 kHz | High Speed Streaming |
Input Stream | Output Stream | Device derives its clock from | Master clock | Timestamps generated from |
---|---|---|---|---|
Synchronous | Synchronous | SOF | Mac | Input stream |
Asynchronous | Adaptive | Output data rate | Mac | Output stream |
Asynchronous | Asynchronous | Free-running internal or external source | Device or external | Input stream |
Config | Input endpoint descriptor specifies implicit feedback usage type | Feedback endpoint present | Meets implicit requirements | Sync method | Recommended? |
---|---|---|---|---|---|
1 | Yes | No | Yes | Implicit | Yes |
2 | Yes | Yes | Yes | Implicit | Only for compatibility |
3 | No | No | Yes | Implicit | Only for USB Audio 1.0 devices |
4 | No | Yes | n/a | Feedback endpoint | Yes |
5 | Yes | Yes | No | Feedback endpoint | No |
Example | Sample rate (Hz) | Bit depth | Channels | Average sample frames per ms | Max sample frames per ms (sync) | Trans-actions per ms | Max packet size, sync (bytes) | Max packet size, adapt & async (bytes) |
---|---|---|---|---|---|---|---|---|
A (full) | 48000 | 24 | 2 | 48 | 48 | 1 | 288 | 294 |
B (full) | 44100 | 16 | 8 | 44.1 | 45 | 1 | 720 | 720 |
C (high) | 192000 | 32 | 10 | 7680 | 7680 | 8 | 960 | 1000 |
Unit | Associated controls | Example device event that triggers an interrupt | Mac response to interrupt |
---|---|---|---|
Feature unit | Volume and mute | User turns volume knob | Volume is updated in AMS and Sound Preferences UI |
Selector unit | Input path selector | User switches toggle from microphone input to line input | “Source” selector is updated to “Line input” in AMS’s input tab for the device |
Clock unit (USB Audio 2.0 only) | Clock validity, supported sample rate(s) changed | User disconnects S/PDIF cable which was in use as the Clock Source | AppleUSBAudio switches to an alternate valid Clock Source and updates selector in AMS |
super::pluginSetConfigurationApp()
with the control panel's application bundle ID.Date | Notes |
---|---|
2013-06-03 | Updated to include integrating a custom control application from a codeless override kext. |
2011-09-22 | Updated with a new section describing feedback mechanisms for asynchronous output streams, including implicit feedback. Made minor editorial corrections. |
2010-06-07 | New document that details Apple's support for USB audio to help developers design class compliant devices that work seamlessly with the Mac. |