浏览代码

【音频】 Wwise更新_Mac平台问题尝试_01

chaimignze 11 月之前
父节点
当前提交
5758deba82

+ 3 - 0
Config/DefaultGame.ini

@@ -132,3 +132,6 @@ bAkAudioMixerEnabled=False
 MigratedEnableMultiCoreRendering=True
 FixupRedirectorsDuringMigration=False
 
+
+WwiseWindowsInstallationPath=(Path="C:/Program Files (x86)/Audiokinetic/Wwise 2023.1.0.8367")
+WwiseMacInstallationPath=(FilePath="")

+ 24 - 20
Plugins/Wwise/Source/WwiseSoundEngine/Public/Generated/AkiOSPlugins.h

@@ -1,20 +1,24 @@
-/*******************************************************************************
-The content of this file includes portions of the proprietary AUDIOKINETIC Wwise
-Technology released in source code form as part of the game integration package.
-The content of this file may not be used without valid licenses to the
-AUDIOKINETIC Wwise Technology.
-Note that the use of the game engine is subject to the Unreal(R) Engine End User
-License Agreement at https://www.unrealengine.com/en-US/eula/unreal
- 
-License Usage
- 
-Licensees holding valid licenses to the AUDIOKINETIC Wwise Technology may use
-this file in accordance with the end user license agreement provided with the
-software or, alternatively, in accordance with the terms contained
-in a written agreement between you and Audiokinetic Inc.
-Copyright (c) 2023 Audiokinetic Inc.
-*******************************************************************************/
-
-#if PLATFORM_IOS
-#include <AK/Plugin/AkRoomVerbFXFactory.h>
-#endif
+/*******************************************************************************
+The content of this file includes portions of the proprietary AUDIOKINETIC Wwise
+Technology released in source code form as part of the game integration package.
+The content of this file may not be used without valid licenses to the
+AUDIOKINETIC Wwise Technology.
+Note that the use of the game engine is subject to the Unreal(R) Engine End User
+License Agreement at https://www.unrealengine.com/en-US/eula/unreal
+ 
+License Usage
+ 
+Licensees holding valid licenses to the AUDIOKINETIC Wwise Technology may use
+this file in accordance with the end user license agreement provided with the
+software or, alternatively, in accordance with the terms contained
+in a written agreement between you and Audiokinetic Inc.
+Copyright (c) 2023 Audiokinetic Inc.
+*******************************************************************************/
+
+#if PLATFORM_IOS
+#include <AK/Plugin/AkToneSourceFactory.h>
+#include <AK/Plugin/AkRoomVerbFXFactory.h>
+#include <AK/Plugin/AkMeterFXFactory.h>
+#include <AK/Plugin/AkTremoloFXFactory.h>
+#include <AK/Plugin/AkSynthOneSourceFactory.h>
+#endif

+ 24 - 20
Plugins/Wwise/Source/WwiseSoundEngine/Public/Generated/AktvOSPlugins.h

@@ -1,20 +1,24 @@
-/*******************************************************************************
-The content of this file includes portions of the proprietary AUDIOKINETIC Wwise
-Technology released in source code form as part of the game integration package.
-The content of this file may not be used without valid licenses to the
-AUDIOKINETIC Wwise Technology.
-Note that the use of the game engine is subject to the Unreal(R) Engine End User
-License Agreement at https://www.unrealengine.com/en-US/eula/unreal
- 
-License Usage
- 
-Licensees holding valid licenses to the AUDIOKINETIC Wwise Technology may use
-this file in accordance with the end user license agreement provided with the
-software or, alternatively, in accordance with the terms contained
-in a written agreement between you and Audiokinetic Inc.
-Copyright (c) 2023 Audiokinetic Inc.
-*******************************************************************************/
-
-#if PLATFORM_TVOS
-#include <AK/Plugin/AkRoomVerbFXFactory.h>
-#endif
+/*******************************************************************************
+The content of this file includes portions of the proprietary AUDIOKINETIC Wwise
+Technology released in source code form as part of the game integration package.
+The content of this file may not be used without valid licenses to the
+AUDIOKINETIC Wwise Technology.
+Note that the use of the game engine is subject to the Unreal(R) Engine End User
+License Agreement at https://www.unrealengine.com/en-US/eula/unreal
+ 
+License Usage
+ 
+Licensees holding valid licenses to the AUDIOKINETIC Wwise Technology may use
+this file in accordance with the end user license agreement provided with the
+software or, alternatively, in accordance with the terms contained
+in a written agreement between you and Audiokinetic Inc.
+Copyright (c) 2023 Audiokinetic Inc.
+*******************************************************************************/
+
+#if PLATFORM_TVOS
+#include <AK/Plugin/AkToneSourceFactory.h>
+#include <AK/Plugin/AkRoomVerbFXFactory.h>
+#include <AK/Plugin/AkMeterFXFactory.h>
+#include <AK/Plugin/AkTremoloFXFactory.h>
+#include <AK/Plugin/AkSynthOneSourceFactory.h>
+#endif

二进制
Plugins/Wwise/ThirdParty/Linux_aarch64/Debug/bin/IntegrationDemo/IntegrationDemo


二进制
Plugins/Wwise/ThirdParty/Linux_aarch64/Profile/bin/IntegrationDemo/IntegrationDemo


二进制
Plugins/Wwise/ThirdParty/Linux_aarch64/Release/bin/IntegrationDemo/IntegrationDemo


二进制
Plugins/Wwise/ThirdParty/Linux_x64/Debug/bin/IntegrationDemo/IntegrationDemo


二进制
Plugins/Wwise/ThirdParty/Linux_x64/Profile/bin/IntegrationDemo/IntegrationDemo


二进制
Plugins/Wwise/ThirdParty/Linux_x64/Release/bin/IntegrationDemo/IntegrationDemo


+ 67 - 0
Plugins/Wwise/ThirdParty/include/AK/SoundEngine/Platforms/Linux/AkLinuxSoundEngine.h

@@ -0,0 +1,67 @@
+/*******************************************************************************
+The content of this file includes portions of the AUDIOKINETIC Wwise Technology
+released in source code form as part of the SDK installer package.
+
+Commercial License Usage
+
+Licensees holding valid commercial licenses to the AUDIOKINETIC Wwise Technology
+may use this file in accordance with the end user license agreement provided 
+with the software or, alternatively, in accordance with the terms contained in a
+written agreement between you and Audiokinetic Inc.
+
+Apache License Usage
+
+Alternatively, this file may be used under the Apache License, Version 2.0 (the 
+"Apache License"); you may not use this file except in compliance with the 
+Apache License. You may obtain a copy of the Apache License at 
+http://www.apache.org/licenses/LICENSE-2.0.
+
+Unless required by applicable law or agreed to in writing, software distributed
+under the Apache License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
+OR CONDITIONS OF ANY KIND, either express or implied. See the Apache License for
+the specific language governing permissions and limitations under the License.
+
+  Copyright (c) 2023 Audiokinetic Inc.
+*******************************************************************************/
+
+// AkLinuxSoundEngine.h
+
+/// \file 
+/// Main Sound Engine interface, specific to Linux.
+
+#pragma once
+
+#include <AK/SoundEngine/Common/AkTypes.h>
+#include <AK/Tools/Common/AkPlatformFuncs.h>
+
+///< API used for audio output
+///< Use with AkPlatformInitSettings to select the API used for audio output.  
+///< Use AkAPI_Default, it will select the more appropriate API depending on the computer's capabilities.  Other values should be used for testing purposes.
+///< \sa AK::SoundEngine::Init
+typedef enum AkAudioAPILinux
+{
+	AkAPI_PulseAudio = 1 << 0,						///< Use PulseAudio (this is the preferred API on Linux)
+	AkAPI_ALSA = 1 << 1,							///< Use ALSA
+	AkAPI_Default = AkAPI_PulseAudio | AkAPI_ALSA,	///< Default value, will select the more appropriate API
+} AkAudioAPI;
+
+/// Platform specific initialization settings
+/// \sa AK::SoundEngine::Init
+/// \sa AK::SoundEngine::GetDefaultPlatformInitSettings
+struct AkPlatformInitSettings
+{
+	// Threading model.
+	AkThreadProperties	threadLEngine;				///< Lower engine threading properties
+	AkThreadProperties  threadOutputMgr;			///< Ouput thread threading properties
+	AkThreadProperties  threadBankManager;			///< Bank manager threading properties (its default priority is AK_THREAD_PRIORITY_NORMAL)
+	AkThreadProperties  threadMonitor;				///< Monitor threading properties (its default priority is AK_THREAD_PRIORITY_ABOVENORMAL). This parameter is not used in Release build.
+	
+	//Voices.
+	AkUInt32			uSampleRate;				///< Sampling Rate. Default 48000 Hz
+	AkUInt16			uNumRefillsInVoice;			///< Number of refill buffers in voice buffer. 2 == double-buffered, defaults to 4.
+	AkAudioAPI			eAudioAPI;					///< Main audio API to use. Leave to AkAPI_Default for the default sink (default value).
+														///< If a valid audioDeviceShareset plug-in is provided, the AkAudioAPI will be Ignored.
+														///< \ref AkAudioAPI
+	AkDataTypeID		sampleType;					///< Sample type. AK_FLOAT for 32 bit float, AK_INT for 16 bit signed integer, defaults to AK_FLOAT.
+													///< Supported by AkAPI_PulseAudio only.
+};

+ 52 - 0
Plugins/Wwise/ThirdParty/include/AK/SoundEngine/Platforms/Linux/AkPlatformContext.h

@@ -0,0 +1,52 @@
+/*******************************************************************************
+The content of this file includes portions of the AUDIOKINETIC Wwise Technology
+released in source code form as part of the SDK installer package.
+
+Commercial License Usage
+
+Licensees holding valid commercial licenses to the AUDIOKINETIC Wwise Technology
+may use this file in accordance with the end user license agreement provided 
+with the software or, alternatively, in accordance with the terms contained in a
+written agreement between you and Audiokinetic Inc.
+
+Apache License Usage
+
+Alternatively, this file may be used under the Apache License, Version 2.0 (the 
+"Apache License"); you may not use this file except in compliance with the 
+Apache License. You may obtain a copy of the Apache License at 
+http://www.apache.org/licenses/LICENSE-2.0.
+
+Unless required by applicable law or agreed to in writing, software distributed
+under the Apache License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
+OR CONDITIONS OF ANY KIND, either express or implied. See the Apache License for
+the specific language governing permissions and limitations under the License.
+
+  Copyright (c) 2023 Audiokinetic Inc.
+*******************************************************************************/
+
+#ifndef __AK_PLATFORM_CONTEXT_LINUX_H__
+#define __AK_PLATFORM_CONTEXT_LINUX_H__
+
+#include <AK/SoundEngine/Common/IAkPlatformContext.h>
+#include <AK/SoundEngine/Common/AkTypes.h>
+
+namespace AK
+{
+	/// Context specific to the Linux port of Wwise SDK.
+	class IAkLinuxContext : public IAkPlatformContext
+	{
+	public:
+		virtual bool UsePulseAudioServerInfo() = 0;
+		virtual const char* GetStreamName(AkDeviceID deviceID = 0) = 0;
+		virtual AkUInt32 GetChannelCount(AkDeviceID deviceID = 0) = 0;
+		virtual void SetSinkInitialized(bool isInitialized) = 0;
+
+		virtual bool IsPluginSupported(AkPluginID pluginID) = 0;
+		virtual bool IsStreamReady(AkPluginID pluginID) = 0;
+		virtual const char* GetStreamName(AkPluginID pluginID, AkDeviceID deviceID) = 0;
+		virtual AkUInt32 GetChannelCount(AkPluginID pluginID, AkDeviceID deviceID) = 0;
+		virtual void SetSinkInitialized(AkPluginID pluginID, bool isInitialized) = 0;
+	};
+}
+
+#endif // __AK_PLATFORM_CONTEXT_LINUX_H__

+ 42 - 0
Plugins/Wwise/ThirdParty/include/AK/SoundEngine/Platforms/Linux/AkSimd.h

@@ -0,0 +1,42 @@
+/*******************************************************************************
+The content of this file includes portions of the AUDIOKINETIC Wwise Technology
+released in source code form as part of the SDK installer package.
+
+Commercial License Usage
+
+Licensees holding valid commercial licenses to the AUDIOKINETIC Wwise Technology
+may use this file in accordance with the end user license agreement provided 
+with the software or, alternatively, in accordance with the terms contained in a
+written agreement between you and Audiokinetic Inc.
+
+Apache License Usage
+
+Alternatively, this file may be used under the Apache License, Version 2.0 (the 
+"Apache License"); you may not use this file except in compliance with the 
+Apache License. You may obtain a copy of the Apache License at 
+http://www.apache.org/licenses/LICENSE-2.0.
+
+Unless required by applicable law or agreed to in writing, software distributed
+under the Apache License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
+OR CONDITIONS OF ANY KIND, either express or implied. See the Apache License for
+the specific language governing permissions and limitations under the License.
+
+  Copyright (c) 2023 Audiokinetic Inc.
+*******************************************************************************/
+
+// AkSimd.h
+
+/// \file 
+/// AkSimd - Linux implementation
+
+#pragma once
+
+#include <AK/SoundEngine/Common/AkTypes.h>
+
+#if defined AK_CPU_ARM_NEON
+	#include <AK/SoundEngine/Platforms/arm_neon/AkSimd.h>
+#elif defined AK_CPU_X86 || defined AK_CPU_X86_64
+	#include <AK/SoundEngine/Platforms/SSE/AkSimd.h>
+#else
+	#include <AK/SoundEngine/Platforms/Generic/AkSimd.h>
+#endif

+ 69 - 0
Plugins/Wwise/ThirdParty/include/AK/SoundEngine/Platforms/Linux/AkTypes.h

@@ -0,0 +1,69 @@
+/*******************************************************************************
+The content of this file includes portions of the AUDIOKINETIC Wwise Technology
+released in source code form as part of the SDK installer package.
+
+Commercial License Usage
+
+Licensees holding valid commercial licenses to the AUDIOKINETIC Wwise Technology
+may use this file in accordance with the end user license agreement provided 
+with the software or, alternatively, in accordance with the terms contained in a
+written agreement between you and Audiokinetic Inc.
+
+Apache License Usage
+
+Alternatively, this file may be used under the Apache License, Version 2.0 (the 
+"Apache License"); you may not use this file except in compliance with the 
+Apache License. You may obtain a copy of the Apache License at 
+http://www.apache.org/licenses/LICENSE-2.0.
+
+Unless required by applicable law or agreed to in writing, software distributed
+under the Apache License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
+OR CONDITIONS OF ANY KIND, either express or implied. See the Apache License for
+the specific language governing permissions and limitations under the License.
+
+  Copyright (c) 2023 Audiokinetic Inc.
+*******************************************************************************/
+
+// AkTypes.h
+
+/// \file 
+/// Data type definitions.
+
+#pragma once
+
+#define AK_LINUX_DESKTOP
+
+#define AK_LINUX
+
+#if defined(__LP64__) || defined(_LP64)
+#ifdef __aarch64__
+#define AK_CPU_ARM_64	
+#else
+#define AK_CPU_X86_64
+#define AKSIMD_V4F32_SUPPORTED
+#endif
+#else
+#ifdef __arm__
+#define AK_CPU_ARM
+#else
+#define AK_CPU_X86 //x86
+#define AKSIMD_V4F32_SUPPORTED
+#endif
+#endif
+
+#if (defined AK_CPU_ARM || defined AK_CPU_ARM_64)
+#define AK_CPU_ARM_NEON
+#define AKSIMD_V4F32_SUPPORTED
+#endif
+
+#ifndef AK_LINUX_AOSP
+#define AK_SUPPORT_WCHAR						///< Can support wchar
+#define AK_ALSA
+#define AK_PULSEAUDIO
+#endif
+
+#define AK_SUPPORT_THREADS
+
+typedef void* AkStackTrace[ 64 ];
+
+#include <AK/SoundEngine/Platforms/POSIX/AkTypes.h>

+ 46 - 46
Plugins/Wwise/ThirdParty/include/AK/SoundEngine/Platforms/POSIX/AkMemoryMgrFuncs.h

@@ -1,46 +1,46 @@
-/*******************************************************************************
-The content of this file includes portions of the AUDIOKINETIC Wwise Technology
-released in source code form as part of the SDK installer package.
-
-Commercial License Usage
-
-Licensees holding valid commercial licenses to the AUDIOKINETIC Wwise Technology
-may use this file in accordance with the end user license agreement provided 
-with the software or, alternatively, in accordance with the terms contained in a
-written agreement between you and Audiokinetic Inc.
-
-Apache License Usage
-
-Alternatively, this file may be used under the Apache License, Version 2.0 (the 
-"Apache License"); you may not use this file except in compliance with the 
-Apache License. You may obtain a copy of the Apache License at 
-http://www.apache.org/licenses/LICENSE-2.0.
-
-Unless required by applicable law or agreed to in writing, software distributed
-under the Apache License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
-OR CONDITIONS OF ANY KIND, either express or implied. See the Apache License for
-the specific language governing permissions and limitations under the License.
-
-  Copyright (c) 2023 Audiokinetic Inc.
-*******************************************************************************/
-
-#pragma once
-
-#include <AK/SoundEngine/Common/AkTypes.h>
-#include <sys/mman.h>
-
-namespace AKPLATFORM
-{
-	AkForceInline void* AllocVM(size_t size, size_t* extra)
-	{
-		void* ptr = mmap(0, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
-		return ( ( ptr == MAP_FAILED ) || !ptr ) ? NULL : ptr;
-	}
-
-	AkForceInline void FreeVM(void* address, size_t size, size_t extra, size_t release)
-	{
-		if ( release )
-			munmap( address, release );
-	}
-}
-
+/*******************************************************************************
+The content of this file includes portions of the AUDIOKINETIC Wwise Technology
+released in source code form as part of the SDK installer package.
+
+Commercial License Usage
+
+Licensees holding valid commercial licenses to the AUDIOKINETIC Wwise Technology
+may use this file in accordance with the end user license agreement provided 
+with the software or, alternatively, in accordance with the terms contained in a
+written agreement between you and Audiokinetic Inc.
+
+Apache License Usage
+
+Alternatively, this file may be used under the Apache License, Version 2.0 (the 
+"Apache License"); you may not use this file except in compliance with the 
+Apache License. You may obtain a copy of the Apache License at 
+http://www.apache.org/licenses/LICENSE-2.0.
+
+Unless required by applicable law or agreed to in writing, software distributed
+under the Apache License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
+OR CONDITIONS OF ANY KIND, either express or implied. See the Apache License for
+the specific language governing permissions and limitations under the License.
+
+  Copyright (c) 2023 Audiokinetic Inc.
+*******************************************************************************/
+
+#pragma once
+
+#include <AK/SoundEngine/Common/AkTypes.h>
+#include <sys/mman.h>
+
+namespace AKPLATFORM
+{
+	AkForceInline void* AllocVM(size_t size, size_t* extra)
+	{
+		void* ptr = mmap(0, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
+		return ( ( ptr == MAP_FAILED ) || !ptr ) ? NULL : ptr;
+	}
+
+	AkForceInline void FreeVM(void* address, size_t size, size_t extra, size_t release)
+	{
+		if ( release )
+			munmap( address, release );
+	}
+}
+

+ 158 - 0
Plugins/Wwise/ThirdParty/include/AK/Tools/Linux/AkPlatformFuncs.h

@@ -0,0 +1,158 @@
+/*******************************************************************************
+The content of this file includes portions of the AUDIOKINETIC Wwise Technology
+released in source code form as part of the SDK installer package.
+
+Commercial License Usage
+
+Licensees holding valid commercial licenses to the AUDIOKINETIC Wwise Technology
+may use this file in accordance with the end user license agreement provided 
+with the software or, alternatively, in accordance with the terms contained in a
+written agreement between you and Audiokinetic Inc.
+
+Apache License Usage
+
+Alternatively, this file may be used under the Apache License, Version 2.0 (the 
+"Apache License"); you may not use this file except in compliance with the 
+Apache License. You may obtain a copy of the Apache License at 
+http://www.apache.org/licenses/LICENSE-2.0.
+
+Unless required by applicable law or agreed to in writing, software distributed
+under the Apache License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
+OR CONDITIONS OF ANY KIND, either express or implied. See the Apache License for
+the specific language governing permissions and limitations under the License.
+
+  Copyright (c) 2023 Audiokinetic Inc.
+*******************************************************************************/
+
+#pragma once
+
+#include <AK/Tools/Common/AkAssert.h>
+#include <AK/SoundEngine/Common/AkTypes.h>
+
+#if (defined(AK_CPU_X86_64) || defined(AK_CPU_X86))
+#include <cpuid.h>
+#endif
+#include <time.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <sched.h>
+
+#define AK_THREAD_INIT_CODE(_threadProperties) \
+	if (_threadProperties.dwAffinityMask != AK_THREAD_AFFINITY_DEFAULT) \
+	{ \
+		cpu_set_t affinity; \
+		CPU_ZERO(&affinity); \
+		for (AkUInt32 i = 0; i < 32; ++i) { \
+			if (_threadProperties.dwAffinityMask & ( 1 << i )){\
+				CPU_SET(i, &affinity); \
+			} \
+		} \
+		sched_setaffinity(0, sizeof(cpu_set_t), &affinity); \
+	}
+
+namespace AKPLATFORM
+{
+    // Time functions
+    // ------------------------------------------------------------------
+
+	/// Platform Independent Helper
+    inline void PerformanceCounter( AkInt64 * out_piLastTime )
+	{
+		struct timespec clockNow;
+		clock_gettime(CLOCK_MONOTONIC, &clockNow);
+		*out_piLastTime = ((clockNow.tv_sec + clockNow.tv_nsec/ 1000000000.0) * CLOCKS_PER_SEC);
+	}
+
+	/// Platform Independent Helper
+	inline void PerformanceFrequency( AkInt64 * out_piFreq )
+	{
+		// TO DO ANDROID ... is there something better
+		*out_piFreq = CLOCKS_PER_SEC;
+	}
+
+	template<class destType, class srcType>
+	inline size_t AkSimpleConvertString( destType* in_pdDest, const srcType* in_pSrc, size_t in_MaxSize, size_t destStrLen(const destType *),  size_t srcStrLen(const srcType *) )
+	{ 
+		size_t i;
+		size_t lenToCopy = srcStrLen(in_pSrc);
+		
+		lenToCopy = (lenToCopy > in_MaxSize-1) ? in_MaxSize-1 : lenToCopy;
+		for(i = 0; i < lenToCopy; i++)
+		{
+			in_pdDest[i] = (destType) in_pSrc[i];
+		}
+		in_pdDest[lenToCopy] = (destType)0;
+		
+		return lenToCopy;
+	}
+
+	#define CONVERT_UTF16_TO_CHAR( _astring_, _charstring_ ) \
+		_charstring_ = (char*)AkAlloca( (1 + AKPLATFORM::AkUtf16StrLen((const AkUtf16*)_astring_)) * sizeof(char) ); \
+		AK_UTF16_TO_CHAR( _charstring_, (const AkUtf16*)_astring_, AKPLATFORM::AkUtf16StrLen((const AkUtf16*)_astring_)+1 ) 
+
+    #define AK_UTF16_TO_CHAR(	in_pdDest, in_pSrc, in_MaxSize )	AKPLATFORM::AkSimpleConvertString( in_pdDest, in_pSrc, in_MaxSize, strlen, AKPLATFORM::AkUtf16StrLen )
+	#define AK_UTF8_TO_OSCHAR(	in_pdDest, in_pSrc, in_MaxSize )	AKPLATFORM::AkSimpleConvertString( in_pdDest, in_pSrc, in_MaxSize, strlen, strlen )
+    #define AK_UTF16_TO_OSCHAR(	in_pdDest, in_pSrc, in_MaxSize )	AKPLATFORM::AkSimpleConvertString( in_pdDest, in_pSrc, in_MaxSize, strlen, AKPLATFORM::AkUtf16StrLen )
+    #define AK_UTF16_TO_WCHAR(	in_pdDest, in_pSrc, in_MaxSize )	AKPLATFORM::AkSimpleConvertString( in_pdDest, in_pSrc, in_MaxSize, wcslen, AKPLATFORM::AkUtf16StrLen )
+    #define AK_CHAR_TO_UTF16(	in_pdDest, in_pSrc, in_MaxSize )	AKPLATFORM::AkSimpleConvertString( in_pdDest, in_pSrc, in_MaxSize, AKPLATFORM::AkUtf16StrLen, strlen )
+    #define AK_OSCHAR_TO_UTF16(	in_pdDest, in_pSrc, in_MaxSize )	AKPLATFORM::AkSimpleConvertString( in_pdDest, in_pSrc, in_MaxSize, AKPLATFORM::AkUtf16StrLen, strlen )
+    #define AK_WCHAR_TO_UTF16(	in_pdDest, in_pSrc, in_MaxSize )	AKPLATFORM::AkSimpleConvertString( in_pdDest, in_pSrc, in_MaxSize, AKPLATFORM::AkUtf16StrLen, wcslen )
+
+	#define AK_FILEHANDLE_TO_UINTPTR(_h) ((AkUIntPtr)_h)
+	#define AK_SET_FILEHANDLE_TO_UINTPTR(_h,_u) _h = (AkFileHandle)_u
+
+	/// Stack allocations.
+	#define AkAlloca( _size_ ) __builtin_alloca( _size_ )
+
+#if (defined(AK_CPU_X86_64) || defined(AK_CPU_X86))
+	// Once our minimum compiler version supports __get_cpuid_count, these asm blocks can be replaced
+	#if defined(__i386__) && defined(__PIC__)
+		// %ebx may be the PIC register. 
+		#define __ak_cpuid_count(level, count, a, b, c, d)		\
+			__asm__ ("xchg{l}\t{%%}ebx, %k1\n\t"				\
+				"cpuid\n\t"										\
+				"xchg{l}\t{%%}ebx, %k1\n\t"						\
+				: "=a" (a), "=&r" (b), "=c" (c), "=d" (d)		\
+				: "0" (level), "2" (count))
+	#elif defined(__x86_64__) && defined(__PIC__)
+		// %rbx may be the PIC register. 
+		#define __ak_cpuid_count(level, count, a, b, c, d)		\
+			__asm__ ("xchg{q}\t{%%}rbx, %q1\n\t"				\
+				"cpuid\n\t"										\
+				"xchg{q}\t{%%}rbx, %q1\n\t"						\
+				: "=a" (a), "=&r" (b), "=c" (c), "=d" (d)		\
+				: "0" (level), "2" (count))
+	#else
+	#define __ak_cpuid_count(level, count, a, b, c, d)			\
+			__asm__ ("cpuid\n\t"								\
+				: "=a" (a), "=b" (b), "=c" (c), "=d" (d)		\
+				: "0" (level), "2" (count))
+	#endif
+	
+	static __inline int __ak_get_cpuid_count(unsigned int __leaf,
+		unsigned int __subleaf,
+		unsigned int *__eax, unsigned int *__ebx,
+		unsigned int *__ecx, unsigned int *__edx)
+	{
+		unsigned int __max_leaf = __get_cpuid_max(__leaf & 0x80000000, 0);
+
+		if (__max_leaf == 0 || __max_leaf < __leaf)
+			return 0;
+
+		__ak_cpuid_count(__leaf, __subleaf, *__eax, *__ebx, *__ecx, *__edx);
+		return 1;
+	}
+	
+	/// Support to fetch the CPUID for the platform. Only valid for X86 targets
+	/// \remark Note that IAkProcessorFeatures should be preferred to fetch this data
+	/// as it will have already translated the feature bits into AK-relevant enums
+	inline void CPUID(AkUInt32 in_uLeafOpcode, AkUInt32 in_uSubLeafOpcode, unsigned int out_uCPUFeatures[4])
+	{
+		__ak_get_cpuid_count( in_uLeafOpcode, in_uSubLeafOpcode,
+			&out_uCPUFeatures[0],
+			&out_uCPUFeatures[1],
+			&out_uCPUFeatures[2],
+			&out_uCPUFeatures[3]);
+	}
+#endif
+}

二进制
codeTetrees_WwiseProject/.cache/LMDB/data.mdb


+ 3 - 3
codeTetrees_WwiseProject/codeTetrees_WwiseProject.admin.wsettings

@@ -57,7 +57,7 @@
 				<Property Name="Music Transition List\{BC2941A2-5C91-4AF9-90D0-21C0C1274F63}\x64_Expand States" Type="string" Value=""/>
 				<Property Name="Music Transition List\{CC4F123F-A0D8-4B39-8B1C-FF48C60328D0}\Scroll Position" Type="int32" Value="0"/>
 				<Property Name="Music Transition List\{CC4F123F-A0D8-4B39-8B1C-FF48C60328D0}\x64_Expand States" Type="string" Value=""/>
-				<Property Name="ObjectTabPanel\x64_CurrentObjects_{031E1E2C-DC25-4332-80C3-FFCC371AC803}" Type="string" Value="ewBEADgAMgBBAEUAMgAzADUALQAyAEQAQgA2AC0ANAAzAEYAMgAtAEIAMgBGAEQALQBCAEIANwA1AEQANwAyADMAOAA3ADkARQB9AAAAAAE="/>
+				<Property Name="ObjectTabPanel\x64_CurrentObjects_{031E1E2C-DC25-4332-80C3-FFCC371AC803}" Type="string" Value="ewBFADUAQQA3ADYAMAAyAEQALQBCADQAMQBFAC0ANAA2ADkANwAtAEIAMwBBADcALQBBAEQANQA0ADAANAA4ADQARAA3ADQAMAB9AAAAAAE="/>
 				<Property Name="ObjectTabPanel\x64_CurrentObjects_{618C1FF9-37D4-45A7-AF0A-E2D511E44707}" Type="string" Value=""/>
 				<Property Name="ObjectTabPanel\x64_CurrentObjects_{826CEF9F-ACB3-45D2-8319-9C9994E4CA5C}" Type="string" Value=""/>
 				<Property Name="ObjectTabPanel\x64_CurrentObjects_{A45AAC64-78D1-46A7-88FA-F242B38651B4}" Type="string" Value=""/>
@@ -85,7 +85,7 @@
 				<Property Name="ProjectExplorer\QueriesSelectionChannel2\ProjectExplorer2LastScrollState" Type="int32" Value="0"/>
 				<Property Name="ProjectExplorer\QueriesSelectionChannel2\x64_ProjectExplorer2LastExpandedState" Type="string" Value="4y3sI9g+gkusmZLiXy5Maw=="/>
 				<Property Name="ProjectExplorer\SelectionChannel1\CurrentSearch" Type="string" Value=""/>
-				<Property Name="ProjectExplorer\SelectionChannel1\CurrentTab" Type="int32" Value="0"/>
+				<Property Name="ProjectExplorer\SelectionChannel1\CurrentTab" Type="int32" Value="2"/>
 				<Property Name="ProjectExplorer\SelectionChannel2\CurrentSearch" Type="string" Value=""/>
 				<Property Name="ProjectExplorer\SelectionChannel2\CurrentTab" Type="int32" Value="1"/>
 				<Property Name="ProjectExplorer\SessionsSelectionChannel1\ProjectExplorer2LastScrollState" Type="int32" Value="0"/>
@@ -103,7 +103,7 @@
 				<Property Name="SchematicView\SearchText" Type="string" Value=""/>
 				<Property Name="SoundBank Manager\x64_Expand Folders Auto" Type="string" Value=""/>
 				<Property Name="SoundBank Manager\x64_Expand Folders User" Type="string" Value="BwAAAA=="/>
-				<Property Name="SoundBank Manager\x64_Expand States Auto" Type="string" Value="NeIq2LYt8kOy/bt11yOHng=="/>
+				<Property Name="SoundBank Manager\x64_Expand States Auto" Type="string" Value="P1L/Xkp47UK2Jzdk++zO5jXiKti2LfJDsv27ddcjh54="/>
 				<Property Name="SoundBank Manager\x64_Expand States User" Type="string" Value="TzvEtGgysESb5mgQcUhShg=="/>
 				<Property Name="SoundBankHeaderFilePath" Type="string" Value="GeneratedSoundBanks\"/>
 				<Property Name="Soundcaster\PreviousSession" Type="string" Value="{355D8E7B-8C31-411C-8A87-EDD2D4E55B30}"/>