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. 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.