

- Class compliant usb audio interface mac os x#
- Class compliant usb audio interface mac os#
- Class compliant usb audio interface driver#
Class compliant usb audio interface driver#
To maintain glitch-free audio, AppleUSBAudio must regularly present timestamps to Core Audio that accurately represent the audio data rate of the engine (see “The Audio I/O Model Up Close” in the Audio Device Driver Programming Guide for more details.) When the device publishes the correct endpoint synchronization types in its configuration descriptors, AppleUSBAudio can pick the appropriate stream from which to generate the most accurate timestamps for the engine. Developers can aid the driver in achieving this goal by selecting the appropriate endpoint descriptor values for synchronization type and maximum packet size. The primary and most important function of the AppleUSBAudio driver is to support reliable, artifact-free audio streaming. They will always start and stop together. These streams cannot be activated independently. These streams operate in the same time domain and sample rate setting (but not necessarily the same format.) Please note the following behaviors of streams that occupy the same engine: The streams reside in the same clock domain. The same synchronization type is used for all interface alternate settings. In order to combine multiple streams on one engine, the following criteria must be met by the stream interfaces: In cases where input and output streams can reside on the same engine, this architecture achieves sample synchronization and consistent latencies between streams. Then in v10.5.7, AppleUSBAudio’s engine model was redesigned to combine multiple streams per engine when possible.
Class compliant usb audio interface mac os#
In Mac OS v10.5.6 and earlier, AppleUSBAudio restricted each engine to one stream only. One or more streams are associated with each engine. Example: 10 channels of input and 10 channels of output, 32-bit 192 kHzĪppleUSBAudio represents the streams of a USB audio device to the application layer using IOAudioFamily's IOAudioStream entities. High speed isochronous audio data transfersĬan support high channel count/sample rates. Input adaptive endpoints are not supported.ĭevice informs host of volume, mute, input selector, clock validityĬlock Source, Clock Selector, Clock Multiplier Usually paired with an asynchronous input endpoint.

Streams must meet requirements to occupy the same engine Input stream sample synchronous to output stream The same follows for the “USB Audio 2.0” column. A checkmark in the “USB Audio 1.0” column means that this feature is supported for USB Audio 1.0 devices. Table 2 Supported features in AppleUSBAudio. Table 2 highlights some of the supported features that are discussed in this article. Please see the Audio Device Driver Programming Guide for more details.ĪppleUSBAudio is a mature driver that supports many USB Audio 1.0 and 2.0 features. AppleUSBAudio builds upon the IOAudioFamily layer which provides general audio driver functions like maintaining the sample and mix buffers, facilitating communication over the kernel and user space boundary through user clients, and more. The AppleUSBAudio driver communicates to devices via the USB transport, using the IOUSBFamily APIs.
Class compliant usb audio interface mac os x#
In addition to transporting audio data between the hardware and the host’s sample buffer, it also communicates format and control changes between the host and the device (like volume, mute, format, input/clock source, etc.) AppleUSBAudio presents these hardware resources to applications through the HAL (audio hardware abstraction layer.) Figure 1 AppleUSBAudio in the Mac OS X audio stack Figure 1 shows where AppleUSBAudio fits in the Mac OS X audio stack architecture. AppleUSBAudio is an I/O Kit based kernel driver that is designed to support both USB Audio 1.0 and USB Audio 2.0 class compliant devices.
