AAX SDK  2.4.1
Avid Audio Extensions Development Kit
AAX_VComponentDescriptor.h
Go to the documentation of this file.
1 /*================================================================================================*/
2 /*
3  *
4  * Copyright 2013-2017, 2019 by Avid Technology, Inc.
5  * All rights reserved.
6  *
7  * CONFIDENTIAL: This document contains confidential information. Do not
8  * read or examine this document unless you are an Avid Technology employee
9  * or have signed a non-disclosure agreement with Avid Technology which protects
10  * the confidentiality of this document. DO NOT DISCLOSE ANY INFORMATION
11  * CONTAINED IN THIS DOCUMENT TO ANY THIRD-PARTY WITHOUT THE PRIOR WRITTEN CONSENT
12  * OF Avid Technology, INC.
13  *
14  */
15 
22 /*================================================================================================*/
23 
24 #ifndef AAX_VCOMPONENTDESCRIPTOR_H
25 #define AAX_VCOMPONENTDESCRIPTOR_H
26 
27 // AAX Includes
29 #include "AAX_IDma.h"
31 
32 // ACF Includes
33 #include "acfunknown.h"
34 #include "ACFPtr.h"
35 
36 // Standard Includes
37 #include <set>
38 
39 
40 class AAX_IPropertyMap;
42 class AAX_IACFComponentDescriptorV2;
43 class IACFUnknown;
44 
50 {
51 public:
54 
56  AAX_Result AddReservedField ( AAX_CFieldIndex inFieldIndex, uint32_t inFieldType ) AAX_OVERRIDE;
63 
64  AAX_Result AddDataInPort ( AAX_CFieldIndex inFieldIndex, uint32_t inPacketSize, AAX_EDataInPortType inPortType ) AAX_OVERRIDE;
65  AAX_Result AddAuxOutputStem ( AAX_CFieldIndex inFieldIndex, int32_t inStemFormat, const char inNameUTF8[]) AAX_OVERRIDE;
66  AAX_Result AddPrivateData ( AAX_CFieldIndex inFieldIndex, int32_t inDataSize, uint32_t inOptions ) AAX_OVERRIDE;
67  AAX_Result AddTemporaryData( AAX_CFieldIndex inFieldIndex, uint32_t inDataElementSize) AAX_OVERRIDE;
68  AAX_Result AddDmaInstance ( AAX_CFieldIndex inFieldIndex, AAX_IDma::EMode inDmaMode ) AAX_OVERRIDE;
69  AAX_Result AddMeters ( AAX_CFieldIndex inFieldIndex, const AAX_CTypeID* inMeterIDs, const uint32_t inMeterCount) AAX_OVERRIDE;
70  AAX_Result AddMIDINode ( AAX_CFieldIndex inFieldIndex, AAX_EMIDINodeType inNodeType, const char inNodeName[], uint32_t channelMask ) AAX_OVERRIDE;
71 
72 
86  AAX_CProcessProc inProcessProc,
87  AAX_IPropertyMap * inProperties = NULL,
88  AAX_CInstanceInitProc inInstanceInitProc = NULL,
89  AAX_CBackgroundProc inBackgroundProc = NULL,
90  AAX_CSelector * outProcID = NULL ) AAX_OVERRIDE;
94  const char inDLLFileNameUTF8[],
95  const char inProcessProcSymbol[],
96  AAX_IPropertyMap * inProperties = NULL,
97  const char inInstanceInitProcSymbol [] = NULL,
98  const char inBackgroundProcSymbol [] = NULL,
99  AAX_CSelector * outProcID = NULL ) AAX_OVERRIDE;
103  AAX_IPropertyMap* inProperties,
104  AAX_CSelector* outProcIDs = NULL,
105  int32_t inProcIDsSize = 0) AAX_OVERRIDE;
106 
107 
108  IACFUnknown* GetIUnknown(void) const;
109 
110 private:
111  // Used for backwards compatibility with clients which do not support AddProcessProc
112  friend class AAX_VPropertyMap;
113  static const std::set<AAX_EProperty>& PointerPropertiesUsedByAddProcessProc();
114 
115 private:
116  ACFPtr<IACFUnknown> mUnkHost;
117  ACFPtr<AAX_IACFComponentDescriptor> mIACFComponentDescriptor;
118  ACFPtr<AAX_IACFComponentDescriptor_V2> mIACFComponentDescriptorV2;
119  ACFPtr<AAX_IACFComponentDescriptor_V3> mIACFComponentDescriptorV3;
120  std::set<AAX_IPropertyMap *> mPropertyMaps;
121 };
122 
123 
124 #endif // #ifndef _AAX_ICOMPONENTDESCRIPTOR_H_
int32_t AAX_Result
Definition: AAX.h:337
#define AAX_OVERRIDE
override keyword macro
Definition: AAX.h:141
uint32_t AAX_CTypeID
Matches type of OSType used in classic plugins.
Definition: AAX.h:336
AAX_CIndex AAX_CFieldIndex
Not used by AAX plug-ins (except in AAX_FIELD_INDEX macro)
Definition: AAX.h:349
uint32_t AAX_CSelector
Definition: AAX.h:330
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:138
AAX_Component< void >::CBackgroundProc AAX_CBackgroundProc
A user-defined callback that AAX calls in the AAX Idle time.
Definition: AAX_Callbacks.h:149
AAX_Component< void >::CProcessProc AAX_CProcessProc
A user-defined callback that AAX calls to process data packets and/or audio.
Definition: AAX_Callbacks.h:102
AAX_EMIDINodeType
MIDI node types.
Definition: AAX_Enums.h:961
AAX_EDataInPortType
Property value for whether a data in port should be buffered or not.
Definition: AAX_Enums.h:1042
Versioned description interface for an AAX plug-in algorithm callback.
Description interface for an AAX plug-in algorithm.
Cross-platform interface for access to the host's direct memory access (DMA) facilities.
AAX_EProperty
The list of properties that can be added to an AAX_IPropertyMap.
Definition: AAX_Properties.h:72
COM compatible IUnknown C++ interface.
Definition: AAX_ACFInterface.doxygen:248
Versioned description interface for an AAX plug-in algorithm callback.
Definition: AAX_IACFComponentDescriptor.h:43
Versioned description interface for an AAX plug-in algorithm callback.
Definition: AAX_IACFComponentDescriptor.h:79
Versioned description interface for an AAX plug-in algorithm callback.
Definition: AAX_IACFComponentDescriptor.h:87
Description interface for an AAX plug-in component.
Definition: AAX_IComponentDescriptor.h:47
Cross-platform interface for access to the host's direct memory access (DMA) facilities.
Definition: AAX_IDma.h:53
Generic plug-in description property map.
Definition: AAX_IPropertyMap.h:59
Version-managed concrete AAX_IComponentDescriptor class.
Definition: AAX_VComponentDescriptor.h:50
AAX_Result AddAudioOut(AAX_CFieldIndex inFieldIndex) AAX_OVERRIDE
Subscribes an audio output context field.
AAX_Result AddMIDINode(AAX_CFieldIndex inFieldIndex, AAX_EMIDINodeType inNodeType, const char inNodeName[], uint32_t channelMask) AAX_OVERRIDE
Adds a MIDI node field to the plug-in's context.
AAX_Result AddDataInPort(AAX_CFieldIndex inFieldIndex, uint32_t inPacketSize, AAX_EDataInPortType inPortType) AAX_OVERRIDE
Adds a custom data port to the algorithm context.
virtual AAX_Result AddProcessProc_Native(AAX_CProcessProc inProcessProc, AAX_IPropertyMap *inProperties=NULL, AAX_CInstanceInitProc inInstanceInitProc=NULL, AAX_CBackgroundProc inBackgroundProc=NULL, AAX_CSelector *outProcID=NULL) AAX_OVERRIDE
Registers an algorithm processing entrypoint (process procedure) for the native architecture.
IACFUnknown * GetIUnknown(void) const
AAX_Result Clear() AAX_OVERRIDE
Clears the descriptor.
AAX_Result AddClock(AAX_CFieldIndex inFieldIndex) AAX_OVERRIDE
Subscribes a clock context field.
AAX_Result AddAuxOutputStem(AAX_CFieldIndex inFieldIndex, int32_t inStemFormat, const char inNameUTF8[]) AAX_OVERRIDE
Adds an auxiliary output stem for a plug-in.
AAX_Result AddAudioIn(AAX_CFieldIndex inFieldIndex) AAX_OVERRIDE
Subscribes an audio input context field.
AAX_Result AddSampleRate(AAX_CFieldIndex inFieldIndex) AAX_OVERRIDE
Subscribes a sample rate context field.
virtual AAX_Result AddProcessProc(AAX_IPropertyMap *inProperties, AAX_CSelector *outProcIDs=NULL, int32_t inProcIDsSize=0) AAX_OVERRIDE
Registers one or more algorithm processing entrypoints (process procedures)
AAX_Result AddTemporaryData(AAX_CFieldIndex inFieldIndex, uint32_t inDataElementSize) AAX_OVERRIDE
Adds a block of data to a context that is not saved between callbacks and is scaled by the system buf...
AAX_Result AddSideChainIn(AAX_CFieldIndex inFieldIndex) AAX_OVERRIDE
Subscribes a side-chain input context field.
~AAX_VComponentDescriptor() AAX_OVERRIDE
virtual AAX_Result AddProcessProc_TI(const char inDLLFileNameUTF8[], const char inProcessProcSymbol[], AAX_IPropertyMap *inProperties=NULL, const char inInstanceInitProcSymbol[]=NULL, const char inBackgroundProcSymbol[]=NULL, AAX_CSelector *outProcID=NULL) AAX_OVERRIDE
Registers an algorithm processing entrypoint (process procedure) for the native architecture.
AAX_Result AddPrivateData(AAX_CFieldIndex inFieldIndex, int32_t inDataSize, uint32_t inOptions) AAX_OVERRIDE
Adds a private data port to the algorithm context.
AAX_IPropertyMap * NewPropertyMap() const AAX_OVERRIDE
Creates a new, empty property map.
AAX_Result AddDmaInstance(AAX_CFieldIndex inFieldIndex, AAX_IDma::EMode inDmaMode) AAX_OVERRIDE
Adds a DMA field to the plug-in's context.
AAX_VComponentDescriptor(IACFUnknown *pUnkHost)
AAX_Result AddReservedField(AAX_CFieldIndex inFieldIndex, uint32_t inFieldType) AAX_OVERRIDE
Subscribes a context field to host-provided services or information.
AAX_Result AddMeters(AAX_CFieldIndex inFieldIndex, const AAX_CTypeID *inMeterIDs, const uint32_t inMeterCount) AAX_OVERRIDE
Adds a meter field to the plug-in's context.
AAX_IPropertyMap * DuplicatePropertyMap(AAX_IPropertyMap *inPropertyMap) const AAX_OVERRIDE
Creates a new property map using an existing property map.
AAX_Result AddAudioBufferLength(AAX_CFieldIndex inFieldIndex) AAX_OVERRIDE
Subscribes a buffer length context field.
Version-managed concrete AAX_IPropertyMap class.
Definition: AAX_VPropertyMap.h:49