| AAX SDK 2.8.0 Avid Audio Extensions Development Kit

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

- File List
- File Members

Loading...
Searching...
No Matches
Classes
AAX.h File Reference
`#include <stdint.h>`
`#include <stddef.h>`
`#include "AAX_Version.h"`
`#include "AAX_Enums.h"`
`#include "AAX_Errors.h"`
`#include "AAX_Properties.h"`
`#include <AAX_ALIGN_FILE_BEGIN>`
`#include <AAX_ALIGN_FILE_HOST>`
`#include <AAX_ALIGN_FILE_END>`
`#include <AAX_ALIGN_FILE_RESET>`

Go to the source code of this file.

## Description

Various utility definitions for AAX.

## Classes
struct | AAX_SPlugInChunkHeader
| Plug-in chunk header. More...
struct | AAX_SPlugInChunk
| Plug-in chunk header + data. More...
struct | AAX_SPlugInIdentifierTriad
| Plug-in Identifier Triad. More...
struct | AAX_CMidiPacket
| Packet structure for MIDI data. More...
struct | AAX_CMidiStream
| MIDI stream data structure used by AAX_IMIDINode. More...

## Macros
C++ compiler macros
#define | TI_VERSION 0
| Preprocessor flag indicating compilation for TI.
#define | AAX_CPP11_SUPPORT 1
| Preprocessor toggle for code which requires C++11 compiler support.
C++ keyword macros
Use these macros for keywords which may not be supported on all compilers Warning Be careful when using these macros; they are a workaround and the fallback versions of the macros are not guaranteed to provide identical behavior to the fully-supported versions. Always consider the code which will be generated in each case! If your code is protected with PACE Fusion and you are using a PACE SDK prior to v4 then you must explicitly define `AAX_CPP11_SUPPORT 0` in your project's preprocessor settings to avoid encountering source failover caused by AAX header includes with exotic syntax.
#define | AAX_OVERRIDE
| `override` keyword macro
#define | AAX_FINAL
| `final` keyword macro
#define | AAX_DEFAULT_DTOR(X) ~X() {}
#define | AAX_DEFAULT_DTOR_OVERRIDE(X) ~X() {}
#define | AAX_DEFAULT_CTOR(X) X() {}
| `default` keyword macro for a class default constructor
#define | AAX_DEFAULT_COPY_CTOR(X)
| `default` keyword macro for a class copy constructor
#define | AAX_DEFAULT_MOVE_CTOR(X)
| `default` keyword macro for a class move constructor
#define | AAX_DEFAULT_ASGN_OPER(X)
| `default` keyword macro for a class assignment operator
#define | AAX_DEFAULT_MOVE_OPER(X)
| `default` keyword macro for a class move-assignment operator
#define | AAX_DELETE(X) private: X; public:
| `delete` keyword macro
#define | AAX_CONSTEXPR const
| `constexpr` keyword macro
#define | AAX_UNIQUE_PTR(X) std::auto_ptr<X>
Pointer definitions
#define | AAXPointer_32bit 1
| When AAX_PointerSize == AAXPointer_32bit this is a 32-bit build.
#define | AAXPointer_64bit 2
| When AAX_PointerSize == AAXPointer_64bit this is a 64-bit build.
#define | AAX_PointerSize AAXPointer_32bit
| Use this definition to check the pointer size in the current build.

