00001 00002 // 00003 // Copyright (c) 2006 Audiokinetic Inc. / All Rights Reserved 00004 // 00006 00007 // AkTypes.h 00008 00011 00012 #ifndef _AK_DATA_TYPES_PLATFORM_H_ 00013 #define _AK_DATA_TYPES_PLATFORM_H_ 00014 00015 #include <limits.h> 00016 00017 #ifndef __cplusplus 00018 #include <wchar.h> // wchar_t not a built-in type in C 00019 #endif 00020 00021 #define AK_WIN ///< Compiling for Windows 00022 00023 #ifndef _WIN32_WINNT 00024 #define _WIN32_WINNT 0x0602 00025 #endif 00026 00027 #if defined _M_IX86 00028 #define AK_CPU_X86 ///< Compiling for 32-bit x86 CPU 00029 #elif defined _M_AMD64 00030 #define AK_CPU_X86_64 ///< Compiling for 64-bit x86 CPU 00031 #elif defined _M_ARM 00032 #define AK_CPU_ARM 00033 #define AK_CPU_ARM_NEON 00034 #endif 00035 00036 #ifdef WINAPI_FAMILY 00037 #include <winapifamily.h> 00038 #if !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) 00039 #define AK_USE_METRO_API 00040 #define AK_USE_THREAD_EMULATION 00041 #if defined(WINAPI_PARTITION_PHONE) && WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_PHONE) 00042 #define AK_WINPHONE 00043 #endif 00044 #endif 00045 #endif 00046 00047 #ifndef AK_WINPHONE 00048 #define AK_MOTION ///< Internal use 00049 #define AK_71AUDIO 00050 #endif 00051 00052 #define AK_LFECENTER ///< Internal use 00053 #define AK_REARCHANNELS ///< Internal use 00054 00055 #define AK_SUPPORT_WCHAR ///< Can support wchar 00056 #define AK_OS_WCHAR ///< Use wchar natively 00057 00058 #define AK_RESTRICT __restrict ///< Refers to the __restrict compilation flag available on some platforms 00059 #define AK_EXPECT_FALSE( _x ) (_x) 00060 #define AkForceInline __forceinline ///< Force inlining 00061 #define AkNoInline __declspec(noinline) ///< Disable inlining 00062 00063 #define AK_SIMD_ALIGNMENT 16 ///< Platform-specific alignment requirement for SIMD data 00064 #define AK_ALIGN_SIMD( __Declaration__ ) __declspec(align(AK_SIMD_ALIGNMENT)) __Declaration__ ///< Platform-specific alignment requirement for SIMD data 00065 #define AK_ALIGN_DMA ///< Platform-specific data alignment for DMA transfers 00066 #define AK_ALIGN_FASTDMA ///< Platform-specific data alignment for faster DMA transfers 00067 #define AK_ALIGN_SIZE_FOR_DMA( __Size__ ) (__Size__) ///< Used to align sizes to next 16 byte boundary on platfroms that require it 00068 #define AK_BUFFER_ALIGNMENT AK_SIMD_ALIGNMENT 00069 #define AK_XAUDIO2_FLAGS 0 00070 00071 #define AKSOUNDENGINE_CALL __cdecl ///< Calling convention for the Wwise API 00072 00073 typedef unsigned char AkUInt8; 00074 typedef unsigned short AkUInt16; 00075 typedef unsigned long AkUInt32; 00076 typedef unsigned __int64 AkUInt64; 00077 00078 #if defined(_WIN64) 00079 typedef __int64 AkIntPtr; 00080 typedef unsigned __int64 AkUIntPtr; 00081 #else 00082 typedef __w64 int AkIntPtr; 00083 typedef __w64 unsigned int AkUIntPtr; 00084 #endif 00085 00086 typedef char AkInt8; 00087 typedef short AkInt16; 00088 typedef long AkInt32; 00089 typedef __int64 AkInt64; 00090 00091 typedef wchar_t AkOSChar; 00092 00093 typedef float AkReal32; 00094 typedef double AkReal64; 00095 00096 typedef void * AkThread; 00097 typedef AkUInt32 AkThreadID; 00098 typedef AkUInt32 (__stdcall *AkThreadRoutine)( void* lpThreadParameter ); 00099 typedef void * AkEvent; 00100 typedef void * AkFileHandle; 00101 typedef wchar_t AkUtf16; 00102 00103 #define AK_UINT_MAX UINT_MAX 00104 00105 // For strings. 00106 #define AK_MAX_PATH 260 ///< Maximum path length. 00107 00108 typedef AkUInt32 AkFourcc; 00109 00111 #define AkmmioFOURCC( ch0, ch1, ch2, ch3 ) \ 00112 ( (AkFourcc)(AkUInt8)(ch0) | ( (AkFourcc)(AkUInt8)(ch1) << 8 ) | \ 00113 ( (AkFourcc)(AkUInt8)(ch2) << 16 ) | ( (AkFourcc)(AkUInt8)(ch3) << 24 ) ) 00114 00115 #define AK_BANK_PLATFORM_DATA_ALIGNMENT (16) ///< Required memory alignment for bank loading by memory address (see LoadBank()) 00116 #define AK_BANK_PLATFORM_ALLOC_TYPE AkMalloc 00117 00121 #define AKTEXT(x) L ## x 00122 00131 enum AkMemPoolAttributes 00132 { 00133 AkNoAlloc = 0, 00134 AkMalloc = 1<<0, 00135 00136 AkVirtualAlloc = 1<<1, 00137 AkAllocMask = AkNoAlloc | AkMalloc | AkVirtualAlloc, 00138 00139 AkFixedSizeBlocksMode = 1<<3, 00140 AkBlockMgmtMask = AkFixedSizeBlocksMode 00141 }; 00142 #define AK_MEMPOOLATTRIBUTES 00143 00144 #ifdef __cplusplus 00145 namespace AK 00146 { 00156 extern void * AKSOUNDENGINE_CALL VirtualAllocHook( 00157 void * in_pMemAddress, 00158 size_t in_size, 00159 AkUInt32 in_dwAllocationType, 00160 AkUInt32 in_dwProtect 00161 ); 00162 00171 extern void AKSOUNDENGINE_CALL VirtualFreeHook( 00172 void * in_pMemAddress, 00173 size_t in_size, 00174 AkUInt32 in_dwFreeType 00175 ); 00176 } 00177 #endif 00178 00179 #endif //_AK_DATA_TYPES_PLATFORM_H_ 00180
프로젝트를 등록하세요. 아무런 조건이나 의무 사항 없이 빠른 시작을 도와드리겠습니다.
Wwise를 시작해 보세요