AAX SDK  2.4.1
Avid Audio Extensions Development Kit
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_PreStructAlignmentHelper.h"
#include "AAX_Push2ByteStructAlignment.h"
#include "AAX_PostStructAlignmentHelper.h"
#include "AAX_PopStructAlignment.h"

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. More...
 
#define AAX_CPP11_SUPPORT   1
 Preprocessor toggle for code which requires C++11 compiler support. More...
 
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
 override keyword macro More...
 
#define AAX_FINAL   final
 final keyword macro More...
 
#define AAX_DEFAULT_DTOR(X)   ~X() = default
 
#define AAX_DEFAULT_DTOR_OVERRIDE(X)   ~X() override = default
 
#define AAX_DEFAULT_CTOR(X)   X() = default
 default keyword macro for a class default constructor More...
 
#define AAX_DEFAULT_COPY_CTOR(X)   X(const X&) = default
 default keyword macro for a class copy constructor More...
 
#define AAX_DEFAULT_ASGN_OPER(X)   X& operator=(const X&) = default
 default keyword macro for a class assignment operator More...
 
#define AAX_DELETE(X)   X = delete
 delete keyword macro More...
 
#define AAX_DEFAULT_MOVE_CTOR(X)   X(X&&) = default
 default keyword macro for a class move constructor More...
 
#define AAX_DEFAULT_MOVE_OPER(X)   X& operator=(X&&) = default
 default keyword macro for a class move-assignment operator More...
 
#define AAX_CONSTEXPR   constexpr
 constexpr keyword macro More...
 
#define AAX_UNIQUE_PTR(X)   std::unique_ptr<X>
 
Pointer definitions
#define AAXPointer_32bit   1
 When AAX_PointerSize == AAXPointer_32bit this is a 32-bit build. More...
 
#define AAXPointer_64bit   2
 When AAX_PointerSize == AAXPointer_64bit this is a 64-bit build. More...
 
#define AAX_PointerSize   AAXPointer_32bit
 Use this definition to check the pointer size in the current build. More...
 

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. More...
 
#define AAX_ALIGN_FILE_ALG   "AAX_Push8ByteStructAlignment.h"
 Macro to set alignment for data structures that are used in the alg. More...
 
#define AAX_ALIGN_FILE_RESET   "AAX_PopStructAlignment.h"
 Macro to reset alignment back to default. More...
 
#define AAX_ALIGN_FILE_BEGIN   "AAX_PreStructAlignmentHelper.h"
 Wrapper macro used for warning suppression. More...
 
#define AAX_ALIGN_FILE_END   "AAX_PostStructAlignmentHelper.h"
 Wrapper macro used for warning suppression. More...
 
#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. More...
 
typedef int32_t AAX_CIndex
 
typedef AAX_CIndex AAX_CCount
 
typedef uint8_t AAX_CBoolean
 Cross-compiler boolean type used by AAX interfaces. More...
 
typedef uint32_t AAX_CSelector
 
typedef int64_t AAX_CTimestamp
 Time stamp value. Measured against the DAE clock (see AAX_IComponentDescriptor::AddClock() ) More...
 
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. More...
 
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. More...
 
typedef float AAX_CSampleRate
 Literal sample rate value used by the sample rate field. For AAX_eProperty_SampleRate, use a mask of AAX_ESampleRateMask. More...
 
typedef uint32_t AAX_CTypeID
 Matches type of OSType used in classic plugins. More...
 
typedef int32_t AAX_Result
 
typedef int32_t AAX_CPropertyValue
 32-bit property values More...
 
typedef int64_t AAX_CPropertyValue64
 64-bit property values More...
 
typedef AAX_CPropertyValue AAX_CPointerPropertyValue
 Pointer-sized property values. More...
 
typedef int32_t AAX_CTargetPlatform
 Matches type of target platform. More...
 
typedef AAX_CIndex AAX_CFieldIndex
 Not used by AAX plug-ins (except in AAX_FIELD_INDEX macro) More...
 