## Alignment macros
Use these macros to define struct packing alignment for data structures that will be sent across binary or platform boundaries. #include AAX_ALIGN_FILE_BEGIN #include AAX_ALIGN_FILE_HOST #include AAX_ALIGN_FILE_END // Structure definition #include AAX_ALIGN_FILE_BEGIN #include AAX_ALIGN_FILE_RESET #include AAX_ALIGN_FILE_END See the documentation for each macro for individual usage notes and warnings
#define | AAX_ALIGN_FILE_HOST "AAX_Push2ByteStructAlignment.h"
| Macro to set alignment for data structures that are shared with the host.
#define | AAX_ALIGN_FILE_ALG "AAX_Push8ByteStructAlignment.h"
| Macro to set alignment for data structures that are used in the alg.
#define | AAX_ALIGN_FILE_RESET "AAX_PopStructAlignment.h"
| Macro to reset alignment back to default.
#define | AAX_ALIGN_FILE_BEGIN "AAX_PreStructAlignmentHelper.h"
| Wrapper macro used for warning suppression.
#define | AAX_ALIGN_FILE_END "AAX_PostStructAlignmentHelper.h"
#define | AAX_CALLBACK
#define | AAX_PREPROCESSOR_CONCAT_HELPER(X, Y) X ## Y
#define | AAX_PREPROCESSOR_CONCAT(X, Y) AAX_PREPROCESSOR_CONCAT_HELPER(X,Y)
#define | AAX_FIELD_INDEX(aContextType, aMember) ((AAX_CFieldIndex) (offsetof (aContextType, aMember) / sizeof (void *)))
| Compute the index used to address a context field.
typedef int32_t | AAX_CIndex
typedef AAX_CIndex | AAX_CCount
typedef uint8_t | AAX_CBoolean
| Cross-compiler boolean type used by AAX interfaces.
typedef uint32_t | AAX_CSelector
typedef int64_t | AAX_CTimestamp
| Time stamp value. Measured against the DAE clock (see AAX_IComponentDescriptor::AddClock() )
typedef int64_t | AAX_CTimeOfDay
| Hardware running clock value. MIDI packet time stamps are measured against this clock. This is actually the same as TransportCounter, but kept for compatibility.
typedef int64_t | AAX_CTransportCounter
| Offset of samples from transport start. Same as TimeOfDay, but added for new interfaces as TimeOfDay is a confusing name.
typedef float | AAX_CSampleRate
| Literal sample rate value used by the sample rate field. For AAX_eProperty_SampleRate, use a mask of AAX_ESampleRateMask.
typedef uint32_t | AAX_CTypeID
| Matches type of OSType used in classic plugins.
typedef int32_t | AAX_Result
typedef int32_t | AAX_CPropertyValue
| 32-bit property values
typedef int64_t | AAX_CPropertyValue64
| 64-bit property values
typedef AAX_CPropertyValue | AAX_CPointerPropertyValue
| Pointer-sized property values.
typedef int32_t | AAX_CTargetPlatform
| Matches type of target platform.
typedef AAX_CIndex | AAX_CFieldIndex
| Not used by AAX plug-ins (except in AAX_FIELD_INDEX macro)
typedef AAX_CSelector | AAX_CComponentID
typedef AAX_CSelector | AAX_CMeterID
typedef const char * | AAX_CParamID
| Parameter identifier.
typedef AAX_CParamID | AAX_CPageTableParamID
| Parameter identifier used in a page table.
typedef const char * | AAX_CEffectID
| URL-style Effect identifier. Must be unique among all registered effects in the collection.
typedef _acfUID | acfUID
typedef acfUID | AAX_Feature_UID
typedef const float *const * | AAX_CAudioInPort
| AAX algorithm audio input port data type
typedef float *const * | AAX_CAudioOutPort
| AAX algorithm audio output port data type
typedef float *const | AAX_CMeterPort
| AAX algorithm meter port data type
typedef struct AAX_SPlugInChunkHeader | AAX_SPlugInChunkHeader
typedef struct AAX_SPlugInChunk | AAX_SPlugInChunk
typedef struct AAX_SPlugInChunk * | AAX_SPlugInChunkPtr
typedef struct AAX_SPlugInIdentifierTriad | AAX_SPlugInIdentifierTriad
typedef struct AAX_SPlugInIdentifierTriad * | AAX_SPlugInIdentifierTriadPtr
AAX_CONSTEXPR size_t | kAAX_ParameterIdentifierMaxSize = 32
AAX_CBoolean | sampleRateInMask (AAX_CSampleRate inSR, uint32_t iMask)
| Determines whether a particular AAX_CSampleRate is present in a given mask of AAX_ESampleRateMask.
AAX_CSampleRate | getLowestSampleRateInMask (uint32_t iMask)
| Converts from a mask of AAX_ESampleRateMask to the lowest supported AAX_CSampleRate value in Hz.
uint32_t | getMaskForSampleRate (float inSR)
| Returns the AAX_ESampleRateMask selector for a literal sample rate.

## Macro Definition Documentation

## ◆ TI_VERSION

#define TI_VERSION 0

Preprocessor flag indicating compilation for TI.

## ◆ AAX_CPP11_SUPPORT

#define AAX_CPP11_SUPPORT 1

Preprocessor toggle for code which requires C++11 compiler support.

## ◆ AAX_OVERRIDE

#define AAX_OVERRIDE

`override` keyword macro

