AX employs a dedicated DSP processor for voice generation and mixing of audio voices. The processing load required to render a voice is dependent on the voice parameters like mix settings, src ratio, type of voice (ADPCM, PCM16 or PCM8), whether the filters are enabled, etc. The total processing load required for audio system is dependent on voice generation, aux processing and the output stage. However, due to the high number of channels, busses, and audio output devices, a software renderer running on the application CPU supplements the DSP. The software renderer ("PPC renderer") is functionally identical to the DSP.
AX implements an automatic load balancing algorithm that will "spill" the voices from DSP over to PPC when it detects that DSP will be overloaded. Developers still have the ability to "pin" a voice to DSP or PPC using
The "pinned" voices are rendered on the processor they are pinned to. By default AX does not pin voices to a renderer and uses DSP completely before "spilling" over to PPC.
In extreme cases (e.g., when every voice is rendered to every possible device, with a large amount of aux processing), it is possible to overload the DSP and the PPC. It is highly desirable to make tools available for managing and monitoring the system load.
The AX library will compute DSP and PPC load for each active voice and aux effect on a frame by frame basis, and use this information to decide how to allocate the load:
The AX Profiling Service allows determination of how much time of each frame interval the DSP and the PPC spend rendering. Developers can use this API to monitor the renderer performance either on a frame by frame basis or by averaging over many frames. When a profile is obtained, it reflects the timings for the last audio frame that ran.
2013/05/08 Automated cleanup pass.