AAX SDK 2.6.1
Avid Audio Extensions Development Kit
Loading...
Searching...
No Matches
AAX_IComponentDescriptor.h
Go to the documentation of this file.
1/*================================================================================================*/
2/*
3 *
4 * Copyright 2013-2017, 2023 Avid Technology, Inc.
5 * All rights reserved.
6 *
7 * CONFIDENTIAL: this document contains confidential information of Avid. Do
8 * not disclose to any third party. Use of the information contained in this
9 * document is subject to an Avid SDK license.
10 *
11 */
12
19/*================================================================================================*/
20
21
22#ifndef _AAX_ICOMPONENTDESCRIPTOR_H_
23#define _AAX_ICOMPONENTDESCRIPTOR_H_
24
25#include "AAX.h"
26#include "AAX_IDma.h"
27#include "AAX_Callbacks.h"
28
30
31
44{
45public:
47
54 virtual AAX_Result Clear () = 0;
55
68 virtual AAX_Result AddAudioIn ( AAX_CFieldIndex inFieldIndex ) = 0;
69
82 virtual AAX_Result AddAudioOut ( AAX_CFieldIndex inFieldIndex ) = 0;
83
96 virtual AAX_Result AddAudioBufferLength ( AAX_CFieldIndex inFieldIndex ) = 0;
97
110 virtual AAX_Result AddSampleRate ( AAX_CFieldIndex inFieldIndex ) = 0;
111
129 virtual AAX_Result AddClock ( AAX_CFieldIndex inFieldIndex ) = 0;
130
144 virtual AAX_Result AddSideChainIn ( AAX_CFieldIndex inFieldIndex ) = 0;
145
168 virtual AAX_Result AddDataInPort ( AAX_CFieldIndex inFieldIndex, uint32_t inPacketSize, AAX_EDataInPortType inPortType = AAX_eDataInPortType_Buffered ) = 0;
169
205 virtual AAX_Result AddAuxOutputStem ( AAX_CFieldIndex inFieldIndex, int32_t inStemFormat, const char inNameUTF8[]) = 0;
222 virtual AAX_Result AddPrivateData ( AAX_CFieldIndex inFieldIndex, int32_t inDataSize, /* AAX_EPrivateDataOptions */ uint32_t inOptions = AAX_ePrivateDataOptions_DefaultOptions ) = 0;
223
238 virtual AAX_Result AddTemporaryData( AAX_CFieldIndex inFieldIndex, uint32_t inDataElementSize) = 0;
239
260 virtual AAX_Result AddDmaInstance ( AAX_CFieldIndex inFieldIndex, AAX_IDma::EMode inDmaMode ) = 0;
261
277 virtual AAX_Result AddMeters ( AAX_CFieldIndex inFieldIndex, const AAX_CTypeID* inMeterIDs, const uint32_t inMeterCount ) = 0;
278
301 virtual AAX_Result AddMIDINode ( AAX_CFieldIndex inFieldIndex, AAX_EMIDINodeType inNodeType, const char inNodeName[], uint32_t channelMask ) = 0;
302
313 virtual AAX_Result AddReservedField ( AAX_CFieldIndex inFieldIndex, uint32_t inFieldType ) = 0;
314
322 virtual AAX_IPropertyMap * NewPropertyMap () const = 0; // CONST?
323
334 virtual AAX_IPropertyMap * DuplicatePropertyMap (AAX_IPropertyMap* inPropertyMap) const = 0;
355 AAX_CProcessProc inProcessProc,
356 AAX_IPropertyMap * inProperties = NULL,
357 AAX_CInstanceInitProc inInstanceInitProc = NULL,
358 AAX_CBackgroundProc inBackgroundProc = NULL,
359 AAX_CSelector * outProcID = NULL) = 0;
384 const char inDLLFileNameUTF8 [],
385 const char inProcessProcSymbol [],
386 AAX_IPropertyMap * inProperties,
387 const char inInstanceInitProcSymbol [] = NULL,
388 const char inBackgroundProcSymbol [] = NULL,
389 AAX_CSelector * outProcID = NULL) = 0;
390
437 AAX_IPropertyMap* inProperties,
438 AAX_CSelector* outProcIDs = NULL,
439 int32_t inProcIDsSize = 0) = 0;
440
454 template <typename aContextType>
456 void (AAX_CALLBACK *inProcessProc) ( aContextType * const inInstancesBegin [], const void * inInstancesEnd),
457 AAX_IPropertyMap * inProperties = NULL,
458 int32_t (AAX_CALLBACK *inInstanceInitProc) ( const aContextType * inInstanceContextPtr, AAX_EComponentInstanceInitAction inAction ) = NULL,
459 int32_t (AAX_CALLBACK *inBackgroundProc) ( void ) = NULL );
460};
461
462template <typename aContextType>
463inline AAX_Result
465 void (AAX_CALLBACK *inProcessProc) ( aContextType * const inInstancesBegin [], const void * inInstancesEnd),
466 AAX_IPropertyMap * inProperties,
467 int32_t (AAX_CALLBACK *inInstanceInitProc) ( const aContextType * inInstanceContextPtr, AAX_EComponentInstanceInitAction inAction ),
468 int32_t (AAX_CALLBACK *inBackgroundProc) ( void ) )
469{
470 return this->AddProcessProc_Native(
471 reinterpret_cast <AAX_CProcessProc>( inProcessProc ),
472 inProperties,
473 reinterpret_cast<AAX_CInstanceInitProc>( inInstanceInitProc ),
474 reinterpret_cast<AAX_CBackgroundProc>( inBackgroundProc ) );
475}
476
477#endif // #ifndef _AAX_ICOMPONENTDESCRIPTOR_H_
AAX_EMIDINodeType
MIDI node types.
Definition: AAX_Enums.h:980
@ AAX_ePrivateDataOptions_DefaultOptions
Definition: AAX_Enums.h:760
AAX_EDataInPortType
Property value for whether a data in port should be buffered or not.
Definition: AAX_Enums.h:1063
@ AAX_eDataInPortType_Buffered
Definition: AAX_Enums.h:1073
AAX_EComponentInstanceInitAction
Selector indicating the action that occurred to prompt a component initialization callback.
Definition: AAX_Enums.h:814
Various utility definitions for AAX.
int32_t AAX_Result
Definition: AAX.h:334
#define AAX_CALLBACK
Definition: AAX.h:282
uint32_t AAX_CTypeID
Matches type of OSType used in classic plugins.
Definition: AAX.h:333
AAX_CIndex AAX_CFieldIndex
Not used by AAX plug-ins (except in AAX_FIELD_INDEX macro)
Definition: AAX.h:346
uint32_t AAX_CSelector
Definition: AAX.h:327
Cross-platform interface for access to the host's direct memory access (DMA) facilities.
AAX callback prototypes and ProcPtr definitions
AAX_Component< void >::CInstanceInitProc AAX_CInstanceInitProc
A user-defined callback that AAX calls to notify the component that an instance is being added or rem...
Definition: AAX_Callbacks.h:137
AAX_Component< void >::CBackgroundProc AAX_CBackgroundProc
A user-defined callback that AAX calls in the AAX Idle time.
Definition: AAX_Callbacks.h:148
AAX_Component< void >::CProcessProc AAX_CProcessProc
A user-defined callback that AAX calls to process data packets and/or audio.
Definition: AAX_Callbacks.h:101
Description interface for an AAX plug-in component.
Definition: AAX_IComponentDescriptor.h:44
virtual AAX_Result Clear()=0
Clears the descriptor.
virtual AAX_Result AddProcessProc(AAX_IPropertyMap *inProperties, AAX_CSelector *outProcIDs=NULL, int32_t inProcIDsSize=0)=0
Registers one or more algorithm processing entrypoints (process procedures)
virtual AAX_Result AddPrivateData(AAX_CFieldIndex inFieldIndex, int32_t inDataSize, uint32_t inOptions=AAX_ePrivateDataOptions_DefaultOptions)=0
Adds a private data port to the algorithm context.
virtual ~AAX_IComponentDescriptor()
Definition: AAX_IComponentDescriptor.h:46
virtual AAX_IPropertyMap * NewPropertyMap() const =0
Creates a new, empty property map.
virtual AAX_Result AddProcessProc_Native(AAX_CProcessProc inProcessProc, AAX_IPropertyMap *inProperties=NULL, AAX_CInstanceInitProc inInstanceInitProc=NULL, AAX_CBackgroundProc inBackgroundProc=NULL, AAX_CSelector *outProcID=NULL)=0
Registers an algorithm processing entrypoint (process procedure) for the native architecture.
virtual AAX_Result AddSideChainIn(AAX_CFieldIndex inFieldIndex)=0
Subscribes a side-chain input context field.
virtual AAX_Result AddDataInPort(AAX_CFieldIndex inFieldIndex, uint32_t inPacketSize, AAX_EDataInPortType inPortType=AAX_eDataInPortType_Buffered)=0
Adds a custom data port to the algorithm context.
virtual AAX_Result AddReservedField(AAX_CFieldIndex inFieldIndex, uint32_t inFieldType)=0
Subscribes a context field to host-provided services or information.
virtual AAX_Result AddAudioBufferLength(AAX_CFieldIndex inFieldIndex)=0
Subscribes a buffer length context field.
virtual AAX_Result AddClock(AAX_CFieldIndex inFieldIndex)=0
Subscribes a clock context field.
virtual AAX_Result AddMeters(AAX_CFieldIndex inFieldIndex, const AAX_CTypeID *inMeterIDs, const uint32_t inMeterCount)=0
Adds a meter field to the plug-in's context.
virtual AAX_Result AddAudioIn(AAX_CFieldIndex inFieldIndex)=0
Subscribes an audio input context field.
virtual AAX_Result AddMIDINode(AAX_CFieldIndex inFieldIndex, AAX_EMIDINodeType inNodeType, const char inNodeName[], uint32_t channelMask)=0
Adds a MIDI node field to the plug-in's context.
virtual AAX_Result AddAuxOutputStem(AAX_CFieldIndex inFieldIndex, int32_t inStemFormat, const char inNameUTF8[])=0
Adds an auxiliary output stem for a plug-in.
virtual AAX_Result AddProcessProc_TI(const char inDLLFileNameUTF8[], const char inProcessProcSymbol[], AAX_IPropertyMap *inProperties, const char inInstanceInitProcSymbol[]=NULL, const char inBackgroundProcSymbol[]=NULL, AAX_CSelector *outProcID=NULL)=0
Registers an algorithm processing entrypoint (process procedure) for the native architecture.
virtual AAX_IPropertyMap * DuplicatePropertyMap(AAX_IPropertyMap *inPropertyMap) const =0
Creates a new property map using an existing property map.
virtual AAX_Result AddTemporaryData(AAX_CFieldIndex inFieldIndex, uint32_t inDataElementSize)=0
Adds a block of data to a context that is not saved between callbacks and is scaled by the system buf...
virtual AAX_Result AddSampleRate(AAX_CFieldIndex inFieldIndex)=0
Subscribes a sample rate context field.
virtual AAX_Result AddAudioOut(AAX_CFieldIndex inFieldIndex)=0
Subscribes an audio output context field.
virtual AAX_Result AddDmaInstance(AAX_CFieldIndex inFieldIndex, AAX_IDma::EMode inDmaMode)=0
Adds a DMA field to the plug-in's context.
EMode
DMA mode IDs.
Definition: AAX_IDma.h:68
Generic plug-in description property map.
Definition: AAX_IPropertyMap.h:56