Wwise SDK 2015.1.9
_common_2_ak_types_8h_source
Version
menu_open
link
include/AK/SoundEngine/Common/AkTypes.h
Go to the documentation of this file.00001 00002 // 00003 // Copyright (c) 2006 Audiokinetic Inc. / All Rights Reserved 00004 // 00006 00007 // AkTypes.h 00008 00011 00012 #ifndef _AK_DATA_TYPES_H_ 00013 #define _AK_DATA_TYPES_H_ 00014 00015 // Platform-specific section. 00016 //---------------------------------------------------------------------------------------------------- 00017 #include <AK/AkPlatforms.h> 00018 00019 00020 //---------------------------------------------------------------------------------------------------- 00021 00022 #include <AK/SoundEngine/Common/AkSoundEngineExport.h> 00023 00024 #ifndef NULL 00025 #ifdef __cplusplus 00026 #define NULL 0 00027 #else 00028 #define NULL ((void *)0) 00029 #endif 00030 #endif 00031 00032 typedef AkUInt32 AkUniqueID; 00033 typedef AkUInt32 AkStateID; 00034 typedef AkUInt32 AkStateGroupID; 00035 typedef AkUInt32 AkPlayingID; 00036 typedef AkInt32 AkTimeMs; 00037 typedef AkReal32 AkPitchValue; 00038 typedef AkReal32 AkVolumeValue; 00039 typedef AkUIntPtr AkGameObjectID; 00040 typedef AkReal32 AkLPFType; 00041 typedef AkInt32 AkMemPoolId; 00042 typedef AkUInt32 AkPluginID; 00043 typedef AkUInt32 AkCodecID; 00044 typedef AkUInt32 AkAuxBusID; 00045 typedef AkInt16 AkPluginParamID; 00046 typedef AkInt8 AkPriority; 00047 typedef AkUInt16 AkDataCompID; 00048 typedef AkUInt16 AkDataTypeID; 00049 typedef AkUInt8 AkDataInterleaveID; 00050 typedef AkUInt32 AkSwitchGroupID; 00051 typedef AkUInt32 AkSwitchStateID; 00052 typedef AkUInt32 AkRtpcID; 00053 typedef AkReal32 AkRtpcValue; 00054 typedef AkUInt32 AkBankID; 00055 typedef AkUInt32 AkFileID; 00056 typedef AkUInt32 AkDeviceID; 00057 typedef AkUInt32 AkTriggerID; 00058 typedef AkUInt32 AkArgumentValueID; 00059 typedef AkUInt32 AkChannelMask; 00060 typedef AkUInt32 AkModulatorID; 00061 00062 // Constants. 00063 static const AkPluginID AK_INVALID_PLUGINID = (AkPluginID)-1; 00064 static const AkGameObjectID AK_INVALID_GAME_OBJECT = (AkGameObjectID)-1; 00065 static const AkUniqueID AK_INVALID_UNIQUE_ID = 0; 00066 static const AkRtpcID AK_INVALID_RTPC_ID = AK_INVALID_UNIQUE_ID; 00067 static const AkUInt32 AK_INVALID_LISTENER_INDEX = (AkUInt32)-1; 00068 static const AkPlayingID AK_INVALID_PLAYING_ID = AK_INVALID_UNIQUE_ID; 00069 static const AkUInt32 AK_DEFAULT_SWITCH_STATE = 0; 00070 static const AkMemPoolId AK_INVALID_POOL_ID = -1; 00071 static const AkMemPoolId AK_DEFAULT_POOL_ID = -1; 00072 static const AkAuxBusID AK_INVALID_AUX_ID = AK_INVALID_UNIQUE_ID; 00073 static const AkFileID AK_INVALID_FILE_ID = (AkFileID)-1; 00074 static const AkDeviceID AK_INVALID_DEVICE_ID = (AkDeviceID)-1; 00075 static const AkBankID AK_INVALID_BANK_ID = AK_INVALID_UNIQUE_ID; 00076 static const AkArgumentValueID AK_FALLBACK_ARGUMENTVALUE_ID = 0; 00077 static const AkChannelMask AK_INVALID_CHANNELMASK = 0; 00078 static const AkUInt32 AK_INVALID_OUTPUT_DEVICE_ID = AK_INVALID_UNIQUE_ID; 00079 00080 // Priority. 00081 static const AkPriority AK_DEFAULT_PRIORITY = 50; 00082 static const AkPriority AK_MIN_PRIORITY = 0; 00083 static const AkPriority AK_MAX_PRIORITY = 100; 00084 00085 // Default bank I/O settings. 00086 static const AkPriority AK_DEFAULT_BANK_IO_PRIORITY = AK_DEFAULT_PRIORITY; 00087 static const AkReal32 AK_DEFAULT_BANK_THROUGHPUT = 1*1024*1024/1000.f; 00088 00089 // Bank version 00090 static const AkUInt32 AK_SOUNDBANK_VERSION = 113; 00091 00092 // Legacy: define fixed maximum number of channels for platforms that don't support 7.1 (and above). 00093 #if defined(AK_71AUDIO) 00094 #define AK_STANDARD_MAX_NUM_CHANNELS (8) ///< Platform supports at least 7.1 00095 #elif defined(AK_LFECENTER) && defined(AK_REARCHANNELS) 00096 #define AK_VOICE_MAX_NUM_CHANNELS (6) ///< Platform supports up to 5.1 configuration. 00097 #define AK_STANDARD_MAX_NUM_CHANNELS (AK_VOICE_MAX_NUM_CHANNELS) ///< Platform supports 5.1 00098 #elif defined(AK_REARCHANNELS) 00099 #ifdef AK_WII 00100 #define AK_VOICE_MAX_NUM_CHANNELS (2) ///< Platform supports up to stereo configuration. 00101 #else 00102 #define AK_VOICE_MAX_NUM_CHANNELS (4) ///< Platform supports up to 4.0 configuration. 00103 #endif 00104 #else 00105 #define AK_VOICE_MAX_NUM_CHANNELS (2) ///< Platform supports up to stereo configuration. 00106 #define AK_STANDARD_MAX_NUM_CHANNELS (AK_VOICE_MAX_NUM_CHANNELS) ///< Platform supports stereo. 00107 #endif 00108 00110 enum AKRESULT 00111 { 00112 AK_NotImplemented = 0, 00113 AK_Success = 1, 00114 AK_Fail = 2, 00115 AK_PartialSuccess = 3, 00116 AK_NotCompatible = 4, 00117 AK_AlreadyConnected = 5, 00118 AK_NameNotSet = 6, 00119 AK_InvalidFile = 7, 00120 AK_AudioFileHeaderTooLarge = 8, 00121 AK_MaxReached = 9, 00122 AK_InputsInUsed = 10, 00123 AK_OutputsInUsed = 11, 00124 AK_InvalidName = 12, 00125 AK_NameAlreadyInUse = 13, 00126 AK_InvalidID = 14, 00127 AK_IDNotFound = 15, 00128 AK_InvalidInstanceID = 16, 00129 AK_NoMoreData = 17, 00130 AK_NoSourceAvailable = 18, 00131 AK_StateGroupAlreadyExists = 19, 00132 AK_InvalidStateGroup = 20, 00133 AK_ChildAlreadyHasAParent = 21, 00134 AK_InvalidLanguage = 22, 00135 AK_CannotAddItseflAsAChild = 23, 00136 //AK_TransitionNotFound = 24, ///< The transition is not in the list. 00137 //AK_TransitionNotStartable = 25, ///< Start allowed in the Running and Done states. 00138 //AK_TransitionNotRemovable = 26, ///< Must not be in the Computing state. 00139 //AK_UsersListFull = 27, ///< No one can be added any more, could be AK_MaxReached. 00140 //AK_UserAlreadyInList = 28, ///< This user is already there. 00141 AK_UserNotInList = 29, 00142 AK_NoTransitionPoint = 30, 00143 AK_InvalidParameter = 31, 00144 AK_ParameterAdjusted = 32, 00145 AK_IsA3DSound = 33, 00146 AK_NotA3DSound = 34, 00147 AK_ElementAlreadyInList = 35, 00148 AK_PathNotFound = 36, 00149 AK_PathNoVertices = 37, 00150 AK_PathNotRunning = 38, 00151 AK_PathNotPaused = 39, 00152 AK_PathNodeAlreadyInList = 40, 00153 AK_PathNodeNotInList = 41, 00154 AK_VoiceNotFound = 42, 00155 AK_DataNeeded = 43, 00156 AK_NoDataNeeded = 44, 00157 AK_DataReady = 45, 00158 AK_NoDataReady = 46, 00159 AK_NoMoreSlotAvailable = 47, 00160 AK_SlotNotFound = 48, 00161 AK_ProcessingOnly = 49, 00162 AK_MemoryLeak = 50, 00163 AK_CorruptedBlockList = 51, 00164 AK_InsufficientMemory = 52, 00165 AK_Cancelled = 53, 00166 AK_UnknownBankID = 54, 00167 AK_IsProcessing = 55, 00168 AK_BankReadError = 56, 00169 AK_InvalidSwitchType = 57, 00170 AK_VoiceDone = 58, 00171 AK_UnknownEnvironment = 59, 00172 AK_EnvironmentInUse = 60, 00173 AK_UnknownObject = 61, 00174 AK_NoConversionNeeded = 62, 00175 AK_FormatNotReady = 63, 00176 AK_WrongBankVersion = 64, 00177 AK_DataReadyNoProcess = 65, 00178 AK_FileNotFound = 66, 00179 AK_DeviceNotReady = 67, 00180 AK_CouldNotCreateSecBuffer = 68, 00181 AK_BankAlreadyLoaded = 69, 00182 AK_RenderedFX = 71, 00183 AK_ProcessNeeded = 72, 00184 AK_ProcessDone = 73, 00185 AK_MemManagerNotInitialized = 74, 00186 AK_StreamMgrNotInitialized = 75, 00187 AK_SSEInstructionsNotSupported = 76, 00188 AK_Busy = 77, 00189 AK_UnsupportedChannelConfig = 78, 00190 AK_PluginMediaNotAvailable = 79, 00191 AK_MustBeVirtualized = 80, 00192 AK_CommandTooLarge = 81, 00193 AK_RejectedByFilter = 82, 00194 AK_InvalidCustomPlatformName= 83, 00195 AK_DLLCannotLoad = 84, 00196 }; 00197 00199 enum AkGroupType 00200 { 00201 // should stay set as Switch = 0 and State = 1 00202 AkGroupType_Switch = 0, 00203 AkGroupType_State = 1 00204 }; 00205 00212 struct AkExternalSourceInfo 00213 { 00214 AkUInt32 iExternalSrcCookie; 00215 AkCodecID idCodec; 00216 AkOSChar * szFile; 00217 void* pInMemory; 00218 AkUInt32 uiMemorySize; 00219 AkFileID idFile; 00220 00222 AkExternalSourceInfo() 00223 : iExternalSrcCookie( 0 ) 00224 , idCodec( 0 ) 00225 , szFile( 0 ) 00226 , pInMemory( 0 ) 00227 , uiMemorySize( 0 ) 00228 , idFile( 0 ) {} 00229 00231 AkExternalSourceInfo( 00232 void* in_pInMemory, 00233 AkUInt32 in_uiMemorySize, 00234 AkUInt32 in_iExternalSrcCookie, 00235 AkCodecID in_idCodec 00236 ) 00237 : iExternalSrcCookie( in_iExternalSrcCookie ) 00238 , idCodec( in_idCodec ) 00239 , szFile( 0 ) 00240 , pInMemory( in_pInMemory ) 00241 , uiMemorySize( in_uiMemorySize ) 00242 , idFile( 0 ) {} 00243 00245 AkExternalSourceInfo( 00246 AkOSChar * in_pszFileName, 00247 AkUInt32 in_iExternalSrcCookie, 00248 AkCodecID in_idCodec 00249 ) 00250 : iExternalSrcCookie( in_iExternalSrcCookie ) 00251 , idCodec( in_idCodec ) 00252 , szFile( in_pszFileName ) 00253 , pInMemory( 0 ) 00254 , uiMemorySize( 0 ) 00255 , idFile( 0 ) {} 00256 00258 AkExternalSourceInfo( 00259 AkFileID in_idFile, 00260 AkUInt32 in_iExternalSrcCookie, 00261 AkCodecID in_idCodec 00262 ) 00263 : iExternalSrcCookie( in_iExternalSrcCookie ) 00264 , idCodec( in_idCodec ) 00265 , szFile( 0 ) 00266 , pInMemory( 0 ) 00267 , uiMemorySize( 0 ) 00268 , idFile( in_idFile ) {} 00269 }; 00270 00272 enum AkConnectionType 00273 { 00274 ConnectionType_Direct = 0x0, 00275 ConnectionType_GameDefSend = 0x1, 00276 ConnectionType_UserDefSend = 0x2, 00277 ConnectionType_CrossDeviceSend = 0x4 00278 }; 00279 00281 struct AkVector 00282 { 00283 AkReal32 X; 00284 AkReal32 Y; 00285 AkReal32 Z; 00286 }; 00287 00289 struct AkSoundPosition 00290 { 00291 AkVector Position; 00292 AkVector Orientation; 00293 }; 00294 00296 struct AkListenerPosition 00297 { 00298 AkVector OrientationFront; 00299 AkVector OrientationTop; 00300 AkVector Position; 00301 }; 00302 00304 struct AkPolarCoord 00305 { 00306 AkReal32 r; 00307 AkReal32 theta; 00308 }; 00309 00311 struct AkSphericalCoord : public AkPolarCoord 00312 { 00313 AkReal32 phi; 00314 }; 00315 00319 class AkEmitterListenerPair : public AkSphericalCoord 00320 { 00321 public: 00323 AkEmitterListenerPair() 00324 : fEmitterAngle( 0.f ) 00325 , fDryMixGain( 1.f ) 00326 , fGameDefAuxMixGain( 1.f ) 00327 , fUserDefAuxMixGain( 1.f ) 00328 , m_uListenerMask( 0 ) 00329 { 00330 r = 0; 00331 theta = 0; 00332 phi = 0; 00333 } 00335 ~AkEmitterListenerPair() {} 00336 00338 inline AkReal32 Distance() const { return r; } 00339 00341 inline AkReal32 Azimuth() const { return theta; } 00342 00344 inline AkReal32 Elevation() const { return phi; } 00345 00348 inline AkReal32 EmitterAngle() const { return fEmitterAngle; } 00349 00351 inline AkReal32 GetGainForConnectionType(AkConnectionType in_eType) const 00352 { 00353 AkConnectionType eType = (AkConnectionType)(in_eType & ~ConnectionType_CrossDeviceSend); 00354 if (eType == ConnectionType_Direct) 00355 return fDryMixGain; 00356 else if (eType == ConnectionType_GameDefSend) 00357 return fGameDefAuxMixGain; 00358 else 00359 return fUserDefAuxMixGain; 00360 } 00361 00363 inline AkUInt32 ListenerMask() const { return m_uListenerMask; } 00364 00365 // Get listener index of first listener assigned to this emitter-listener pair. 00367 inline AkUInt8 ListenerIdx() const 00368 { 00369 AkUInt8 uListenerIdx = 0; 00370 AkUInt8 uListenerMask = m_uListenerMask; 00371 while ( !( uListenerMask & 0x01 ) ) 00372 { 00373 uListenerMask >>= 1; 00374 ++uListenerIdx; 00375 } 00376 return uListenerIdx; 00377 } 00378 00379 AkReal32 fEmitterAngle; 00380 AkReal32 fDryMixGain; 00381 AkReal32 fGameDefAuxMixGain; 00382 AkReal32 fUserDefAuxMixGain; 00383 protected: 00384 AkUInt8 m_uListenerMask; 00385 }; 00386 00388 struct AkListener 00389 { 00390 AkListener() 00391 : fScalingFactor( 1.0f ) 00392 , bSpatialized( true ) 00393 {} 00394 AkListenerPosition position; 00395 AkReal32 fScalingFactor; 00396 bool bSpatialized; 00397 }; 00398 00400 enum AkCurveInterpolation 00401 { 00402 //DONT GO BEYOND 15! (see below for details) 00403 //Curves from 0 to LastFadeCurve NEED TO BE A MIRROR IMAGE AROUND LINEAR (eg. Log3 is the inverse of Exp3) 00404 AkCurveInterpolation_Log3 = 0, 00405 AkCurveInterpolation_Sine = 1, 00406 AkCurveInterpolation_Log1 = 2, 00407 AkCurveInterpolation_InvSCurve = 3, 00408 AkCurveInterpolation_Linear = 4, 00409 AkCurveInterpolation_SCurve = 5, 00410 AkCurveInterpolation_Exp1 = 6, 00411 AkCurveInterpolation_SineRecip = 7, 00412 AkCurveInterpolation_Exp3 = 8, 00413 AkCurveInterpolation_LastFadeCurve = 8, 00414 AkCurveInterpolation_Constant = 9 00415 //DONT GO BEYOND 15! The value is stored on 5 bits, 00416 //but we can use only 4 bits for the actual values, keeping 00417 //the 5th bit at 0 to void problems when the value is 00418 //expanded to 32 bits. 00419 }; 00420 #define AKCURVEINTERPOLATION_NUM_STORAGE_BIT 5 ///< Internal storage restriction, for internal use only. 00421 00422 #ifndef AK_MAX_AUX_PER_OBJ 00423 #define AK_MAX_AUX_PER_OBJ (4) ///< Maximum number of environments in which a single game object may be located at a given time. 00424 00425 // This define is there to Limit the number of Aux per sound that can be processed. 00426 // This value must be >= AK_MAX_AUX_PER_OBJ and >= AK_NUM_AUX_SEND_PER_OBJ (4) 00427 #define AK_MAX_AUX_SUPPORTED (AK_MAX_AUX_PER_OBJ + 4) 00428 #else 00429 // This define is there to Limit the number of Aux per sound that can be processed. 00430 // This value must be >= AK_MAX_AUX_PER_OBJ and >= AK_MAX_AUX_PER_NODE 00431 #define AK_MAX_AUX_SUPPORTED AK_MAX_AUX_PER_OBJ 00432 00433 #endif 00434 00435 #define AK_NUM_LISTENERS (8) ///< Number of listeners that can be used. 00436 #define AK_LISTENERS_MASK_ALL (0xFFFFFFFF) ///< All listeners. 00437 00439 struct AkAuxSendValue 00440 { 00441 AkAuxBusID auxBusID; 00442 AkReal32 fControlValue; 00443 }; 00444 00446 struct AkRamp 00447 { 00448 AkRamp() : fPrev( 1.f ), fNext( 1.f ) {} 00449 AkRamp( AkReal32 in_fPrev, AkReal32 in_fNext ) : fPrev( in_fPrev ), fNext( in_fNext ) {} 00450 AkRamp & operator*=(const AkRamp& in_rRhs) { fPrev *= in_rRhs.fPrev; fNext *= in_rRhs.fNext; return *this; } 00451 00452 AkReal32 fPrev; 00453 AkReal32 fNext; 00454 }; 00455 inline AkRamp operator*(const AkRamp& in_rLhs, const AkRamp& in_rRhs) 00456 { 00457 AkRamp result(in_rLhs); 00458 result *= in_rRhs; 00459 return result; 00460 } 00461 00462 #ifndef AK_MEMPOOLATTRIBUTES 00463 00472 enum AkMemPoolAttributes 00473 { 00474 AkNoAlloc = 0, 00475 AkMalloc = 1, 00476 AkAllocMask = AkNoAlloc | AkMalloc, 00477 00478 AkFixedSizeBlocksMode = 1<<3, 00479 AkBlockMgmtMask = AkFixedSizeBlocksMode 00480 }; 00481 #define AK_MEMPOOLATTRIBUTES 00482 00483 #endif 00484 00485 namespace AK 00486 { 00494 AK_EXTERNFUNC( void *, AllocHook )( 00495 size_t in_size 00496 ); 00497 00504 AK_EXTERNFUNC( void, FreeHook )( 00505 void * in_pMemAddress 00506 ); 00507 } 00508 00509 // --------------------------------------------------------------- 00510 // Languages 00511 // --------------------------------------------------------------- 00512 #define AK_MAX_LANGUAGE_NAME_SIZE (32) 00513 00514 // --------------------------------------------------------------- 00515 // File Type ID Definitions 00516 // --------------------------------------------------------------- 00517 00518 // These correspond to IDs specified in the conversion plug-ins' XML 00519 // files. Audio sources persist them to "remember" their format. 00520 // DO NOT CHANGE THEM without talking to someone in charge of persistence! 00521 00522 // Vendor ID. 00523 #define AKCOMPANYID_AUDIOKINETIC (0) ///< Audiokinetic inc. 00524 #define AKCOMPANYID_AUDIOKINETIC_EXTERNAL (1) ///< Audiokinetic inc. 00525 #define AKCOMPANYID_MCDSP (256) ///< McDSP 00526 #define AKCOMPANYID_WAVEARTS (257) ///< WaveArts 00527 #define AKCOMPANYID_PHONETICARTS (258) ///< Phonetic Arts 00528 #define AKCOMPANYID_IZOTOPE (259) ///< iZotope 00529 #define AKCOMPANYID_GENAUDIO (260) ///< GenAudio 00530 #define AKCOMPANYID_CRANKCASEAUDIO (261) ///< Crankcase Audio 00531 #define AKCOMPANYID_IOSONO (262) ///< IOSONO 00532 #define AKCOMPANYID_AUROTECHNOLOGIES (263) ///< Auro Technologies 00533 #define AKCOMPANYID_DOLBY (264) ///< Dolby 00534 00535 // File/encoding types of Audiokinetic. 00536 #define AKCODECID_BANK (0) ///< Bank encoding 00537 #define AKCODECID_PCM (1) ///< PCM encoding 00538 #define AKCODECID_ADPCM (2) ///< ADPCM encoding 00539 #define AKCODECID_XMA (3) ///< XMA encoding 00540 #define AKCODECID_VORBIS (4) ///< Vorbis encoding 00541 #define AKCODECID_WIIADPCM (5) ///< ADPCM encoding on the Wii 00542 #define AKCODECID_PCMEX (7) ///< Standard PCM WAV file parser for Wwise Authoring 00543 #define AKCODECID_EXTERNAL_SOURCE (8) ///< External Source (unknown encoding) 00544 #define AKCODECID_XWMA (9) ///< xWMA encoding 00545 #define AKCODECID_AAC (10) ///< AAC encoding (only available on Apple devices) -- see AkAACFactory.h 00546 #define AKCODECID_FILE_PACKAGE (11) ///< File package files generated by the File Packager utility. 00547 #define AKCODECID_ATRAC9 (12) ///< ATRAC-9 encoding 00548 #define AKCODECID_VAG (13) ///< VAG/HE-VAG encoding 00549 #define AKCODECID_PROFILERCAPTURE (14) ///< Profiler capture file (.prof) as written through AK::SoundEngine::StartProfilerCapture 00550 #define AKCODECID_ANALYSISFILE (15) ///< Analysis file 00551 #define AKCODECID_MIDI (16) ///< MIDI file 00552 00553 //The following are internally defined 00554 #define AK_WAVE_FORMAT_VAG 0xFFFB 00555 #define AK_WAVE_FORMAT_AT9 0xFFFC 00556 #define AK_WAVE_FORMAT_VORBIS 0xFFFF 00557 #define AK_WAVE_FORMAT_AAC 0xAAC0 00558 00559 class IAkSoftwareCodec; 00561 AK_CALLBACK( IAkSoftwareCodec*, AkCreateFileSourceCallback )( void* in_pCtx ); 00563 AK_CALLBACK( IAkSoftwareCodec*, AkCreateBankSourceCallback )( void* in_pCtx ); 00564 00565 //----------------------------------------------------------------------------- 00566 // Positioning 00567 //----------------------------------------------------------------------------- 00568 00569 namespace AK 00570 { 00571 namespace SoundEngine 00572 { 00577 enum MultiPositionType 00578 { 00579 MultiPositionType_SingleSource, 00580 MultiPositionType_MultiSources, 00581 MultiPositionType_MultiDirections 00582 }; 00583 } 00584 } 00585 00587 #define PANNER_NUM_STORAGE_BITS 2 00588 enum AkPannerType 00589 { 00590 Ak2D = 0, 00591 Ak3D = 1 00592 }; 00593 00594 #define POSSOURCE_NUM_STORAGE_BITS 2 00595 enum AkPositionSourceType 00596 { 00597 AkUserDef = 0, 00598 AkGameDef = 1 00599 }; 00600 00602 enum AkPanningRule 00603 { 00604 AkPanningRule_Speakers = 0, 00605 AkPanningRule_Headphones = 1 00606 }; 00607 00609 enum AkBusType 00610 { 00611 AkBusType_Master = 0x01, 00612 AkBusType_Primary = 0x02 00613 }; 00614 00615 #define AK_MAX_BITS_METERING_FLAGS (5) // Keep in sync with AkMeteringFlags. 00616 00618 enum AkMeteringFlags 00619 { 00620 AK_NoMetering = 0, 00621 AK_EnableBusMeter_Peak = 1 << 0, 00622 AK_EnableBusMeter_TruePeak = 1 << 1, 00623 AK_EnableBusMeter_RMS = 1 << 2, 00624 // 1 << 3 is reserved. 00625 AK_EnableBusMeter_KPower = 1 << 4 00626 }; 00627 00629 // Wwise ID system 00631 enum AkNodeType 00632 { 00633 AkNodeType_Default, 00634 AkNodeType_Bus 00635 }; 00636 00637 struct WwiseObjectIDext 00638 { 00639 public: 00640 00641 bool operator == ( const WwiseObjectIDext& in_rOther ) const 00642 { 00643 return in_rOther.id == id && in_rOther.bIsBus == bIsBus; 00644 } 00645 00646 AkNodeType GetType() 00647 { 00648 return bIsBus ? AkNodeType_Bus : AkNodeType_Default; 00649 } 00650 00651 AkUniqueID id; 00652 bool bIsBus; 00653 }; 00654 00655 struct WwiseObjectID : public WwiseObjectIDext 00656 { 00657 WwiseObjectID() 00658 { 00659 id = AK_INVALID_UNIQUE_ID; 00660 bIsBus = false; 00661 } 00662 00663 WwiseObjectID( AkUniqueID in_ID ) 00664 { 00665 id = in_ID; 00666 bIsBus = false; 00667 } 00668 00669 WwiseObjectID( AkUniqueID in_ID, bool in_bIsBus ) 00670 { 00671 id = in_ID; 00672 bIsBus = in_bIsBus; 00673 } 00674 00675 WwiseObjectID( AkUniqueID in_ID, AkNodeType in_eNodeType ) 00676 { 00677 id = in_ID; 00678 bIsBus = in_eNodeType == AkNodeType_Bus; 00679 } 00680 }; 00681 00682 #ifndef __SPU__ 00683 00684 namespace AkFileParser 00685 { 00686 #pragma pack(push, 1) 00687 00688 struct EnvelopePoint 00689 { 00690 AkUInt32 uPosition; 00691 AkUInt16 uAttenuation; 00692 }; 00693 #pragma pack(pop) 00694 } 00695 #endif // !__SPU__ 00696 00697 #ifndef AK_OS_STRUCT_ALIGN 00698 #define AK_OS_STRUCT_ALIGN 4 ///< OS Structures need to be aligned at 4 bytes. 00699 #endif 00700 00701 #ifndef AK_UNALIGNED 00702 #define 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 *. 00703 #endif 00704 00705 #ifndef AK_ASYNC_OPEN_DEFAULT 00706 #define AK_ASYNC_OPEN_DEFAULT (false) ///< Refers to asynchronous file opening in default low-level IO. 00707 #endif 00708 00709 #ifndef AK_COMM_DEFAULT_DISCOVERY_PORT 00710 #define AK_COMM_DEFAULT_DISCOVERY_PORT 24024 ///< Default discovery port for most platforms using IP sockets for communication. 00711 #endif 00712 00713 #ifndef AK_CAPTURE_TYPE_FLOAT 00714 typedef AkInt16 AkCaptureType; 00715 #endif 00716 00717 #if defined(AK_CPU_X86_64) || defined(AK_CPU_ARM_64) 00718 #define AK_POINTER_64 00719 #endif // #if defined(AK_CPU_X86_64) || defined(AK_CPU_ARM_64) 00720 00721 #if !defined(AkRegister) 00722 #define AkRegister register 00723 #endif 00724 00725 #endif //_AK_DATA_TYPES_H_
Was this page helpful?
Need Support?
Questions? Problems? Need more info? Contact us, and we can help!
Visit our Support pageTell 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