Audio Device Driver Programming Guide
PDF
Introduction
Audio on Mac OS X
Mac OS X Audio Capabilities
Architecture of Mac OS X Audio
Audio HAL (Core Audio)
Secondary Audio Frameworks
Audio Units
Audio Toolbox
MIDI System Services
The Audio Family
Apple Audio Drivers
The Audio I/O Model on Mac OS X
Audio Family Design
The Classes of the Audio Family
Dynamic Relationships in the Audio Family
The Audio Family and the I/O Registry
The Roles of Audio Family Objects
IOAudioDevice
IOAudioEngine
IOAudioStream
IOAudioControl
User Client Classes
IOAudioPort
The Audio I/O Model Up Close
Ring Buffers and Timestamps
The Audio HAL Predicts
Interpolation
Client Buffers and I/O Procedures
A Walk Through the I/O Model
Output Streams
Erase Heads and Timer Services
Input Streams
Interfaces With the Audio HAL
User Client Objects
Custom Core Audio Properties
Implementing an Audio Driver
Setting Up the Project
Implementing an IOAudioDevice Subclass
Hardware Initialization
Creating the IOAudioEngine Objects
Creating and Adding the IOAudioControl Objects
Handling Sleep/Wake Notifications
Implementing Control Value-Change Handlers
Implementing an IOAudioEngine Subclass
Hardware Initialization
Configuring the I/O Engine
Creating IOAudioStream Objects
Starting and Stopping the I/O Engine
Taking a Timestamp
Providing a Playback Frame Position
Implementing Format and Rate Changes
Clipping and Converting Samples
Debugging and Testing the Driver
Tools for Testing Audio Drivers
Custom Debugging Information in the I/O Registry
Tips, Tricks, and Frequently Asked Questions
General Issues
Sample Buffer Issues
Faking Timestamps
Creating Custom Controls
Revision History