## ◆ AAX_FINAL

#define AAX_FINAL

`final` keyword macro

## ◆ AAX_DEFAULT_DTOR

#define AAX_DEFAULT_DTOR | ( |  | X | ) | ~X() {}

## ◆ AAX_DEFAULT_DTOR_OVERRIDE

#define AAX_DEFAULT_DTOR_OVERRIDE | ( |  | X | ) | ~X() {}

## ◆ AAX_DEFAULT_CTOR

#define AAX_DEFAULT_CTOR | ( |  | X | ) | X() {}

`default` keyword macro for a class default constructor

## ◆ AAX_DEFAULT_COPY_CTOR

#define AAX_DEFAULT_COPY_CTOR | ( |  | X | ) |

`default` keyword macro for a class copy constructor

## ◆ AAX_DEFAULT_MOVE_CTOR

#define AAX_DEFAULT_MOVE_CTOR | ( |  | X | ) |

`default` keyword macro for a class move constructor

## ◆ AAX_DEFAULT_ASGN_OPER

#define AAX_DEFAULT_ASGN_OPER | ( |  | X | ) |

`default` keyword macro for a class assignment operator

## ◆ AAX_DEFAULT_MOVE_OPER

#define AAX_DEFAULT_MOVE_OPER | ( |  | X | ) |

`default` keyword macro for a class move-assignment operator

## ◆ AAX_DELETE

#define AAX_DELETE | ( |  | X | ) | private: X; public:

`delete` keyword macro

Warning
  The non-C++11 version of this macro assumes `public` declaration access

## ◆ AAX_CONSTEXPR

#define AAX_CONSTEXPR const

`constexpr` keyword macro

## ◆ AAX_UNIQUE_PTR

#define AAX_UNIQUE_PTR | ( |  | X | ) | std::auto_ptr<X>

## ◆ AAXPointer_32bit

#define AAXPointer_32bit 1

When AAX_PointerSize == AAXPointer_32bit this is a 32-bit build.

## ◆ AAXPointer_64bit

#define AAXPointer_64bit 2

When AAX_PointerSize == AAXPointer_64bit this is a 64-bit build.

## ◆ AAX_PointerSize

#define AAX_PointerSize AAXPointer_32bit

Use this definition to check the pointer size in the current build.

See also
  AAXPointer_32bit
  AAXPointer_64bit

## ◆ AAX_ALIGN_FILE_HOST

#define AAX_ALIGN_FILE_HOST "AAX_Push2ByteStructAlignment.h"

Macro to set alignment for data structures that are shared with the host.

This macro is used to set alignment for data structures that are part of the AAX ABI. You should not need to use this macro for any custom data structures in your plug-in.

## ◆ AAX_ALIGN_FILE_ALG

#define AAX_ALIGN_FILE_ALG "AAX_Push8ByteStructAlignment.h"

Macro to set alignment for data structures that are used in the alg.

IMPORTANT: Be very careful to maintain correct data alignment when sending data structures between platforms.

Warning
  - This macro does not guarantee data alignment compatibility for data structures which include base classes/structs or virtual functions. The MSVC, GCC and LLVM/clang, and CCS (TI) compilers do not support data structure cross-compatibility for these types of structures. clang will now present a warning when these macros are used on any such structures: `#pragma ms_struct can not be used with dynamic classes or structures`
  - Struct Member Alignment (/Zp) on Microsoft compilers must be set to a minimum of 8-byte packing in order for this macro to function properly. For more information, see this MSDN article:
    http://msdn.microsoft.com/en-us/library/ms253935.aspx

## ◆ AAX_ALIGN_FILE_RESET

#define AAX_ALIGN_FILE_RESET "AAX_PopStructAlignment.h"

Macro to reset alignment back to default.

## ◆ AAX_ALIGN_FILE_BEGIN

#define AAX_ALIGN_FILE_BEGIN "AAX_PreStructAlignmentHelper.h"

Wrapper macro used for warning suppression.

This wrapper is required in llvm 10.0 and later due to the addition of the `-Wpragma-pack` warning. This is a useful compiler warning but it is awkward to properly suppress in cases where we are intentionally including only part of the push/pop sequence in a single file, as with the `AAX_ALIGN_FILE_XXX` macros.

## ◆ AAX_ALIGN_FILE_END

#define AAX_ALIGN_FILE_END "AAX_PostStructAlignmentHelper.h"

