1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-09 23:34:20 +00:00

AAX: Update SDK to 2.9.0

This commit is contained in:
reuk 2025-09-17 20:06:52 +01:00
parent a5dedd36d5
commit 94863f91d4
No known key found for this signature in database
68 changed files with 970 additions and 292 deletions

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
* Copyright 2013-2017, 2019, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2017, 2019, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -45,48 +45,11 @@
#define _AAX_H_
/// @endcond
#include "AAX_EnvironmentUtilities.h"
#include <stdint.h>
#include <stddef.h>
#include "AAX_Version.h"
#include "AAX_Enums.h"
#include "AAX_Errors.h"
#include "AAX_Properties.h"
/** @name C++ compiler macros
*/
//@{
/** @def TI_VERSION
@brief Preprocessor flag indicating compilation for TI
*/
/** @def AAX_CPP11_SUPPORT
@brief Preprocessor toggle for code which requires C++11 compiler support
*/
//@} C++ compiler macros
#ifndef TI_VERSION
#if defined _TMS320C6X
#define TI_VERSION 1
#elif defined DOXYGEN_PREPROCESSOR
#define TI_VERSION 0
#endif
#endif
#ifndef AAX_CPP11_SUPPORT
#if (defined __cplusplus) && (__cplusplus >= 201103L)
#define AAX_CPP11_SUPPORT 1
// VS2015 supports all features except expression SFINAE
#elif ((defined _MSVC_LANG) && (_MSVC_LANG >= 201402))
#define AAX_CPP11_SUPPORT 1
// Let Doxygen see the C++11 version of all code
#elif defined DOXYGEN_PREPROCESSOR
#define AAX_CPP11_SUPPORT 1
#endif
#endif
#include <memory>
/** @name C++ keyword macros
@ -343,7 +306,8 @@ typedef int64_t AAX_CTimeOfDay; //!< Hardware running clock value. MIDI pac
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 \ref AAX_IComponentDescriptor::AddSampleRate() "sample rate field". For \ref AAX_eProperty_SampleRate, use a mask of \ref AAX_ESampleRateMask. \sa sampleRateInMask
typedef uint32_t AAX_CTypeID; //!< Matches type of OSType used in classic plugins.
typedef uint32_t AAX_CTypeID; //!< Matches type of OSType used in classic plugins. All type IDs with prefix 'AX', i.e. <tt>0x4158____</tt>, are reserved for Avid.
AAX_CONSTEXPR AAX_CTypeID kAAX_TypeID_Undefined = 0; //!< Undefined type ID. This value must not be used for properties requiring a \ref AAX_CTypeID
typedef int32_t AAX_Result;
typedef int32_t AAX_CPropertyValue; //!< \brief 32-bit property values \details Use this property value type for all properties unless otherwise specified by the property documentation
typedef int64_t AAX_CPropertyValue64; //!< \brief 64-bit property values \details Do not use this value type unless specified explicitly in the property documentation
@ -362,6 +326,12 @@ typedef AAX_CSelector AAX_CMeterID; //!< \todo Not used by %AAX plug-ins
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) \sa \ref kAAX_ParameterIdentifierMaxSize
typedef AAX_CParamID AAX_CPageTableParamID; //!< \brief Parameter identifier used in a page table \details 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.) \sa \ref subsection_parameter_identifiers in the \ref AAX_Page_Table_Guide
typedef const char * AAX_CEffectID; //!< URL-style Effect identifier. Must be unique among all registered effects in the collection.
typedef uint32_t AAX_CInstanceID; //!< Identifier for a plug-in instance
AAX_CONSTEXPR AAX_CInstanceID kAAX_InstanceID_Undefined = 0xFFFFFFFF; //!< Undefined instance ID
typedef uint64_t AAX_CInstanceGroupID; //!< Identifier for a group of instances
AAX_CONSTEXPR AAX_CInstanceGroupID kAAX_InstanceGroupID_Undefined = 0; //!< Undefined instance group ID; instances with this ID have undefined grouping or the host does not support group identification
typedef uint64_t AAX_CTaskID; //!< Identifier for a task instance
AAX_CONSTEXPR AAX_CTaskID kAAX_TaskID_Undefined = 0; //!< Undefined task ID
// Forward declarations required for AAX_Feature_UID typedef (the "real" typedef is in AAX_UIDs.h)
struct _acfUID;
@ -392,21 +362,6 @@ static const AAX_CTimestamp kAAX_Never = (AAX_CTimestamp) ~0ULL;
#endif
/**
\todo Not used by %AAX plug-ins - remove?
*/
static
inline
int32_t
AAX_GetStemFormatChannelCount (
AAX_EStemFormat inStemFormat)
{
return AAX_STEM_FORMAT_CHANNEL_COUNT (inStemFormat);
}
/*! \brief %AAX algorithm audio input port data type
*
* \details
@ -444,60 +399,6 @@ typedef float * const * AAX_CAudioOutPort;
typedef float * const AAX_CMeterPort;
/*! \brief Determines whether a particular \ref AAX_CSampleRate is present
in a given mask of \ref AAX_ESampleRateMask.
\details
\sa kAAX_Property_SampleRate
*/
inline AAX_CBoolean sampleRateInMask(AAX_CSampleRate inSR, uint32_t iMask)
{
return static_cast<AAX_CBoolean>(
(44100.0 == inSR) ? ((iMask & AAX_eSampleRateMask_44100) != 0) :
(48000.0 == inSR) ? ((iMask & AAX_eSampleRateMask_48000) != 0) :
(88200.0 == inSR) ? ((iMask & AAX_eSampleRateMask_88200) != 0) :
(96000.0 == inSR) ? ((iMask & AAX_eSampleRateMask_96000) != 0) :
(176400.0 == inSR) ? ((iMask & AAX_eSampleRateMask_176400) != 0) :
(192000.0 == inSR) ? ((iMask & AAX_eSampleRateMask_192000) != 0) : false
);
}
/*! \brief Converts from a mask of \ref AAX_ESampleRateMask to the lowest
supported \ref AAX_CSampleRate value in Hz
*/
inline AAX_CSampleRate getLowestSampleRateInMask(uint32_t iMask)
{
return (
((iMask & AAX_eSampleRateMask_44100) != 0) ? 44100.0f : // AAX_eSamplRateMask_All returns 44100
((iMask & AAX_eSampleRateMask_48000) != 0) ? 48000.0f :
((iMask & AAX_eSampleRateMask_88200) != 0) ? 88200.0f :
((iMask & AAX_eSampleRateMask_96000) != 0) ? 96000.0f :
((iMask & AAX_eSampleRateMask_176400) != 0) ? 176400.0f :
((iMask & AAX_eSampleRateMask_192000) != 0) ? 192000.0f : 0.0f
);
}
/*! \brief Returns the \ref 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
\ref AAX_eSampleRateMask_No is returned.
*/
inline uint32_t getMaskForSampleRate(float inSR)
{
return (
(44100.0 == inSR) ? AAX_eSampleRateMask_44100 :
(48000.0 == inSR) ? AAX_eSampleRateMask_48000 :
(88200.0 == inSR) ? AAX_eSampleRateMask_88200 :
(96000.0 == inSR) ? AAX_eSampleRateMask_96000 :
(176400.0 == inSR) ? AAX_eSampleRateMask_176400 :
(192000.0 == inSR) ? AAX_eSampleRateMask_192000 : AAX_eSampleRateMask_No
);
}
#ifndef _TMS320C6X
#include AAX_ALIGN_FILE_BEGIN
@ -567,7 +468,19 @@ struct AAX_SPlugInIdentifierTriad {
AAX_CTypeID mManufacturerID; ///< The Plug-In's manufacturer ID
AAX_CTypeID mProductID; ///< The Plug-In's product (Effect) ID
AAX_CTypeID mPlugInID; ///< The ID of a specific type in the product (Effect)
bool IsUndefined() const
{
return mManufacturerID == kAAX_TypeID_Undefined
&& mProductID == kAAX_TypeID_Undefined
&& mPlugInID == kAAX_TypeID_Undefined;
}
bool IsSameProduct(const AAX_SPlugInIdentifierTriad& inRHS) const
{
return mManufacturerID == inRHS.mManufacturerID && mProductID == inRHS.mProductID;
}
};
typedef struct AAX_SPlugInIdentifierTriad AAX_SPlugInIdentifierTriad, *AAX_SPlugInIdentifierTriadPtr;
#ifndef _TMS320C6X
@ -620,6 +533,32 @@ static inline bool operator<=(const AAX_SPlugInIdentifierTriad & lhs, const AAX_
{
return false == operator>(lhs, rhs);
}
struct AAX_SPlugInIdentifierHash
{
size_t operator()(const AAX_SPlugInIdentifierTriad& inPIDef) const
{
size_t const h1 = std::hash<AAX_CTypeID>{}(inPIDef.mManufacturerID);
size_t const h2 = std::hash<AAX_CTypeID>{}(inPIDef.mProductID);
size_t const h3 = std::hash<AAX_CTypeID>{}(inPIDef.mPlugInID);
return std::hash<uint64_t>{}(h1 ^ (h2 << 1) ^ (h3 << 2)); // Combine the hashes
}
};
struct AAX_SPlugInIdentifierTriadProductHash
{
size_t operator()(const AAX_SPlugInIdentifierTriad& inPIDef) const
{
return std::hash<uint64_t>{}( (static_cast<uint64_t>(inPIDef.mManufacturerID) << 32) + inPIDef.mProductID );
}
};
struct AAX_SPlugInIdentifierTriadProductEqual
{
bool operator()(const AAX_SPlugInIdentifierTriad& lhs, const AAX_SPlugInIdentifierTriad& rhs) const { return lhs.IsSameProduct(rhs); }
};
#endif //TI_VERSION
@ -690,6 +629,19 @@ struct AAX_CMidiStream
#endif
#endif
// DEPRECATED: Client code should include these headers where needed. They will be removed from AAX.h in future.
#ifndef AAX_SDK__AAX_H_INCLUDES_ADDITIONAL_HEADERS
#define AAX_SDK__AAX_H_INCLUDES_ADDITIONAL_HEADERS 1
#endif
#if AAX_SDK__AAX_H_INCLUDES_ADDITIONAL_HEADERS
#include "AAX_Version.h"
#include "AAX_Enums.h"
#include "AAX_Errors.h"
#include "AAX_Properties.h"
#endif
/// @cond ignore
#endif // #ifndef _AAX_H_
/// @endcond

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2023-2024 Avid Technology, Inc.
* Copyright 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -36,7 +36,7 @@
#include "AAX_IDataBuffer.h"
#include "AAX.h"
#include <string>
#include <vector>
#include <limits>
#include <type_traits>

View file

@ -53,7 +53,7 @@
This display delegate converts a parameter value to one of two provided strings (e.g.
"True" and "False".)
\ingroup DisplayDelegates
\ingroup AAXLibraryFeatures_ParameterManager_DisplayDelegates
*/
template <typename T>

View file

@ -47,7 +47,7 @@
When this taper is constructed with a bool template type, its normalized values are
automatically typecast to the proper boolean value.
\ingroup TaperDelegates
\ingroup AAXLibraryFeatures_ParameterManager_TaperDelegates
*/
template <typename T>

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2013-2017, 2019, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2017, 2019, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -100,6 +100,10 @@ public: ////////////////////////////////////////////////////////////////////////
{
return AAX_SUCCESS;
}
AAX_Result GetMinimumViewSize (AAX_Point * /* oMinimumViewSize */ ) const AAX_OVERRIDE
{
return AAX_SUCCESS;
}
//@}end View accessors
/** @name GUI update methods

View file

@ -63,7 +63,7 @@
Rounding will be disabled if RealPrecision is set to a value less than 1. This is the default.
\ingroup TaperDelegates
\ingroup AAXLibraryFeatures_ParameterManager_TaperDelegates
*/
template <typename T, int32_t RealPrecision=0>

View file

@ -64,7 +64,7 @@
Rounding will be disabled if RealPrecision is set to a value less than 1
\ingroup TaperDelegates
\ingroup AAXLibraryFeatures_ParameterManager_TaperDelegates
*/
template <typename T, int32_t RealPrecision=1000>

View file

@ -45,7 +45,7 @@
This display delegate converts a parameter value to a numeric string using a specified
precision.
\ingroup DisplayDelegates
\ingroup AAXLibraryFeatures_ParameterManager_DisplayDelegates
*/
template <typename T, uint32_t Precision=2, uint32_t SpaceAfter=0>

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2013-2017, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2017, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -35,9 +35,10 @@
#ifndef AAX_CPACKETDISPATCHER_H
#define AAX_CPACKETDISPATCHER_H
#include "AAX.h"
#include "AAX_IController.h"
#include "AAX_CMutex.h"
#include "AAX_Errors.h"
#include "AAX.h"
#include <string>
#include <map>

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2013-2017, 2019, 2021, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2017, 2019, 2021, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -291,7 +291,13 @@ public:
*
*
*/
AAX_CParameter(AAX_CParamID identifier, const AAX_IString& name, T defaultValue, const AAX_ITaperDelegate<T>& taperDelegate, const AAX_IDisplayDelegate<T>& displayDelegate, bool automatable=false);
AAX_CParameter(
AAX_CParamID identifier,
const AAX_IString& name,
T defaultValue,
const AAX_ITaperDelegate<T>& taperDelegate,
const AAX_IDisplayDelegate<T>& displayDelegate,
bool automatable=false);
/*!
* \brief Constructs an \ref AAX_CParameter object using the specified taper and display delegates.
@ -299,7 +305,13 @@ public:
* This constructor uses an \ref AAX_IString for the parameter identifier, which can be a more
* flexible solution for some plug-ins.
*/
AAX_CParameter(const AAX_IString& identifier, const AAX_IString& name, T defaultValue, const AAX_ITaperDelegate<T>& taperDelegate, const AAX_IDisplayDelegate<T>& displayDelegate, bool automatable=false);
AAX_CParameter(
const AAX_IString& identifier,
const AAX_IString& name,
T defaultValue,
const AAX_ITaperDelegate<T>& taperDelegate,
const AAX_IDisplayDelegate<T>& displayDelegate,
bool automatable=false);
/*!
* \brief Constructs an \ref AAX_CParameter object with no delegates
@ -310,7 +322,11 @@ public:
* - \sa \ref AAX_CParameter::SetTaperDelegate()
* - \sa \ref AAX_CParameter::SetDisplayDelegate()
*/
AAX_CParameter(const AAX_IString& identifier, const AAX_IString& name, T defaultValue, bool automatable=false);
AAX_CParameter(
const AAX_IString& identifier,
const AAX_IString& name,
T defaultValue,
bool automatable=false);
/*!
* \brief Constructs an \ref AAX_CParameter object with no delegates or default value
@ -322,7 +338,10 @@ public:
* - \sa \ref AAX_CParameter::SetTaperDelegate()
* - \sa \ref AAX_CParameter::SetDisplayDelegate()
*/
AAX_CParameter(const AAX_IString& identifier, const AAX_IString& name, bool automatable=false);
AAX_CParameter(
const AAX_IString& identifier,
const AAX_IString& name,
bool automatable=false);
/** Move constructor and move assignment operator are allowed */
AAX_DEFAULT_MOVE_CTOR(AAX_CParameter);
@ -504,7 +523,13 @@ private:
////// AAX_CParameter Template Definition ///////
template <typename T>
AAX_CParameter<T>::AAX_CParameter(AAX_CParamID identifier, const AAX_IString& name, T defaultValue, const AAX_ITaperDelegate<T>& taperDelegate, const AAX_IDisplayDelegate<T>& displayDelegate, bool automatable)
AAX_CParameter<T>::AAX_CParameter(
AAX_CParamID identifier,
const AAX_IString& name,
T defaultValue,
const AAX_ITaperDelegate<T>& taperDelegate,
const AAX_IDisplayDelegate<T>& displayDelegate,
bool automatable)
: mNames(name)
, mAutomatable(automatable)
, mNumSteps(0) // Default set below for discrete/continuous
@ -522,7 +547,13 @@ AAX_CParameter<T>::AAX_CParameter(AAX_CParamID identifier, const AAX_IString& na
}
template <typename T>
AAX_CParameter<T>::AAX_CParameter(const AAX_IString& identifier, const AAX_IString& name, T defaultValue, const AAX_ITaperDelegate<T>& taperDelegate, const AAX_IDisplayDelegate<T>& displayDelegate, bool automatable)
AAX_CParameter<T>::AAX_CParameter(
const AAX_IString& identifier,
const AAX_IString& name,
T defaultValue,
const AAX_ITaperDelegate<T>& taperDelegate,
const AAX_IDisplayDelegate<T>& displayDelegate,
bool automatable)
: mNames(name)
, mAutomatable(automatable)
, mNumSteps(0) // Default set below for discrete/continuous
@ -540,7 +571,11 @@ AAX_CParameter<T>::AAX_CParameter(const AAX_IString& identifier, const AAX_IStri
}
template <typename T>
AAX_CParameter<T>::AAX_CParameter(const AAX_IString& identifier, const AAX_IString& name, T defaultValue, bool automatable)
AAX_CParameter<T>::AAX_CParameter(
const AAX_IString& identifier,
const AAX_IString& name,
T defaultValue,
bool automatable)
: mNames(name)
, mAutomatable(automatable)
, mNumSteps(0)
@ -554,11 +589,14 @@ AAX_CParameter<T>::AAX_CParameter(const AAX_IString& identifier, const AAX_IStri
, mDefaultValue(defaultValue)
{
this->InitializeNumberOfSteps();
this->SetToDefaultValue();
// set to default value occurs when the taper delegate is set
}
template <typename T>
AAX_CParameter<T>::AAX_CParameter(const AAX_IString& identifier, const AAX_IString& name, bool automatable)
AAX_CParameter<T>::AAX_CParameter(
const AAX_IString& identifier,
const AAX_IString& name,
bool automatable)
: mNames(name)
, mAutomatable(automatable)
, mNumSteps(0)
@ -572,7 +610,7 @@ AAX_CParameter<T>::AAX_CParameter(const AAX_IString& identifier, const AAX_IStri
, mDefaultValue()
{
this->InitializeNumberOfSteps();
this->SetToDefaultValue(); // WARNING: uninitialized default value
// set to default value occurs when the taper delegate is set
}
template <typename T>
@ -581,10 +619,15 @@ AAX_CParameter<T>::~AAX_CParameter()
//Make sure to remove any registration with the token system.
SetAutomationDelegate(0);
delete mTaperDelegate;
mTaperDelegate = 0;
delete mDisplayDelegate;
mDisplayDelegate = 0;
if (mTaperDelegate) {
delete mTaperDelegate;
mTaperDelegate = 0;
}
if (mDisplayDelegate) {
delete mDisplayDelegate;
mDisplayDelegate = 0;
}
}
template <typename T>
@ -637,6 +680,10 @@ void AAX_CParameter<T>::ClearShortenedNames()
template<typename T>
void AAX_CParameter<T>::SetValue( T newValue )
{
if (!mTaperDelegate) {
return;
}
double newNormalizedValue = mTaperDelegate->RealToNormalized(newValue);
// <DMT> Always go through the automation delegate even if the control isn't automatable to prevent fighting with other GUIs.
@ -669,6 +716,10 @@ void AAX_CParameter<T>::SetValue( T newValue )
template <typename T>
void AAX_CParameter<T>::UpdateNormalizedValue(double newNormalizedValue)
{
if (!mTaperDelegate) {
return;
}
T newValue = mTaperDelegate->NormalizedToReal(newNormalizedValue);
if (mNeedNotify || (mValue.Get() != newValue))
{
@ -811,22 +862,25 @@ bool AAX_CParameter<AAX_CString>::SetValueWithString(const AAX_IString& value);
template<typename T>
void AAX_CParameter<T>::SetNormalizedDefaultValue(double newNormalizedDefault)
{
T newDefaultValue = mTaperDelegate->NormalizedToReal(newNormalizedDefault);
SetDefaultValue(newDefaultValue);
if (mTaperDelegate) {
T newDefaultValue = mTaperDelegate->NormalizedToReal(newNormalizedDefault);
SetDefaultValue(newDefaultValue);
}
}
template<typename T>
double AAX_CParameter<T>::GetNormalizedDefaultValue() const
{
double normalizedDefault = mTaperDelegate->RealToNormalized(mDefaultValue);
return normalizedDefault;
return mTaperDelegate ? mTaperDelegate->RealToNormalized(mDefaultValue) : 0.f;
}
template<typename T>
void AAX_CParameter<T>::SetDefaultValue(T newDefaultValue)
{
newDefaultValue = mTaperDelegate->ConstrainRealValue(newDefaultValue);
mDefaultValue = newDefaultValue;
if (mTaperDelegate) {
newDefaultValue = mTaperDelegate->ConstrainRealValue(newDefaultValue);
mDefaultValue = newDefaultValue;
}
}
template<typename T>
@ -934,28 +988,31 @@ AAX_EParameterOrientation AAX_CParameter<T>::GetOrientation() const
template<typename T>
void AAX_CParameter<T>::SetNormalizedValue(double normalizedNewValue)
{
T newValue = mTaperDelegate->NormalizedToReal(normalizedNewValue);
this->SetValue(newValue);
if (mTaperDelegate)
{
T newValue = mTaperDelegate->NormalizedToReal(normalizedNewValue);
this->SetValue(newValue);
}
}
template<typename T>
double AAX_CParameter<T>::GetNormalizedValue() const
{
T val = GetValue();
return mTaperDelegate->RealToNormalized(val);
}
return mTaperDelegate ? mTaperDelegate->RealToNormalized(val) : 0.;
}
template<typename T>
bool AAX_CParameter<T>::GetValueString(AAX_CString* valueString) const
{
return mDisplayDelegate->ValueToString(this->GetValue(), valueString);
return mDisplayDelegate ? mDisplayDelegate->ValueToString(this->GetValue(), valueString) : false;
}
template<typename T>
bool AAX_CParameter<T>::GetValueString(int32_t /*iMaxNumChars*/, AAX_CString* valueString) const
{
return mDisplayDelegate->ValueToString(this->GetValue(), valueString);
return mDisplayDelegate ? mDisplayDelegate->ValueToString(this->GetValue(), valueString) : false;
}
template <typename T>
@ -993,6 +1050,10 @@ bool AAX_CParameter<double>::GetNormalizedValueFromDouble(double value, double *
template <typename T>
bool AAX_CParameter<T>::GetNormalizedValueFromString(const AAX_CString& valueString, double *normalizedValue) const
{
if (!mDisplayDelegate || !mTaperDelegate) {
return false;
}
//First, convert the string to a value using the wrapped parameter's display delegate.
T value;
if (!mDisplayDelegate->StringToValue(valueString, &value))
@ -1040,6 +1101,10 @@ bool AAX_CParameter<double>::GetDoubleFromNormalizedValue(double inNormalizedVa
template <typename T>
bool AAX_CParameter<T>::GetStringFromNormalizedValue(double normalizedValue, AAX_CString& valueString) const
{
if (!mTaperDelegate || !mDisplayDelegate) {
return false;
}
T value = mTaperDelegate->NormalizedToReal(normalizedValue);
if (!mDisplayDelegate->ValueToString(value, &valueString))
return false;
@ -1053,6 +1118,10 @@ bool AAX_CParameter<T>::GetStringFromNormalizedValue(double normalizedValue, AAX
template <typename T>
bool AAX_CParameter<T>::GetStringFromNormalizedValue(double normalizedValue, int32_t iMaxNumChars, AAX_CString& valueString) const
{
if (!mTaperDelegate || !mDisplayDelegate) {
return false;
}
T value = mTaperDelegate->NormalizedToReal(normalizedValue);
if (!mDisplayDelegate->ValueToString(value, iMaxNumChars, &valueString))
return false;
@ -1065,7 +1134,11 @@ bool AAX_CParameter<T>::GetStringFromNormalizedValue(double normalizedValue, int
template<typename T>
bool AAX_CParameter<T>::SetValueFromString(const AAX_CString& newValueString)
{
{
if (!mDisplayDelegate) {
return false;
}
T newValue;
if (!mDisplayDelegate->StringToValue(newValueString, &newValue))
return false;
@ -1076,16 +1149,28 @@ bool AAX_CParameter<T>::SetValueFromString(const AAX_CString& newValueString)
template<typename T>
void AAX_CParameter<T>::SetTaperDelegate(AAX_ITaperDelegateBase& inTaperDelegate,bool inPreserveValue)
{
double normalizeValue = this->GetNormalizedValue ();
// if the object was created without a taper delegate then its default value has not been set
bool const setToDefault = (nullptr == mTaperDelegate);
double const normalizedValue = mTaperDelegate ? this->GetNormalizedValue () : 0.f;
AAX_ITaperDelegate<T>* oldDelegate = mTaperDelegate;
mTaperDelegate = ((AAX_ITaperDelegate<T> &) inTaperDelegate).Clone();
delete oldDelegate;
if (oldDelegate) {
delete oldDelegate;
}
mNeedNotify = true;
if ( inPreserveValue )
if ( setToDefault ) {
this->SetToDefaultValue();
}
else if ( inPreserveValue ) {
this->SetValue ( mValue.Get() );
else this->UpdateNormalizedValue ( normalizeValue );
}
else {
this->UpdateNormalizedValue ( normalizedValue );
}
}
template<typename T>
@ -1093,7 +1178,9 @@ void AAX_CParameter<T>::SetDisplayDelegate(AAX_IDisplayDelegateBase& inDisplayDe
{
AAX_IDisplayDelegate<T>* oldDelegate = mDisplayDelegate;
mDisplayDelegate = ((AAX_IDisplayDelegate<T> &)inDisplayDelegate).Clone();
delete oldDelegate;
if (oldDelegate) {
delete oldDelegate;
}
if (mAutomationDelegate != 0)
mAutomationDelegate->PostCurrentValue(this->Identifier(), this->GetNormalizedValue()); //<DMT> Make sure GUIs are all notified of the change.

View file

@ -62,7 +62,7 @@
Rounding will be disabled if RealPrecision is set to a value less than 1
\ingroup TaperDelegates
\ingroup AAXLibraryFeatures_ParameterManager_TaperDelegates
*/
template <typename T, int32_t RealPrecision=100>
class AAX_CPieceWiseLinearTaperDelegate : public AAX_ITaperDelegate<T>

View file

@ -86,7 +86,7 @@
Rounding will be disabled if RealPrecision is set to a value less than 1
\ingroup TaperDelegates
\ingroup AAXLibraryFeatures_ParameterManager_TaperDelegates
*/
template <typename T, int32_t RealPrecision=1000>

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2023-2024 Avid Technology, Inc.
* Copyright 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -33,6 +33,7 @@
#define AAX_CSessionDocumentClient_H
#include "AAX_ISessionDocumentClient.h"
#include "AAX_Errors.h"
#include <memory>
#ifdef __clang__
@ -85,7 +86,7 @@ public: ////////////////////////////////////////////////////////////////////////
/**
* \copydoc AAX_IACFSessionDocumentClient::NotificationReceived()
*/
AAX_Result NotificationReceived(/* AAX_ENotificationEvent */ AAX_CTypeID /*inNotificationType*/, const void * /*inNotificationData*/, uint32_t /*inNotificationDataSize*/) AAX_OVERRIDE { return AAX_SUCCESS; }
AAX_Result NotificationReceived(/* AAX_ENotificationEvent */ AAX_CTypeID inNotificationType, const void * inNotificationData, uint32_t inNotificationDataSize) AAX_OVERRIDE { return AAX_SUCCESS; }
//@}end %AAX host and plug-in event notification
protected: ///////////////////////////////////////////////////////////////////////////// AAX_CSessionDocumentClient

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2014-2017, 2019, 2023-2024 Avid Technology, Inc.
* Copyright 2014-2017, 2019, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -38,10 +38,8 @@
#include "AAX_IDisplayDelegate.h"
#include "AAX_CString.h"
#include <vector>
#if defined(WINDOWS_VERSION) || defined(LINUX_VERSION)
#include <algorithm>
#endif
#include <vector>
@ -51,7 +49,7 @@
This display delegate is similar to AAX_CNumberDisplayDelegate, but does not include
precision or spacing templatizations.
\ingroup DisplayDelegates
\ingroup AAXLibraryFeatures_ParameterManager_DisplayDelegates
*/
template <typename T>

View file

@ -49,7 +49,7 @@
version of AAX_CLinearTaperDelegate without that class' additional RealPrecision
templatization.
\ingroup TaperDelegates
\ingroup AAXLibraryFeatures_ParameterManager_TaperDelegates
*/
template <typename T>

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2023-2024 Avid Technology, Inc.
* Copyright 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -34,6 +34,7 @@
#define AAX_CStringDataBuffer_H
#include "AAX_IDataBuffer.h"
#include "AAX_Errors.h"
#include "AAX.h"
#include <string>

View file

@ -49,7 +49,7 @@
would then be used as a lookup into this delegate, which would return a string for each
valid int value.
\ingroup DisplayDelegates
\ingroup AAXLibraryFeatures_ParameterManager_DisplayDelegates
*/
template <typename T>

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2023-2024 Avid Technology, Inc.
* Copyright 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -74,11 +74,12 @@ public: ////////////////////////////////////////////////////////////////////////
*
* \details
* Convenience implementation that converts the \ref IACFUnknown
* into an \ref AAX_ITask . Implementations should override the
* version that provides an \ref AAX_ITask object.
* into an \ref AAX_ITask . Implementations should override
* \ref ReceiveTask() instead.
*/
AAX_Result AddTask(IACFUnknown * iTask) AAX_OVERRIDE;
AAX_Result CancelAllTasks() AAX_OVERRIDE;
AAX_Result CancelTask(AAX_CTaskID iTaskID) AAX_OVERRIDE;
//@} Task management
protected:

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2014-2017, 2023-2024 Avid Technology, Inc.
* Copyright 2014-2017, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -37,6 +37,7 @@
#define AAX_CALLBACKS_H_
/// @endcond
#include "AAX_Enums.h"
#include "AAX.h"
// Callback IDs

View file

@ -0,0 +1,60 @@
/*================================================================================================*/
/*
*
* Copyright 2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
*
* The AAX SDK is subject to commercial or open-source licensing.
*
* By using the AAX SDK, you agree to the terms of both the Avid AAX SDK License
* Agreement and Avid Privacy Policy.
*
* AAX SDK License: https://developer.avid.com/aax
* Privacy Policy: https://www.avid.com/legal/privacy-policy-statement
*
* Or: You may also use this code under the terms of the GPL v3 (see
* www.gnu.org/licenses).
*
* THE AAX SDK IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
* EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
* DISCLAIMED.
*
*/
/**
* \file AAX_EnumSizeCheck.h
*
* \brief Utility for verifying the underlying type size of %AAX enums
*
*/
/*================================================================================================*/
#ifndef AAX_ENUMSIZECHECK_H
#define AAX_ENUMSIZECHECK_H
#include "AAX_EnvironmentUtilities.h"
#ifndef _TMS320C6X
#include <cstdint>
#endif
/** @def AAX_ENUM_SIZE_CHECK
@brief Macro to ensure enum type consistency across binaries
Verifies that the underlying type for checked %AAX enums is always 4 bytes.
*/
#ifndef _TMS320C6X
#if defined(AAX_CPP11_SUPPORT)
#define AAX_ENUM_SIZE_CHECK(x) static_assert(sizeof(x) == sizeof(uint32_t), "Enum size check failed for " #x)
#else
// force a compiler error if the size is not 4 bytes
#define AAX_ENUM_SIZE_CHECK(x) extern int __enumSizeCheck[ 2*(sizeof(uint32_t)==sizeof(x)) - 1]
#endif
#else
#define AAX_ENUM_SIZE_CHECK(x)
#endif
#endif // AAX_ENUMSIZECHECK_H

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2013-2017, 2019-2024 Avid Technology, Inc.
* Copyright 2013-2017, 2019-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -37,6 +37,8 @@
#define AAX_ENUMS_H
/// @endcond
#include "AAX_EnumSizeCheck.h"
#include "AAX.h"
#include <stdint.h>
#define AAX_INT32_MIN (-2147483647 - 1) /** minimum signed 32 bit value */
@ -48,13 +50,7 @@
#define AAX_UINT16_MIN 0U /** minimum unsigned 16 bit value */
#define AAX_UINT16_MAX 65535U /** maximum unsigned 16 bit value */
/** \brief Macro to ensure enum type consistency across binaries
*/
#ifndef _TMS320C6X
#define AAX_ENUM_SIZE_CHECK(x) extern int __enumSizeCheck[ 2*(sizeof(uint32_t)==sizeof(x)) - 1]
#else
#define AAX_ENUM_SIZE_CHECK(x)
#endif
//******************************************************************
@ -209,6 +205,16 @@ enum AAX_EMaxAudioSuiteTracks
AAX_eMaxAudioSuiteTracks = 48
}; AAX_ENUM_SIZE_CHECK( AAX_EMaxAudioSuiteTracks );
/** @def AAX_STEM_FORMAT
@brief Defines an \ref AAX_EStemFormat value for a stem format using the format's unique index and its channel count
*/
/** @def AAX_STEM_FORMAT_CHANNEL_COUNT
@brief Get the channel count from an \ref AAX_EStemFormat value
*/
/** @def AAX_STEM_FORMAT_INDEX
@brief Get the unique index from an \ref AAX_EStemFormat value
*/
// The channel count ternary here will issue a warning due to a
// signed/unsigned mismatch if anyone tries to create an
// AAX_STEM_FORMAT definition with a negative channel count.
@ -243,6 +249,7 @@ enum AAX_EStemFormat
{
// Point source stem formats
AAX_eStemFormat_Mono = AAX_STEM_FORMAT ( 0, 1 ), ///< M
AAX_eStemFormat_DummyConnection = AAX_eStemFormat_Mono,
AAX_eStemFormat_Stereo = AAX_STEM_FORMAT ( 1, 2 ), ///< L R
AAX_eStemFormat_LCR = AAX_STEM_FORMAT ( 2, 3 ), ///< L C R
AAX_eStemFormat_LCRS = AAX_STEM_FORMAT ( 3, 4 ), ///< L C R S
@ -290,6 +297,18 @@ enum AAX_EStemFormat
AAX_eStemFormat_INT32_MAX = AAX_INT32_MAX
}; AAX_ENUM_SIZE_CHECK( AAX_EStemFormat );
/** \brief Function wrapper for the \ref AAX_STEM_FORMAT_CHANNEL_COUNT macro
*/
static
inline
int32_t
AAX_GetStemFormatChannelCount (
AAX_EStemFormat inStemFormat)
{
return AAX_STEM_FORMAT_CHANNEL_COUNT (inStemFormat);
}
/** @brief Effect category definitions
@details
@ -303,7 +322,9 @@ enum AAX_EStemFormat
\note The host may handle plug-ins with different categories in different manners, e.g.
replacing "analyze" with "reverse" for offline processing of delays and reverbs.
\sa \ref AAX_EPlugInRole
*/
enum AAX_EPlugInCategory
{
@ -321,7 +342,8 @@ enum AAX_EPlugInCategory
AAX_ePlugInCategory_HWGenerators = 0x00000400, ///< Fixed hardware audio sources such as SampleCell
AAX_ePlugInCategory_SWGenerators = 0x00000800, ///< Virtual instruments, metronomes, and other software audio sources
AAX_ePlugInCategory_WrappedPlugin = 0x00001000, ///< All plug-ins wrapped by a thrid party wrapper (i.e. VST to RTAS wrapper), except for VI plug-ins which should be mapped to AAX_PlugInCategory_SWGenerators
AAX_EPlugInCategory_Effect = 0x00002000, ///< Special effects
AAX_ePlugInCategory_Effect = 0x00002000, ///< Special effects
AAX_EPlugInCategory_Effect = AAX_ePlugInCategory_Effect, ///< \deprecated Use AAX_ePlugInCategory_Effect instead
// HACK: 32-bit hosts do not have support for AAX_ePlugInCategory_Example
#if ( defined(_WIN64) || defined(__LP64__) )
@ -330,11 +352,35 @@ enum AAX_EPlugInCategory
AAX_ePlugInCategory_Example = AAX_EPlugInCategory_Effect,
#endif
AAX_EPlugInCategory_MIDIEffect = 0x00010000, ///< MIDI effects
AAX_ePlugInCategory_MIDIEffect = 0x00010000, ///< MIDI effects
AAX_EPlugInCategory_MIDIEffect = AAX_ePlugInCategory_MIDIEffect, ///< \deprecated Use AAX_ePlugInCategory_MIDIEffect instead
AAX_ePlugInCategory_INT32_MAX = AAX_INT32_MAX
}; AAX_ENUM_SIZE_CHECK( AAX_EPlugInCategory );
#define AAX_DEFINE_ROLE_BITS(role_nibble) (role_nibble << 28)
#define AAX_GET_ROLE_BITS(category_bits) (category_bits & 0xF0000000)
#define AAX_IS_ROLE(category_bits, role) (role == (category_bits & 0xF0000000))
/** @brief Effect role definitions
@details
Used with \ref AAX_IEffectDescriptor::SetRole() to define the role of an Effect.
Roles are special categories that are defined using the upper four bits of an
\ref AAX_EPlugInCategory value. Unlike categories, roles are mutually exclusive
and the full four bits are checked for equality, rather than as a bitfield.
The category (lower) bits are only used if the role bits are equal to
\ref AAX_ePlugInRole_InsertOrAudioSuite.
\sa \ref AAX_EPlugInCategory
*/
enum AAX_EPlugInRole
{
AAX_ePlugInRole_InsertOrAudioSuite = AAX_DEFINE_ROLE_BITS(0x0), ///< Insert or AudioSuite (default role)
}; AAX_ENUM_SIZE_CHECK( AAX_EPlugInRole );
/** @brief Effect string identifiers
@details
@ -480,6 +526,9 @@ enum AAX_EResourceType
\note All 'AX__' four-char IDs are reserved for the %AAX specification
*/
enum AAX_ENotificationEvent
#if defined(AAX_CPP11_SUPPORT)
: AAX_CTypeID
#endif
{
/** \brief (not currently sent) The zero-indexed insert position
of this plug-in instance within its track
@ -771,6 +820,14 @@ enum AAX_ENotificationEvent
*/
AAX_eNotificationEvent_HostLocale = 'AXLc',
/** \brief Notify the plug-in that the timeline selection has changed
\compatibility Supported in Pro Tools 2025.6 and higher
<em>Data: none</em> <br />
<em>Sent by: Host</em>
*/
AAX_eNotificationEvent_TimelineSelectionChanged = 'AXtC',
}; AAX_ENUM_SIZE_CHECK( AAX_ENotificationEvent );
@ -886,6 +943,60 @@ enum AAX_ESampleRateMask
AAX_eSampleRateMask_All = AAX_INT32_MAX
}; AAX_ENUM_SIZE_CHECK( AAX_ESampleRateMask );
/*! \brief Determines whether a particular \ref AAX_CSampleRate is present
in a given mask of \ref AAX_ESampleRateMask.
\details
\sa kAAX_Property_SampleRate
*/
inline uint8_t sampleRateInMask(float inSR, uint32_t iMask)
{
return static_cast<uint8_t>( // AAX_CBoolean
(44100.0f == inSR) ? ((iMask & AAX_eSampleRateMask_44100) != 0) :
(48000.0f == inSR) ? ((iMask & AAX_eSampleRateMask_48000) != 0) :
(88200.0f == inSR) ? ((iMask & AAX_eSampleRateMask_88200) != 0) :
(96000.0f == inSR) ? ((iMask & AAX_eSampleRateMask_96000) != 0) :
(176400.0f == inSR) ? ((iMask & AAX_eSampleRateMask_176400) != 0) :
(192000.0f == inSR) ? ((iMask & AAX_eSampleRateMask_192000) != 0) : false
);
}
/*! \brief Converts from a mask of \ref AAX_ESampleRateMask to the lowest
supported \ref AAX_CSampleRate value in Hz
*/
inline float getLowestSampleRateInMask(uint32_t iMask)
{
return (
((iMask & AAX_eSampleRateMask_44100) != 0) ? 44100.0f : // AAX_eSamplRateMask_All returns 44100
((iMask & AAX_eSampleRateMask_48000) != 0) ? 48000.0f :
((iMask & AAX_eSampleRateMask_88200) != 0) ? 88200.0f :
((iMask & AAX_eSampleRateMask_96000) != 0) ? 96000.0f :
((iMask & AAX_eSampleRateMask_176400) != 0) ? 176400.0f :
((iMask & AAX_eSampleRateMask_192000) != 0) ? 192000.0f : 0.0f
);
}
/*! \brief Returns the \ref 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
\ref AAX_eSampleRateMask_No is returned.
*/
inline uint32_t getMaskForSampleRate(float inSR)
{
return (
(44100.0 == inSR) ? AAX_eSampleRateMask_44100 :
(48000.0 == inSR) ? AAX_eSampleRateMask_48000 :
(88200.0 == inSR) ? AAX_eSampleRateMask_88200 :
(96000.0 == inSR) ? AAX_eSampleRateMask_96000 :
(176400.0 == inSR) ? AAX_eSampleRateMask_176400 :
(192000.0 == inSR) ? AAX_eSampleRateMask_192000 : AAX_eSampleRateMask_No
);
}
/** @brief FIC stuff that I can't include without DAE library dependence
@details
@ -1361,6 +1472,10 @@ enum AAX_ESupportLevel
Typically an %AAX plug-in should not need to query this information or change its
behavior based on the level of the host.
\warning %AAX plugin description details are cached and are not re-scanned if the host
level changes. Be careful to avoid changing any cacheable information based on this
data.
@sa \ref AAXATTR_Client_Level
*/

View file

@ -3,7 +3,7 @@
AAX_EnvironmentUtilities.h
Copyright 2018-2019, 2023-2024 Avid Technology, Inc.
Copyright 2018-2019, 2023-2025 Avid Technology, Inc.
All rights reserved.
This file is part of the Avid AAX SDK.
@ -35,7 +35,39 @@
#ifndef _AAX_ENVIRONMENTUTILITIES_H_
#define _AAX_ENVIRONMENTUTILITIES_H_
#include <cstdlib>
/** @name C++ compiler macros
*/
//@{
/** @def TI_VERSION
@brief Preprocessor flag indicating compilation for TI
*/
/** @def AAX_CPP11_SUPPORT
@brief Preprocessor toggle for code which requires C++11 compiler support
*/
//@} C++ compiler macros
#ifndef TI_VERSION
#if defined _TMS320C6X
#define TI_VERSION 1
#elif defined DOXYGEN_PREPROCESSOR
#define TI_VERSION 0
#endif
#endif
#ifndef AAX_CPP11_SUPPORT
#if (defined __cplusplus) && (__cplusplus >= 201103L)
#define AAX_CPP11_SUPPORT 1
// VS2015 supports all features except expression SFINAE
#elif ((defined _MSVC_LANG) && (_MSVC_LANG >= 201402))
#define AAX_CPP11_SUPPORT 1
// Let Doxygen see the C++11 version of all code
#elif defined DOXYGEN_PREPROCESSOR
#define AAX_CPP11_SUPPORT 1
#endif
#endif
#if (!defined (WINDOWS_VERSION))
# if (defined (_WIN32))
@ -64,24 +96,9 @@
# error "AAX SDK: Cannot declare more than one OS environment"
#endif
#if (!defined (WINDOWS_VERSION) && !defined (MAC_VERSION) && !defined (LINUX_VERSION))
#if (!defined (AAX_ALLOW_UNKNOWN_ENVIRONMENT) && !defined (WINDOWS_VERSION) && !defined (MAC_VERSION) && !defined (LINUX_VERSION))
# warning "AAX SDK: Unknown OS environment"
#endif
namespace AAX
{
static bool IsVenueSystem(void)
{
#if WINDOWS_VERSION
static const char * const environmentVariableName = "JEX_HOST_TYPE";
static const char * const venueEnvironment = "venue";
static const char * const environment = std::getenv ( environmentVariableName );
static const bool isVenue = ( NULL != environment) && (0 == strcmp ( environment, venueEnvironment ) );
return isVenue;
#else
return false;
#endif
}
}
#endif // _AAX_ENVIRONMENTUTILITIES_H_

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2010-2017, 2019-2021, 2023-2024 Avid Technology, Inc.
* Copyright 2010-2017, 2019-2021, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -37,7 +37,7 @@
#define AAX_ERRORS_H
/// @endcond
#include "AAX_Enums.h"
#include "AAX_EnumSizeCheck.h"
/** AAX result codes
@ -86,7 +86,7 @@ enum AAX_EError
AAX_ERROR_DUPLICATE_TYPE_ID = -20036,
AAX_ERROR_EMPTY_EFFECT_NAME = -20037,
AAX_ERROR_UNKNOWN_PLUGIN = -20038,
AAX_ERROR_PROPERTY_UNDEFINED = -20039,
AAX_ERROR_PROPERTY_UNDEFINED = -20039, ///< The plugin does not explicitly define a value for a queried property
AAX_ERROR_INVALID_PATH = -20040,
AAX_ERROR_UNKNOWN_ID = -20041,
AAX_ERROR_UNKNOWN_EXCEPTION = -20042, ///< An AAX plug-in should return this to the host if an unknown exception is caught. Exceptions should never be passed to the host.
@ -99,6 +99,7 @@ enum AAX_EError
AAX_ERROR_NO_ABBREVIATED_PARAMETER_NAME = -20049, ///< No parameter name abbreviation with the requested properties has been defined
AAX_ERROR_ARGUMENT_OUT_OF_RANGE = -20050, ///< One or more input parameters are out of the expected range, e.g. an index argument that is negative or exceeds the number of elements
AAX_ERROR_PRINT_FAILURE = -20051, ///< A failure occurred in a "print" library call such as @c printf
AAX_ERROR_NOTIFICATION_REGISTRATION_FAILED = -20052,
AAX_ERROR_PLUGIN_BEGIN = -20600, ///< Custom plug-in error codes may be placed in the range ( \ref AAX_ERROR_PLUGIN_END, \ref AAX_ERROR_PLUGIN_BEGIN ]

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2013-2015, 2019, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2015, 2019, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -39,6 +39,7 @@
#ifndef _TMS320C6X
#include "AAX_Errors.h"
#include "AAX.h"
#include AAX_ALIGN_FILE_BEGIN

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2013-2017, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2017, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -36,6 +36,8 @@
#ifndef _AAX_IACFCONTROLLER_H_
#define _AAX_IACFCONTROLLER_H_
#include "AAX_Properties.h"
#include "AAX_Enums.h"
#include "AAX.h"
#ifdef __clang__
@ -224,6 +226,31 @@ public:
GetIsAudioSuite(AAX_CBoolean* outIsAudioSuite) const = 0;
};
/** @copydoc AAX_IACFController
*/
class AAX_IACFController_V4 : public AAX_IACFController_V3
{
public:
/** \copydoc AAX_IController::GetInstanceGroupID() */
virtual
AAX_Result
GetInstanceGroupID(AAX_CInstanceGroupID* outInstanceGroupID) const = 0;
};
class AAX_IACFController_V5 : public AAX_IACFController_V4
{
public:
/** \copydoc AAX_IController::RegisterForNotification() */
virtual
AAX_Result
RegisterForNotification(/* AAX_ENotificationEvent */ AAX_CTypeID inNotificationType, IACFUnknown const * inSubscriberObject) = 0;
/** \copydoc AAX_IController::GetInstanceID() */
virtual
AAX_Result
GetInstanceID(AAX_CInstanceID* outInstanceID) const = 0;
};
#ifdef __clang__
#pragma clang diagnostic pop
#endif

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2013-2017, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2017, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -35,9 +35,10 @@
#ifndef AAX_IACFEFFECTGUI_H
#define AAX_IACFEFFECTGUI_H
#include "AAX.h"
#include "AAX_GUITypes.h"
#include "AAX_IString.h"
#include "AAX_Enums.h"
#include "AAX.h"
#ifdef __clang__
#pragma clang diagnostic push
@ -161,6 +162,9 @@ public:
/*!
* \brief Retrieves the size of the plug-in window
*
* If this method is inapplicable, return \ref AAX_SUCCESS and do not
* modify \p oViewSize.
*
* \sa \ref AAX_IViewContainer::SetViewSize()
*
* \param[out] oViewSize
@ -247,6 +251,31 @@ public:
};
class AAX_IACFEffectGUI_V2 : public AAX_IACFEffectGUI
{
public:
/** @name View accessors
*/
//@{
/*!
* \brief Retrieves the requested minimum size of the plug-in window
*
* The host is not required to respect this minimum size, and may
* provide a smaller window.
*
* If this method is inapplicable, return \ref AAX_SUCCESS and do not
* modify \p oMinimumViewSize.
*
* \sa \ref AAX_IViewContainer::GetViewSize()
*
* \param[out] oMinimumViewSize
* The size of the plug-in window as a point (width, height)
*/
virtual AAX_Result GetMinimumViewSize ( AAX_Point * oMinimumViewSize ) const = 0;
//@}end View accessors
};
#ifdef __clang__
#pragma clang diagnostic pop
#endif

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2013-2017, 2019, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2017, 2019, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -35,6 +35,7 @@
#ifndef AAX_IACFEFFECTPARAMETERS_H
#define AAX_IACFEFFECTPARAMETERS_H
#include "AAX_Enums.h"
#include "AAX.h"
class AAX_IString;

View file

@ -1,6 +1,6 @@
/*================================================================================================*/
/*
* Copyright 2016-2017, 2023-2024 Avid Technology, Inc.
* Copyright 2016-2017, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -24,6 +24,7 @@
#ifndef AAXLibrary_AAX_IACFFeatureInfo_h
#define AAXLibrary_AAX_IACFFeatureInfo_h
#include "AAX_Enums.h"
#include "AAX.h"
class AAX_IACFPropertyMap;

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2013-2017, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2017, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -35,6 +35,7 @@
#ifndef AAX_IACFPROPERTYMAP_H
#define AAX_IACFPROPERTYMAP_H
#include "AAX_Properties.h"
#include "AAX.h"
#ifdef __clang__

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2023-2024 Avid Technology, Inc.
* Copyright 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -91,6 +91,13 @@ public:
virtual AAX_Result SetDone(AAX_TaskCompletionStatus iStatus) = 0;
};
class AAX_IACFTask_V2 : public AAX_IACFTask
{
public:
virtual AAX_Result GetID(AAX_CTaskID * outID) const = 0; ///< \copydoc AAX_ITask::GetID()
virtual AAX_Result SetProgressLabel(const char * iLabel) = 0; ///< \copydoc AAX_ITask::SetProgressLabel()
};
#ifdef __clang__
#pragma clang diagnostic pop
#endif

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2023-2024 Avid Technology, Inc.
* Copyright 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -100,6 +100,27 @@ public:
//@} Task management
};
class AAX_IACFTaskAgent_V2 : public AAX_IACFTaskAgent
{
public:
/** @name Task management
*/
//@{
/**
* Request that the agent cancel a task
*
* If the task is already complete, or if it was not previously
* added to the task agent using \ref AddTask(), then this
* method should do nothing and should return \ref AAX_SUCCESS.
*
* \param[in] iTaskID
* The ID of the task to cancel. \sa \ref AAX_IACFTask_V2::GetID()
*/
virtual AAX_Result CancelTask(AAX_CTaskID iTaskID) = 0;
//@} Task management
};
#ifdef __clang__
#pragma clang diagnostic pop

View file

@ -142,6 +142,10 @@ public: // AAX_IACFCollection
\warning Do not use this method to infer host feature support. Instead, use
\ref AAX_IDescriptionHost to query the host for specific features.
\warning %AAX plugin description details are cached and might not be re-scanned
even if the host version changes. Be careful to avoid changing any cacheable
information based on this data. See \ref describe_host_feature_checks for more information.
@param[in] outVersion
Host version
@ -156,6 +160,10 @@ public: // AAX_ICollection
method prototype for the \ref GetEffectDescriptions() method called from the %AAX Library.
@sa \ref AAX_UIDs.h for available feature UIDs, e.g. \ref AAXATTR_ClientFeature_AuxOutputStem
\warning %AAX plugin description details are cached and might not be re-scanned even if
attributes of the host description change. Be careful to avoid changing any cacheable
information based on this data. See \ref describe_host_feature_checks for more information.
*/
virtual AAX_IDescriptionHost* DescriptionHost() = 0;
virtual const AAX_IDescriptionHost* DescriptionHost() const = 0; ///< \copydoc AAX_ICollection::DescriptionHost()
@ -167,6 +175,10 @@ public: // AAX_ICollection
@sa \ref AAX_UIDs.h for available host attribute UIDs, e.g. \ref AAXATTR_Client_Level
\warning %AAX plugin description details are cached and might not be re-scanned even if
attributes of the host definition change, for example the host level. Be careful to avoid
changing any cacheable information based on this data. See \ref describe_host_feature_checks for more information.
The implementation of \ref AAX_ICollection owns the referenced object. No AddRef occurs.
\ref IACFDefinition::DefineAttribute() is not supported on this object

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2013-2017, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2017, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -37,11 +37,13 @@
#include "AAX_Properties.h"
#include "AAX_IString.h"
#include "AAX_Enums.h"
#include "AAX.h"
#include <memory>
// Forward declarations
class AAX_IPageTable;
class IACFUnknown;
/**
@ -448,6 +450,72 @@ public:
virtual
AAX_Result GetIsAudioSuite(AAX_CBoolean* outIsAudioSuite) const = 0;
/*!
* \brief CALL: Provides an identifier for the group to which this instance belongs.
*
* Instances that share the same group ID are considered part of the same instance group.
*
* Check for \ref kAAX_InstanceGroupID_Undefined to determine if the instance has undefined
* grouping. Instances sharing this value should not be considered to be part of the same
* group. This value may be provided by hosts that do not support instance group
* identification.
*
* Group ID values are not persistent between host sessions. An instance's Group ID will
* not change during the lifetime of the instance. The host may re-use Group ID values
* after all of the instances in a group have been destroyed.
*
* In Pro Tools:
* - Instances within a multi-mono set will have the same group ID.
* - If an instance is made inactive and then made active again, the instance's group
* ID will remain the same.
* - If the instance is moved to a different insert slot or to a different track, a
* new group ID will be assigned.
*
* \param[out] outInstanceGroupID
* The identifier for the group to which this instance belongs.
*/
virtual
AAX_Result GetInstanceGroupID(AAX_CInstanceGroupID* outInstanceGroupID) const = 0;
/*!
* \brief CALL: Provides an identifier for this plugin instance
*/
virtual
AAX_Result GetInstanceID(AAX_CInstanceID* outInstanceID) const = 0;
/*!
* \brief CALL: Subscribe a plugin object to notifications
*
* The plugin should subscribe its objects to any notification types that they require. The
* host may automatically subscribe the plugin to some notification types.
*
* The subscriber object must be one of the plugin objects that can receive notifications via a
* <tt>NotificationReceived()</tt> method:
* - \ref AAX_IEffectParameters
* - \ref AAX_IEffectGUI
* - \ref AAX_IEffectDirectData
* - \ref AAX_ISessionDocumentClient
*
* The plugin should register an object for notifiations as early as possible in the object's
* lifetime, for example in the object's Initialize() or EffectInit() routine just after the
* controller has been set on the object.
*
* \param[in] inNotificationType
* Type of notification to subscribe to. One of \ref AAX_ENotificationEvent.
* \param[in] inSubscriberObject
* Pointer to the object that should receive notifications.
*
* - \return \ref AAX_ERROR_UNIMPLEMENTED if the host does not support this method
* - \return \ref AAX_ERROR_NULL_ARGUMENT if \p inSubscriberObject is null
* - \return \ref AAX_ERROR_INVALID_ARGUMENT if \p inSubscriberObject is not a valid subscriber
* object address
* - \return AAX_ERROR_NOTIFICATION_REGISTRATION_FAILED if the registration failed for another
* reason, such as an invalid \p inNotificationType
* - \return \ref AAX_SUCCESS if the registration was successful
*/
virtual
AAX_Result RegisterForNotification(/* AAX_ENotificationEvent */ AAX_CTypeID inNotificationType, IACFUnknown const * inSubscriberObject) = 0;
/**
* \brief Copy the current page table data for a particular plug-in type
*

View file

@ -30,6 +30,10 @@ class AAX_IFeatureInfo;
/** Interface to host services provided during plug-in description
\warning %AAX plugin description details are cached and might not be re-scanned even if
attributes of the host description change. Be careful to avoid changing any cacheable
information based on this data. See \ref describe_host_feature_checks for more information.
*/
class AAX_IDescriptionHost
{

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2013-2017, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2017, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -93,6 +93,13 @@ public:
*/
virtual AAX_Result AddCategory ( uint32_t inCategory ) = 0;
/** @brief Set the plug-in role. See \ref AAX_EPlugInRole.
@param[in] inRole
The plug-in role
*/
virtual AAX_Result SetRole ( uint32_t inRole ) = 0;
/** @brief Add a category to your plug-in. See \ref AAX_EPlugInCategory.
@param[in] inCategory

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2014-2017, 2019-2021, 2023-2024 Avid Technology, Inc.
* Copyright 2014-2017, 2019-2021, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -60,7 +60,7 @@
\ingroup CommonInterface_GUI
*/
class AAX_IEffectGUI : public AAX_IACFEffectGUI,
class AAX_IEffectGUI : public AAX_IACFEffectGUI_V2,
public CACFUnknown
{
public:

View file

@ -1,6 +1,6 @@
/*================================================================================================*/
/*
* Copyright 2016-2017, 2023-2024 Avid Technology, Inc.
* Copyright 2016-2017, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -24,6 +24,7 @@
#ifndef AAXLibrary_AAX_IFeatureInfo_h
#define AAXLibrary_AAX_IFeatureInfo_h
#include "AAX_Enums.h"
#include "AAX.h"

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2013-2017, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2017, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -35,6 +35,7 @@
#ifndef AAX_IPARAMETER_H
#define AAX_IPARAMETER_H
#include "AAX_Enums.h"
#include "AAX.h" //for types
//Forward Declarations
@ -257,7 +258,7 @@ public:
*
*/
//@{
/** \brief Sets a parameter value using it's normalized representation
/** \brief Sets a parameter value using its normalized representation
*
* For more information regarding normalized values, see
* \ref AAXLibraryFeatures_ParameterManager

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2023-2024 Avid Technology, Inc.
* Copyright 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -35,6 +35,7 @@
#include "AAX_IACFTask.h"
#include "AAX.h"
#include <memory>
class AAX_IACFDataBuffer;
@ -123,20 +124,53 @@ public:
*
* \details
* If successful, returns a null pointer. Otherwise, returns
* a pointer back to the same object. This is the expected
* usage pattern:
*
* \code{.cpp}
* // release the task on success, retain it on failure
* myTask = myTask->SetDone(status);
* \endcode
* a pointer back to the same object. See
* \ref SetDone(std::unique_ptr<AAX_ITask>&, AAX_TaskCompletionStatus)
* for an example usage pattern.
*
* \param[in] iStatus
* The final status of the task. This indicates to the host
* whether or not the task was performed as requested.
*/
virtual AAX_ITask * SetDone(AAX_TaskCompletionStatus iStatus) = 0;
/**
* \brief The identifier for this task
*/
virtual AAX_Result GetID(AAX_CTaskID * outID) const = 0;
/**
* \brief Set a description of the current progress state
*
* \details
* This label may be shown by the host in a progress dialog or
* other progress reporting UI. If possible, use a localized
* string based on \ref AAX_eNotificationEvent_HostLocale .
*
* \param[in] iDescription
* A UTF-8 string describing the current progress state.
*/
virtual AAX_Result SetProgressLabel(const char * iLabel) = 0;
/// Helper for \ref SetDone() when using a unique_ptr
static void SetDone(std::unique_ptr<AAX_ITask> & iTask, AAX_TaskCompletionStatus iStatus) {
if (iTask) {
AAX_ITask* const pt = iTask->SetDone(iStatus);
if (pt != iTask.get()) {
iTask.reset(pt);
}
}
}
/// Helper for \ref SetDone() when using a shared_ptr
static void SetDone(std::shared_ptr<AAX_ITask> & iTask, AAX_TaskCompletionStatus iStatus) {
if (iTask) {
AAX_ITask* const pt = iTask->SetDone(iStatus);
if (pt != iTask.get()) {
iTask.reset(pt);
}
}
}
};
#endif

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2023-2024 Avid Technology, Inc.
* Copyright 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -44,7 +44,7 @@
*
* \ingroup AuxInterface_TaskAgent
*/
class AAX_ITaskAgent : public AAX_IACFTaskAgent
class AAX_ITaskAgent : public AAX_IACFTaskAgent_V2
, public CACFUnknown
{
public:

View file

@ -1,6 +1,6 @@
/*================================================================================================*/
/*
* Copyright 2015, 2023-2024 Avid Technology, Inc.
* Copyright 2015, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -94,7 +94,9 @@ namespace AAX
,eSpecialData_UnaccentedClick = 0x01 ///< For use when the high status nibble is \ref eStatusNibble_NoteOn and the low status nibble is zero
};
AAX_CONSTEXPR int32_t kMIDIClocksPerQuarter = 24;
AAX_CONSTEXPR int32_t kMIDIClocksPerSPPBeat = 6;
//
// Basic MIDI utility functions
//
@ -167,6 +169,49 @@ namespace AAX
{
return (IsAccentedClick(inPacket) || IsUnaccentedClick(inPacket));
}
/// Returns true if \c inPacket is a MIDI Beat Clock clock message
inline bool IsMBCClock(const AAX_CMidiPacket* inPacket)
{
return ((inPacket) &&
(eStatusByte_TimingClock == inPacket->mData[0]));
}
/// Returns true if \c inPacket is a MIDI Beat Clock start message
inline bool IsMBCStart(const AAX_CMidiPacket* inPacket)
{
return ((inPacket) &&
(eStatusByte_Start == inPacket->mData[0]));
}
/// Returns true if \c inPacket is a MIDI Beat Clock continue message
inline bool IsMBCContinue(const AAX_CMidiPacket* inPacket)
{
return ((inPacket) &&
(eStatusByte_Continue == inPacket->mData[0]));
}
/// Returns true if \c inPacket is a MIDI Beat Clock stop message
inline bool IsMBCStop(const AAX_CMidiPacket* inPacket)
{
return ((inPacket) &&
(eStatusByte_Stop == inPacket->mData[0]));
}
/// Returns true if \c inPacket is a Song Position Pointer message
inline bool IsSongPositionPointer(const AAX_CMidiPacket* inPacket, int16_t* outPosition)
{
bool const isSongPostion = (
(inPacket) &&
(eStatusByte_SongPosition == inPacket->mData[0]));
if (isSongPostion && outPosition)
{
*outPosition = (static_cast<int16_t>(0x7F & inPacket->mData[2]) << 7) | static_cast<int16_t>(0x7F & inPacket->mData[1]);
}
return isSongPostion;
}
} // namespace AAX
/// @cond ignore

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2013-2017, 2019-2021, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2017, 2019-2021, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -38,9 +38,7 @@
#define AAX_PROPERTIES_H
/// @endcond
#ifndef _AAX_H_
#include "AAX.h"
#endif
#include "AAX_EnumSizeCheck.h"
// Add new values only at the end of existing sections!
@ -204,7 +202,7 @@ enum AAX_EProperty : int32_t
*/
AAX_eProperty_PlugInID_Deprecated = 18,
/** \brief \deprecated Use \ref AAX_eProperty_Deprecated_Native_Plugin_List and \ref AAX_eProperty_Deprecated_DSP_Plugin_List
* See AAX_eProperty_PlugInID_RTAS for an example.
* See AAX_eProperty_PlugInID_Native for an example.
*/
AAX_eProperty_Deprecated_Plugin_List = 21,
/** \brief Specify a list of DSP plug-ins that are related to a plug-in type.
@ -680,6 +678,7 @@ enum AAX_EProperty : int32_t
* \note See \ref PTSW-189725
*/
AAX_eProperty_UsesClientGUI = 151,
AAX_eProperty_MaxGUIProp, // Intentionally given no explicit value
//@}end GUI properties
@ -756,9 +755,7 @@ enum AAX_EProperty : int32_t
* cached, so if the plug-in description can change between launches of the host application then the plug-in
* should apply this constraint to prevent the host from using stale description information.
*
* This property should be applied at the collection level as it affects the entire bundle.
*
* \li Apply this property at the \ref AAX_IEffectDescriptor level
* \li Apply this property at the \ref AAX_ICollection level
*/
AAX_eProperty_Constraint_NeverCache = 303,
/** \brief Indicates whether or not the plug-in supports multi-mono configurations
@ -812,7 +809,7 @@ enum AAX_EProperty : int32_t
* page table file. If this property is set to a non-zero value, the plug-in may describe a different
* \ref AAX_eResourceType_PageTable for each separate Effect.
*
* This property needs to be set at the collection level.
* \li Apply this property at the \ref AAX_ICollection level
*/
AAX_eProperty_StoreXMLPageTablesByEffect = 307,
/** \brief \deprecated Use \ref AAX_eProperty_StoreXMLPageTablesByEffect
@ -848,8 +845,10 @@ enum AAX_EProperty : int32_t
*/
AAX_eProperty_UsesTransportControl = 311,
AAX_eProperty_MaxFeaturesProp, // Intentionally given no explicit value
//@} end Plug-in features
//---------------------------------------------------------------------
#if 0
@ -922,9 +921,19 @@ enum AAX_EProperty : int32_t
*/
AAX_eProperty_EnableHostDebugLogs = 401,
//@} end Debug properties
AAX_eProperty_MaxProp, // ALWAYS LEAVE AS LAST PROPERTY VALUE
AAX_eProperty_MaxCap = 10000 // Maximum possible property value over the lifetime of AAX
AAX_eProperty_MaxCap = 10000, // Maximum possible property value over the lifetime of AAX
/** \brief Property alias to define both input and output stem formats
*
* This property can be used in place of \ref AAX_eProperty_InputStemFormat and
* \ref AAX_eProperty_OutputStemFormat . It is not registered directly with the
* host. Instead, it is intercepted by \ref AAX_VPropertyMap::AddProperty() and
* replaced with the equivalent input and output stem format properties.
*/
AAX_eProperty_StemFormat = 10001,
}; AAX_ENUM_SIZE_CHECK(AAX_EProperty);
/// @cond ignore

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2014-2016, 2018, 2023-2024 Avid Technology, Inc.
* Copyright 2014-2016, 2018, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -34,8 +34,9 @@
#define AAXLibrary_AAX_StringUtilities_h
// AAX headers
#include "AAX.h"
#include "AAX_Properties.h"
#include "AAX_Enums.h"
#include "AAX.h"
// Standard Library headers
#include <string>

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2013-2017, 2019-2021, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2017, 2019-2021, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -110,6 +110,10 @@ DEFINE_ACFUID(acfIID, IID_IAAXControllerV1, 0x9d5e3e3d, 0x52dc, 0x5efb, 0x20, 0x
DEFINE_ACFUID(acfIID, IID_IAAXControllerV2, 0x4c59aa0e, 0xd7c0, 0x4205, 0x8b, 0x6c, 0x32, 0x46, 0x8d, 0x42, 0xd2, 0x02);
/// ACF interface ID for \ref AAX_IACFController_V3
DEFINE_ACFUID(acfIID, IID_IAAXControllerV3, 0xdd6f168c, 0xda86, 0x44f8, 0xb8, 0x64, 0xd6, 0xcd, 0x22, 0x19, 0x26, 0xe7);
/// ACF interface ID for \ref AAX_IACFController_V4
DEFINE_ACFUID(acfIID, IID_IAAXControllerV4, 0xf19c815c, 0xd885, 0x4677, 0x9e, 0x1f, 0x08, 0x37, 0xc7, 0xa6, 0x9e, 0xb3);
/// ACF interface ID for \ref AAX_IACFController_V5
DEFINE_ACFUID(acfIID, IID_IAAXControllerV5, 0xff310dbf, 0x04e8, 0x45b1, 0xb3, 0x6a, 0xb8, 0xf4, 0xd9, 0xb8, 0xd4, 0x82);
/// ACF component ID for %AAX page table controller components
DEFINE_ACFUID(acfIID, AAXCompID_PageTableController, 0x63355d80, 0xbfe1, 0x4291, 0xa6, 0x27, 0xc6, 0x5c, 0xb9, 0x58, 0x91, 0x40);
@ -172,6 +176,8 @@ DEFINE_ACFUID(acfIID, IID_IAAXFeatureInfoV1, 0x24545609, 0xa7c4, 0x44d4, 0xab, 0
DEFINE_ACFUID(acfIID, AAXCompID_Task, 0xa5237386, 0xd1a7, 0x490d, 0x5, 0x8, 0x3, 0x2, 0xd, 0x0, 0x2, 0x1);
/// ACF interface ID for \ref AAX_IACFTask
DEFINE_ACFUID(acfIID, IID_IAAXTaskV1, 0x9733f64b, 0x45d6, 0x47ba, 0x8, 0xb, 0x9, 0xd, 0xd, 0x7, 0x8, 0xa);
/// ACF interface ID for \ref AAX_IACFTask_V2
DEFINE_ACFUID(acfIID, IID_IAAXTaskV2, 0x1cb60cfa, 0xbd54, 0x4132, 0x9f, 0xd7, 0xea, 0x69, 0xf5, 0x54, 0x12, 0x97);
/// ACF component ID for \ref AAX_ISessionDocument components
DEFINE_ACFUID(acfIID, AAXCompID_SessionDocument, 0x65fd4d4a, 0xf85e, 0x46fd, 0x8b, 0x7c, 0xa0, 0x31, 0x5c, 0x93, 0x2a, 0xd1);
@ -210,6 +216,8 @@ DEFINE_ACFUID(acfIID, IID_IAAXHostProcessorV2, 0x457546c0, 0xf6bc, 0x4af9, 0xbf,
DEFINE_ACFUID(acfIID, AAXCompID_EffectGUI, 0xab94339d, 0x3b34, 0x35dc, 0x29, 0x32, 0x19, 0x23, 0x1d, 0x1d, 0x48, 0x2a);
/// ACF interface ID for \ref AAX_IACFEffectGUI
DEFINE_ACFUID(acfIID, IID_IAAXEffectGUIV1, 0x964e323d, 0x424c, 0x5e1a, 0x22, 0x27, 0x28, 0x24, 0x23, 0x22, 0x2e, 0x1e);
/// ACF interface ID for \ref AAX_IACFEffectGUI_V2
DEFINE_ACFUID(acfIID, IID_IAAXEffectGUIV2, 0xa0a8fb30, 0x7e5d, 0x4b4a, 0xaa, 0x00, 0xbc, 0x33, 0x4a, 0x42, 0x0d, 0xbb);
/// ACF component ID for \ref AAX_IEffectDirectData components
DEFINE_ACFUID(acfIID, AAXCompID_EffectDirectData, 0xaafe80ab, 0x5b34, 0x4522, 0x49, 0x3b, 0x29, 0x53, 0xcd, 0xdd, 0x48, 0x4b);
@ -222,6 +230,8 @@ DEFINE_ACFUID(acfIID, IID_IAAXEffectDirectDataV2, 0x156ea622, 0xbd2e, 0x11e9, 0x
DEFINE_ACFUID(acfIID, AAXCompID_TaskAgent, 0xb0753064, 0xc37e, 0x11ed, 0xaf, 0xa1, 0x02, 0x42, 0xac, 0xe2, 0x00, 0x12);
/// ACF interface ID for \ref AAX_IACFTaskAgent
DEFINE_ACFUID(acfIID, IID_IAAXTaskAgentV1, 0xc096be3e, 0xbc3e, 0x4c38, 0x86, 0x1d, 0x06, 0xa4, 0xba, 0xa4, 0x10, 0x05);
/// ACF interface ID for \ref AAX_IACFTaskAgent_V2
DEFINE_ACFUID(acfIID, IID_IAAXTaskAgentV2, 0xa734a715, 0xd590, 0x4402, 0xbc, 0xff, 0x85, 0x64, 0x78, 0x52, 0x60, 0x1b);
/// ACF component ID for \ref AAX_ISessionDocumentClient components
DEFINE_ACFUID(acfIID, AAXCompID_SessionDocumentClient, 0x2280c3d5, 0x38f9, 0x43c5, 0x90, 0x1d, 0x8d, 0x1a, 0xfe, 0xb4, 0x2f, 0xa5);
@ -264,11 +274,22 @@ using AAX_Feature_UID = acfUID;
\brief Client stem format feature support
\details
To determine the client's support for specific stem formats, use the property map
The host provides \ref AAX_eSupportLevel_ByProperty . To determine the client's support for
specific stem formats, use the property map
<b>Property map contents</b>
Key: \ref AAX_EStemFormat values
Value: \ref AAX_ESupportLevel value; if undefined then no information is available
- Key: \ref AAX_EStemFormat values
- Value: \ref AAX_ESupportLevel value; if undefined then no information is available
Plugins that require support for a particular stem format in order for one or more of the
included effects to function properly should return an empty \ref AAX_ICollection from the
plugin's Describe routine if the host does not support this feature.
Note that feature queries should never be used to alter plugin description information that
is included in the host's %AAX plugin cache. For example, the list of included Components
should never be changed based on the host's stem format support.
\details
*/
DEFINE_ACFUID(AAX_Feature_UID, AAXATTR_ClientFeature_StemFormat, 0x729dd3e6, 0xd3dc, 0x484c, 0x91, 0x69, 0xf0, 0x64, 0xa0, 0x12, 0x60, 0x1d);
@ -276,23 +297,65 @@ DEFINE_ACFUID(AAX_Feature_UID, AAXATTR_ClientFeature_StemFormat, 0x729dd3e6, 0xd
\brief Client \ref additionalFeatures_AOS "Auxiliary Output Stem" feature support
Plug-ins must detect when a host does not support AOS in order to avoid running off the end of the output audio buffer list in the
audio algorithm.
\details
The host provides \ref AAX_eSupportLevel_Supported if it supports Auxiliary Output Stems for
%AAX effects.
\ref AAX_IComponentDescriptor::AddAuxOutputStem() "AddAuxOutputStem()" will return an error for hosts that do not support this feature, so typically
a feature support query using this \ref AAX_Feature_UID is not required.
Plug-ins must detect when a host does not support AOS in order to avoid running off the end
of the output audio buffer list in the audio algorithm.
\ref AAX_IComponentDescriptor::AddAuxOutputStem() "AddAuxOutputStem()" will return an error
for hosts that do not support this feature, so typically a feature support query using this
\ref AAX_Feature_UID is not required.
Plugins that require Auxiliary Output Stem support for one or more of the included effects to
function properly should return an empty \ref AAX_ICollection from the plugin's Describe
routine if the host does not support this feature.
This feature query can also be used to dynamically change the behavior of the plugin, for
example to reconfigure the Algorithm component data structure for hosts that do not support
Auxiliary Output Stems.
Note that feature queries should never be used to alter plugin description information that
is included in the host's %AAX plugin cache.
*/
DEFINE_ACFUID(AAX_Feature_UID, AAXATTR_ClientFeature_AuxOutputStem, 0x5bea3f7a, 0x2be8, 0x4fe1, 0x83, 0xb2, 0x94, 0xec, 0x91, 0x31, 0xb8, 0x52);
/** \var AAXATTR_ClientFeature_AuxOutputStem
\brief Client \ref additionalFeatures_Sidechain "Side Chain" feature support
\details
The host provides \ref AAX_eSupportLevel_Supported if it supports MIDI for %AAX effects.
Plugins that require side chain support for one or more of the included effects to function
properly should return an empty \ref AAX_ICollection from the plugin's Describe routine if the
host does not support this feature.
This feature query can also be used to dynamically change the behavior of the plugin, for example
to select a different Effect GUI factory function for hosts that do not support side chains.
Note that feature queries should never be used to alter plugin description information that
is included in the host's %AAX plugin cache.
*/
DEFINE_ACFUID(AAX_Feature_UID, AAXATTR_ClientFeature_SideChainInput, 0x98b0a514, 0x2b96, 0x4e1f, 0x87, 0x81, 0x99, 0x08, 0xc9, 0xe3, 0xe6, 0x8b);
/** \var AAXATTR_ClientFeature_MIDI
\brief Client \ref additionalFeatures_MIDI "MIDI" feature support
\details
The host provides \ref AAX_eSupportLevel_Supported if it supports MIDI for %AAX effects.
Plugins that require MIDI support for one or more of the included effects to function properly
should return an empty \ref AAX_ICollection from the plugin's Describe routine if the host does
not support this feature.
This feature query can also be used to dynamically change the behavior of the plugin, for example
to select a different Effect Parameters factory function for hosts that do not support MIDI.
Note that feature queries should never be used to alter plugin description information that
is included in the host's %AAX plugin cache.
*/
DEFINE_ACFUID(AAX_Feature_UID, AAXATTR_ClientFeature_MIDI, 0xf5b0816c, 0x5768, 0x49c2, 0xae, 0x3e, 0x85, 0x0d, 0xe3, 0x42, 0xeb, 0x07);
@ -314,6 +377,12 @@ DEFINE_ACFUID(AAX_Feature_UID, AAXATTR_ClientFeature_MIDI, 0xf5b0816c, 0x5768, 0
Value: one of \ref AAX_EHostLevel
Query using the host's \ref IACFDefinition
Plugins that require a certain host level should return an empty \ref AAX_ICollection from
the plugin's Describe routine if the host does not provide the required level or higher.
Note that host support queries should never be used to alter plugin description information
that is included in the host's %AAX plugin cache.
*/
DEFINE_ACFUID(acfUID, AAXATTR_Client_Level, 0xe550868e, 0x1e6a, 0x482b, 0xb5, 0x86, 0x73, 0xf1, 0x24, 0x6e, 0x12, 0x6b);
@ -340,6 +409,15 @@ DEFINE_ACFUID(acfUID, AAXATTR_Client_Level, 0xe550868e, 0x1e6a, 0x482b, 0xb5, 0x
<TT>00000111111001110000001100000001</TT>, or in decimal: 132580097
Query using the host's \ref IACFDefinition
Plugins that require a certain host version should return an empty \ref AAX_ICollection from
the plugin's Describe routine if the host does not provide the required level or higher.
That said, this check should only be used as a last resort. In nearly all cases a plugin
should use other available queries, such as feature queries, to determine host capabilities.
Note that a host version query should never be used to alter plugin description information
that is included in the host's %AAX plugin cache.
*/
DEFINE_ACFUID(acfUID, AAXATTR_Client_Version, 0x950cf999, 0x37aa, 0x49de, 0x8d, 0xcc, 0xbe, 0x7f, 0xa7, 0x3e, 0x6a, 0xee);

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2013-2017, 2019, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2017, 2019, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -38,6 +38,8 @@
#include "AAX_IComponentDescriptor.h"
#include "AAX_IDma.h"
#include "AAX_IACFComponentDescriptor.h"
#include "AAX_Properties.h"
#include "AAX_Enums.h"
// ACF Includes
#include "acfunknown.h"

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2013-2017, 2019, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2017, 2019, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -77,6 +77,8 @@ public:
AAX_Result GetHybridSignalLatency(int32_t* outSamples) const AAX_OVERRIDE; ///< \copydoc AAX_IController::GetHybridSignalLatency()
AAX_Result GetPlugInTargetPlatform(AAX_CTargetPlatform* outTargetPlatform) const AAX_OVERRIDE; ///< \copydoc AAX_IController::GetPlugInTargetPlatform()
AAX_Result GetIsAudioSuite(AAX_CBoolean* outIsAudioSuite) const AAX_OVERRIDE; ///< \copydoc AAX_IController::GetIsAudioSuite()
AAX_Result GetInstanceGroupID(AAX_CInstanceGroupID* outInstanceGroupID) const AAX_OVERRIDE; ///< \copydoc AAX_IController::GetInstanceGroupID()
AAX_Result GetInstanceID(AAX_CInstanceID* outInstanceID) const AAX_OVERRIDE; ///< \copydoc AAX_IController::GetInstanceID()
AAX_Result GetCycleCount( AAX_EProperty inWhichCycleCount, AAX_CPropertyValue* outNumCycles) const AAX_OVERRIDE; ///< \copydoc AAX_IController::GetCycleCount()
AAX_Result GetTODLocation ( AAX_CTimeOfDay* outTODLocation ) const AAX_OVERRIDE; ///< \copydoc AAX_IController::GetTODLocation()
AAX_Result GetCurrentAutomationTimestamp(AAX_CTransportCounter* outTimestamp) const AAX_OVERRIDE; ///< \copydoc AAX_IController::GetCurrentAutomationTimestamp()
@ -92,6 +94,7 @@ public:
// Notification functions
AAX_Result SendNotification ( AAX_CTypeID inNotificationType, const void* inNotificationData, uint32_t inNotificationDataSize ) AAX_OVERRIDE; ///< \copydoc AAX_IController::SendNotification(AAX_CTypeID, const void*, uint32_t)
AAX_Result SendNotification ( AAX_CTypeID inNotificationType) AAX_OVERRIDE; ///< \copydoc AAX_IController::SendNotification(AAX_CTypeID) \note Not an AAX interface method
AAX_Result RegisterForNotification(/* AAX_ENotificationEvent */ AAX_CTypeID inNotificationType, IACFUnknown const * inSubscriberObject) AAX_OVERRIDE; ///< \copydoc AAX_IController::RegisterForNotification()
//Metering functions
AAX_Result GetCurrentMeterValue ( AAX_CTypeID inMeterID, float * outMeterValue ) const AAX_OVERRIDE; ///< \copydoc AAX_IController::GetCurrentMeterValue()
@ -155,6 +158,8 @@ private:
ACFPtr<AAX_IACFController> mIController;
ACFPtr<AAX_IACFController_V2> mIControllerV2;
ACFPtr<AAX_IACFController_V3> mIControllerV3;
ACFPtr<AAX_IACFController_V4> mIControllerV4;
ACFPtr<AAX_IACFController_V5> mIControllerV5;
// AAX_IACFPageTableController interface methods are aggregated into AAX_IController
ACFPtr<AAX_IACFPageTableController> mIPageTableController;

View file

@ -1,6 +1,6 @@
/*================================================================================================*/
/*
* Copyright 2016-2017, 2019, 2023-2024 Avid Technology, Inc.
* Copyright 2016-2017, 2019, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -26,6 +26,7 @@
#include "AAX_IDescriptionHost.h"
#include "AAX_Errors.h"
#include "ACFPtr.h"

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2013-2017, 2019, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2017, 2019, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -66,6 +66,7 @@ public:
AAX_Result AddComponent ( AAX_IComponentDescriptor * inComponentDescriptor ) AAX_OVERRIDE; ///< \copydoc AAX_IEffectDescriptor::AddComponent()
AAX_Result AddName ( const char * inPlugInName ) AAX_OVERRIDE; ///< \copydoc AAX_IEffectDescriptor::AddName()
AAX_Result AddCategory ( uint32_t inCategory ) AAX_OVERRIDE; ///< \copydoc AAX_IEffectDescriptor::AddCategory()
AAX_Result SetRole ( uint32_t inRole ) AAX_OVERRIDE; ///< \copydoc AAX_IEffectDescriptor::SetRole()
AAX_Result AddCategoryBypassParameter ( uint32_t inCategory, AAX_CParamID inParamID ) AAX_OVERRIDE; ///< \copydoc AAX_IEffectDescriptor::AddCategoryBypassParameter()
AAX_Result AddProcPtr ( void * inProcPtr, AAX_CProcPtrID inProcID ) AAX_OVERRIDE; ///< \copydoc AAX_IEffectDescriptor::AddProcPtr()
/** \copydoc AAX_IEffectDescriptor::NewPropertyMap()

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
*
* Copyright 2023-2024 Avid Technology, Inc.
* Copyright 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -39,6 +39,8 @@
#include "ACFPtr.h"
class IACFUnknown;
class AAX_IACFTask;
class AAX_IACFTask_V2;
/*!
\brief Version-managed concrete \ref AAX_ITask
@ -56,8 +58,11 @@ public:
float GetProgress() const AAX_OVERRIDE; ///< \copydoc AAX_ITask::GetProgress()
AAX_Result AddResult(AAX_IACFDataBuffer const * iResult) AAX_OVERRIDE; ///< \copydoc AAX_ITask::AddResult()
AAX_ITask * SetDone(AAX_TaskCompletionStatus iStatus) AAX_OVERRIDE; ///< \copydoc AAX_ITask::SetDone()
AAX_Result GetID(AAX_CTaskID * outID) const AAX_OVERRIDE; ///< \copydoc AAX_ITask::GetID()
AAX_Result SetProgressLabel(const char * iLabel) AAX_OVERRIDE; ///< \copydoc AAX_ITask::SetProgressLabel()
private:
ACFPtr<AAX_IACFTask> mTaskV1;
ACFPtr<AAX_IACFTask_V2> mTaskV2;
};
#endif

View file

@ -1,7 +1,7 @@
/*================================================================================================*/
/*
* Copyright 2013-2017, 2019, 2021-2024 Avid Technology, Inc.
*
* Copyright 2013-2017, 2019, 2021-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -53,11 +53,11 @@
* - SDK 10.2.1 > \c 0x0A02
*
*/
#define AAX_SDK_VERSION ( 0x0208 )
#define AAX_SDK_VERSION ( 0x0209 )
/** \brief An atomic revision number for the source included in this SDK
*/
#define AAX_SDK_CURRENT_REVISION ( 20208000 )
#define AAX_SDK_CURRENT_REVISION ( 20209000 )
#define AAX_SDK_1p0p1_REVISION ( 3712639 )
@ -85,6 +85,8 @@
#define AAX_SDK_2p6p1_REVISION ( 20206001 )
#define AAX_SDK_2p7p0_REVISION ( 20207000 )
#define AAX_SDK_2p8p0_REVISION ( 20208000 )
#define AAX_SDK_2p8p1_REVISION ( 20208001 )
#define AAX_SDK_2p9p0_REVISION ( 20209000 )
//CURREVSTAMP < do not remove this comment

View file

@ -1,6 +1,6 @@
/*================================================================================================*/
/*
* Copyright 2013-2015, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2015, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -29,6 +29,7 @@
#include "AAX_VPrivateDataAccess.h"
#include "AAX_VController.h"
#include "AAX_UIDs.h"
#include "AAX_Errors.h"
AAX_CEffectDirectData::AAX_CEffectDirectData() :
mController(NULL),

View file

@ -1,6 +1,6 @@
/*================================================================================================*/
/*
* Copyright 2013-2017, 2019, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2017, 2019, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -941,7 +941,9 @@ AAX_Result AAX_CEffectParameters::UpdatePageTable(uint32_t inTableType, int32_t
//----------------------------------------------------------------------------------------------
AAX_Result AAX_CEffectParameters::GetCustomData( AAX_CTypeID /*iDataBlockID*/, uint32_t /*inDataSize*/, void* /*oData*/, uint32_t* oDataWritten) const
{
*oDataWritten = 0;
if (oDataWritten) {
*oDataWritten = 0;
}
return AAX_SUCCESS;
}

View file

@ -1,6 +1,6 @@
/*================================================================================================*/
/*
* Copyright 2010-2017, 2023-2024 Avid Technology, Inc.
* Copyright 2010-2017, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -29,6 +29,7 @@
#include "AAX_VController.h"
#include "AAX_IEffectParameters.h"
#include "AAX_UIDs.h"
#include "AAX_Errors.h"
// ***************************************************************************
// METHOD: AAX_CHostProcessor

View file

@ -1,6 +1,6 @@
/*================================================================================================*/
/*
* Copyright 2013-2015, 2018, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2015, 2018, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -24,9 +24,10 @@
/*================================================================================================*/
#include "AAX.h"
#include "AAX_CHostServices.h"
#include "AAX_VHostServices.h"
#include "AAX_Errors.h"
#include "AAX.h"
#include <cstdarg>
#include <cstdio>

View file

@ -35,7 +35,7 @@
#if defined(__GNUC__)
#include <pthread.h>
#include <errno.h>
#elif defined(WIN32)
#elif defined(_WIN32)
#include <windows.h>
#else
#error AAX_CMutex not implemented
@ -46,7 +46,7 @@ struct opaque_aax_mutex_t
#if defined(__GNUC__)
pthread_t mOwner;
pthread_mutex_t mSysMutex;
#elif defined(WIN32)
#elif defined(_WIN32)
DWORD mOwner;
HANDLE mSysMutex;
#endif
@ -61,7 +61,7 @@ AAX_CMutex::AAX_CMutex()
mMutex->mOwner = 0;
#if defined(__GNUC__)
if (::pthread_mutex_init(&mMutex->mSysMutex, NULL) != 0)
#elif defined(WIN32)
#elif defined(_WIN32)
mMutex->mSysMutex = ::CreateMutex(NULL, false, NULL);
if (0 == mMutex->mSysMutex)
#endif
@ -80,7 +80,7 @@ AAX_CMutex::~AAX_CMutex()
{
#if defined(__GNUC__)
::pthread_mutex_destroy(&mMutex->mSysMutex);
#elif defined(WIN32)
#elif defined(_WIN32)
::CloseHandle(mMutex->mSysMutex);
#endif
delete mMutex;
@ -104,7 +104,7 @@ bool AAX_CMutex::Lock()
mMutex->mOwner = curThread;
result = true;
}
#elif defined(WIN32)
#elif defined(_WIN32)
DWORD curThread = ::GetCurrentThreadId();
if(mMutex->mOwner != curThread)
{
@ -130,7 +130,7 @@ void AAX_CMutex::Unlock()
mMutex->mOwner = 0;
::pthread_mutex_unlock(&mMutex->mSysMutex);
}
#elif defined(WIN32)
#elif defined(_WIN32)
if(mMutex->mOwner == ::GetCurrentThreadId())
{
mMutex->mOwner = 0;
@ -177,7 +177,7 @@ bool AAX_CMutex::Try_Lock()
// current thread already owns the lock
result = true;
}
#elif defined(WIN32)
#elif defined(_WIN32)
if(mMutex->mOwner != ::GetCurrentThreadId())
{
// try to acquire the mutex

View file

@ -1,6 +1,6 @@
/*================================================================================================*/
/*
* Copyright 2013-2015, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2015, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.

View file

@ -1,6 +1,6 @@
/*================================================================================================*/
/*
* Copyright 1993-2015, 2023-2024 Avid Technology, Inc.
* Copyright 1993-2015, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -29,7 +29,8 @@
ACFMETHODIMP AAX_IEffectGUI::InternalQueryInterface(const acfIID & riid, void **ppvObjOut)
{
if (riid == IID_IAAXEffectGUIV1 )
if ( riid == IID_IAAXEffectGUIV1
|| riid == IID_IAAXEffectGUIV2)
{
*ppvObjOut = static_cast<IACFUnknown *>(this);
( static_cast<IACFUnknown *>(*ppvObjOut))->AddRef();

View file

@ -1,6 +1,6 @@
/*================================================================================================*/
/*
* Copyright 2013-2015, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2015, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -26,6 +26,7 @@
#include "AAX_VAutomationDelegate.h"
#include "AAX_IACFController.h"
#include "AAX_UIDs.h"
#include "AAX_Errors.h"
#include <algorithm>
#include <iterator>

View file

@ -1,6 +1,6 @@
/*================================================================================================*/
/*
* Copyright 2013-2017, 2019, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2017, 2019, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -30,6 +30,7 @@
#include "AAX_VPropertyMap.h"
#include "AAX_UIDs.h"
#include "AAX_Assert.h"
#include "AAX_Errors.h"
// ACF Includes
#include "acfbaseapi.h"

View file

@ -1,6 +1,6 @@
/*================================================================================================*/
/*
* Copyright 2013-2017, 2019, 2021, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2017, 2019, 2021, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -28,6 +28,7 @@
#include "AAX_IACFPageTableController.h"
#include "AAX_UIDs.h"
#include "AAX_Assert.h"
#include "AAX_Errors.h"
#include "acfbaseapi.h"
@ -43,6 +44,8 @@ AAX_VController::AAX_VController( IACFUnknown* pUnknown )
pUnknown->QueryInterface(IID_IAAXControllerV1, (void **)&mIController);
pUnknown->QueryInterface(IID_IAAXControllerV2, (void **)&mIControllerV2);
pUnknown->QueryInterface(IID_IAAXControllerV3, (void **)&mIControllerV3);
pUnknown->QueryInterface(IID_IAAXControllerV4, (void **)&mIControllerV4);
pUnknown->QueryInterface(IID_IAAXControllerV5, (void **)&mIControllerV5);
pUnknown->QueryInterface(IID_IAAXPageTableController, (void **)&mIPageTableController);
pUnknown->QueryInterface(IID_IAAXPageTableControllerV2, (void **)&mIPageTableControllerV2);
@ -55,7 +58,7 @@ AAX_VController::AAX_VController( IACFUnknown* pUnknown )
// swallow any failure here - just clear the smart pointer
mComponentFactory = NULL;
}
}
}
}
// ******************************************************************************************
@ -98,6 +101,17 @@ AAX_Result AAX_VController::SendNotification (AAX_CTypeID inNotificationType)
return AAX_ERROR_UNIMPLEMENTED;
}
// ******************************************************************************************
// METHOD: RegisterForNotification
// ******************************************************************************************
AAX_Result AAX_VController::RegisterForNotification(/* AAX_ENotificationEvent */ AAX_CTypeID inNotificationType, IACFUnknown const * inSubscriberObject)
{
if (mIControllerV5)
return mIControllerV5->RegisterForNotification(inNotificationType, inSubscriberObject);
return AAX_ERROR_UNIMPLEMENTED;
}
// ******************************************************************************************
// METHOD: GetEffectID
// ******************************************************************************************
@ -322,6 +336,28 @@ AAX_Result AAX_VController::GetIsAudioSuite(AAX_CBoolean* outIsAudioSuite) const
return AAX_ERROR_UNIMPLEMENTED;
}
// ******************************************************************************************
// METHOD: GetInstanceGroupID
// ******************************************************************************************
AAX_Result AAX_VController::GetInstanceGroupID(AAX_CInstanceGroupID* outInstanceGroupID) const
{
if (mIControllerV4)
return mIControllerV4->GetInstanceGroupID(outInstanceGroupID);
return AAX_ERROR_UNIMPLEMENTED;
}
// ******************************************************************************************
// METHOD: GetInstanceID
// ******************************************************************************************
AAX_Result AAX_VController::GetInstanceID(AAX_CInstanceID* outInstanceID) const
{
if (mIControllerV5)
return mIControllerV5->GetInstanceID(outInstanceID);
return AAX_ERROR_UNIMPLEMENTED;
}
// ******************************************************************************************
// METHOD: GetHostName
// ******************************************************************************************

View file

@ -1,6 +1,6 @@
/*================================================================================================*/
/*
* Copyright 2013-2017, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2017, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -26,6 +26,7 @@
#include "AAX_VEffectDescriptor.h"
#include "AAX_VComponentDescriptor.h"
#include "AAX_VPropertyMap.h"
#include "AAX_Errors.h"
#include "AAX_UIDs.h"
#include "acfbaseapi.h"
@ -114,12 +115,22 @@ AAX_Result AAX_VEffectDescriptor::AddName( const char * inPlugInName )
// ******************************************************************************************
AAX_Result AAX_VEffectDescriptor::AddCategory( uint32_t inCategory )
{
// For now, not checking that the value only contains category bits
if ( mIACFEffectDescriptor )
return mIACFEffectDescriptor->AddCategory( inCategory );
return AAX_ERROR_NULL_OBJECT;
}
// ******************************************************************************************
// METHOD: SetRole
// ******************************************************************************************
AAX_Result AAX_VEffectDescriptor::SetRole( uint32_t inRole )
{
// For now, not checking that the value only contains role bits
return this->AddCategory( inRole );
}
// ******************************************************************************************
// METHOD: AddCategoryBypassParameter
// ******************************************************************************************

View file

@ -1,6 +1,6 @@
/*================================================================================================*/
/*
* Copyright 2016-2017, 2019, 2023-2024 Avid Technology, Inc.
* Copyright 2016-2017, 2019, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -28,6 +28,7 @@
#include "AAX_IACFFeatureInfo.h"
#include "AAX_VPropertyMap.h"
#include "AAX_UIDs.h"
#include "AAX_Errors.h"
// Standard includes
#include <memory>

View file

@ -1,6 +1,6 @@
/*================================================================================================*/
/*
* Copyright 2010-2017, 2023-2024 Avid Technology, Inc.
* Copyright 2010-2017, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -26,6 +26,7 @@
#include "AAX_VHostProcessorDelegate.h"
#include "AAX_UIDs.h"
#include "AAX_Errors.h"
// ******************************************************************************************
// METHOD: AAX_VHostProcessorDelegate

View file

@ -1,6 +1,6 @@
/*================================================================================================*/
/*
* Copyright 2013-2015, 2018, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2015, 2018, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -25,6 +25,7 @@
#include "AAX_VHostServices.h"
#include "AAX_UIDs.h"
#include "AAX_Errors.h"
#include "acfbaseapi.h"
#include "ACFPtr.h"

View file

@ -1,6 +1,6 @@
/*================================================================================================*/
/*
* Copyright 2016-2017, 2023-2024 Avid Technology, Inc.
* Copyright 2016-2017, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -25,6 +25,7 @@
#include "AAX_VPageTable.h"
#include "AAX_UIDs.h"
#include "AAX_Errors.h"
// ******************************************************************************************

View file

@ -1,6 +1,6 @@
/*================================================================================================*/
/*
* Copyright 2013-2015, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2015, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -25,6 +25,7 @@
#include "AAX_VPrivateDataAccess.h"
#include "AAX_UIDs.h"
#include "AAX_Errors.h"
// ******************************************************************************************
// METHOD: AAX_VPrivateDataAccess

View file

@ -1,6 +1,6 @@
/*================================================================================================*/
/*
* Copyright 2013-2017, 2019, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2017, 2019, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -227,6 +227,20 @@ AAX_CBoolean AAX_VPropertyMap::GetPointerProperty ( AAX_EProperty inProperty, co
// ******************************************************************************************
AAX_Result AAX_VPropertyMap::AddProperty ( AAX_EProperty inProperty, AAX_CPropertyValue inValue )
{
// AAX_eProperty_StemFormat is an alias to register equivalent input/output stem formats
if (AAX_eProperty_StemFormat == inProperty)
{
AAX_Result inputResult = this->AddProperty(AAX_eProperty_InputStemFormat, inValue);
AAX_Result outputResult = this->AddProperty(AAX_eProperty_OutputStemFormat, inValue);
if (inputResult != AAX_SUCCESS) {
return inputResult;
}
if (outputResult != AAX_SUCCESS) {
return outputResult;
}
return AAX_SUCCESS;
}
// PT-223581: Pro Tools removes plug-ins from the insert menu if unsupported stem formats are detected
if ( (AAX_eProperty_InputStemFormat == inProperty) || (AAX_eProperty_OutputStemFormat == inProperty))
{
@ -246,7 +260,7 @@ AAX_Result AAX_VPropertyMap::AddProperty ( AAX_EProperty inProperty, AAX_CProper
}
// otherwise, it is fine to register stem formats which are unknown to the host
}
if ( mIACFPropertyMap )
{
return mIACFPropertyMap->AddProperty ( inProperty, inValue );

View file

@ -1,6 +1,6 @@
/*================================================================================================*/
/*
* Copyright 2013-2015, 2019-2021, 2023-2024 Avid Technology, Inc.
* Copyright 2013-2015, 2019-2021, 2023-2025 Avid Technology, Inc.
* All rights reserved.
*
* This file is part of the Avid AAX SDK.
@ -25,6 +25,7 @@
#include "AAX_VTransport.h"
#include "AAX_UIDs.h"
#include "AAX_Errors.h"
AAX_VTransport::AAX_VTransport( IACFUnknown* pUnknown )
{