Version
menu_open
link
Wwise SDK 2023.1.2
AkTypes.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  Copyright (c) 2024 Audiokinetic Inc.
25 *******************************************************************************/
26 
27 // AkTypes.h
28 
29 /// \file
30 /// Data type definitions.
31 
32 #ifndef _AK_DATA_TYPES_H_
33 #define _AK_DATA_TYPES_H_
34 
35 // Platform-specific section.
36 //----------------------------------------------------------------------------------------------------
37 #include <AK/AkPlatforms.h>
38 
39 
40 //----------------------------------------------------------------------------------------------------
41 
43 
44 #ifndef NULL
45  #ifdef __cplusplus
46  #define NULL 0
47  #else
48  #define NULL ((void *)0)
49  #endif
50 #endif
51 
52 #ifndef AK_ALIGN
53 #if defined(SWIG)
54 #define AK_ALIGN( _declaration_, _alignment_ ) _declaration_
55 #else
56 #if defined(_MSC_VER)
57 #define AK_ALIGN( _declaration_, _alignment_ ) __declspec( align( _alignment_ ) ) _declaration_
58 #else
59 #define AK_ALIGN( _declaration_, _alignment_ ) _declaration_ __attribute__( ( aligned( _alignment_ ) ) )
60 #endif // _MSC_VER
61 #endif // SWIG
62 #endif // AK_ALIGN
63 
64 #define AK_ALIGN_TO_NEXT_BOUNDARY( __num__, __boundary__ ) (((__num__) + ((__boundary__)-1)) & ~((__boundary__)-1))
65 
66 #if !defined(AK_ENDIANNESS_LITTLE) && !defined(AK_ENDIANNESS_BIG)
67 #define AK_ENDIANNESS_LITTLE
68 #endif
69 
70 ///< AK_UNALIGNED refers to the __unaligned compilation flag available on some platforms. Note that so far, on the tested platform this should always be placed before the pointer symbol *.
71 #ifndef AK_UNALIGNED
72 #if defined(__GNUC__)
73 #define AK_UNALIGNED __attribute__((aligned(1)))
74 #elif defined(_MSC_VER) && !defined(AK_CPU_X86) // __unaligned not supported on 32-bit x86
75 #define AK_UNALIGNED __unaligned
76 #else
77 #define AK_UNALIGNED
78 #endif
79 #endif // AK_UNALIGNED
80 
81 #if (defined(__cplusplus) && __cplusplus >= 201103L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201103L)
82 #define AK_CPP11
83 #endif
84 
85 #if (defined(__cplusplus) && __cplusplus >= 201402L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201402L)
86 #define AK_CPP14
87 #endif
88 
89 #if (defined(__cplusplus) && __cplusplus >= 201703L) || (defined(_MSVC_LANG) && _MSVC_LANG >= 201703L)
90 #define AK_CPP17
91 #endif
92 
93 #if defined(AK_CPP11)
94 #define AK_FINAL final ///< Refers to the C++11 final keyword
95 #else
96 #define AK_FINAL
97 #endif
98 
99 #if defined(AK_CPP17)
100 #define AK_NODISCARD [[nodiscard]] ///< Refers to the C++17 [[nodiscard]] keyword
101 #else
102 #define AK_NODISCARD
103 #endif
104 
105 
106 #if defined(AK_CPU_X86_64) || defined(AK_CPU_ARM_64)
107 #define AK_POINTER_64
108 #endif // #if defined(AK_CPU_X86_64) || defined(AK_CPU_ARM_64)
109 
110 #if !defined(AK_UNUSEDVAR)
111 // use to mark variables as unused to avoid warnings
112 #define AK_UNUSEDVAR(x) ((void)(x))
113 #endif
114 
115 #if defined(AK_SUPPORT_THREADS)
116 #define AK_THREAD_LOCAL thread_local
117 #else
118 #define AK_THREAD_LOCAL
119 #endif
120 
121 // Helper macro to disable optimizations in a specific file (or part of a file)
122 // (no code using these macros should be checked in)
123 #if defined(_MSC_VER)
124 #define AK_DISABLE_OPTIMIZATIONS __pragma(optimize("", off))
125 #define AK_ENABLE_OPTIMIZATIONS __pragma(optimize("", on))
126 #elif defined(__clang__)
127 #define AK_DISABLE_OPTIMIZATIONS _Pragma("clang optimize off")
128 #define AK_ENABLE_OPTIMIZATIONS _Pragma("clang optimize on")
129 #elif defined(__GNUC__)
130 #define AK_DISABLE_OPTIMIZATIONS _Pragma("GCC optimize (\"O0\")")
131 #define AK_ENABLE_OPTIMIZATIONS _Pragma("GCC optimize (\"O2\")")
132 #endif
133 
134 typedef AkUInt32 AkUniqueID; ///< Unique 32-bit ID
135 typedef AkUInt32 AkStateID; ///< State ID
136 typedef AkUInt32 AkStateGroupID; ///< State group ID
137 typedef AkUInt32 AkPlayingID; ///< Playing ID
138 typedef AkInt32 AkTimeMs; ///< Time in ms
139 typedef AkUInt16 AkPortNumber; ///< Port number
140 typedef AkReal32 AkPitchValue; ///< Pitch value
141 typedef AkReal32 AkVolumeValue; ///< Volume value( also apply to LFE )
142 typedef AkUInt64 AkGameObjectID; ///< Game object ID
143 typedef AkReal32 AkLPFType; ///< Low-pass filter type
144 typedef AkInt32 AkMemPoolId; ///< Memory pool ID
145 typedef AkUInt32 AkPluginID; ///< Source or effect plug-in ID
146 typedef AkUInt32 AkCodecID; ///< Codec plug-in ID
147 typedef AkUInt32 AkAuxBusID; ///< Auxilliary bus ID
148 typedef AkInt16 AkPluginParamID; ///< Source or effect plug-in parameter ID
149 typedef AkInt8 AkPriority; ///< Priority
150 typedef AkUInt16 AkDataCompID; ///< Data compression format ID
151 typedef AkUInt16 AkDataTypeID; ///< Data sample type ID
152 typedef AkUInt8 AkDataInterleaveID; ///< Data interleaved state ID
153 typedef AkUInt32 AkSwitchGroupID; ///< Switch group ID
154 typedef AkUInt32 AkSwitchStateID; ///< Switch ID
155 typedef AkUInt32 AkRtpcID; ///< Real time parameter control ID
156 typedef AkReal32 AkRtpcValue; ///< Real time parameter control value
157 typedef AkUInt32 AkBankID; ///< Run time bank ID
158 typedef AkUInt32 AkBankType; ///< Run time bank type
159 typedef AkUInt32 AkFileID; ///< Integer-type file identifier
160 typedef AkUInt32 AkDeviceID; ///< I/O device ID
161 typedef AkUInt32 AkTriggerID; ///< Trigger ID
162 typedef AkUInt32 AkArgumentValueID; ///< Argument value ID
163 typedef AkUInt32 AkChannelMask; ///< Channel mask (similar to WAVE_FORMAT_EXTENSIBLE). Bit values are defined in AkSpeakerConfig.h.
164 typedef AkUInt32 AkModulatorID; ///< Modulator ID
165 typedef AkUInt32 AkAcousticTextureID; ///< Acoustic Texture ID
166 typedef AkUInt32 AkImageSourceID; ///< Image Source ID
167 typedef AkUInt64 AkOutputDeviceID; ///< Audio Output device ID
168 typedef AkUInt32 AkPipelineID; ///< Unique node (bus, voice) identifier for profiling.
169 typedef AkUInt32 AkRayID; ///< Unique (per emitter) identifier for an emitter-listener ray.
170 typedef AkUInt64 AkAudioObjectID; ///< Audio Object ID
171 typedef AkUInt32 AkJobType; ///< Job type identifier
172 
173 // Constants.
174 static const AkPluginID AK_INVALID_PLUGINID = (AkPluginID)-1; ///< Invalid FX ID
175 static const AkPluginID AK_INVALID_SHARE_SET_ID = (AkPluginID)-1; ///< Invalid Share Set ID
176 static const AkGameObjectID AK_INVALID_GAME_OBJECT = (AkGameObjectID)-1; ///< Invalid game object (may also mean all game objects)
177 static const AkUniqueID AK_INVALID_UNIQUE_ID = 0; ///< Invalid unique 32-bit ID
178 static const AkRtpcID AK_INVALID_RTPC_ID = AK_INVALID_UNIQUE_ID;///< Invalid RTPC ID
179 static const AkPlayingID AK_INVALID_PLAYING_ID = AK_INVALID_UNIQUE_ID;///< Invalid playing ID
180 static const AkUInt32 AK_DEFAULT_SWITCH_STATE = 0; ///< Switch selected if no switch has been set yet
181 static const AkMemPoolId AK_INVALID_POOL_ID = -1; ///< Invalid pool ID
182 static const AkMemPoolId AK_DEFAULT_POOL_ID = -1; ///< Default pool ID, same as AK_INVALID_POOL_ID
183 static const AkAuxBusID AK_INVALID_AUX_ID = AK_INVALID_UNIQUE_ID;///< Invalid auxiliary bus ID (or no Aux bus ID)
184 static const AkFileID AK_INVALID_FILE_ID = (AkFileID)-1; ///< Invalid file ID
185 static const AkDeviceID AK_INVALID_DEVICE_ID = (AkDeviceID)-1; ///< Invalid streaming device ID
186 static const AkBankID AK_INVALID_BANK_ID = AK_INVALID_UNIQUE_ID;///< Invalid bank ID
187 static const AkArgumentValueID AK_FALLBACK_ARGUMENTVALUE_ID = 0; ///< Fallback argument value ID
188 static const AkChannelMask AK_INVALID_CHANNELMASK = 0; ///< Invalid channel mask
189 static const AkUInt32 AK_INVALID_OUTPUT_DEVICE_ID = AK_INVALID_UNIQUE_ID;///< Invalid Device ID
190 static const AkPipelineID AK_INVALID_PIPELINE_ID = AK_INVALID_UNIQUE_ID;///< Invalid pipeline ID (for profiling)
191 static const AkAudioObjectID AK_INVALID_AUDIO_OBJECT_ID = (AkAudioObjectID)-1; ///< Invalid audio object ID
192 
193 // Priority.
194 static const AkPriority AK_DEFAULT_PRIORITY = 50; ///< Default sound / I/O priority
195 static const AkPriority AK_MIN_PRIORITY = 0; ///< Minimal priority value [0,100]
196 static const AkPriority AK_MAX_PRIORITY = 100; ///< Maximal priority value [0,100]
197 
198 // Default bank I/O settings.
199 static const AkPriority AK_DEFAULT_BANK_IO_PRIORITY = AK_DEFAULT_PRIORITY; ///< Default bank load I/O priority
200 static const AkReal32 AK_DEFAULT_BANK_THROUGHPUT = 1*1024*1024/1000.f; ///< Default bank load throughput (1 Mb/ms)
201 
202 // Bank version
203 static const AkUInt32 AK_SOUNDBANK_VERSION = 150; ///< Version of the soundbank reader
204 
205 // Job types
206 static const AkJobType AkJobType_Generic = 0; ///< Job type for general-purpose work
207 static const AkJobType AkJobType_AudioProcessing = 1; ///< Job type for DSP work
208 static const AkJobType AkJobType_SpatialAudio = 2; ///< Job type for Spatial Audio computations
209 static const AkUInt32 AK_NUM_JOB_TYPES = 3; ///< Number of possible job types recognized by the Sound Engine
210 
211 /// Standard function call result.
213 {
214  AK_NotImplemented = 0, ///< This feature is not implemented.
215  AK_Success = 1, ///< The operation was successful.
216  AK_Fail = 2, ///< The operation failed.
217  AK_PartialSuccess = 3, ///< The operation succeeded partially.
218  AK_NotCompatible = 4, ///< Incompatible formats
219  AK_AlreadyConnected = 5, ///< The stream is already connected to another node.
220  AK_InvalidFile = 7, ///< The provided file is the wrong format or unexpected values causes the file to be invalid.
221  AK_AudioFileHeaderTooLarge = 8, ///< The file header is too large.
222  AK_MaxReached = 9, ///< The maximum was reached.
223  AK_InvalidID = 14, ///< The ID is invalid.
224  AK_IDNotFound = 15, ///< The ID was not found.
225  AK_InvalidInstanceID = 16, ///< The InstanceID is invalid.
226  AK_NoMoreData = 17, ///< No more data is available from the source.
227  AK_InvalidStateGroup = 20, ///< The StateGroup is not a valid channel.
228  AK_ChildAlreadyHasAParent = 21, ///< The child already has a parent.
229  AK_InvalidLanguage = 22, ///< The language is invalid (applies to the Low-Level I/O).
230  AK_CannotAddItselfAsAChild = 23, ///< It is not possible to add itself as its own child.
231  AK_InvalidParameter = 31, ///< Something is not within bounds, check the documentation of the function returning this code.
232  AK_ElementAlreadyInList = 35, ///< The item could not be added because it was already in the list.
233  AK_PathNotFound = 36, ///< This path is not known.
234  AK_PathNoVertices = 37, ///< Stuff in vertices before trying to start it
235  AK_PathNotRunning = 38, ///< Only a running path can be paused.
236  AK_PathNotPaused = 39, ///< Only a paused path can be resumed.
237  AK_PathNodeAlreadyInList = 40, ///< This path is already there.
238  AK_PathNodeNotInList = 41, ///< This path is not there.
239  AK_DataNeeded = 43, ///< The consumer needs more.
240  AK_NoDataNeeded = 44, ///< The consumer does not need more.
241  AK_DataReady = 45, ///< The provider has available data.
242  AK_NoDataReady = 46, ///< The provider does not have available data.
243  AK_InsufficientMemory = 52, ///< Memory error.
244  AK_Cancelled = 53, ///< The requested action was cancelled (not an error).
245  AK_UnknownBankID = 54, ///< Trying to load a bank using an ID which is not defined.
246  AK_BankReadError = 56, ///< Error while reading a bank.
247  AK_InvalidSwitchType = 57, ///< Invalid switch type (used with the switch container)
248  AK_FormatNotReady = 63, ///< Source format not known yet.
249  AK_WrongBankVersion = 64, ///< The bank version is not compatible with the current bank reader.
250  AK_FileNotFound = 66, ///< File not found.
251  AK_DeviceNotReady = 67, ///< Specified ID doesn't match a valid hardware device: either the device doesn't exist or is disabled.
252  AK_BankAlreadyLoaded = 69, ///< The bank load failed because the bank is already loaded.
253  AK_RenderedFX = 71, ///< The effect on the node is rendered.
254  AK_ProcessNeeded = 72, ///< A routine needs to be executed on some CPU.
255  AK_ProcessDone = 73, ///< The executed routine has finished its execution.
256  AK_MemManagerNotInitialized = 74, ///< The memory manager should have been initialized at this point.
257  AK_StreamMgrNotInitialized = 75, ///< The stream manager should have been initialized at this point.
258  AK_SSEInstructionsNotSupported = 76,///< The machine does not support SSE instructions (required on PC).
259  AK_Busy = 77, ///< The system is busy and could not process the request.
260  AK_UnsupportedChannelConfig = 78, ///< Channel configuration is not supported in the current execution context.
261  AK_PluginMediaNotAvailable = 79, ///< Plugin media is not available for effect.
262  AK_MustBeVirtualized = 80, ///< Sound was Not Allowed to play.
263  AK_CommandTooLarge = 81, ///< SDK command is too large to fit in the command queue.
264  AK_RejectedByFilter = 82, ///< A play request was rejected due to the MIDI filter parameters.
265  AK_InvalidCustomPlatformName= 83, ///< Detecting incompatibility between Custom platform of banks and custom platform of connected application
266  AK_DLLCannotLoad = 84, ///< Plugin DLL could not be loaded, either because it is not found or one dependency is missing.
267  AK_DLLPathNotFound = 85, ///< Plugin DLL search path could not be found.
268  AK_NoJavaVM = 86, ///< No Java VM provided in AkInitSettings.
269  AK_OpenSLError = 87, ///< OpenSL returned an error. Check error log for more details.
270  AK_PluginNotRegistered = 88, ///< Plugin is not registered. Make sure to implement a AK::PluginRegistration class for it and use AK_STATIC_LINK_PLUGIN in the game binary.
271  AK_DataAlignmentError = 89, ///< A pointer to audio data was not aligned to the platform's required alignment (check AkTypes.h in the platform-specific folder)
272  AK_DeviceNotCompatible = 90, ///< Incompatible Audio device.
273  AK_DuplicateUniqueID = 91, ///< Two Wwise objects share the same ID.
274  AK_InitBankNotLoaded = 92, ///< The Init bank was not loaded yet, the sound engine isn't completely ready yet.
275  AK_DeviceNotFound = 93, ///< The specified device ID does not match with any of the output devices that the sound engine is currently using.
276  AK_PlayingIDNotFound = 94, ///< Calling a function with a playing ID that is not known.
277  AK_InvalidFloatValue = 95, ///< One parameter has a invalid float value such as NaN, INF or FLT_MAX.
278  AK_FileFormatMismatch = 96, ///< Media file format unexpected
279  AK_NoDistinctListener = 97, ///< No distinct listener provided for AddOutput
280  AK_ACP_Error = 98, ///< Generic XMA decoder error.
281  AK_ResourceInUse = 99, ///< Resource is in use and cannot be released.
282  AK_InvalidBankType = 100, ///< Invalid bank type. The bank type was either supplied through a function call (e.g. LoadBank) or obtained from a bank loaded from memory.
283  AK_AlreadyInitialized = 101, ///< Init() was called but that element was already initialized.
284  AK_NotInitialized = 102, ///< The component being used is not initialized. Most likely AK::SoundEngine::Init() was not called yet, or AK::SoundEngine::Term was called too early.
285  AK_FilePermissionError = 103, ///< The file access permissions prevent opening a file.
286  AK_UnknownFileError = 104, ///< Rare file error occured, as opposed to AK_FileNotFound or AK_FilePermissionError. This lumps all unrecognized OS file system errors.
287  AK_TooManyConcurrentOperations = 105, ///< When using StdStream, file operations can be blocking or not. When not blocking, operations need to be synchronized externally properly. If not, this error occurs.
288  AK_InvalidFileSize = 106, ///< The file requested was found and opened but is either 0 bytes long or not the expected size. This usually point toward a Low Level IO Hook implementation error.
289  AK_Deferred = 107, ///< Returned by functions to indicate to the caller the that the operation is done asynchronously. Used by Low Level IO Hook implementations when async operation are suppored by the hardware.
290  AK_FilePathTooLong = 108, ///< The combination of base path and file name exceeds maximum buffer lengths.
291  AK_InvalidState = 109, ///< This method should not be called when the object is in its current state.
292 };
293 
294 /// Game sync group type
296 {
297  // should stay set as Switch = 0 and State = 1
298  AkGroupType_Switch = 0, ///< Type switch
299  AkGroupType_State = 1 ///< Type state
300 };
301 
302 /// Configured audio settings
304 {
305  AkUInt32 uNumSamplesPerFrame; ///< Number of samples per audio frame (256, 512, 1024 or 2048).
306  AkUInt32 uNumSamplesPerSecond; ///< Number of samples per second.
307 };
308 
310 {
311  AkDeviceState_Unknown = 0, ///< The audio device state is unknown or invalid.
312  AkDeviceState_Active = 1 << 0, ///< The audio device is active That is, the audio adapter that connects to the endpoint device is present and enabled.
313  AkDeviceState_Disabled = 1 << 1, ///< The audio device is disabled.
314  AkDeviceState_NotPresent = 1 << 2, ///< The audio device is not present because the audio adapter that connects to the endpoint device has been removed from the system.
315  AkDeviceState_Unplugged = 1 << 3, ///< The audio device is unplugged.
317 };
318 
320 {
321  AkUInt32 idDevice; ///< Device ID for Wwise. This is the same as what is returned from AK::GetDeviceID and AK::GetDeviceIDFromName. Use it to specify the main device in AkPlatformInitSettings.idAudioDevice or in AK::SoundEngine::AddSecondaryOutput.
322  AkOSChar deviceName[AK_MAX_PATH]; ///< The user-friendly name for the device.
323  AkAudioDeviceState deviceStateMask = AkDeviceState_Unknown; ///< Bitmask used to filter the device based on their state.
324  bool isDefaultDevice = false; ///< Identify default device. Always false when not supported.
325 };
326 
327 /// This structure allows the game to provide audio files to fill the external sources. See \ref AK::SoundEngine::PostEvent
328 /// You can specify a streaming file or a file in-memory, regardless of the "Stream" option in the Wwise project.
329 /// The only file format accepted is a fully formed WEM file, as converted by Wwise.
330 /// \akwarning
331 /// Make sure that only one of szFile, pInMemory or idFile is non-null. if both idFile and szFile are set, idFile is passed to low-level IO and szFile is used as stream name (for profiling purposes).
332 /// \endakwarning
333 /// \akwarning
334 /// When using the in-memory file (pInMemory & uiMemorySize), it is the responsibility of the game to ensure the memory stays valid for the entire duration of the playback.
335 /// You can achieve this by using the AK_EndOfEvent callback to track when the Event ends.
336 /// \endakwarning
337 /// \sa
338 /// - AK::SoundEngine::PostEvent
340 {
341  AkUInt32 iExternalSrcCookie; ///< Cookie identifying the source, given by hashing the name of the source given in the project. See \ref AK::SoundEngine::GetIDFromString. \aknote If an event triggers the playback of more than one external source, they must be named uniquely in the project therefore have a unique cookie) in order to tell them apart when filling the AkExternalSourceInfo structures. \endaknote
342  AkCodecID idCodec; ///< Codec ID for the file. One of the audio formats defined in AkTypes.h (AKCODECID_XXX)
343  AkOSChar * szFile; ///< File path for the source. If not NULL, the source will be streaming from disk. Set pInMemory to NULL. If idFile is set, this field is used as stream name (for profiling purposes). /// The only file format accepted is a fully formed WEM file, as converted by Wwise.
344  void* pInMemory; ///< Pointer to the in-memory file. If not NULL, the source will be read from memory. Set szFile and idFile to NULL. The only file format accepted is a fully formed WEM file, as converted by Wwise.
345  AkUInt32 uiMemorySize; ///< Size of the data pointed by pInMemory
346  AkFileID idFile; ///< File ID. If not zero, the source will be streaming from disk. This ID can be anything. Note that you must override the low-level IO to resolve this ID to a real file. See \ref streamingmanager_lowlevel for more information on overriding the Low Level IO.
347 
348  /// Default constructor.
350  : iExternalSrcCookie( 0 )
351  , idCodec( 0 )
352  , szFile( 0 )
353  , pInMemory( 0 )
354  , uiMemorySize( 0 )
355  , idFile( 0 ) {}
356 
357  /// Constructor: specify source by memory.
359  void* in_pInMemory, ///< Pointer to the in-memory file.
360  AkUInt32 in_uiMemorySize, ///< Size of data.
361  AkUInt32 in_iExternalSrcCookie, ///< Cookie.
362  AkCodecID in_idCodec ///< Codec ID.
363  )
364  : iExternalSrcCookie( in_iExternalSrcCookie )
365  , idCodec( in_idCodec )
366  , szFile( 0 )
367  , pInMemory( in_pInMemory )
368  , uiMemorySize( in_uiMemorySize )
369  , idFile( 0 ) {}
370 
371  /// Constructor: specify source by streaming file name.
373  AkOSChar * in_pszFileName, ///< File name.
374  AkUInt32 in_iExternalSrcCookie, ///< Cookie.
375  AkCodecID in_idCodec ///< Codec ID.
376  )
377  : iExternalSrcCookie( in_iExternalSrcCookie )
378  , idCodec( in_idCodec )
379  , szFile( in_pszFileName )
380  , pInMemory( 0 )
381  , uiMemorySize( 0 )
382  , idFile( 0 ) {}
383 
384  /// Constructor: specify source by streaming file ID.
386  AkFileID in_idFile, ///< File ID.
387  AkUInt32 in_iExternalSrcCookie, ///< Cookie.
388  AkCodecID in_idCodec ///< Codec ID.
389  )
390  : iExternalSrcCookie( in_iExternalSrcCookie )
391  , idCodec( in_idCodec )
392  , szFile( 0 )
393  , pInMemory( 0 )
394  , uiMemorySize( 0 )
395  , idFile( in_idFile ) {}
396 };
397 
398 /// Nature of the connection binding an input to a bus.
400 {
401  ConnectionType_Direct = 0x0, ///< Direct (main, dry) connection.
402  ConnectionType_GameDefSend = 0x1, ///< Connection by a game-defined send.
403  ConnectionType_UserDefSend = 0x2, ///< Connection by a user-defined send.
404  ConnectionType_ReflectionsSend = 0x3, ///< Connection by a early reflections send.
405 };
406 
407 /// 3D 64-bit vector. Intended as storage for world positions of sounds and objects, benefiting from 64-bit precision range
409 {
410  inline AkVector64 operator+(const AkVector64& b) const
411  {
412  AkVector64 v;
413 
414  v.X = X + b.X;
415  v.Y = Y + b.Y;
416  v.Z = Z + b.Z;
417 
418  return v;
419  }
420 
421  inline AkVector64 operator-(const AkVector64& b) const
422  {
423  AkVector64 v;
424 
425  v.X = X - b.X;
426  v.Y = Y - b.Y;
427  v.Z = Z - b.Z;
428 
429  return v;
430  }
431 
432  inline void Zero()
433  {
434  X = 0; Y = 0; Z = 0;
435  }
436 
437  AkReal64 X; ///< X Position
438  AkReal64 Y; ///< Y Position
439  AkReal64 Z; ///< Z Position
440 };
441 
442 /// 3D vector for some operations in 3D space. Typically intended only for localized calculations due to 32-bit precision
443 struct AkVector
444 {
445  inline AkVector operator+(const AkVector& b) const
446  {
447  AkVector v;
448 
449  v.X = X + b.X;
450  v.Y = Y + b.Y;
451  v.Z = Z + b.Z;
452 
453  return v;
454  }
455 
456  inline AkVector operator-(const AkVector& b) const
457  {
458  AkVector v;
459 
460  v.X = X - b.X;
461  v.Y = Y - b.Y;
462  v.Z = Z - b.Z;
463 
464  return v;
465  }
466 
467  inline AkVector operator*(const AkReal32 f) const
468  {
469  AkVector v;
470 
471  v.X = X * f;
472  v.Y = Y * f;
473  v.Z = Z * f;
474 
475  return v;
476  }
477 
478  inline void Zero()
479  {
480  X = 0; Y = 0; Z = 0;
481  }
482 
483  // Helper for implicit conversion to AkVector64. ConvertAkVectorToAkVector64 is still preferable to make it more obvious where upconversion occurs.
484  inline operator</span> AkVector64() const { return AkVector64{ X, Y, Z }; }
485 
486  AkReal32 X; ///< X Position
487  AkReal32 Y; ///< Y Position
488  AkReal32 Z; ///< Z Position
489 };
490 
491 /// Position and orientation of game objects in the world (i.e. supports 64-bit-precision position)
493 {
494 public:
495  //
496  // Getters.
497  //
498 
499  /// Get position vector.
500  inline const AkVector64 & Position() const
501  {
502  return position;
503  }
504 
505  /// Get orientation front vector.
506  inline const AkVector & OrientationFront() const
507  {
508  return orientationFront;
509  }
510 
511  /// Get orientation top vector.
512  inline const AkVector & OrientationTop() const
513  {
514  return orientationTop;
515  }
516 
517  //
518  // Setters.
519  //
520 
521  /// Set position and orientation. Orientation front and top should be orthogonal and normalized.
522  inline void Set(
523  const AkVector64 & in_position, ///< Position vector.
524  const AkVector & in_orientationFront, ///< Orientation front
525  const AkVector & in_orientationTop ///< Orientation top
526  )
527  {
528  position = in_position;
529  orientationFront = in_orientationFront;
530  orientationTop = in_orientationTop;
531  }
532 
533  /// Set position and orientation. Orientation front and top should be orthogonal and normalized.
534  inline void Set(
535  AkReal64 in_positionX, ///< Position x
536  AkReal64 in_positionY, ///< Position y
537  AkReal64 in_positionZ, ///< Position z
538  AkReal32 in_orientFrontX, ///< Orientation front x
539  AkReal32 in_orientFrontY, ///< Orientation front y
540  AkReal32 in_orientFrontZ, ///< Orientation front z
541  AkReal32 in_orientTopX, ///< Orientation top x
542  AkReal32 in_orientTopY, ///< Orientation top y
543  AkReal32 in_orientTopZ ///< Orientation top z
544  )
545  {
546  position.X = in_positionX;
547  position.Y = in_positionY;
548  position.Z = in_positionZ;
549  orientationFront.X = in_orientFrontX;
550  orientationFront.Y = in_orientFrontY;
551  orientationFront.Z = in_orientFrontZ;
552  orientationTop.X = in_orientTopX;
553  orientationTop.Y = in_orientTopY;
554  orientationTop.Z = in_orientTopZ;
555  }
556 
557  /// Set position.
558  inline void SetPosition(
559  const AkVector64 & in_position ///< Position vector.
560  )
561  {
562  position = in_position;
563  }
564 
565  /// Set position.
566  inline void SetPosition(
567  AkReal64 in_x, ///< x
568  AkReal64 in_y, ///< y
569  AkReal64 in_z ///< z
570  )
571  {
572  position.X = in_x;
573  position.Y = in_y;
574  position.Z = in_z;
575  }
576 
577  /// Set orientation. Orientation front and top should be orthogonal and normalized.
578  inline void SetOrientation(
579  const AkVector & in_orientationFront, ///< Orientation front
580  const AkVector & in_orientationTop ///< Orientation top
581  )
582  {
583  orientationFront = in_orientationFront;
584  orientationTop = in_orientationTop;
585  }
586 
587  /// Set orientation. Orientation front and top should be orthogonal and normalized.
588  inline void SetOrientation(
589  AkReal32 in_orientFrontX, ///< Orientation front x
590  AkReal32 in_orientFrontY, ///< Orientation front y
591  AkReal32 in_orientFrontZ, ///< Orientation front z
592  AkReal32 in_orientTopX, ///< Orientation top x
593  AkReal32 in_orientTopY, ///< Orientation top y
594  AkReal32 in_orientTopZ ///< Orientation top z
595  )
596  {
597  orientationFront.X = in_orientFrontX;
598  orientationFront.Y = in_orientFrontY;
599  orientationFront.Z = in_orientFrontZ;
600  orientationTop.X = in_orientTopX;
601  orientationTop.Y = in_orientTopY;
602  orientationTop.Z = in_orientTopZ;
603  }
604 
605 private:
606  AkVector orientationFront; ///< Orientation of the listener
607  AkVector orientationTop; ///< Top orientation of the listener
608  AkVector64 position; ///< Position of the listener
609 };
610 
611 /// Position and orientation of objects in a "local" space
613 {
614 public:
615  //
616  // Getters.
617  //
618 
619  /// Get position vector.
620  inline const AkVector& Position() const
621  {
622  return position;
623  }
624 
625  /// Get orientation front vector.
626  inline const AkVector& OrientationFront() const
627  {
628  return orientationFront;
629  }
630 
631  /// Get orientation top vector.
632  inline const AkVector& OrientationTop() const
633  {
634  return orientationTop;
635  }
636 
637  //
638  // Setters.
639  //
640 
641  /// Set position and orientation. Orientation front and top should be orthogonal and normalized.
642  inline void Set(
643  const AkVector& in_position, ///< Position vector.
644  const AkVector& in_orientationFront, ///< Orientation front
645  const AkVector& in_orientationTop ///< Orientation top
646  )
647  {
648  position = in_position;
649  orientationFront = in_orientationFront;
650  orientationTop = in_orientationTop;
651  }
652 
653  /// Set position and orientation. Orientation front and top should be orthogonal and normalized.
654  inline void Set(
655  AkReal32 in_positionX, ///< Position x
656  AkReal32 in_positionY, ///< Position y
657  AkReal32 in_positionZ, ///< Position z
658  AkReal32 in_orientFrontX, ///< Orientation front x
659  AkReal32 in_orientFrontY, ///< Orientation front y
660  AkReal32 in_orientFrontZ, ///< Orientation front z
661  AkReal32 in_orientTopX, ///< Orientation top x
662  AkReal32 in_orientTopY, ///< Orientation top y
663  AkReal32 in_orientTopZ ///< Orientation top z
664  )
665  {
666  position.X = in_positionX;
667  position.Y = in_positionY;
668  position.Z = in_positionZ;
669  orientationFront.X = in_orientFrontX;
670  orientationFront.Y = in_orientFrontY;
671  orientationFront.Z = in_orientFrontZ;
672  orientationTop.X = in_orientTopX;
673  orientationTop.Y = in_orientTopY;
674  orientationTop.Z = in_orientTopZ;
675  }
676 
677  /// Set position.
678  inline void SetPosition(
679  const AkVector& in_position ///< Position vector.
680  )
681  {
682  position = in_position;
683  }
684 
685  /// Set position.
686  inline void SetPosition(
687  AkReal32 in_x, ///< x
688  AkReal32 in_y, ///< y
689  AkReal32 in_z ///< z
690  )
691  {
692  position.X = in_x;
693  position.Y = in_y;
694  position.Z = in_z;
695  }
696 
697  /// Set orientation. Orientation front and top should be orthogonal and normalized.
698  inline void SetOrientation(
699  const AkVector& in_orientationFront, ///< Orientation front
700  const AkVector& in_orientationTop ///< Orientation top
701  )
702  {
703  orientationFront = in_orientationFront;
704  orientationTop = in_orientationTop;
705  }
706 
707  /// Set orientation. Orientation front and top should be orthogonal and normalized.
708  inline void SetOrientation(
709  AkReal32 in_orientFrontX, ///< Orientation front x
710  AkReal32 in_orientFrontY, ///< Orientation front y
711  AkReal32 in_orientFrontZ, ///< Orientation front z
712  AkReal32 in_orientTopX, ///< Orientation top x
713  AkReal32 in_orientTopY, ///< Orientation top y
714  AkReal32 in_orientTopZ ///< Orientation top z
715  )
716  {
717  orientationFront.X = in_orientFrontX;
718  orientationFront.Y = in_orientFrontY;
719  orientationFront.Z = in_orientFrontZ;
720  orientationTop.X = in_orientTopX;
721  orientationTop.Y = in_orientTopY;
722  orientationTop.Z = in_orientTopZ;
723  }
724 
725  // Helper for implicit conversion to AkWorldTransform. ConvertAkTransformToAkWorldTransform is still preferable to make it more obvious where upconversion occurs.
726  inline operator</span> AkWorldTransform() const {
727  AkWorldTransform ret;
728  ret.Set(position, orientationFront, orientationTop);
729  return ret;
730  }
731 
732 private:
733  AkVector orientationFront; ///< Orientation of the listener
734  AkVector orientationTop; ///< Top orientation of the listener
735  AkVector position; ///< Position of the listener
736 };
737 
738 
739 namespace AK
740 {
741  // Helper functions to make transitions between 64b and 32b conversion easier
742 
743  // Warning: this conversion incurs a loss of precision and range
745  {
746  AkVector out;
747  out.X = (AkReal32)in.X;
748  out.Y = (AkReal32)in.Y;
749  out.Z = (AkReal32)in.Z;
750  return out;
751  }
752 
753  // Warning: this conversion incurs a loss of precision and range in position data
755  {
756  AkTransform out;
758  out.Set(pos, in.OrientationFront(), in.OrientationTop());
759  return out;
760  }
761 
763  {
764  AkVector64 out;
765  out.X = (AkReal64)in.X;
766  out.Y = (AkReal64)in.Y;
767  out.Z = (AkReal64)in.Z;
768  return out;
769  }
770 
772  {
773  AkWorldTransform out;
775  out.Set(pos, in.OrientationFront(), in.OrientationTop());
776  return out;
777  }
778 }
779 
780 /// Positioning information for a sound.
782 
783 /// Positioning information for a listener.
785 
786 /// Obstruction/occlusion pair for a position
788 {
789  AkReal32 occlusion; ///< OcclusionLevel: [0.0f..1.0f]
790  AkReal32 obstruction; ///< ObstructionLevel: [0.0f..1.0f]
791 };
792 
793 /// Positioning information for a sound, with specified subset of its channels.
795 {
796  AkWorldTransform position; ///< Emitter position.
797  AkChannelMask uInputChannels; ///< Channels to which the above position applies.
798  char padding[4]; ///< In order to preserve consistent struct size across archs, we need some padding
799 };
800 
801 /// Polar coordinates.
803 {
804  AkReal32 r; ///< Norm/distance
805  AkReal32 theta; ///< Azimuth
806 };
807 
808 /// Spherical coordinates.
810 {
811  AkReal32 phi; ///< Elevation
812 };
813 
814 /// Emitter-listener pair: Positioning data pertaining to a single pair of emitter and listener.
816 {
817 public:
818  /// Constructor.
820  : fDistance(0.f)
821  , fEmitterAngle(0.f)
822  , fListenerAngle(0.f)
823  , fDryMixGain(1.f)
824  , fGameDefAuxMixGain(1.f)
825  , fUserDefAuxMixGain(1.f)
826  , fOcclusion(0.f)
827  , fObstruction(0.f)
828  , fDiffraction(0.f)
829  , fTransmissionLoss(0.f)
830  , fSpread(0.f)
831  , fAperture(100.f)
832  , fScalingFactor(1.f)
833  , fPathGain(1.f)
834  , uEmitterChannelMask(0xFFFFFFFF)
835  , id(0)
836  , m_uListenerID(0)
837  {
838  }
839  /// Destructor.
841 
842  /// Get distance.
843  inline AkReal32 Distance() const { return fDistance; }
844 
845  /// Get the absolute angle, in radians between 0 and pi, of the emitter's orientation relative to
846  /// the line that joins the emitter and the listener.
847  inline AkReal32 EmitterAngle() const { return fEmitterAngle; }
848 
849  /// Get the absolute angle, in radians between 0 and pi, of the listener's orientation relative to
850  /// the line that joins the emitter and the listener
851  inline AkReal32 ListenerAngle() const { return fListenerAngle; }
852 
853  /// Get the occlusion factor for this emitter-listener pair
854  inline AkReal32 Occlusion() const { return fOcclusion; }
855 
856  /// Get the obstruction factor for this emitter-listener pair
857  inline AkReal32 Obstruction() const { return fObstruction; }
858 
859  /// Get the diffraction factor for this emitter-listener pair
860  inline AkReal32 Diffraction() const { return fDiffraction; }
861 
862  /// Get the transmission loss factor for this emitter-listener pair
863  inline AkReal32 TransmissionLoss() const { return fTransmissionLoss; }
864 
865  /// Get the overall path-contribution gain, used to scale the dry + gamedef + userdef gains
866  inline AkReal32 PathGain() const { return fPathGain; }
867 
868  /// Get the emitter-listener-pair-specific gain (due to distance and cone attenuation), linear [0,1], for a given connection type.
870  {
871  if (in_eType == ConnectionType_Direct)
872  return fDryMixGain;
873  else if (in_eType == ConnectionType_GameDefSend)
874  return fGameDefAuxMixGain;
875  else if (in_eType == ConnectionType_UserDefSend)
876  return fUserDefAuxMixGain;
877  else
878  return 1.0f;
879  }
880 
881  /// Get the emitter-listener pair's ID.
882  inline AkRayID ID() const { return id; }
883 
884  /// Get listener ID associated with the emitter-listener pair.
885  inline AkGameObjectID ListenerID() const { return m_uListenerID; }
886 
887  AkWorldTransform emitter; ///< Emitter position.
888  AkReal32 fDistance; ///< Distance between emitter and listener.
889  AkReal32 fEmitterAngle; ///< Angle between position vector and emitter orientation.
890  AkReal32 fListenerAngle; ///< Angle between position vector and listener orientation.
891  AkReal32 fDryMixGain; ///< Emitter-listener-pair-specific gain (due to distance and cone attenuation) for direct connections.
892  AkReal32 fGameDefAuxMixGain; ///< Emitter-listener-pair-specific gain (due to distance and cone attenuation) for game-defined send connections.
893  AkReal32 fUserDefAuxMixGain; ///< Emitter-listener-pair-specific gain (due to distance and cone attenuation) for user-defined send connections.
894  AkReal32 fOcclusion; ///< Emitter-listener-pair-specific occlusion factor
895  AkReal32 fObstruction; ///< Emitter-listener-pair-specific obstruction factor
896  AkReal32 fDiffraction; ///< Emitter-listener-pair-specific diffraction coefficient
897  AkReal32 fTransmissionLoss; ///< Emitter-listener-pair-specific transmission occlusion.
898  AkReal32 fSpread; ///< Emitter-listener-pair-specific spread
899  AkReal32 fAperture; ///< Emitter-listener-pair-specific aperture
900  AkReal32 fScalingFactor; ///< Combined scaling factor due to both emitter and listener.
901  AkReal32 fPathGain; ///< Emitter-listener-pair-specific overall gain that scales fDryMixGain, fGameDefAuxMixGain and fUserDefAuxMixGain
902  AkChannelMask uEmitterChannelMask; ///< Channels of the emitter that apply to this ray.
903 protected:
904  AkRayID id; ///< ID of this emitter-listener pair, unique for a given emitter.
905  AkGameObjectID m_uListenerID; ///< Listener game object ID.
906 };
907 
908 /// Listener information.
910 {
912  : fScalingFactor( 1.0f )
913  , bSpatialized( true )
914  {}
915  AkListenerPosition position; /// Listener position (see AK::SoundEngine::SetPosition()).
916  AkReal32 fScalingFactor; /// Listener scaling factor (see AK::SoundEngine::SetListenerScalingFactor()).
917  bool bSpatialized; /// Whether listener is spatialized or not (see AK::SoundEngine::SetListenerSpatialization()).
918 };
919 
920 // If you modify AkCurveInterpolation, don't forget to modify WAAPI validation schema accordingly.
921 
922 /// Curve interpolation types
924 {
925 //DONT GO BEYOND 15! (see below for details)
926 //Curves from 0 to LastFadeCurve NEED TO BE A MIRROR IMAGE AROUND LINEAR (eg. Log3 is the inverse of Exp3)
930  AkCurveInterpolation_InvSCurve = 3, ///< Inversed S Curve
931  AkCurveInterpolation_Linear = 4, ///< Linear (Default)
932  AkCurveInterpolation_SCurve = 5, ///< S Curve
934  AkCurveInterpolation_SineRecip = 7, ///< Reciprocal of sine curve
936  AkCurveInterpolation_LastFadeCurve = 8, ///< Update this value to reflect last curve available for fades
937  AkCurveInterpolation_Constant = 9 ///< Constant ( not valid for fading values )
938 //DONT GO BEYOND 15! The value is stored on 5 bits,
939 //but we can use only 4 bits for the actual values, keeping
940 //the 5th bit at 0 to void problems when the value is
941 //expanded to 32 bits.
942 };
943 #define AKCURVEINTERPOLATION_NUM_STORAGE_BIT 5 ///< Internal storage restriction, for internal use only.
944 
945 /// Auxiliary bus sends information per game object per given auxiliary bus.
947 {
948  AkGameObjectID listenerID; ///< Game object ID of the listener associated with this send. Use AK_INVALID_GAME_OBJECT as a wildcard to set the auxiliary send to all connected listeners (see AK::SoundEngine::SetListeners).
949  AkAuxBusID auxBusID; ///< Auxiliary bus ID.
950  AkReal32 fControlValue; ///< A value in the range [0.0f:16.0f] ( -∞ dB to +24 dB).
951  ///< Represents the attenuation or amplification factor applied to the volume of the sound going through the auxiliary bus.
952  ///< A value greater than 1.0f will amplify the sound.
953 };
954 
955 /// Volume ramp specified by end points "previous" and "next".
956 struct AkRamp
957 {
958  AkRamp() : fPrev( 1.f ), fNext( 1.f ) {}
959  AkRamp( AkReal32 in_fPrev, AkReal32 in_fNext ) : fPrev( in_fPrev ), fNext( in_fNext ) {}
960  AkRamp & operator*=(const AkRamp& in_rRhs) { fPrev *= in_rRhs.fPrev; fNext *= in_rRhs.fNext; return *this; }
961 
964 };
965 inline AkRamp operator*(const AkRamp& in_rLhs, const AkRamp& in_rRhs)
966 {
967  AkRamp result(in_rLhs);
968  result *= in_rRhs;
969  return result;
970 }
971 
972 /// Type for a point in an RTPC or Attenuation curve.
973 template< class VALUE_TYPE >
975 {
976  AkGraphPointBase() = default;
977 
978  AkGraphPointBase(AkReal32 in_from, VALUE_TYPE in_to, AkCurveInterpolation in_interp)
979  : From(in_from)
980  , To(in_to)
981  , Interp(in_interp)
982  {}
983 
984  AkReal32 From; ///< Represents the value on the X axis.
985  VALUE_TYPE To; ///< Represents the value on the Y axis.
986  AkCurveInterpolation Interp; ///< The shape of the interpolation curve between this point and the next.
987 
988  bool operator==(const AkGraphPointBase& other) const
989  {
990  return From == other.From && To == other.To && Interp == other.Interp;
991  }
992  bool operator!=(const AkGraphPointBase& other) const
993  {
994  return !(*this == other);
995  }
996 };
997 
998 // Every point of a conversion graph
1000 
1001 /// Curve types of the Attenuation Editor.
1003 {
1004  AttenuationCurveID_VolumeDry = 0, ///< The distance-driven dry volume curve.
1005  AttenuationCurveID_VolumeAuxGameDef, ///< The distance-driven game-defined auxiliary send curve.
1006  AttenuationCurveID_VolumeAuxUserDef, ///< The distance-driven user-defined auxiliary send curve.
1007  AttenuationCurveID_LowPassFilter, ///< The distance-driven low-pass filter (pre send) curve.
1008  AttenuationCurveID_HighPassFilter, ///< The distance-driven high-pass filter (pre send) curve.
1009  AttenuationCurveID_Spread, ///< The distance-driven Spread curve.
1010  AttenuationCurveID_Focus, ///< The distance-driven Focus curve.
1011  AttenuationCurveID_ObstructionVolume, ///< The obstruction-driven volume curve.
1012  AttenuationCurveID_ObstructionLPF, ///< The obstruction-driven low-pass filter curve.
1013  AttenuationCurveID_ObstructionHPF, ///< The obstruction-driven high-pass filter curve.
1014  AttenuationCurveID_OcclusionVolume, ///< The occlusion-driven volume curve.
1015  AttenuationCurveID_OcclusionLPF, ///< The occlusion-driven low-pass filter curve.
1016  AttenuationCurveID_OcclusionHPF, ///< The occlusion-driven high-pass filter curve.
1017  AttenuationCurveID_DiffractionVolume, ///< The diffraction-driven volume curve.
1018  AttenuationCurveID_DiffractionLPF, ///< The diffraction-driven low-pass filter curve.
1019  AttenuationCurveID_DiffractionHPF, ///< The diffraction-driven high-pass filter curve.
1020  AttenuationCurveID_TransmissionVolume, ///< The transmission-driven volume curve.
1021  AttenuationCurveID_TransmissionLPF, ///< The transmission-driven low-pass filter curve.
1022  AttenuationCurveID_TransmissionHPF, ///< The transmission-driven high-pass filter curve.
1023 
1024  AttenuationCurveID_MaxCount, ///< The maximum number of curve types.
1025 
1026  AttenuationCurveID_Project = 254, ///< Symbol for "Use Project".
1027  AttenuationCurveID_None = 255 ///< Symbol for "None".
1028 };
1029 
1030 // ---------------------------------------------------------------
1031 // Languages
1032 // ---------------------------------------------------------------
1033 #define AK_MAX_LANGUAGE_NAME_SIZE (32)
1034 
1035 // ---------------------------------------------------------------
1036 // File Type ID Definitions
1037 // ---------------------------------------------------------------
1038 
1039 // These correspond to IDs specified in the conversion plug-ins' XML
1040 // files. Audio sources persist them to "remember" their format.
1041 // DO NOT CHANGE THEM without talking to someone in charge of persistence!
1042 
1043 // Company ID for plugin development.
1044 #define AKCOMPANYID_PLUGINDEV_MIN (64)
1045 #define AKCOMPANYID_PLUGINDEV_MAX (255)
1046 
1047 // Vendor ID.
1048 #define AKCOMPANYID_AUDIOKINETIC (0) ///< Audiokinetic inc.
1049 #define AKCOMPANYID_AUDIOKINETIC_EXTERNAL (1) ///< Audiokinetic inc.
1050 #define AKCOMPANYID_MCDSP (256) ///< McDSP
1051 #define AKCOMPANYID_WAVEARTS (257) ///< WaveArts
1052 #define AKCOMPANYID_PHONETICARTS (258) ///< Phonetic Arts
1053 #define AKCOMPANYID_IZOTOPE (259) ///< iZotope
1054 #define AKCOMPANYID_CRANKCASEAUDIO (261) ///< Crankcase Audio
1055 #define AKCOMPANYID_IOSONO (262) ///< IOSONO
1056 #define AKCOMPANYID_AUROTECHNOLOGIES (263) ///< Auro Technologies
1057 #define AKCOMPANYID_DOLBY (264) ///< Dolby
1058 #define AKCOMPANYID_TWOBIGEARS (265) ///< Two Big Ears
1059 #define AKCOMPANYID_OCULUS (266) ///< Oculus
1060 #define AKCOMPANYID_BLUERIPPLESOUND (267) ///< Blue Ripple Sound
1061 #define AKCOMPANYID_ENZIEN (268) ///< Enzien Audio
1062 #define AKCOMPANYID_KROTOS (269) ///< Krotos (Dehumanizer)
1063 #define AKCOMPANYID_NURULIZE (270) ///< Nurulize
1064 #define AKCOMPANYID_SUPERPOWERED (271) ///< Super Powered
1065 #define AKCOMPANYID_GOOGLE (272) ///< Google
1066 //#define AKCOMPANYID_NVIDIA (273) ///< NVIDIA // Commented out to avoid redefinition, provider is already defining it.
1067 //#define AKCOMPANYID_RESERVED (274) ///< Reserved // Commented out to avoid redefinition, provider is already defining it.
1068 //#define AKCOMPANYID_MICROSOFT (275) ///< Microsoft // Commented out to avoid redefinition, provider is already defining it.
1069 //#define AKCOMPANYID_YAMAHA (276) ///< YAMAHA // Commented out to avoid redefinition, provider is already defining it.
1070 #define AKCOMPANYID_VISISONICS (277) ///< Visisonics
1071 
1072 // File/encoding types of Audiokinetic.
1073 #define AKCODECID_BANK (0) ///< Bank encoding
1074 #define AKCODECID_PCM (1) ///< PCM encoding
1075 #define AKCODECID_ADPCM (2) ///< ADPCM encoding
1076 #define AKCODECID_XMA (3) ///< XMA encoding
1077 #define AKCODECID_VORBIS (4) ///< Vorbis encoding
1078 #define AKCODECID_WIIADPCM (5) ///< ADPCM encoding on the Wii
1079 #define AKCODECID_PCMEX (7) ///< Standard PCM WAV file parser for Wwise Authoring
1080 #define AKCODECID_EXTERNAL_SOURCE (8) ///< External Source (unknown encoding)
1081 #define AKCODECID_XWMA (9) ///< xWMA encoding
1082 #define AKCODECID_FILE_PACKAGE (11) ///< File package files generated by the File Packager utility.
1083 #define AKCODECID_ATRAC9 (12) ///< ATRAC-9 encoding
1084 #define AKCODECID_VAG (13) ///< VAG/HE-VAG encoding
1085 #define AKCODECID_PROFILERCAPTURE (14) ///< Profiler capture file (.prof) as written through AK::SoundEngine::StartProfilerCapture
1086 #define AKCODECID_ANALYSISFILE (15) ///< Analysis file
1087 #define AKCODECID_MIDI (16) ///< MIDI file
1088 #define AKCODECID_OPUSNX (17) ///< OpusNX encoding
1089 #define AKCODECID_CAF (18) ///< CAF file
1090 #define AKCODECID_AKOPUS (19) ///< Opus encoding, 2018.1 to 2019.2
1091 #define AKCODECID_AKOPUS_WEM (20) ///< Opus encoding, wrapped in WEM
1092 #define AKCODECID_MEMORYMGR_DUMP (21) ///< Memory stats file as written through AK::MemoryMgr::DumpToFile();
1093 #define AKCODECID_SONY360 (22) ///< Sony 360 encoding
1094 
1095 #define AKCODECID_BANK_EVENT (30) ///< Bank encoding for event banks. These banks are contained in the /event sub-folder.
1096 #define AKCODECID_BANK_BUS (31) ///< Bank encoding for bus banks. These banks are contained in the /bus sub-folder.
1097 
1098 #define AKPLUGINID_METER (129) ///< Meter Plugin
1099 #define AKPLUGINID_RECORDER (132) ///< Recorder Plugin
1100 #define AKPLUGINID_IMPACTER (184)
1101 #define AKPLUGINID_SYSTEM_OUTPUT_META (900) ///< System output metadata
1102 #define AKPLUGINID_AUDIO_OBJECT_ATTENUATION_META (901) ///< Attenuation curve metadata
1103 #define AKPLUGINID_AUDIO_OBJECT_PRIORITY_META (902) ///< Audio object priority metadata
1104 
1105 #define AKEXTENSIONID_SPATIALAUDIO (800) ///< Spatial Audio
1106 #define AKEXTENSIONID_INTERACTIVEMUSIC (801) ///< Interactive Music
1107 #define AKEXTENSIONID_MIDIDEVICEMGR (802) ///< MIDI Device Manager (Authoring)
1108 
1109 //The following are internally defined
1110 #define AK_WAVE_FORMAT_VAG 0xFFFB
1111 #define AK_WAVE_FORMAT_AT9 0xFFFC
1112 #define AK_WAVE_FORMAT_VORBIS 0xFFFF
1113 #define AK_WAVE_FORMAT_OPUSNX 0x3039
1114 #define AK_WAVE_FORMAT_OPUS 0x3040
1115 #define AK_WAVE_FORMAT_OPUS_WEM 0x3041
1116 #define WAVE_FORMAT_XMA2 0x166
1117 
1118 //-----------------------------------------------------------------------------
1119 // Codecs
1120 //-----------------------------------------------------------------------------
1121 
1122 class IAkSoftwareCodec;
1123 class IAkFileCodec;
1124 class IAkGrainCodec;
1125 /// Registered file source creation function prototype.
1126 AK_CALLBACK( IAkSoftwareCodec*, AkCreateFileSourceCallback )( void* in_pCtx );
1127 /// Registered bank source node creation function prototype.
1128 AK_CALLBACK( IAkSoftwareCodec*, AkCreateBankSourceCallback )( void* in_pCtx );
1129 /// Registered FileCodec creation function prototype.
1131 /// Registered IAkGrainCodec creation function prototype.
1133 
1135 {
1140 };
1141 
1142 //-----------------------------------------------------------------------------
1143 // Banks
1144 //-----------------------------------------------------------------------------
1145 
1146 /// Bank types
1148 {
1149  AkBankType_User = AKCODECID_BANK, ///< User-defined bank.
1150  AkBankType_Event = AKCODECID_BANK_EVENT, ///< Bank generated for one event.
1151  AkBankType_Bus = AKCODECID_BANK_BUS, ///< Bank generated for one bus or aux bus.
1152 };
1153 
1154 //-----------------------------------------------------------------------------
1155 // Positioning
1156 //-----------------------------------------------------------------------------
1157 
1158 namespace AK
1159 {
1160  namespace SoundEngine
1161  {
1162  // If you modify MultiPositionType, don't forget to modify WAAPI validation schema accordingly.
1163 
1164  /// MultiPositionType.
1165  /// \aknote
1166  /// - If a sound has diffraction enabled, it is treated as <tt>MultiPositionType_MultiDirections</tt>. <tt>MultiPositionType_MultiSources</tt> is not supported in this case.
1167  /// \endaknote
1168  /// \sa
1169  /// - AK::SoundEngine::SetMultiplePosition()
1170  /// - \ref soundengine_3dpositions_multiplepos
1172  {
1173  MultiPositionType_SingleSource, ///< Used for normal sounds, not expected to pass to AK::SoundEngine::SetMultiplePosition() (if done, only the first position will be used).
1174  MultiPositionType_MultiSources, ///< Simulate multiple sources in one sound playing, adding volumes. For instance, all the torches on your level emitting using only one sound.
1175  MultiPositionType_MultiDirections ///< Simulate one sound coming from multiple directions. Useful for repositionning sounds based on wall openings or to simulate areas like forest or rivers ( in combination with spreading in the attenuation of the sounds ).
1176  };
1177  }
1178 }
1179 
1180 #define AK_PANNER_NUM_STORAGE_BITS 3
1181 /// Speaker panning type: type of panning logic when object is not 3D spatialized (i.e. when Ak3DSpatializationMode is AK_SpatializationMode_None).
1183 {
1184  AK_DirectSpeakerAssignment = 0, ///< No panning: route to matching channels between input and output.
1185  AK_BalanceFadeHeight = 1, ///< Balance-Fade-Height: Traditional "box" or "car"-like panner.
1186  AK_SteeringPanner = 2 ///< Steering panner.
1187 };
1188 
1189 #define AK_POSSOURCE_NUM_STORAGE_BITS 3
1190 /// 3D position type: defines what acts as the emitter position for computing spatialization against the listener. Used when Ak3DSpatializationMode is AK_SpatializationMode_PositionOnly or AK_SpatializationMode_PositionAndOrientation.
1192 {
1193  AK_3DPositionType_Emitter = 0, ///< 3D spatialization is computed directly from the emitter game object position.
1194  AK_3DPositionType_EmitterWithAutomation = 1, ///< 3D spatialization is computed from the emitter game object position, translated by user-defined automation.
1195  AK_3DPositionType_ListenerWithAutomation = 2 ///< 3D spatialization is computed from the listener game object position, translated by user-defined automation.
1196 };
1197 
1198 /// Flags to independently set the position of the emitter or listener component on a game object.
1200 {
1201  AkSetPositionFlags_Emitter = 1 << 0, // Only set the emitter component position.
1202  AkSetPositionFlags_Listener = 1 << 1, // Only set the listener component position.
1203 
1204  AkSetPositionFlags_Default = (AkSetPositionFlags_Emitter | AkSetPositionFlags_Listener) // Default: set both emitter and listener component positions.
1205 };
1206 
1207 /// Headphone / speakers panning rules
1209 {
1210  AkPanningRule_Speakers = 0, ///< Left and right positioned 60 degrees apart (by default - see AK::SoundEngine::GetSpeakerAngles()).
1211  AkPanningRule_Headphones = 1 ///< Left and right positioned 180 degrees apart.
1212 };
1213 
1214 #define AK_SPAT_NUM_STORAGE_BITS 3
1215 /// 3D spatialization mode.
1217 {
1218  AK_SpatializationMode_None = 0, ///< No spatialization
1219  AK_SpatializationMode_PositionOnly = 1, ///< Spatialization based on emitter position only.
1220  AK_SpatializationMode_PositionAndOrientation = 2 ///< Spatialization based on both emitter position and emitter orientation.
1221 };
1222 
1223 /// Bus type bit field.
1225 {
1226  AkBusHierarchy_Primary = 1 << 0, ///< Flag is set to indicate the primary bus hierarchy.
1227  AkBusHierarchy_Secondary = 1 << 1, ///< Flag is set to indicate the secondary bus hierarchy.
1228  AkBusHierarchy_IsMaster = 1 << 7 ///< Flag is set to indicate a master bus (may be used in combination with other flags).
1229 };
1230 
1231 #define AK_MAX_BITS_METERING_FLAGS (5) // Keep in sync with AkMeteringFlags.
1232 
1233 /// Metering flags. Used for specifying bus metering, through AK::SoundEngine::RegisterBusVolumeCallback() or AK::IAkMixerPluginContext::SetMeteringFlags().
1235 {
1236  AK_NoMetering = 0, ///< No metering.
1237  AK_EnableBusMeter_Peak = 1 << 0, ///< Enable computation of peak metering.
1238  AK_EnableBusMeter_TruePeak = 1 << 1, ///< Enable computation of true peak metering (most CPU and memory intensive).
1239  AK_EnableBusMeter_RMS = 1 << 2, ///< Enable computation of RMS metering.
1240  // 1 << 3 is reserved.
1241  AK_EnableBusMeter_KPower = 1 << 4, ///< Enable computation of K-weighted power metering (used as a basis for computing loudness, as defined by ITU-R BS.1770).
1242  AK_EnableBusMeter_3DMeter = 1 << 5 ///< Enable computation of data necessary to render a 3D visualization of volume distribution over the surface of a sphere.
1243 };
1244 
1245 /// Plug-in type.
1246 /// \sa
1247 /// - AkPluginInfo
1249 {
1250  AkPluginTypeNone = 0, ///< Unknown/invalid plug-in type.
1251  AkPluginTypeCodec = 1, ///< Compressor/decompressor plug-in (allows support for custom audio file types).
1252  AkPluginTypeSource = 2, ///< Source plug-in: creates sound by synthesis method (no input, just output).
1253  AkPluginTypeEffect = 3, ///< Effect plug-in: applies processing to audio data.
1254  //AkPluginTypeMotionDevice = 4, ///< Motion Device plug-in: feeds movement data to devices. Deprecated by Motion refactor.
1255  //AkPluginTypeMotionSource = 5, ///< Motion Device source plug-in: feeds movement data to device busses. Deprecated by Motion refactor.
1256  AkPluginTypeMixer = 6, ///< Mixer plug-in: mix voices at the bus level.
1257  AkPluginTypeSink = 7, ///< Sink plug-in: implement custom sound engine end point.
1258  AkPluginTypeGlobalExtension = 8, ///< Global Extension plug-in: (e.g. Spatial Audio, Interactive Music)
1259  AkPluginTypeMetadata = 9, ///< Metadata plug-in: applies object-based processing to audio data
1260  AkPluginTypeMask = 0xf ///< Plug-in type mask is 4 bits.
1261 };
1262 
1263 ////////////////////////////////////////////////////////////////////////////////
1264 // Wwise ID system
1265 ////////////////////////////////////////////////////////////////////////////////
1267 {
1270 };
1271 
1273 {
1274 public:
1275 
1276  bool operator == ( const WwiseObjectIDext& in_rOther ) const
1277  {
1278  return in_rOther.id == id && in_rOther.bIsBus == bIsBus;
1279  }
1280 
1282  {
1284  }
1285 
1287  bool bIsBus;
1288 };
1289 
1291 {
1293  {
1294  id = AK_INVALID_UNIQUE_ID;
1295  bIsBus = false;
1296  }
1297 
1299  {
1300  id = in_ID;
1301  bIsBus = false;
1302  }
1303 
1304  WwiseObjectID( AkUniqueID in_ID, bool in_bIsBus )
1305  {
1306  id = in_ID;
1307  bIsBus = in_bIsBus;
1308  }
1309 
1310  WwiseObjectID( AkUniqueID in_ID, AkNodeType in_eNodeType )
1311  {
1312  id = in_ID;
1313  bIsBus = in_eNodeType == AkNodeType_Bus;
1314  }
1315 };
1316 
1317 /// Public data structures for converted file format.
1318 namespace AkFileParser
1319 {
1320 #pragma pack(push, 1)
1321  /// Analyzed envelope point.
1323  {
1324  AkUInt32 uPosition; /// Position of this point in samples at the source rate.
1325  AkUInt16 uAttenuation; /// Approximate _attenuation_ at this location relative to this source's maximum, in dB (absolute value).
1326  };
1327 #pragma pack(pop)
1328 }
1329 
1330 #ifndef AK_ASYNC_OPEN_DEFAULT
1331 #define AK_ASYNC_OPEN_DEFAULT (false) ///< Refers to asynchronous file opening in default low-level IO.
1332 #endif
1333 
1334 #ifndef AK_COMM_DEFAULT_DISCOVERY_PORT
1335 #define AK_COMM_DEFAULT_DISCOVERY_PORT 24024 ///< Default discovery port for most platforms using IP sockets for communication.
1336 #endif
1337 
1338 #ifdef AK_CAPTURE_TYPE_FLOAT
1339 typedef AkReal32 AkCaptureType;
1340 #else
1341 typedef AkInt16 AkCaptureType; ///< Default value: capture type is short.
1342 #endif
1343 
1344 #define AkRegister
1345 
1346 #endif //_AK_DATA_TYPES_H_
@ AkNodeType_Bus
Definition: AkTypes.h:1269
@ AK_PathNodeNotInList
This path is not there.
Definition: AkTypes.h:238
AkEmitterListenerPair()
Constructor.
Definition: AkTypes.h:819
AkAudioDeviceState deviceStateMask
Bitmask used to filter the device based on their state.
Definition: AkTypes.h:323
AkGameObjectID m_uListenerID
Listener game object ID.
Definition: AkTypes.h:905
@ AK_EnableBusMeter_Peak
Enable computation of peak metering.
Definition: AkTypes.h:1237
@ AttenuationCurveID_Focus
The distance-driven Focus curve.
Definition: AkTypes.h:1010
AkUInt32 AkStateGroupID
State group ID.
Definition: AkTypes.h:136
AkUniqueID id
Definition: AkTypes.h:1286
@ AkBankType_Bus
Bank generated for one bus or aux bus.
Definition: AkTypes.h:1151
AkNodeType GetType()
Definition: AkTypes.h:1281
AkReal32 fControlValue
Definition: AkTypes.h:950
void SetPosition(AkReal32 in_x, AkReal32 in_y, AkReal32 in_z)
Set position.
Definition: AkTypes.h:686
static const AkPriority AK_DEFAULT_BANK_IO_PRIORITY
Default bank load I/O priority.
Definition: AkTypes.h:199
AkUInt8 AkDataInterleaveID
Data interleaved state ID.
Definition: AkTypes.h:152
@ AK_UnsupportedChannelConfig
Channel configuration is not supported in the current execution context.
Definition: AkTypes.h:260
@ AK_NoMetering
No metering.
Definition: AkTypes.h:1236
static const AkJobType AkJobType_AudioProcessing
Job type for DSP work.
Definition: AkTypes.h:207
@ AK_DirectSpeakerAssignment
No panning: route to matching channels between input and output.
Definition: AkTypes.h:1184
@ AK_InvalidCustomPlatformName
Detecting incompatibility between Custom platform of banks and custom platform of connected applicati...
Definition: AkTypes.h:265
AkExternalSourceInfo(AkFileID in_idFile, AkUInt32 in_iExternalSrcCookie, AkCodecID in_idCodec)
Constructor: specify source by streaming file ID.
Definition: AkTypes.h:385
@ AK_InvalidSwitchType
Invalid switch type (used with the switch container)
Definition: AkTypes.h:247
AkRamp & operator*=(const AkRamp &in_rRhs)
Definition: AkTypes.h:960
AkReal32 Occlusion() const
Get the occlusion factor for this emitter-listener pair.
Definition: AkTypes.h:854
@ AK_FileNotFound
File not found.
Definition: AkTypes.h:250
uint16_t AkUInt16
Unsigned 16-bit integer.
AkGraphPointBase< AkReal32 > AkRTPCGraphPoint
Definition: AkTypes.h:999
void Zero()
Definition: AkTypes.h:478
@ AttenuationCurveID_LowPassFilter
The distance-driven low-pass filter (pre send) curve.
Definition: AkTypes.h:1007
AkVector64 ConvertAkVectorToAkVector64(AkVector in)
Definition: AkTypes.h:762
void SetOrientation(AkReal32 in_orientFrontX, AkReal32 in_orientFrontY, AkReal32 in_orientFrontZ, AkReal32 in_orientTopX, AkReal32 in_orientTopY, AkReal32 in_orientTopZ)
Set orientation. Orientation front and top should be orthogonal and normalized.
Definition: AkTypes.h:588
@ AK_EnableBusMeter_RMS
Enable computation of RMS metering.
Definition: AkTypes.h:1239
Audiokinetic namespace.
AkInt32 AkTimeMs
Time in ms.
Definition: AkTypes.h:138
Auxiliary bus sends information per game object per given auxiliary bus.
Definition: AkTypes.h:947
@ AK_Fail
The operation failed.
Definition: AkTypes.h:216
AkReal32 fEmitterAngle
Angle between position vector and emitter orientation.
Definition: AkTypes.h:889
@ AttenuationCurveID_DiffractionHPF
The diffraction-driven high-pass filter curve.
Definition: AkTypes.h:1019
@ AttenuationCurveID_VolumeDry
The distance-driven dry volume curve.
Definition: AkTypes.h:1004
Obstruction/occlusion pair for a position.
Definition: AkTypes.h:788
void * pInMemory
Pointer to the in-memory file. If not NULL, the source will be read from memory. Set szFile and idFil...
Definition: AkTypes.h:344
void Set(const AkVector64 &in_position, const AkVector &in_orientationFront, const AkVector &in_orientationTop)
Set position and orientation. Orientation front and top should be orthogonal and normalized.
Definition: AkTypes.h:522
AkReal32 Diffraction() const
Get the diffraction factor for this emitter-listener pair.
Definition: AkTypes.h:860
@ AK_DataAlignmentError
A pointer to audio data was not aligned to the platform's required alignment (check AkTypes....
Definition: AkTypes.h:271
AkCodecID idCodec
Codec ID for the file. One of the audio formats defined in AkTypes.h (AKCODECID_XXX)
Definition: AkTypes.h:342
@ AttenuationCurveID_DiffractionVolume
The diffraction-driven volume curve.
Definition: AkTypes.h:1017
AkUInt32 AkModulatorID
Modulator ID.
Definition: AkTypes.h:164
AkReal32 fPrev
Definition: AkTypes.h:962
@ AK_DataReady
The provider has available data.
Definition: AkTypes.h:241
AkWorldTransform AkListenerPosition
Positioning information for a listener.
Definition: AkTypes.h:784
@ AK_NotCompatible
Incompatible formats.
Definition: AkTypes.h:218
AkReal32 phi
Elevation.
Definition: AkTypes.h:811
#define AK_MAX_PATH
Maximum path length.
Definition: AkTypes.h:82
@ AkGroupType_Switch
Type switch.
Definition: AkTypes.h:298
IAkSoftwareCodec *(* AkCreateFileSourceCallback)(void *in_pCtx)
Registered file source creation function prototype.
Definition: AkTypes.h:1126
@ AkSetPositionFlags_Default
Definition: AkTypes.h:1204
@ AttenuationCurveID_VolumeAuxGameDef
The distance-driven game-defined auxiliary send curve.
Definition: AkTypes.h:1005
AkUInt32 AkRtpcID
Real time parameter control ID.
Definition: AkTypes.h:155
AkUInt64 AkAudioObjectID
Audio Object ID.
Definition: AkTypes.h:170
@ AK_SpatializationMode_PositionOnly
Spatialization based on emitter position only.
Definition: AkTypes.h:1219
@ AK_InvalidID
The ID is invalid.
Definition: AkTypes.h:223
@ AkCurveInterpolation_SCurve
S Curve.
Definition: AkTypes.h:932
void Zero()
Definition: AkTypes.h:432
@ AttenuationCurveID_Project
Symbol for "Use Project".
Definition: AkTypes.h:1026
@ AkCurveInterpolation_SineRecip
Reciprocal of sine curve.
Definition: AkTypes.h:934
@ AK_EnableBusMeter_KPower
Enable computation of K-weighted power metering (used as a basis for computing loudness,...
Definition: AkTypes.h:1241
@ AK_3DPositionType_EmitterWithAutomation
3D spatialization is computed from the emitter game object position, translated by user-defined autom...
Definition: AkTypes.h:1194
@ ConnectionType_Direct
Direct (main, dry) connection.
Definition: AkTypes.h:401
@ AK_InvalidFile
The provided file is the wrong format or unexpected values causes the file to be invalid.
Definition: AkTypes.h:220
@ AK_SSEInstructionsNotSupported
The machine does not support SSE instructions (required on PC).
Definition: AkTypes.h:258
AkReal32 Distance() const
Get distance.
Definition: AkTypes.h:843
AkUInt32 AkPipelineID
Unique node (bus, voice) identifier for profiling.
Definition: AkTypes.h:168
@ AK_NoDistinctListener
No distinct listener provided for AddOutput.
Definition: AkTypes.h:279
bool operator==(const WwiseObjectIDext &in_rOther) const
Definition: AkTypes.h:1276
@ AkSetPositionFlags_Listener
Definition: AkTypes.h:1202
bool isDefaultDevice
Identify default device. Always false when not supported.
Definition: AkTypes.h:324
@ AK_DLLPathNotFound
Plugin DLL search path could not be found.
Definition: AkTypes.h:267
@ AK_CommandTooLarge
SDK command is too large to fit in the command queue.
Definition: AkTypes.h:263
@ AK_MaxReached
The maximum was reached.
Definition: AkTypes.h:222
static const AkJobType AkJobType_Generic
Job type for general-purpose work.
Definition: AkTypes.h:206
AkUInt64 AkGameObjectID
Game object ID.
Definition: AkTypes.h:142
@ AkPluginTypeMixer
Mixer plug-in: mix voices at the bus level.
Definition: AkTypes.h:1256
AkNodeType
Definition: AkTypes.h:1267
const AkVector & Position() const
Get position vector.
Definition: AkTypes.h:620
AkUInt32 AkBankID
Run time bank ID.
Definition: AkTypes.h:157
AkOSChar * szFile
File path for the source. If not NULL, the source will be streaming from disk. Set pInMemory to NULL....
Definition: AkTypes.h:343
const AkVector & OrientationFront() const
Get orientation front vector.
Definition: AkTypes.h:626
AkReal32 fSpread
Emitter-listener-pair-specific spread.
Definition: AkTypes.h:898
void Set(AkReal32 in_positionX, AkReal32 in_positionY, AkReal32 in_positionZ, AkReal32 in_orientFrontX, AkReal32 in_orientFrontY, AkReal32 in_orientFrontZ, AkReal32 in_orientTopX, AkReal32 in_orientTopY, AkReal32 in_orientTopZ)
Set position and orientation. Orientation front and top should be orthogonal and normalized.
Definition: AkTypes.h:654
VALUE_TYPE To
Represents the value on the Y axis.
Definition: AkTypes.h:985
@ AkNodeType_Default
Definition: AkTypes.h:1268
const AkVector & OrientationTop() const
Get orientation top vector.
Definition: AkTypes.h:632
AKRESULT
Standard function call result.
Definition: AkTypes.h:213
static const AkDeviceID AK_INVALID_DEVICE_ID
Invalid streaming device ID.
Definition: AkTypes.h:185
AkRamp()
Definition: AkTypes.h:958
@ AK_NoDataReady
The provider does not have available data.
Definition: AkTypes.h:242
@ AkGroupType_State
Type state.
Definition: AkTypes.h:299
static const AkPriority AK_MIN_PRIORITY
Minimal priority value [0,100].
Definition: AkTypes.h:195
AkMeteringFlags
Metering flags. Used for specifying bus metering, through AK::SoundEngine::RegisterBusVolumeCallback(...
Definition: AkTypes.h:1235
@ AK_ResourceInUse
Resource is in use and cannot be released.
Definition: AkTypes.h:281
@ AK_DeviceNotFound
The specified device ID does not match with any of the output devices that the sound engine is curren...
Definition: AkTypes.h:275
AkUInt32 AkDeviceID
I/O device ID.
Definition: AkTypes.h:160
@ AK_NotInitialized
The component being used is not initialized. Most likely AK::SoundEngine::Init() was not called yet,...
Definition: AkTypes.h:284
AkReal32 r
Norm/distance.
Definition: AkTypes.h:804
static const AkPluginID AK_INVALID_PLUGINID
Invalid FX ID.
Definition: AkTypes.h:174
@ AK_NoMoreData
No more data is available from the source.
Definition: AkTypes.h:226
WwiseObjectID(AkUniqueID in_ID, bool in_bIsBus)
Definition: AkTypes.h:1304
@ AkCurveInterpolation_Sine
Sine.
Definition: AkTypes.h:928
AkUInt32 AkImageSourceID
Image Source ID.
Definition: AkTypes.h:166
@ AkPluginTypeEffect
Effect plug-in: applies processing to audio data.
Definition: AkTypes.h:1253
AkInt32 AkMemPoolId
Memory pool ID.
Definition: AkTypes.h:144
AkUInt32 AkArgumentValueID
Argument value ID.
Definition: AkTypes.h:162
AkVector64 operator-(const AkVector64 &b) const
Definition: AkTypes.h:421
@ AK_NoJavaVM
No Java VM provided in AkInitSettings.
Definition: AkTypes.h:268
static const AkUInt32 AK_SOUNDBANK_VERSION
Version of the soundbank reader.
Definition: AkTypes.h:203
AkReal32 fDistance
Distance between emitter and listener.
Definition: AkTypes.h:888
@ AK_FileFormatMismatch
Media file format unexpected.
Definition: AkTypes.h:278
static const AkBankID AK_INVALID_BANK_ID
Invalid bank ID.
Definition: AkTypes.h:186
@ AttenuationCurveID_OcclusionHPF
The occlusion-driven high-pass filter curve.
Definition: AkTypes.h:1016
void Set(const AkVector &in_position, const AkVector &in_orientationFront, const AkVector &in_orientationTop)
Set position and orientation. Orientation front and top should be orthogonal and normalized.
Definition: AkTypes.h:642
@ AK_RenderedFX
The effect on the node is rendered.
Definition: AkTypes.h:253
static const AkAudioObjectID AK_INVALID_AUDIO_OBJECT_ID
Invalid audio object ID.
Definition: AkTypes.h:191
@ AkDeviceState_All
Includes audio devices in all states.
Definition: AkTypes.h:316
AkGraphPointBase(AkReal32 in_from, VALUE_TYPE in_to, AkCurveInterpolation in_interp)
Definition: AkTypes.h:978
AkUInt32 AkChannelMask
Channel mask (similar to WAVE_FORMAT_EXTENSIBLE). Bit values are defined in AkSpeakerConfig....
Definition: AkTypes.h:163
AkReal32 AkLPFType
Low-pass filter type.
Definition: AkTypes.h:143
char AkOSChar
Generic character string.
Definition: AkTypes.h:60
AkReal32 PathGain() const
Get the overall path-contribution gain, used to scale the dry + gamedef + userdef gains.
Definition: AkTypes.h:866
uint8_t AkUInt8
Unsigned 8-bit integer.
const AkVector64 & Position() const
Get position vector.
Definition: AkTypes.h:500
@ AK_BankReadError
Error while reading a bank.
Definition: AkTypes.h:246
@ AK_InvalidStateGroup
The StateGroup is not a valid channel.
Definition: AkTypes.h:227
static const AkUInt32 AK_DEFAULT_SWITCH_STATE
Switch selected if no switch has been set yet.
Definition: AkTypes.h:180
void SetPosition(const AkVector64 &in_position)
Set position.
Definition: AkTypes.h:558
AkExternalSourceInfo(AkOSChar *in_pszFileName, AkUInt32 in_iExternalSrcCookie, AkCodecID in_idCodec)
Constructor: specify source by streaming file name.
Definition: AkTypes.h:372
@ AK_IDNotFound
The ID was not found.
Definition: AkTypes.h:224
@ AkPluginTypeMask
Plug-in type mask is 4 bits.
Definition: AkTypes.h:1260
char padding[4]
In order to preserve consistent struct size across archs, we need some padding.
Definition: AkTypes.h:798
AkWorldTransform emitter
Emitter position.
Definition: AkTypes.h:887
@ AK_BankAlreadyLoaded
The bank load failed because the bank is already loaded.
Definition: AkTypes.h:252
@ MultiPositionType_SingleSource
Used for normal sounds, not expected to pass to AK::SoundEngine::SetMultiplePosition() (if done,...
Definition: AkTypes.h:1173
AkReal32 AkVolumeValue
Volume value( also apply to LFE )
Definition: AkTypes.h:141
@ AkCurveInterpolation_Exp1
Exp1.
Definition: AkTypes.h:933
@ AttenuationCurveID_TransmissionLPF
The transmission-driven low-pass filter curve.
Definition: AkTypes.h:1021
@ AK_DLLCannotLoad
Plugin DLL could not be loaded, either because it is not found or one dependency is missing.
Definition: AkTypes.h:266
@ AK_3DPositionType_Emitter
3D spatialization is computed directly from the emitter game object position.
Definition: AkTypes.h:1193
bool operator==(const AkGraphPointBase &other) const
Definition: AkTypes.h:988
@ AK_ProcessDone
The executed routine has finished its execution.
Definition: AkTypes.h:255
float AkReal32
32-bit floating point
@ AK_Success
The operation was successful.
Definition: AkTypes.h:215
AkReal32 fObstruction
Emitter-listener-pair-specific obstruction factor.
Definition: AkTypes.h:895
int32_t AkInt32
Signed 32-bit integer.
@ AkDeviceState_Active
The audio device is active That is, the audio adapter that connects to the endpoint device is present...
Definition: AkTypes.h:312
@ AK_InvalidFileSize
The file requested was found and opened but is either 0 bytes long or not the expected size....
Definition: AkTypes.h:288
Position and orientation of game objects in the world (i.e. supports 64-bit-precision position)
Definition: AkTypes.h:493
Emitter-listener pair: Positioning data pertaining to a single pair of emitter and listener.
Definition: AkTypes.h:816
AkReal32 From
Represents the value on the X axis.
Definition: AkTypes.h:984
@ AK_PathNodeAlreadyInList
This path is already there.
Definition: AkTypes.h:237
AkSetPositionFlags
Flags to independently set the position of the emitter or listener component on a game object.
Definition: AkTypes.h:1200
AkReal32 fGameDefAuxMixGain
Emitter-listener-pair-specific gain (due to distance and cone attenuation) for game-defined send conn...
Definition: AkTypes.h:892
@ AkCurveInterpolation_Exp3
Exp3.
Definition: AkTypes.h:935
AkUInt32 AkFileID
Integer-type file identifier.
Definition: AkTypes.h:159
AkReal32 fPathGain
Emitter-listener-pair-specific overall gain that scales fDryMixGain, fGameDefAuxMixGain and fUserDefA...
Definition: AkTypes.h:901
static const AkPriority AK_DEFAULT_PRIORITY
Default sound / I/O priority.
Definition: AkTypes.h:194
@ AK_MemManagerNotInitialized
The memory manager should have been initialized at this point.
Definition: AkTypes.h:256
@ AK_BalanceFadeHeight
Balance-Fade-Height: Traditional "box" or "car"-like panner.
Definition: AkTypes.h:1185
IAkFileCodec *(* AkCreateFileCodecCallback)()
Registered FileCodec creation function prototype.
Definition: AkTypes.h:1130
@ AK_ProcessNeeded
A routine needs to be executed on some CPU.
Definition: AkTypes.h:254
@ MultiPositionType_MultiDirections
Simulate one sound coming from multiple directions. Useful for repositionning sounds based on wall op...
Definition: AkTypes.h:1175
WwiseObjectID(AkUniqueID in_ID, AkNodeType in_eNodeType)
Definition: AkTypes.h:1310
AkUInt32 iExternalSrcCookie
Cookie identifying the source, given by hashing the name of the source given in the project....
Definition: AkTypes.h:341
@ AK_DeviceNotCompatible
Incompatible Audio device.
Definition: AkTypes.h:272
void SetOrientation(const AkVector &in_orientationFront, const AkVector &in_orientationTop)
Set orientation. Orientation front and top should be orthogonal and normalized.
Definition: AkTypes.h:578
AkReal32 fNext
Definition: AkTypes.h:963
AkReal32 EmitterAngle() const
Definition: AkTypes.h:847
bool operator!=(const AkGraphPointBase &other) const
Definition: AkTypes.h:992
@ AK_EnableBusMeter_3DMeter
Enable computation of data necessary to render a 3D visualization of volume distribution over the sur...
Definition: AkTypes.h:1242
@ AK_InvalidParameter
Something is not within bounds, check the documentation of the function returning this code.
Definition: AkTypes.h:231
@ AK_PluginNotRegistered
Plugin is not registered. Make sure to implement a AK::PluginRegistration class for it and use AK_STA...
Definition: AkTypes.h:270
@ AttenuationCurveID_MaxCount
The maximum number of curve types.
Definition: AkTypes.h:1024
AkReal32 Y
Y Position.
Definition: AkTypes.h:487
AkWorldTransform ConvertAkTransformToAkWorldTransform(AkTransform in)
Definition: AkTypes.h:771
AkUInt32 AkUniqueID
Unique 32-bit ID.
Definition: AkTypes.h:134
void SetPosition(AkReal64 in_x, AkReal64 in_y, AkReal64 in_z)
Set position.
Definition: AkTypes.h:566
AkListenerPosition position
Definition: AkTypes.h:915
Configured audio settings.
Definition: AkTypes.h:304
AkGraphPointBase()=default
Ak3DSpatializationMode
3D spatialization mode.
Definition: AkTypes.h:1217
@ AkDeviceState_NotPresent
The audio device is not present because the audio adapter that connects to the endpoint device has be...
Definition: AkTypes.h:314
AkUInt32 AkPluginID
Source or effect plug-in ID.
Definition: AkTypes.h:145
AkVector operator+(const AkVector &b) const
Definition: AkTypes.h:445
@ AK_InvalidFloatValue
One parameter has a invalid float value such as NaN, INF or FLT_MAX.
Definition: AkTypes.h:277
AkGameObjectID ListenerID() const
Get listener ID associated with the emitter-listener pair.
Definition: AkTypes.h:885
@ AK_AudioFileHeaderTooLarge
The file header is too large.
Definition: AkTypes.h:221
AkReal32 X
X Position.
Definition: AkTypes.h:486
@ AkCurveInterpolation_InvSCurve
Inversed S Curve.
Definition: AkTypes.h:930
@ AkCurveInterpolation_Log3
Log3.
Definition: AkTypes.h:927
AkUInt16 AkDataTypeID
Data sample type ID.
Definition: AkTypes.h:151
@ AK_EnableBusMeter_TruePeak
Enable computation of true peak metering (most CPU and memory intensive).
Definition: AkTypes.h:1238
@ AttenuationCurveID_None
Symbol for "None".
Definition: AkTypes.h:1027
@ AkCurveInterpolation_Log1
Log1.
Definition: AkTypes.h:929
@ AttenuationCurveID_ObstructionHPF
The obstruction-driven high-pass filter curve.
Definition: AkTypes.h:1013
@ AK_UnknownFileError
Rare file error occured, as opposed to AK_FileNotFound or AK_FilePermissionError. This lumps all unre...
Definition: AkTypes.h:286
@ AttenuationCurveID_OcclusionVolume
The occlusion-driven volume curve.
Definition: AkTypes.h:1014
AkUInt32 AkAcousticTextureID
Acoustic Texture ID.
Definition: AkTypes.h:165
@ AkDeviceState_Unknown
The audio device state is unknown or invalid.
Definition: AkTypes.h:311
@ AK_DeviceNotReady
Specified ID doesn't match a valid hardware device: either the device doesn't exist or is disabled.
Definition: AkTypes.h:251
AkInt16 AkCaptureType
Default value: capture type is short.
Definition: AkTypes.h:1341
@ AK_PlayingIDNotFound
Calling a function with a playing ID that is not known.
Definition: AkTypes.h:276
Spherical coordinates.
Definition: AkTypes.h:810
@ AK_Busy
The system is busy and could not process the request.
Definition: AkTypes.h:259
AkReal32 fDiffraction
Emitter-listener-pair-specific diffraction coefficient.
Definition: AkTypes.h:896
#define AKCODECID_BANK_BUS
Bank encoding for bus banks. These banks are contained in the /bus sub-folder.
Definition: AkTypes.h:1096
@ AK_AlreadyConnected
The stream is already connected to another node.
Definition: AkTypes.h:219
@ AK_PathNotFound
This path is not known.
Definition: AkTypes.h:233
AkAttenuationCurveType
Curve types of the Attenuation Editor.
Definition: AkTypes.h:1003
static const AkPipelineID AK_INVALID_PIPELINE_ID
Invalid pipeline ID (for profiling)
Definition: AkTypes.h:190
@ AK_InitBankNotLoaded
The Init bank was not loaded yet, the sound engine isn't completely ready yet.
Definition: AkTypes.h:274
AkUInt32 AkCodecID
Codec plug-in ID.
Definition: AkTypes.h:146
AkReal32 Obstruction() const
Get the obstruction factor for this emitter-listener pair.
Definition: AkTypes.h:857
AkUInt16 AkDataCompID
Data compression format ID.
Definition: AkTypes.h:150
@ AK_InvalidState
This method should not be called when the object is in its current state.
Definition: AkTypes.h:291
Positioning information for a sound, with specified subset of its channels.
Definition: AkTypes.h:795
Volume ramp specified by end points "previous" and "next".
Definition: AkTypes.h:957
AkBankTypeEnum
Bank types.
Definition: AkTypes.h:1148
@ AK_PluginMediaNotAvailable
Plugin media is not available for effect.
Definition: AkTypes.h:261
AkInt8 AkPriority
Priority.
Definition: AkTypes.h:149
AkReal32 Z
Z Position.
Definition: AkTypes.h:488
AkGroupType
Game sync group type.
Definition: AkTypes.h:296
@ AK_FilePathTooLong
The combination of base path and file name exceeds maximum buffer lengths.
Definition: AkTypes.h:290
AkRamp operator*(const AkRamp &in_rLhs, const AkRamp &in_rRhs)
Definition: AkTypes.h:965
int16_t AkInt16
Signed 16-bit integer.
AkReal32 obstruction
ObstructionLevel: [0.0f..1.0f].
Definition: AkTypes.h:790
static const AkUInt32 AK_NUM_JOB_TYPES
Number of possible job types recognized by the Sound Engine.
Definition: AkTypes.h:209
WwiseObjectID(AkUniqueID in_ID)
Definition: AkTypes.h:1298
@ AkBusHierarchy_IsMaster
Flag is set to indicate a master bus (may be used in combination with other flags).
Definition: AkTypes.h:1228
@ AkCurveInterpolation_Constant
Constant ( not valid for fading values )
Definition: AkTypes.h:937
AkExternalSourceInfo(void *in_pInMemory, AkUInt32 in_uiMemorySize, AkUInt32 in_iExternalSrcCookie, AkCodecID in_idCodec)
Constructor: specify source by memory.
Definition: AkTypes.h:358
@ AK_InvalidLanguage
The language is invalid (applies to the Low-Level I/O).
Definition: AkTypes.h:229
void SetOrientation(const AkVector &in_orientationFront, const AkVector &in_orientationTop)
Set orientation. Orientation front and top should be orthogonal and normalized.
Definition: AkTypes.h:698
AkRamp(AkReal32 in_fPrev, AkReal32 in_fNext)
Definition: AkTypes.h:959
AkWorldTransform AkSoundPosition
Positioning information for a sound.
Definition: AkTypes.h:781
static const AkMemPoolId AK_INVALID_POOL_ID
Invalid pool ID.
Definition: AkTypes.h:181
Polar coordinates.
Definition: AkTypes.h:803
@ AkDeviceState_Unplugged
The audio device is unplugged.
Definition: AkTypes.h:315
AkVector operator-(const AkVector &b) const
Definition: AkTypes.h:456
@ AkBusHierarchy_Secondary
Flag is set to indicate the secondary bus hierarchy.
Definition: AkTypes.h:1227
@ AK_NoDataNeeded
The consumer does not need more.
Definition: AkTypes.h:240
AkOSChar deviceName[AK_MAX_PATH]
The user-friendly name for the device.
Definition: AkTypes.h:322
AkReal32 GetGainForConnectionType(AkConnectionType in_eType) const
Get the emitter-listener-pair-specific gain (due to distance and cone attenuation),...
Definition: AkTypes.h:869
@ AkPluginTypeSink
Sink plug-in: implement custom sound engine end point.
Definition: AkTypes.h:1257
static const AkUInt32 AK_INVALID_OUTPUT_DEVICE_ID
Invalid Device ID.
Definition: AkTypes.h:189
@ AK_PartialSuccess
The operation succeeded partially.
Definition: AkTypes.h:217
AkTransform ConvertAkWorldTransformToAkTransform(AkWorldTransform in)
Definition: AkTypes.h:754
@ AK_SteeringPanner
Steering panner.
Definition: AkTypes.h:1186
@ ConnectionType_ReflectionsSend
Connection by a early reflections send.
Definition: AkTypes.h:404
@ AK_ACP_Error
Generic XMA decoder error.
Definition: AkTypes.h:280
AkCurveInterpolation
Curve interpolation types.
Definition: AkTypes.h:924
#define AK_CALLBACK(_type, _name)
@ AttenuationCurveID_VolumeAuxUserDef
The distance-driven user-defined auxiliary send curve.
Definition: AkTypes.h:1006
static const AkPluginID AK_INVALID_SHARE_SET_ID
Invalid Share Set ID.
Definition: AkTypes.h:175
AkPanningRule
Headphone / speakers panning rules.
Definition: AkTypes.h:1209
@ AkSetPositionFlags_Emitter
Definition: AkTypes.h:1201
AkUInt32 uNumSamplesPerFrame
Number of samples per audio frame (256, 512, 1024 or 2048).
Definition: AkTypes.h:305
@ AK_CannotAddItselfAsAChild
It is not possible to add itself as its own child.
Definition: AkTypes.h:230
@ AttenuationCurveID_TransmissionVolume
The transmission-driven volume curve.
Definition: AkTypes.h:1020
@ AK_InvalidInstanceID
The InstanceID is invalid.
Definition: AkTypes.h:225
@ AK_NotImplemented
This feature is not implemented.
Definition: AkTypes.h:214
double AkReal64
64-bit floating point
AkVector operator*(const AkReal32 f) const
Definition: AkTypes.h:467
IAkGrainCodec *(* AkCreateGrainCodecCallback)()
Registered IAkGrainCodec creation function prototype.
Definition: AkTypes.h:1132
static const AkUniqueID AK_INVALID_UNIQUE_ID
Invalid unique 32-bit ID.
Definition: AkTypes.h:177
void SetOrientation(AkReal32 in_orientFrontX, AkReal32 in_orientFrontY, AkReal32 in_orientFrontZ, AkReal32 in_orientTopX, AkReal32 in_orientTopY, AkReal32 in_orientTopZ)
Set orientation. Orientation front and top should be orthogonal and normalized.
Definition: AkTypes.h:708
AkWorldTransform position
Emitter position.
Definition: AkTypes.h:796
AkUInt32 AkStateID
State ID.
Definition: AkTypes.h:135
AkPluginType
Definition: AkTypes.h:1249
@ AkPanningRule_Speakers
Left and right positioned 60 degrees apart (by default - see AK::SoundEngine::GetSpeakerAngles()).
Definition: AkTypes.h:1210
@ AttenuationCurveID_Spread
The distance-driven Spread curve.
Definition: AkTypes.h:1009
@ AkCurveInterpolation_Linear
Linear (Default)
Definition: AkTypes.h:931
bool bSpatialized
Listener scaling factor (see AK::SoundEngine::SetListenerScalingFactor()).
Definition: AkTypes.h:917
@ MultiPositionType_MultiSources
Simulate multiple sources in one sound playing, adding volumes. For instance, all the torches on your...
Definition: AkTypes.h:1174
AkReal32 AkPitchValue
Pitch value.
Definition: AkTypes.h:140
static const AkPlayingID AK_INVALID_PLAYING_ID
Invalid playing ID.
Definition: AkTypes.h:179
@ AK_DataNeeded
The consumer needs more.
Definition: AkTypes.h:239
void SetPosition(const AkVector &in_position)
Set position.
Definition: AkTypes.h:678
AkVector ConvertAkVector64ToAkVector(AkVector64 in)
Definition: AkTypes.h:744
AkReal32 fScalingFactor
Combined scaling factor due to both emitter and listener.
Definition: AkTypes.h:900
@ AkDeviceState_Disabled
The audio device is disabled.
Definition: AkTypes.h:313
#define AKCODECID_BANK_EVENT
Bank encoding for event banks. These banks are contained in the /event sub-folder.
Definition: AkTypes.h:1095
uint64_t AkUInt64
Unsigned 64-bit integer.
AkUInt32 AkSwitchStateID
Switch ID.
Definition: AkTypes.h:154
AkReal32 fDryMixGain
Emitter-listener-pair-specific gain (due to distance and cone attenuation) for direct connections.
Definition: AkTypes.h:891
AkReal32 fOcclusion
Emitter-listener-pair-specific occlusion factor.
Definition: AkTypes.h:894
AkReal64 Y
Y Position.
Definition: AkTypes.h:438
@ AkPanningRule_Headphones
Left and right positioned 180 degrees apart.
Definition: AkTypes.h:1211
AkExternalSourceInfo()
Default constructor.
Definition: AkTypes.h:349
AkReal32 fListenerAngle
Angle between position vector and listener orientation.
Definition: AkTypes.h:890
AkUInt16 AkPortNumber
Port number.
Definition: AkTypes.h:139
AkFileID idFile
File ID. If not zero, the source will be streaming from disk. This ID can be anything....
Definition: AkTypes.h:346
AkChannelMask uEmitterChannelMask
Channels of the emitter that apply to this ray.
Definition: AkTypes.h:902
AkReal32 fTransmissionLoss
Emitter-listener-pair-specific transmission occlusion.
Definition: AkTypes.h:897
#define AKCODECID_BANK
Bank encoding.
Definition: AkTypes.h:1073
@ AK_PathNoVertices
Stuff in vertices before trying to start it.
Definition: AkTypes.h:234
AkReal32 theta
Azimuth.
Definition: AkTypes.h:805
static const AkArgumentValueID AK_FALLBACK_ARGUMENTVALUE_ID
Fallback argument value ID.
Definition: AkTypes.h:187
@ AK_PathNotPaused
Only a paused path can be resumed.
Definition: AkTypes.h:236
AkAudioDeviceState
Definition: AkTypes.h:310
@ AK_SpatializationMode_None
No spatialization.
Definition: AkTypes.h:1218
static const AkGameObjectID AK_INVALID_GAME_OBJECT
Invalid game object (may also mean all game objects)
Definition: AkTypes.h:176
AkListener()
Definition: AkTypes.h:911
AkRayID ID() const
Get the emitter-listener pair's ID.
Definition: AkTypes.h:882
@ AkBusHierarchy_Primary
Flag is set to indicate the primary bus hierarchy.
Definition: AkTypes.h:1226
@ AttenuationCurveID_ObstructionLPF
The obstruction-driven low-pass filter curve.
Definition: AkTypes.h:1012
@ AttenuationCurveID_TransmissionHPF
The transmission-driven high-pass filter curve.
Definition: AkTypes.h:1022
3D 64-bit vector. Intended as storage for world positions of sounds and objects, benefiting from 64-b...
Definition: AkTypes.h:409
@ AkPluginTypeSource
Source plug-in: creates sound by synthesis method (no input, just output).
Definition: AkTypes.h:1252
@ AK_ChildAlreadyHasAParent
The child already has a parent.
Definition: AkTypes.h:228
AkRayID id
ID of this emitter-listener pair, unique for a given emitter.
Definition: AkTypes.h:904
@ AK_UnknownBankID
Trying to load a bank using an ID which is not defined.
Definition: AkTypes.h:245
Public data structures for converted file format.
Definition: AkTypes.h:1319
@ AttenuationCurveID_DiffractionLPF
The diffraction-driven low-pass filter curve.
Definition: AkTypes.h:1018
AkUInt32 AkRayID
Unique (per emitter) identifier for an emitter-listener ray.
Definition: AkTypes.h:169
AkUInt16 uAttenuation
Position of this point in samples at the source rate.
Definition: AkTypes.h:1325
@ AK_FilePermissionError
The file access permissions prevent opening a file.
Definition: AkTypes.h:285
@ AK_TooManyConcurrentOperations
When using StdStream, file operations can be blocking or not. When not blocking, operations need to b...
Definition: AkTypes.h:287
@ ConnectionType_UserDefSend
Connection by a user-defined send.
Definition: AkTypes.h:403
@ AK_StreamMgrNotInitialized
The stream manager should have been initialized at this point.
Definition: AkTypes.h:257
Type for a point in an RTPC or Attenuation curve.
Definition: AkTypes.h:975
uint32_t AkUInt32
Unsigned 32-bit integer.
AkReal32 fUserDefAuxMixGain
Emitter-listener-pair-specific gain (due to distance and cone attenuation) for user-defined send conn...
Definition: AkTypes.h:893
static const AkFileID AK_INVALID_FILE_ID
Invalid file ID.
Definition: AkTypes.h:184
AkInt16 AkPluginParamID
Source or effect plug-in parameter ID.
Definition: AkTypes.h:148
static const AkAuxBusID AK_INVALID_AUX_ID
Invalid auxiliary bus ID (or no Aux bus ID)
Definition: AkTypes.h:183
@ AK_ElementAlreadyInList
The item could not be added because it was already in the list.
Definition: AkTypes.h:232
AkSpeakerPanningType
Speaker panning type: type of panning logic when object is not 3D spatialized (i.e....
Definition: AkTypes.h:1183
@ AK_Cancelled
The requested action was cancelled (not an error).
Definition: AkTypes.h:244
~AkEmitterListenerPair()
Destructor.
Definition: AkTypes.h:840
AkGameObjectID listenerID
Game object ID of the listener associated with this send. Use AK_INVALID_GAME_OBJECT as a wildcard to...
Definition: AkTypes.h:948
@ AkPluginTypeNone
Unknown/invalid plug-in type.
Definition: AkTypes.h:1250
AkUInt32 AkAuxBusID
Auxilliary bus ID.
Definition: AkTypes.h:147
AkUInt64 AkOutputDeviceID
Audio Output device ID.
Definition: AkTypes.h:167
AkCreateBankSourceCallback pBankSrcCreateFunc
Definition: AkTypes.h:1137
AkVector64 operator+(const AkVector64 &b) const
Definition: AkTypes.h:410
@ AK_DuplicateUniqueID
Two Wwise objects share the same ID.
Definition: AkTypes.h:273
@ AttenuationCurveID_ObstructionVolume
The obstruction-driven volume curve.
Definition: AkTypes.h:1011
const AkVector & OrientationTop() const
Get orientation top vector.
Definition: AkTypes.h:512
@ AkBankType_User
User-defined bank.
Definition: AkTypes.h:1149
@ AttenuationCurveID_OcclusionLPF
The occlusion-driven low-pass filter curve.
Definition: AkTypes.h:1015
@ AK_FormatNotReady
Source format not known yet.
Definition: AkTypes.h:248
3D vector for some operations in 3D space. Typically intended only for localized calculations due to ...
Definition: AkTypes.h:444
@ AK_InsufficientMemory
Memory error.
Definition: AkTypes.h:243
@ AkPluginTypeCodec
Compressor/decompressor plug-in (allows support for custom audio file types).
Definition: AkTypes.h:1251
AkCreateFileSourceCallback pFileSrcCreateFunc
Definition: AkTypes.h:1136
@ AK_3DPositionType_ListenerWithAutomation
3D spatialization is computed from the listener game object position, translated by user-defined auto...
Definition: AkTypes.h:1195
AkBusHierarchyFlags
Bus type bit field.
Definition: AkTypes.h:1225
AkCurveInterpolation Interp
The shape of the interpolation curve between this point and the next.
Definition: AkTypes.h:986
AkChannelMask uInputChannels
Channels to which the above position applies.
Definition: AkTypes.h:797
static const AkReal32 AK_DEFAULT_BANK_THROUGHPUT
Default bank load throughput (1 Mb/ms)
Definition: AkTypes.h:200
AkReal32 AkRtpcValue
Real time parameter control value.
Definition: AkTypes.h:156
static const AkJobType AkJobType_SpatialAudio
Job type for Spatial Audio computations.
Definition: AkTypes.h:208
AkReal32 fScalingFactor
Listener position (see AK::SoundEngine::SetPosition()).
Definition: AkTypes.h:916
AkReal32 ListenerAngle() const
Definition: AkTypes.h:851
@ AttenuationCurveID_HighPassFilter
The distance-driven high-pass filter (pre send) curve.
Definition: AkTypes.h:1008
AkUInt32 uNumSamplesPerSecond
Number of samples per second.
Definition: AkTypes.h:306
Listener information.
Definition: AkTypes.h:910
@ AK_OpenSLError
OpenSL returned an error. Check error log for more details.
Definition: AkTypes.h:269
AkUInt32 AkSwitchGroupID
Switch group ID.
Definition: AkTypes.h:153
AkReal32 TransmissionLoss() const
Get the transmission loss factor for this emitter-listener pair.
Definition: AkTypes.h:863
AkReal32 fAperture
Emitter-listener-pair-specific aperture.
Definition: AkTypes.h:899
@ AK_PathNotRunning
Only a running path can be paused.
Definition: AkTypes.h:235
@ AK_WrongBankVersion
The bank version is not compatible with the current bank reader.
Definition: AkTypes.h:249
AkReal64 Z
Z Position.
Definition: AkTypes.h:439
static const AkMemPoolId AK_DEFAULT_POOL_ID
Default pool ID, same as AK_INVALID_POOL_ID.
Definition: AkTypes.h:182
int8_t AkInt8
Signed 8-bit integer.
@ AK_AlreadyInitialized
Init() was called but that element was already initialized.
Definition: AkTypes.h:283
@ AK_MustBeVirtualized
Sound was Not Allowed to play.
Definition: AkTypes.h:262
static const AkPriority AK_MAX_PRIORITY
Maximal priority value [0,100].
Definition: AkTypes.h:196
@ AK_Deferred
Returned by functions to indicate to the caller the that the operation is done asynchronously....
Definition: AkTypes.h:289
IAkSoftwareCodec *(* AkCreateBankSourceCallback)(void *in_pCtx)
Registered bank source node creation function prototype.
Definition: AkTypes.h:1128
Ak3DPositionType
3D position type: defines what acts as the emitter position for computing spatialization against the ...
Definition: AkTypes.h:1192
static const AkRtpcID AK_INVALID_RTPC_ID
Invalid RTPC ID.
Definition: AkTypes.h:178
const AkVector & OrientationFront() const
Get orientation front vector.
Definition: AkTypes.h:506
AkReal32 occlusion
OcclusionLevel: [0.0f..1.0f].
Definition: AkTypes.h:789
AkUInt32 AkBankType
Run time bank type.
Definition: AkTypes.h:158
AkConnectionType
Nature of the connection binding an input to a bus.
Definition: AkTypes.h:400
Position and orientation of objects in a "local" space.
Definition: AkTypes.h:613
@ AK_SpatializationMode_PositionAndOrientation
Spatialization based on both emitter position and emitter orientation.
Definition: AkTypes.h:1220
AkUInt32 AkJobType
Job type identifier.
Definition: AkTypes.h:171
AkUInt32 AkPlayingID
Playing ID.
Definition: AkTypes.h:137
AkCreateGrainCodecCallback pGrainCodecCreateFunc
Definition: AkTypes.h:1139
@ ConnectionType_GameDefSend
Connection by a game-defined send.
Definition: AkTypes.h:402
@ AK_RejectedByFilter
A play request was rejected due to the MIDI filter parameters.
Definition: AkTypes.h:264
AkAuxBusID auxBusID
Auxiliary bus ID.
Definition: AkTypes.h:949
AkReal64 X
X Position.
Definition: AkTypes.h:437
@ AkCurveInterpolation_LastFadeCurve
Update this value to reflect last curve available for fades.
Definition: AkTypes.h:936
@ AkPluginTypeGlobalExtension
Global Extension plug-in: (e.g. Spatial Audio, Interactive Music)
Definition: AkTypes.h:1258
void Set(AkReal64 in_positionX, AkReal64 in_positionY, AkReal64 in_positionZ, AkReal32 in_orientFrontX, AkReal32 in_orientFrontY, AkReal32 in_orientFrontZ, AkReal32 in_orientTopX, AkReal32 in_orientTopY, AkReal32 in_orientTopZ)
Set position and orientation. Orientation front and top should be orthogonal and normalized.
Definition: AkTypes.h:534
AkUInt32 uiMemorySize
Size of the data pointed by pInMemory.
Definition: AkTypes.h:345
AkCreateFileCodecCallback pFileCodecCreateFunc
Definition: AkTypes.h:1138
@ AkBankType_Event
Bank generated for one event.
Definition: AkTypes.h:1150
static const AkChannelMask AK_INVALID_CHANNELMASK
Invalid channel mask.
Definition: AkTypes.h:188
@ AkPluginTypeMetadata
Metadata plug-in: applies object-based processing to audio data.
Definition: AkTypes.h:1259
AkUInt32 idDevice
Device ID for Wwise. This is the same as what is returned from AK::GetDeviceID and AK::GetDeviceIDFro...
Definition: AkTypes.h:321
AkUInt32 AkTriggerID
Trigger ID.
Definition: AkTypes.h:161
@ AK_InvalidBankType
Invalid bank type. The bank type was either supplied through a function call (e.g....
Definition: AkTypes.h:282
Analyzed envelope point.
Definition: AkTypes.h:1323

Was this page helpful?

Need Support?

Questions? Problems? Need more info? Contact us, and we can help!

Visit our Support page

Tell us about your project. We're here to help.

Register your project and we'll help you get started with no strings attached!

Get started with Wwise