Wrapper macro used for warning suppression.

This wrapper is required in llvm 10.0 and later due to the addition of the `-Wpragma-pack` warning. This is a useful compiler warning but it is awkward to properly suppress in cases where we are intentionally including only part of the push/pop sequence in a single file, as with the `AAX_ALIGN_FILE_XXX` macros.

## ◆ AAX_CALLBACK

#define AAX_CALLBACK

## ◆ AAX_PREPROCESSOR_CONCAT_HELPER

#define AAX_PREPROCESSOR_CONCAT_HELPER | ( |  | X,
|  |  | Y
| ) |  | X ## Y

## ◆ AAX_PREPROCESSOR_CONCAT

#define AAX_PREPROCESSOR_CONCAT | ( |  | X,
|  |  | Y
| ) |  | AAX_PREPROCESSOR_CONCAT_HELPER(X,Y)

## ◆ AAX_FIELD_INDEX

#define AAX_FIELD_INDEX | ( |  | aContextType,
|  |  | aMember
| ) |  | ((AAX_CFieldIndex) (offsetof (aContextType, aMember) / sizeof (void *)))

Compute the index used to address a context field.

This macro expands to a constant expression suitable for use in enumerator definitions and case labels so int32_t as `aMember` is a constant specifier.

Parameters

  [in] | aContextType | The name of context type
  [in] | aMember | The name or other specifier of a field of that context type

## Typedef Documentation

## ◆ AAX_CIndex

typedef int32_t AAX_CIndex

Todo:
  Not used by AAX plug-ins (except as AAX_CFieldIndex)

## ◆ AAX_CCount

typedef AAX_CIndex AAX_CCount

Todo:
  Not used by AAX plug-ins

## ◆ AAX_CBoolean

typedef uint8_t AAX_CBoolean

Cross-compiler boolean type used by AAX interfaces.

## ◆ AAX_CSelector

typedef uint32_t AAX_CSelector

Todo:
  Clean up usage; currently used for a variety of ID-related values

## ◆ AAX_CTimestamp

typedef int64_t AAX_CTimestamp

Time stamp value. Measured against the DAE clock (see AAX_IComponentDescriptor::AddClock() )

## ◆ AAX_CTimeOfDay

typedef int64_t AAX_CTimeOfDay

Hardware running clock value. MIDI packet time stamps are measured against this clock. This is actually the same as TransportCounter, but kept for compatibility.

## ◆ AAX_CTransportCounter

typedef int64_t AAX_CTransportCounter

Offset of samples from transport start. Same as TimeOfDay, but added for new interfaces as TimeOfDay is a confusing name.

## ◆ AAX_CSampleRate

typedef float AAX_CSampleRate

Literal sample rate value used by the sample rate field. For AAX_eProperty_SampleRate, use a mask of AAX_ESampleRateMask.

See also
  sampleRateInMask

## ◆ AAX_CTypeID

typedef uint32_t AAX_CTypeID

Matches type of OSType used in classic plugins.

## ◆ AAX_Result

typedef int32_t AAX_Result

## ◆ AAX_CPropertyValue

typedef int32_t AAX_CPropertyValue

32-bit property values

Use this property value type for all properties unless otherwise specified by the property documentation

## ◆ AAX_CPropertyValue64

typedef int64_t AAX_CPropertyValue64

64-bit property values

Do not use this value type unless specified explicitly in the property documentation

## ◆ AAX_CPointerPropertyValue

typedef AAX_CPropertyValue AAX_CPointerPropertyValue

Pointer-sized property values.

Do not use this value type unless specified explicitly in the property documentation

## ◆ AAX_CTargetPlatform

typedef int32_t AAX_CTargetPlatform

Matches type of target platform.

## ◆ AAX_CFieldIndex

typedef AAX_CIndex AAX_CFieldIndex

Not used by AAX plug-ins (except in AAX_FIELD_INDEX macro)

## ◆ AAX_CComponentID

typedef AAX_CSelector AAX_CComponentID

Todo:
  Not used by AAX plug-ins

## ◆ AAX_CMeterID

typedef AAX_CSelector AAX_CMeterID

Todo:
  Not used by AAX plug-ins

## ◆ AAX_CParamID

typedef const char* AAX_CParamID

Parameter identifier.

Note
  While this is a string, it must be less than 32 characters in length. (strlen of 31 or less)