typedef AAX_CSelector AAX_CComponentID
 
typedef AAX_CSelector AAX_CMeterID
 
typedef const char * AAX_CParamID
 Parameter identifier. More...
 
typedef AAX_CParamID AAX_CPageTableParamID
 Parameter identifier used in a page table. More...
 
typedef const char * AAX_CEffectID
 URL-style Effect identifier. Must be unique among all registered effects in the collection. More...
 
typedef _acfUID acfUID
 
typedef acfUID AAX_Feature_UID
 
typedef const float *const * AAX_CAudioInPort
 AAX algorithm audio input port data type More...
 
typedef float *const * AAX_CAudioOutPort
 AAX algorithm audio output port data type More...
 
typedef float *const AAX_CMeterPort
 AAX algorithm meter port data type More...
 
typedef struct AAX_SPlugInChunkHeader AAX_SPlugInChunkHeader
 
typedef struct AAX_SPlugInChunk AAX_SPlugInChunk
 
typedef struct AAX_SPlugInChunkAAX_SPlugInChunkPtr
 
typedef struct AAX_SPlugInIdentifierTriad AAX_SPlugInIdentifierTriad
 
typedef struct AAX_SPlugInIdentifierTriadAAX_SPlugInIdentifierTriadPtr
 
AAX_CBoolean sampleRateInMask (AAX_CSampleRate inSR, uint32_t iMask)
 Determines whether a particular AAX_CSampleRate is present in a given mask of AAX_ESampleRateMask. More...
 
AAX_CSampleRate getLowestSampleRateInMask (uint32_t iMask)
 Converts from a mask of AAX_ESampleRateMask to the lowest supported AAX_CSampleRate value in Hz. More...
 
uint32_t getMaskForSampleRate (float inSR)
 Returns the AAX_ESampleRateMask selector for a literal sample rate. More...
 

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

override keyword macro

◆ AAX_FINAL

#define AAX_FINAL   final

final keyword macro

◆ AAX_DEFAULT_DTOR

#define AAX_DEFAULT_DTOR (   X)    ~X() = default

◆ AAX_DEFAULT_DTOR_OVERRIDE

#define AAX_DEFAULT_DTOR_OVERRIDE (   X)    ~X() override = default

◆ AAX_DEFAULT_CTOR

#define AAX_DEFAULT_CTOR (   X)    X() = default

default keyword macro for a class default constructor

◆ AAX_DEFAULT_COPY_CTOR

#define AAX_DEFAULT_COPY_CTOR (   X)    X(const X&) = default

default keyword macro for a class copy constructor

◆ AAX_DEFAULT_ASGN_OPER

#define AAX_DEFAULT_ASGN_OPER (   X)    X& operator=(const X&) = default

default keyword macro for a class assignment operator

◆ AAX_DELETE

#define AAX_DELETE (   X)    X = delete

delete keyword macro

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

◆ AAX_DEFAULT_MOVE_CTOR

#define AAX_DEFAULT_MOVE_CTOR (   X)    X(X&&) = default

default keyword macro for a class move constructor

◆ AAX_DEFAULT_MOVE_OPER

#define AAX_DEFAULT_MOVE_OPER (   X)    X& operator=(X&&) = default

default keyword macro for a class move-assignment operator

◆ AAX_CONSTEXPR

#define AAX_CONSTEXPR   constexpr

constexpr keyword macro

◆ AAX_UNIQUE_PTR

#define AAX_UNIQUE_PTR (   X)    std::unique_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,
 
)    X ## Y

◆ AAX_PREPROCESSOR_CONCAT

#define AAX_PREPROCESSOR_CONCAT (   X,
 
)    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]aContextTypeThe name of context type
[in]aMemberThe 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

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

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

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

◆ AAX_CComponentID

Todo:
Not used by AAX plug-ins

◆ 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)

◆ 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

◆ 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

◆ AAX_SPlugInChunk

◆ AAX_SPlugInChunkPtr

◆ 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

◆ 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.