Version
Wwise SDK 2021.1.10
PluginBaseInterface.h
Go to the documentation of this file.
1 /*******************************************************************************
2 The content of this file includes portions of the AUDIOKINETIC Wwise Technology
3 released in source code form as part of the SDK installer package.
4 
5 Commercial License Usage
6 
7 Licensees holding valid commercial licenses to the AUDIOKINETIC Wwise Technology
8 may use this file in accordance with the end user license agreement provided
9 with the software or, alternatively, in accordance with the terms contained in a
10 written agreement between you and Audiokinetic Inc.
11 
12 Apache License Usage
13 
14 Alternatively, this file may be used under the Apache License, Version 2.0 (the
15 "Apache License"); you may not use this file except in compliance with the
16 Apache License. You may obtain a copy of the Apache License at
17 http://www.apache.org/licenses/LICENSE-2.0.
18 
19 Unless required by applicable law or agreed to in writing, software distributed
20 under the Apache License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
21 OR CONDITIONS OF ANY KIND, either express or implied. See the Apache License for
22 the specific language governing permissions and limitations under the License.
23 
24  Version: v2021.1.10 Build: 7883
25  Copyright (c) 2006-2022 Audiokinetic Inc.
26 *******************************************************************************/
27 
28 /**
29  * \brief Wwise Authoring Plug-ins - Standardized header for all the plug-in interfaces.
30  * \file AK/Wwise/Plugin/PluginBaseInterface.h
31  */
32 
33 #pragma once
34 
35 #include "PluginDef.h"
36 
37 #ifdef __cplusplus
38 #include <type_traits> // std::underlying_type
39 #endif
40 
41 /** \addtogroup global
42  * @{
43  */
44 
45 /**
46  * \brief List of every single interface known to the plug-in system
47  *
48  * Once the version of a plug-in interface is official, it should always keep the same ID. No ID should be reused,
49  * and the order should stay exactly the same all the time.
50  */
51 typedef enum
52 {
53  AK_WWISE_PLUGIN_INTERFACE_TYPE_UNKNOWN, ///< <b>2021.1</b> Unknown plug-in ID (0 - error, invalid, uninitialized)
54  AK_WWISE_PLUGIN_INTERFACE_TYPE_PLUGIN_CONTAINER, ///< <b>2021.1</b> Plug-in container plug-in. Contains all the other plug-ins. ak_wwise_plugin_container
55 
56  AK_WWISE_PLUGIN_INTERFACE_TYPE_ANALYSIS_TASK, ///< <b>2021.1</b> Analysis task plug-in. ak_wwise_plugin_analysis_task_v1
57  AK_WWISE_PLUGIN_INTERFACE_TYPE_AUDIO_PLUGIN, ///< <b>2021.1</b> Audio backend plug-in. ak_wwise_plugin_audio_plugin_v1
58  AK_WWISE_PLUGIN_INTERFACE_TYPE_CONVERSION, ///< <b>2021.1</b> Conversion plug-in. ak_wwise_plugin_conversion_v1
59  AK_WWISE_PLUGIN_INTERFACE_TYPE_CUSTOM_DATA, ///< <b>2021.1</b> Custom Data reader backend part. ak_wwise_plugin_custom_data_v1
60  AK_WWISE_PLUGIN_INTERFACE_TYPE_FEEDBACK_AWARE, ///< <b>2021.1</b> Feedback-aware frontend part. ak_wwise_plugin_feedback_aware_v1
61  AK_WWISE_PLUGIN_INTERFACE_TYPE_FIRST_TIME_CREATION_MESSAGE, ///< <b>2021.1</b> First Time Creation Message plug-in. ak_wwise_plugin_first_time_creation_message_v1
62  AK_WWISE_PLUGIN_INTERFACE_TYPE_LICENSE, ///< <b>2021.1</b> Licensing. ak_wwise_plugin_license_v1
63  AK_WWISE_PLUGIN_INTERFACE_TYPE_MEDIA_CONVERTER, ///< <b>2021.1</b> Media Converter backend part. ak_wwise_plugin_media_converter_v1
64  AK_WWISE_PLUGIN_INTERFACE_TYPE_NOTIFICATIONS_HOST, ///< <b>2021.1</b> Host modification notification. ak_wwise_plugin_notifications_host_v1
65  AK_WWISE_PLUGIN_INTERFACE_TYPE_NOTIFICATIONS_MONITOR, ///< <b>2021.1</b> Monitor data notification. ak_wwise_plugin_notifications_monitor_v1
66  AK_WWISE_PLUGIN_INTERFACE_TYPE_NOTIFICATIONS_OBJECT_MEDIA, ///< <b>2021.1</b> Object Media modification notification. ak_wwise_plugin_notifications_object_media_v1
67  AK_WWISE_PLUGIN_INTERFACE_TYPE_NOTIFICATIONS_OBJECT_STORE, ///< <b>2021.1</b> Object Store modification notification. ak_wwise_plugin_notifications_object_store_v1
68  AK_WWISE_PLUGIN_INTERFACE_TYPE_NOTIFICATIONS_PROPERTY_SET, ///< <b>2021.1</b> Property Set modification notification. ak_wwise_plugin_notifications_property_set_v1
69  AK_WWISE_PLUGIN_INTERFACE_TYPE_PROPERTY_DISPLAY_NAME, ///< <b>2021.1</b> Property display name overrides. ak_wwise_plugin_property_display_name_v1
70  AK_WWISE_PLUGIN_INTERFACE_TYPE_SINK_DEVICES, ///< <b>2021.1</b> Sink Devices enumeration plug-in. ak_wwise_plugin_sink_devices_v1
71  AK_WWISE_PLUGIN_INTERFACE_TYPE_SOURCE, ///< <b>2021.1</b> Source-specific backend part. ak_wwise_plugin_source_v1
72  AK_WWISE_PLUGIN_INTERFACE_TYPE_UNDO_EVENT, ///< <b>2021.1</b> Undo Event. ak_wwise_plugin_undo_event_v1
73 
74  AK_WWISE_PLUGIN_INTERFACE_TYPE_GUI_CONVERSION_WINDOWS, ///< <b>2021.1</b> Conversion frontend plug-in for Windows. ak_wwise_plugin_gui_conversion_windows_v1
75  AK_WWISE_PLUGIN_INTERFACE_TYPE_GUI_WINDOWS, ///< <b>2021.1</b> Audio frontend plug-in for Windows. ak_wwise_plugin_gui_windows_v1
76 
77  AK_WWISE_PLUGIN_INTERFACE_TYPE_HOST, ///< <b>2021.1</b> Host services. ak_wwise_plugin_host_v1
78  AK_WWISE_PLUGIN_INTERFACE_TYPE_HOST_CONVERSION_HELPERS, ///< <b>2021.1</b> Conversion helpers host services. ak_wwise_plugin_host_conversion_helpers_v1
79  AK_WWISE_PLUGIN_INTERFACE_TYPE_HOST_OBJECT_MEDIA, ///< <b>2021.1</b> Object Media host service. ak_wwise_plugin_host_object_media_v1
80  AK_WWISE_PLUGIN_INTERFACE_TYPE_HOST_OBJECT_STORE, ///< <b>2021.1</b> Object Store host service. ak_wwise_plugin_host_object_store_v1
81  AK_WWISE_PLUGIN_INTERFACE_TYPE_HOST_PROPERTY_SET, ///< <b>2021.1</b> Property Set host service. ak_wwise_plugin_host_property_set_v1
82  AK_WWISE_PLUGIN_INTERFACE_TYPE_HOST_UNDO_MANAGER, ///< <b>2021.1</b> Undo Manager host service. ak_wwise_plugin_host_undo_manager_v1
83  AK_WWISE_PLUGIN_INTERFACE_TYPE_HOST_DATA_WRITER, ///< <b>2021.1</b> Data Writer host service. ak_wwise_plugin_host_data_writer_v1
84  AK_WWISE_PLUGIN_INTERFACE_TYPE_HOST_XML, ///< <b>2021.1</b> XML reading and writing host services. ak_wwise_plugin_host_xml_v1
85 
86  AK_WWISE_PLUGIN_INTERFACE_TYPE_LINK_BACKEND, ///< <b>2021.1</b> Link to the backend plug-in. ak_wwise_plugin_link_backend_v1
87  AK_WWISE_PLUGIN_INTERFACE_TYPE_LINK_FRONTEND, ///< <b>2021.1</b> Link to the frontend plug-ins. ak_wwise_plugin_link_frontend_v1
93 
94  AK_WWISE_PLUGIN_INTERFACE_TYPE_TESTSERVICE, ///< \internal <b>Reserved</b>
95  /** Number of plug-in interfaces. Last value. */
98 
99 /**
100  * \brief Interface description and base class for every Wwise Authoring plug-in interface.
101  *
102  * The interface description is expected to never change, and to contain two basic values: the interface type, which is
103  * an incrementing value for every single possibility of known interfaces, as well as the version of this interface,
104  * starting from 1 at the interface's public release.
105  *
106  * An interface can either be provided by the plug-in (for example, AK_WWISE_PLUGIN_INTERFACE_TYPE_AUDIO_PLUGIN), where
107  * the plug-in provides the functionality of the callback; or it can be requested to the Wwise Authoring host
108  * (for example, AK_WWISE_PLUGIN_INTERFACE_TYPE_HOST_PROPERTY_SET), where the data will be filled by the host for
109  * the plug-in to call.
110  *
111  * All requested or provided interfaces are deemed mandatory in order to instantiate a plug-in. An unknown or an invalid
112  * interface in a context (AK_WWISE_PLUGIN_INTERFACE_TYPE_GUI_WINDOWS in WwiseConsole.exe or on Linux) causes the host
113  * to skip the plug-in.
114  */
115 #pragma pack(push, 1)
117 {
118  ak_wwise_plugin_interface_type m_interface : 32; ///< Interface type (see \ref ak_wwise_plugin_interface_type)
119  uint32_t m_version : 32; ///< Version of the interface
120 
121 #ifdef __cplusplus
122  constexpr ak_wwise_plugin_base_interface(decltype(m_interface) in_interface, decltype(m_version) in_version) : m_interface(in_interface), m_version(in_version)
123  {
124  }
126  constexpr ak_wwise_plugin_base_interface(std::underlying_type<decltype(m_interface)>::type in_interface, decltype(m_version) in_version) : ak_wwise_plugin_base_interface(static_cast<ak_wwise_plugin_interface_type>(in_interface), in_version) {}
127 #endif
128 };
129 #pragma pack(pop)
130 
131 #define AK_WWISE_PLUGIN_BASE_INTERFACE_FROM_ID(/* ak_wwise_plugin_interface_type */ in_interface, /* uint32_t */ in_version) \
132  { \
133  .m_interface = in_interface, \
134  .m_version = in_version \
135  }
136 
137 /**
138  * @}
139  */
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_AUDIO_PLUGIN
2021.1 Audio backend plug-in. ak_wwise_plugin_audio_plugin_v1
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_NATIVE_IWAUDIODEVICEPLUGIN
ak_wwise_plugin_interface_type
List of every single interface known to the plug-in system.
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_NATIVE_IWCONVERSIONPLUGIN
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_FEEDBACK_AWARE
2021.1 Feedback-aware frontend part. ak_wwise_plugin_feedback_aware_v1
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_HOST
2021.1 Host services. ak_wwise_plugin_host_v1
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_PLUGIN_CONTAINER
2021.1 Plug-in container plug-in. Contains all the other plug-ins. ak_wwise_plugin_container
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_HOST_PROPERTY_SET
2021.1 Property Set host service. ak_wwise_plugin_host_property_set_v1
ak_wwise_plugin_interface_type m_interface
Interface type (see ak_wwise_plugin_interface_type)
constexpr ak_wwise_plugin_base_interface()
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_HOST_DATA_WRITER
2021.1 Data Writer host service. ak_wwise_plugin_host_data_writer_v1
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_GUI_CONVERSION_WINDOWS
2021.1 Conversion frontend plug-in for Windows. ak_wwise_plugin_gui_conversion_windows_v1
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_NOTIFICATIONS_MONITOR
2021.1 Monitor data notification. ak_wwise_plugin_notifications_monitor_v1
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_UNDO_EVENT
2021.1 Undo Event. ak_wwise_plugin_undo_event_v1
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_NATIVE_IWEFFECTPLUGIN
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_TESTSERVICE
uint32_t m_version
Version of the interface.
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_NOTIFICATIONS_HOST
2021.1 Host modification notification. ak_wwise_plugin_notifications_host_v1
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_HOST_XML
2021.1 XML reading and writing host services. ak_wwise_plugin_host_xml_v1
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_SINK_DEVICES
2021.1 Sink Devices enumeration plug-in. ak_wwise_plugin_sink_devices_v1
constexpr ak_wwise_plugin_base_interface(decltype(m_interface) in_interface, decltype(m_version) in_version)
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_HOST_OBJECT_STORE
2021.1 Object Store host service. ak_wwise_plugin_host_object_store_v1
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_SOURCE
2021.1 Source-specific backend part. ak_wwise_plugin_source_v1
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_ANALYSIS_TASK
2021.1 Analysis task plug-in. ak_wwise_plugin_analysis_task_v1
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_NOTIFICATIONS_PROPERTY_SET
2021.1 Property Set modification notification. ak_wwise_plugin_notifications_property_set_v1
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_HOST_OBJECT_MEDIA
2021.1 Object Media host service. ak_wwise_plugin_host_object_media_v1
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_NATIVE_ISERVICEPROVIDER
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_CONVERSION
2021.1 Conversion plug-in. ak_wwise_plugin_conversion_v1
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_FIRST_TIME_CREATION_MESSAGE
2021.1 First Time Creation Message plug-in. ak_wwise_plugin_first_time_creation_message_v1
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_HOST_UNDO_MANAGER
2021.1 Undo Manager host service. ak_wwise_plugin_host_undo_manager_v1
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_PROPERTY_DISPLAY_NAME
2021.1 Property display name overrides. ak_wwise_plugin_property_display_name_v1
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_LICENSE
2021.1 Licensing. ak_wwise_plugin_license_v1
Interface description and base class for every Wwise Authoring plug-in interface.
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_CUSTOM_DATA
2021.1 Custom Data reader backend part. ak_wwise_plugin_custom_data_v1
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_NATIVE_IWSOURCEPLUGIN
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_GUI_WINDOWS
2021.1 Audio frontend plug-in for Windows. ak_wwise_plugin_gui_windows_v1
constexpr ak_wwise_plugin_base_interface(std::underlying_type< decltype(m_interface)>::type in_interface, decltype(m_version) in_version)
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_NOTIFICATIONS_OBJECT_STORE
2021.1 Object Store modification notification. ak_wwise_plugin_notifications_object_store_v1
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_UNKNOWN
2021.1 Unknown plug-in ID (0 - error, invalid, uninitialized)
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_NUM
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_MEDIA_CONVERTER
2021.1 Media Converter backend part. ak_wwise_plugin_media_converter_v1
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_LINK_FRONTEND
2021.1 Link to the frontend plug-ins. ak_wwise_plugin_link_frontend_v1
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_LINK_BACKEND
2021.1 Link to the backend plug-in. ak_wwise_plugin_link_backend_v1
Wwise Authoring Plug-ins - Base plug-in definitions.
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_NOTIFICATIONS_OBJECT_MEDIA
2021.1 Object Media modification notification. ak_wwise_plugin_notifications_object_media_v1
@ AK_WWISE_PLUGIN_INTERFACE_TYPE_HOST_CONVERSION_HELPERS
2021.1 Conversion helpers host services. ak_wwise_plugin_host_conversion_helpers_v1