See also
  kAAX_ParameterIdentifierMaxSize

## ◆ AAX_CPageTableParamID

typedef AAX_CParamID AAX_CPageTableParamID

Parameter identifier used in a page table.

May be a parameter ID or a parameter name string depending on the page table formatting. Must be less than 32 characters in length (strlen of 31 or less.)

See also
  Parameter identifiers in the Page Table Guide

## ◆ AAX_CEffectID

typedef const char* AAX_CEffectID

URL-style Effect identifier. Must be unique among all registered effects in the collection.

## ◆ acfUID

typedef _acfUID acfUID

## ◆ AAX_Feature_UID

typedef acfUID AAX_Feature_UID

Identifier for AAX features

See AAX_IDescriptionHost::AcquireFeatureProperties() and AAX_IFeatureInfo

## ◆ AAX_CAudioInPort

typedef const float* const* AAX_CAudioInPort

AAX algorithm audio input port data type

Audio input ports are provided with a pointer to an array of const audio buffers, with one buffer provided per input or side chain channel.

Todo:
  Not used directly by AAX plug-ins

## ◆ AAX_CAudioOutPort

typedef float* const* AAX_CAudioOutPort

AAX algorithm audio output port data type

Audio output ports are provided with a pointer to an array of audio buffers, with one buffer provided per output or auxiliary output channel.

Todo:
  Not used directly by AAX plug-ins

## ◆ AAX_CMeterPort

typedef float* const AAX_CMeterPort

AAX algorithm meter port data type

Meter output ports are provided with a pointer to an array of floats, with one float provided per meter tap. The algorithm is responsible for setting these to the corresponding per-buffer peak sample values.

Todo:
  Not used directly by AAX plug-ins

## ◆ AAX_SPlugInChunkHeader

typedef struct AAX_SPlugInChunkHeader AAX_SPlugInChunkHeader

## ◆ AAX_SPlugInChunk

typedef struct AAX_SPlugInChunk AAX_SPlugInChunk

## ◆ AAX_SPlugInChunkPtr

typedef struct AAX_SPlugInChunk * AAX_SPlugInChunkPtr

## ◆ AAX_SPlugInIdentifierTriad

typedef struct AAX_SPlugInIdentifierTriad AAX_SPlugInIdentifierTriad

## ◆ AAX_SPlugInIdentifierTriadPtr

typedef struct AAX_SPlugInIdentifierTriad * AAX_SPlugInIdentifierTriadPtr

## Function Documentation

## ◆ sampleRateInMask()

AAX_CBoolean sampleRateInMask | ( | AAX_CSampleRate | inSR,
|  | uint32_t | iMask
| ) |  |
| inline

Determines whether a particular AAX_CSampleRate is present in a given mask of AAX_ESampleRateMask.

See also
  kAAX_Property_SampleRate

References AAX_eSampleRateMask_176400, AAX_eSampleRateMask_192000, AAX_eSampleRateMask_44100, AAX_eSampleRateMask_48000, AAX_eSampleRateMask_88200, and AAX_eSampleRateMask_96000.

## ◆ getLowestSampleRateInMask()

AAX_CSampleRate getLowestSampleRateInMask | ( | uint32_t | iMask | ) |
| inline

Converts from a mask of AAX_ESampleRateMask to the lowest supported AAX_CSampleRate value in Hz.

References AAX_eSampleRateMask_176400, AAX_eSampleRateMask_192000, AAX_eSampleRateMask_44100, AAX_eSampleRateMask_48000, AAX_eSampleRateMask_88200, and AAX_eSampleRateMask_96000.

## ◆ getMaskForSampleRate()

uint32_t getMaskForSampleRate | ( | float | inSR | ) |
| inline

Returns the AAX_ESampleRateMask selector for a literal sample rate.

The given rate must be an exact match with one of the available selectors. If no exact match is found then AAX_eSampleRateMask_No is returned.

References AAX_eSampleRateMask_176400, AAX_eSampleRateMask_192000, AAX_eSampleRateMask_44100, AAX_eSampleRateMask_48000, AAX_eSampleRateMask_88200, AAX_eSampleRateMask_96000, and AAX_eSampleRateMask_No.

## Variable Documentation

## ◆ kAAX_ParameterIdentifierMaxSize

AAX_CONSTEXPR size_t kAAX_ParameterIdentifierMaxSize = 32

Maximum size for a AAX_CParamID including the null-terminating character