PhantomAudioDriver/
-	Audio driver that appears to the system as a fully functional audio driver although it doesn't actually drive any hardware or input or output any audio
-	Simulates a running IOAudioEngine through the use of timers (IOTimerEventSource)
-	Allows the number of audio engines, streams, channels, formats and sample rates to be customized in the driver personality (IOKitPersonalities bundle entry)
-	'AudioEngines' entry is an array of dictionaries - each one of which represents a unique IOAudioEngine instance that will be created by the driver
-	Each IOAudioEngine entry contains:
	- 'Description' - text description of the engine
-	'NumBlocks' - the number of blocks in each sample buffer
-	'BlockSize' - the size of each block in sample frames
-	'NumStreams' - the number of IOAudioStream objects to create for this audio engine
-	'Formats' - an array of format dictionaries - each dictionary contains an attribute for each field in the IOAudioStreamFormat struct (see the example for the attribute names and types)
-	SampleRates - an array of numbers each one is a whole number sample rate in Hz
-	Each sample rate is allowed for each format
-	An input and output stream is created for each specified stream
-	A level and mute control is created for each channel in each stream
-	A passthru level and mute control is created for each channel
-	Master level and mute controls are created for each set of inputs and outputs

Templates/	-	The following drivers are set up as simple templates which can be used as a starting point for new audio drivers.  They do not work as is.

  SampleAudioDriver/
-	Simple skeleton audio driver
-	Does not implement any IOAudioEngine code (or timers to simulate) so any attempt to play audio will result in the audio app hanging
-	Implements left and right input and output, left and right volume controls and input and output master mute controls
-	Matches on an always present registry entry (IOResources) to allow the driver to be loaded and instantiated
-	Can be used as a starting point for an audio driver
-	Comments have been placed indicating places where driver-specific tasks should be performed
-	Additionally, device matching information in the IOKitPersonalities bundle entry need to be changed to ensure it matches against the proper entry for the hardware

   SamplePCIAudioDriver/
-	Skeleton PCI audio driver 
-	Adds PCI config register mapping to driver init code
-	Adds example for creating an IOInterruptEventSource to show how to get interrupts into the driver
-	Adds PCI device mapping criteria in IOKitPersonalities bundle entry
-	Can be used as a starting point for a PCI audio driver
-	PCI device matching information should be changed to match the specific PCI card

Copyright  © 2001 Apple Computer, Inc.