AAX SDK  2.4.1
Avid Audio Extensions Development Kit
AAX_VController.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_VCONTROLLER_H
25 #define AAX_VCONTROLLER_H
26 
27 #include "AAX_IController.h"
28 #include "AAX_IACFController.h"
29 
30 #ifdef __clang__
31 #pragma clang diagnostic push
32 #pragma clang diagnostic ignored "-Wself-assign"
33 #pragma clang diagnostic ignored "-Wnon-virtual-dtor"
34 #endif
35 
36 #include "ACFPtr.h"
37 
38 #ifdef __clang__
39 #pragma clang diagnostic pop
40 #endif
41 
42 class IACFUnknown;
43 class IACFComponentFactory;
47 
56 {
57 public:
59  ~AAX_VController() override;
60 
61  //Host Information Getters
66  AAX_Result GetSignalLatency( int32_t* outSamples) const AAX_OVERRIDE;
67  AAX_Result GetHybridSignalLatency(int32_t* outSamples) const AAX_OVERRIDE;
70 
71  AAX_Result GetCycleCount( AAX_EProperty inWhichCycleCount, AAX_CPropertyValue* outNumCycles) const AAX_OVERRIDE;
74  AAX_Result GetHostName(AAX_IString* outHostNameString) const AAX_OVERRIDE;
75 
76  //Host Information Setters (Dynamic info)
77  AAX_Result SetSignalLatency(int32_t inNumSamples) AAX_OVERRIDE;
78  AAX_Result SetCycleCount( AAX_EProperty* inWhichCycleCounts, AAX_CPropertyValue* iValues, int32_t numValues) AAX_OVERRIDE;
79 
80  //Posting functions.
81  AAX_Result PostPacket ( AAX_CFieldIndex inFieldIndex, const void * inPayloadP, uint32_t inPayloadSize ) AAX_OVERRIDE;
82 
83  // Notification functions
84  AAX_Result SendNotification ( AAX_CTypeID inNotificationType, const void* inNotificationData, uint32_t inNotificationDataSize ) AAX_OVERRIDE;
86 
87  //Metering functions
88  AAX_Result GetCurrentMeterValue ( AAX_CTypeID inMeterID, float * outMeterValue ) const AAX_OVERRIDE;
89  AAX_Result GetMeterPeakValue( AAX_CTypeID inMeterID, float * outMeterPeakValue ) const AAX_OVERRIDE;
91  AAX_Result GetMeterClipped ( AAX_CTypeID inMeterID, AAX_CBoolean * outClipped ) const AAX_OVERRIDE;
93  AAX_Result GetMeterCount ( uint32_t * outMeterCount ) const AAX_OVERRIDE;
94 
95  //MIDI functions
97 
98  // PageTables functions
101  virtual
104  AAX_CPropertyValue inProductID,
105  AAX_CPropertyValue inPlugInID,
106  uint32_t inTableType,
107  int32_t inTablePageSize) const AAX_OVERRIDE;
110  virtual
112  CreateTableCopyForLayout(const char * inEffectID,
113  const char * inLayoutName,
114  uint32_t inTableType,
115  int32_t inTablePageSize) const AAX_OVERRIDE;
118  virtual
120  CreateTableCopyForEffectFromFile(const char* inPageTableFilePath,
121  AAX_ETextEncoding inFilePathEncoding,
122  AAX_CPropertyValue inManufacturerID,
123  AAX_CPropertyValue inProductID,
124  AAX_CPropertyValue inPlugInID,
125  uint32_t inTableType,
126  int32_t inTablePageSize) const AAX_OVERRIDE;
129  virtual
131  CreateTableCopyForLayoutFromFile(const char* inPageTableFilePath,
132  AAX_ETextEncoding inFilePathEncoding,
133  const char* inLayoutName,
134  uint32_t inTableType,
135  int32_t inTablePageSize) const AAX_OVERRIDE;
136 
137 private:
146  ACFPtr<AAX_IACFPageTable_V2> CreatePageTable() const;
148 
149 private:
150  ACFPtr<AAX_IACFController> mIController;
151  ACFPtr<AAX_IACFController_V2> mIControllerV2;
152  ACFPtr<AAX_IACFController_V3> mIControllerV3;
153 
154  // AAX_IACFPageTableController interface methods are aggregated into AAX_IController
155  ACFPtr<AAX_IACFPageTableController> mIPageTableController;
156  ACFPtr<AAX_IACFPageTableController_V2> mIPageTableControllerV2;
157 
158  ACFPtr<IACFComponentFactory> mComponentFactory;
159 };
160 
161 
162 #endif // AAX_VCONTROLLER_H
163 
float AAX_CSampleRate
Literal sample rate value used by the sample rate field. For AAX_eProperty_SampleRate,...
Definition: AAX.h:334
int64_t AAX_CTimeOfDay
Hardware running clock value. MIDI packet time stamps are measured against this clock....
Definition: AAX.h:332
int32_t AAX_Result
Definition: AAX.h:337
int32_t AAX_CTargetPlatform
Matches type of target platform.
Definition: AAX.h:347
uint8_t AAX_CBoolean
Cross-compiler boolean type used by AAX interfaces.
Definition: AAX.h:329
int32_t AAX_CPropertyValue
32-bit property values
Definition: AAX.h:338
int64_t AAX_CTransportCounter
Offset of samples from transport start. Same as TimeOfDay, but added for new interfaces as TimeOfDay ...
Definition: AAX.h:333
#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
AAX_ETextEncoding
Describes possible string encodings.
Definition: AAX_Enums.h:1310
AAX_EStemFormat
Stem format definitions.
Definition: AAX_Enums.h:232
Interface for the AAX host's view of a single instance of an effect. Used by both clients of the AAXH...
Interface for the AAX host's view of a single instance of an effect.
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
Packet structure for MIDI data.
Definition: AAX.h:637
Versioned interface to the host's representation of a plug-in instance's page table.
Definition: AAX_IACFPageTable.h:50
Interface for host operations related to the page tables for this plug-in.
Definition: AAX_IACFPageTableController.h:32
Interface for host operations related to the page tables for this plug-in.
Definition: AAX_IACFPageTableController.h:120
Interface for the AAX host's view of a single instance of an effect. Used by both clients of the AAX ...
Definition: AAX_IController.h:44
Interface to the host's representation of a plug-in instance's page table.
Definition: AAX_IPageTable.h:28
A simple string container that can be passed across a binary boundary. This class,...
Definition: AAX_IString.h:41
Version-managed concrete Controller class.
Definition: AAX_VController.h:56
AAX_Result GetOutputStemFormat(AAX_EStemFormat *outStemFormat) const AAX_OVERRIDE
CALL: Returns the plug-in's output stem format.
~AAX_VController() override
AAX_Result GetSampleRate(AAX_CSampleRate *outSampleRate) const AAX_OVERRIDE
CALL: Returns the current literal sample rate.
AAX_Result GetHostName(AAX_IString *outHostNameString) const AAX_OVERRIDE
CALL: Returns name of the host application this plug-in instance is being loaded by....
AAX_Result GetMeterClipped(AAX_CTypeID inMeterID, AAX_CBoolean *outClipped) const AAX_OVERRIDE
CALL: Retrieves the clipped flag from a host-managed plug-in meter.
AAX_Result PostPacket(AAX_CFieldIndex inFieldIndex, const void *inPayloadP, uint32_t inPayloadSize) AAX_OVERRIDE
CALL: Posts a data packet to the host for routing between plug-in components.
AAX_Result GetIsAudioSuite(AAX_CBoolean *outIsAudioSuite) const AAX_OVERRIDE
CALL: Returns true for AudioSuite instances.
AAX_Result GetNextMIDIPacket(AAX_CFieldIndex *outPort, AAX_CMidiPacket *outPacket) AAX_OVERRIDE
CALL: Retrieves MIDI packets for described MIDI nodes.
AAX_Result GetInputStemFormat(AAX_EStemFormat *outStemFormat) const AAX_OVERRIDE
CALL: Returns the plug-in's input stem format.
AAX_Result SetSignalLatency(int32_t inNumSamples) AAX_OVERRIDE
CALL: Submits a request to change the delay compensation value that the host uses to account for the ...
virtual AAX_IPageTable * CreateTableCopyForEffect(AAX_CPropertyValue inManufacturerID, AAX_CPropertyValue inProductID, AAX_CPropertyValue inPlugInID, uint32_t inTableType, int32_t inTablePageSize) const AAX_OVERRIDE
Copy the current page table data for a particular plug-in type.
AAX_Result ClearMeterPeakValue(AAX_CTypeID inMeterID) const AAX_OVERRIDE
CALL: Clears the peak value from a host-managed plug-in meter.
virtual AAX_IPageTable * CreateTableCopyForLayout(const char *inEffectID, const char *inLayoutName, uint32_t inTableType, int32_t inTablePageSize) const AAX_OVERRIDE
Copy the current page table data for a particular plug-in effect and page table layout.
AAX_Result GetTODLocation(AAX_CTimeOfDay *outTODLocation) const AAX_OVERRIDE
CALL: Returns the current Time Of Day (TOD) of the system.
AAX_Result GetCycleCount(AAX_EProperty inWhichCycleCount, AAX_CPropertyValue *outNumCycles) const AAX_OVERRIDE
CALL: returns the plug-in's current real-time DSP cycle count.
AAX_Result SetCycleCount(AAX_EProperty *inWhichCycleCounts, AAX_CPropertyValue *iValues, int32_t numValues) AAX_OVERRIDE
CALL: Indicates a change in the plug-in's real-time DSP cycle count.
AAX_Result GetMeterPeakValue(AAX_CTypeID inMeterID, float *outMeterPeakValue) const AAX_OVERRIDE
CALL: Retrieves the currently held peak value of a host-managed plug-in meter.
AAX_Result GetSignalLatency(int32_t *outSamples) const AAX_OVERRIDE
CALL: Returns the most recent signal (algorithmic) latency that has been published by the plug-in.
AAX_Result GetPlugInTargetPlatform(AAX_CTargetPlatform *outTargetPlatform) const AAX_OVERRIDE
CALL: Returns execution platform type, native or TI.
AAX_Result GetHybridSignalLatency(int32_t *outSamples) const AAX_OVERRIDE
CALL: Returns the latency between the algorithm normal input samples and the inputs returning from th...
AAX_Result GetMeterCount(uint32_t *outMeterCount) const AAX_OVERRIDE
CALL: Retrieves the number of host-managed meters registered by a plug-in.
virtual AAX_IPageTable * CreateTableCopyForEffectFromFile(const char *inPageTableFilePath, AAX_ETextEncoding inFilePathEncoding, AAX_CPropertyValue inManufacturerID, AAX_CPropertyValue inProductID, AAX_CPropertyValue inPlugInID, uint32_t inTableType, int32_t inTablePageSize) const AAX_OVERRIDE
Copy the current page table data for a particular plug-in type.
AAX_Result GetCurrentMeterValue(AAX_CTypeID inMeterID, float *outMeterValue) const AAX_OVERRIDE
CALL: Retrieves the current value of a host-managed plug-in meter.
AAX_Result SendNotification(AAX_CTypeID inNotificationType) AAX_OVERRIDE
CALL: Sends an event to the GUI (no payload) Not an AAX interface method
AAX_Result ClearMeterClipped(AAX_CTypeID inMeterID) const AAX_OVERRIDE
CALL: Clears the clipped flag from a host-managed plug-in meter.
AAX_Result GetEffectID(AAX_IString *outEffectID) const AAX_OVERRIDE
AAX_VController(IACFUnknown *pUnknown)
AAX_Result SendNotification(AAX_CTypeID inNotificationType, const void *inNotificationData, uint32_t inNotificationDataSize) AAX_OVERRIDE
CALL: Dispatch a notification.
virtual AAX_IPageTable * CreateTableCopyForLayoutFromFile(const char *inPageTableFilePath, AAX_ETextEncoding inFilePathEncoding, const char *inLayoutName, uint32_t inTableType, int32_t inTablePageSize) const AAX_OVERRIDE
Copy the current page table data for a particular plug-in effect and page table layout.
AAX_Result GetCurrentAutomationTimestamp(AAX_CTransportCounter *outTimestamp) const AAX_OVERRIDE
CALL: Returns the current automation timestamp if called during the GenerateCoefficients() call AND t...