| AAX SDK 2.8.0 Avid Audio Extensions Development Kit

- Welcome
- Manual
- Classes
- Files
- Lists
- Support

Loading...
Searching...
No Matches
Direct Memory Access
AAX SDK Manual » Additional AAX features

DMA support for AAX DSP plug-ins, with emulation for AAX Native.

# On this page

- DMA facility overview
- DMA transfer modes
- Registering for DMA transfers
- DMA restrictions
- Additional information

# DMA facility overview

AAX provides an abstract interface for accessing the host environment's DMA or other memory-transfer facilities. All platform-specific details are handled by the AAX host environment, allowing plug-ins that use this interface to be re-targeted to to Native or DSP environments without changing their memory transfer implementation.

# DMA transfer modes

AAX hosts may support the following DMA modes, as listed in AAX_IDma::EMode :

- In Scatter mode, data is transferred from a linear buffer to a series of offset segments in a circular buffer. This mode is most often used to transfer data from linear internal memory to a large external memory buffer.

- In Gather mode, data is collected from a series of offset segments in a circular buffer and concatenated in a linear buffer. This mode is most often used to transfer data from an external memory buffer to an internal memory buffer.

- In Burst mode, data is written linearly from one location to another. Burst mode transfers may be used for linear transfers of data to or from external memory. During the transfer, the source data is broken into a series of individual bursts. This mode is included for completeness, though the Scatter/Gather modes are expected to be more appropriate for the vast majority of real-world DMA use cases.

# Registering for DMA transfers

Algorithm Components register for DMA transfers by adding one or more DMA fields to their context via AAX_IComponentDescriptor::AddDmaInstance(). At runtime, each field will be populated with a valid DMA interface for the specified DMA mode.

# DMA restrictions

The following restrictions apply to DMA transfers on all AAX platforms:

- The maximum burst size for any DMA transfer is 64B. The minimum burst size is 1B.
- Only one DMA transfer request may be posted per AAX_IDma object per processing callback.
- Scatter and Gather requests each require that the circular memory buffer be padded by at least the size of one burst

# Additional information

HDX DSP Guide

- DMA support
- DMA and background thread performance reporting

Collaboration diagram for Direct Memory Access: