Browse Source

Updated FMOD to version 2.01.11 (latest stable)

readme
Nico de Poel 5 years ago
parent
commit
5b333f698b
  1. 23
      Assets/Plugins/FMOD/Platform.cs
  2. 11
      Assets/Plugins/FMOD/Platform.cs.meta
  3. 1806
      Assets/Plugins/FMOD/fmod.cs
  4. 47
      Assets/Plugins/FMOD/fmod_dsp.cs
  5. BIN
      Assets/Plugins/windows/x86/fmod.dll
  6. 6
      Assets/Plugins/windows/x86/fmod.dll.meta
  7. BIN
      Assets/Plugins/windows/x86/fmodL.dll
  8. 6
      Assets/Plugins/windows/x86/fmodL.dll.meta
  9. BIN
      Assets/Plugins/windows/x86_64/fmod.dll
  10. 6
      Assets/Plugins/windows/x86_64/fmod.dll.meta
  11. BIN
      Assets/Plugins/windows/x86_64/fmodL.dll
  12. 6
      Assets/Plugins/windows/x86_64/fmodL.dll.meta
  13. 244
      engine/FMOD/inc/fmod.cs
  14. 3
      engine/FMOD/inc/fmod.h
  15. 3
      engine/FMOD/inc/fmod.hpp
  16. 114
      engine/FMOD/inc/fmod_common.h
  17. 47
      engine/FMOD/inc/fmod_dsp.cs
  18. 36
      engine/FMOD/inc/fmod_dsp_effects.h
  19. 2
      engine/FMOD/inc/fmod_output.h
  20. BIN
      engine/FMOD/lib/x64/fmod.dll
  21. BIN
      engine/FMOD/lib/x64/fmodL.dll
  22. BIN
      engine/FMOD/lib/x64/fmodL_vc.lib
  23. BIN
      engine/FMOD/lib/x64/fmod_vc.lib
  24. BIN
      engine/FMOD/lib/x86/fmod.dll
  25. BIN
      engine/FMOD/lib/x86/fmodL.dll
  26. BIN
      engine/FMOD/lib/x86/fmodL_vc.lib
  27. BIN
      engine/FMOD/lib/x86/fmod_vc.lib
  28. BIN
      engine/FMOD/lib/x86/libfmod.a
  29. BIN
      engine/FMOD/lib/x86/libfmodL.a

23
Assets/Plugins/FMOD/Platform.cs

@ -0,0 +1,23 @@
namespace FMOD
{
public partial class VERSION
{
#if DEVELOPMENT_BUILD
public const string dllSuffix = "L";
#else
public const string dllSuffix = "";
#endif
#if UNITY_EDITOR
public const string dll = "fmodL";
#elif UNITY_STANDALONE_WIN
public const string dll = "fmod" + dllSuffix;
#elif UNITY_WSA
public const string dll = "fmod" + dllSuffix;
#elif UNITY_STANDALONE_LINUX
public const string dll = "fmod" + dllSuffix;
#elif UNITY_STANDALONE_OSX
public const string dll = "fmod" + dllSuffix;
#endif
}
}

11
Assets/Plugins/FMOD/Platform.cs.meta

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 82997004563d9de42b3aeedd2da0153b
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

1806
Assets/Plugins/FMOD/fmod.cs
File diff suppressed because it is too large
View File

47
Assets/Plugins/FMOD/fmod_dsp.cs

@ -72,10 +72,10 @@ namespace FMOD
/*
DSP functions
*/
public delegate IntPtr DSP_ALLOC_FUNC (uint size, MEMORY_TYPE type, StringWrapper sourcestr);
public delegate IntPtr DSP_REALLOC_FUNC (IntPtr ptr, uint size, MEMORY_TYPE type, StringWrapper sourcestr);
public delegate void DSP_FREE_FUNC (IntPtr ptr, MEMORY_TYPE type, StringWrapper sourcestr);
public delegate void DSP_LOG_FUNC (DEBUG_FLAGS level, StringWrapper file, int line, StringWrapper function, StringWrapper format);
public delegate IntPtr DSP_ALLOC_FUNC (uint size, MEMORY_TYPE type, IntPtr sourcestr);
public delegate IntPtr DSP_REALLOC_FUNC (IntPtr ptr, uint size, MEMORY_TYPE type, IntPtr sourcestr);
public delegate void DSP_FREE_FUNC (IntPtr ptr, MEMORY_TYPE type, IntPtr sourcestr);
public delegate void DSP_LOG_FUNC (DEBUG_FLAGS level, IntPtr file, int line, IntPtr function, IntPtr format);
public delegate RESULT DSP_GETSAMPLERATE_FUNC (ref DSP_STATE dsp_state, ref int rate);
public delegate RESULT DSP_GETBLOCKSIZE_FUNC (ref DSP_STATE dsp_state, ref uint blocksize);
public delegate RESULT DSP_GETSPEAKERMODE_FUNC (ref DSP_STATE dsp_state, ref int speakermode_mixer, ref int speakermode_output);
@ -306,6 +306,27 @@ namespace FMOD
}
}
[StructLayout(LayoutKind.Sequential)]
public struct DSP_LOUDNESS_METER_INFO_TYPE
{
public float momentaryloudness;
public float shorttermloudness;
public float integratedloudness;
public float loudness10thpercentile;
public float loudness95thpercentile;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 66)]
public float[] loudnesshistogram;
public float maxtruepeak;
public float maxmomentaryloudness;
}
[StructLayout(LayoutKind.Sequential)]
public struct DSP_LOUDNESS_METER_WEIGHTING_TYPE
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
public float[] channelweight;
}
[StructLayout(LayoutKind.Sequential)]
public struct DSP_DESCRIPTION
{
@ -718,6 +739,24 @@ namespace FMOD
DOMINANT_FREQ
}
public enum DSP_LOUDNESS_METER : int
{
STATE,
WEIGHTING,
INFO
}
public enum DSP_LOUDNESS_METER_STATE_TYPE : int
{
RESET_INTEGRATED = -3,
RESET_MAXPEAK = -2,
RESET_ALL = -1,
PAUSED = 0,
ANALYZING = 1
}
public enum DSP_ENVELOPEFOLLOWER : int
{
ATTACK,

BIN
Assets/Plugins/windows/x86/fmod.dll

6
Assets/Plugins/windows/x86/fmod.dll.meta

@ -17,14 +17,18 @@ PluginImporter:
enabled: 0
settings:
Exclude Editor: 0
Exclude GameCoreScarlett: 1
Exclude GameCoreXboxOne: 1
Exclude Linux64: 0
Exclude OSXUniversal: 0
Exclude PS4: 1
Exclude PS5: 1
Exclude Win: 0
Exclude Win64: 1
- first:
Any:
second:
enabled: 1
enabled: 0
settings: {}
- first:
Editor: Editor

BIN
Assets/Plugins/windows/x86/fmodL.dll

6
Assets/Plugins/windows/x86/fmodL.dll.meta

@ -17,14 +17,18 @@ PluginImporter:
enabled: 0
settings:
Exclude Editor: 0
Exclude GameCoreScarlett: 1
Exclude GameCoreXboxOne: 1
Exclude Linux64: 0
Exclude OSXUniversal: 0
Exclude PS4: 1
Exclude PS5: 1
Exclude Win: 0
Exclude Win64: 1
- first:
Any:
second:
enabled: 1
enabled: 0
settings: {}
- first:
Editor: Editor

BIN
Assets/Plugins/windows/x86_64/fmod.dll

6
Assets/Plugins/windows/x86_64/fmod.dll.meta

@ -17,14 +17,18 @@ PluginImporter:
enabled: 0
settings:
Exclude Editor: 0
Exclude GameCoreScarlett: 1
Exclude GameCoreXboxOne: 1
Exclude Linux64: 0
Exclude OSXUniversal: 0
Exclude PS4: 1
Exclude PS5: 1
Exclude Win: 1
Exclude Win64: 0
- first:
Any:
second:
enabled: 1
enabled: 0
settings: {}
- first:
Editor: Editor

BIN
Assets/Plugins/windows/x86_64/fmodL.dll

6
Assets/Plugins/windows/x86_64/fmodL.dll.meta

@ -17,14 +17,18 @@ PluginImporter:
enabled: 0
settings:
Exclude Editor: 0
Exclude GameCoreScarlett: 1
Exclude GameCoreXboxOne: 1
Exclude Linux64: 0
Exclude OSXUniversal: 0
Exclude PS4: 1
Exclude PS5: 1
Exclude Win: 1
Exclude Win64: 0
- first:
Any:
second:
enabled: 1
enabled: 0
settings: {}
- first:
Editor: Editor

244
engine/FMOD/inc/fmod.cs

@ -17,24 +17,10 @@ namespace FMOD
FMOD version number. Check this against FMOD::System::getVersion / System_GetVersion
0xaaaabbcc -> aaaa = major version number. bb = minor version number. cc = development version number.
*/
public class VERSION
public partial class VERSION
{
public const int number = 0x00020016;
#if (UNITY_IPHONE || UNITY_TVOS || UNITY_SWITCH || UNITY_WEBGL) && !UNITY_EDITOR
public const string dll = "__Internal";
#elif (UNITY_PS4) && DEVELOPMENT_BUILD
public const string dll = "libfmodL";
#elif (UNITY_PS4) && !UNITY_EDITOR
public const string dll = "libfmod";
#elif (UNITY_PSP2) && !UNITY_EDITOR
public const string dll = "libfmodstudio";
#elif ((UNITY_WSA || UNITY_ANDROID || UNITY_XBOXONE || UNITY_STADIA) && DEVELOPMENT_BUILD)
public const string dll = "fmodL";
#elif (UNITY_EDITOR) || (UNITY_STANDALONE && DEVELOPMENT_BUILD)
public const string dll = "fmodstudioL";
#elif (UNITY_STANDALONE)
public const string dll = "fmodstudio";
#else
public const int number = 0x00020111;
#if !UNITY_2017_4_OR_NEWER
public const string dll = "fmod";
#endif
}
@ -510,29 +496,32 @@ namespace FMOD
PREUPDATE = 0x00000400,
POSTUPDATE = 0x00000800,
RECORDLISTCHANGED = 0x00001000,
BUFFEREDNOMIX = 0x00002000,
DEVICEREINITIALIZE = 0x00004000,
OUTPUTUNDERRUN = 0x00008000,
ALL = 0xFFFFFFFF,
}
/*
FMOD Callbacks
*/
public delegate RESULT DEBUG_CALLBACK (DEBUG_FLAGS flags, StringWrapper file, int line, StringWrapper func, StringWrapper message);
public delegate RESULT DEBUG_CALLBACK (DEBUG_FLAGS flags, IntPtr file, int line, IntPtr func, IntPtr message);
public delegate RESULT SYSTEM_CALLBACK (IntPtr system, SYSTEM_CALLBACK_TYPE type, IntPtr commanddata1, IntPtr commanddata2, IntPtr userdata);
public delegate RESULT CHANNELCONTROL_CALLBACK(IntPtr channelcontrol, CHANNELCONTROL_TYPE controltype, CHANNELCONTROL_CALLBACK_TYPE callbacktype, IntPtr commanddata1, IntPtr commanddata2);
public delegate RESULT CHANNELCONTROL_CALLBACK (IntPtr channelcontrol, CHANNELCONTROL_TYPE controltype, CHANNELCONTROL_CALLBACK_TYPE callbacktype, IntPtr commanddata1, IntPtr commanddata2);
public delegate RESULT SOUND_NONBLOCK_CALLBACK (IntPtr sound, RESULT result);
public delegate RESULT SOUND_PCMREAD_CALLBACK (IntPtr sound, IntPtr data, uint datalen);
public delegate RESULT SOUND_PCMSETPOS_CALLBACK (IntPtr sound, int subsound, uint position, TIMEUNIT postype);
public delegate RESULT FILE_OPEN_CALLBACK (StringWrapper name, ref uint filesize, ref IntPtr handle, IntPtr userdata);
public delegate RESULT FILE_OPEN_CALLBACK (IntPtr name, ref uint filesize, ref IntPtr handle, IntPtr userdata);
public delegate RESULT FILE_CLOSE_CALLBACK (IntPtr handle, IntPtr userdata);
public delegate RESULT FILE_READ_CALLBACK (IntPtr handle, IntPtr buffer, uint sizebytes, ref uint bytesread, IntPtr userdata);
public delegate RESULT FILE_SEEK_CALLBACK (IntPtr handle, uint pos, IntPtr userdata);
public delegate RESULT FILE_ASYNCREAD_CALLBACK (IntPtr info, IntPtr userdata);
public delegate RESULT FILE_ASYNCCANCEL_CALLBACK(IntPtr info, IntPtr userdata);
public delegate RESULT FILE_ASYNCDONE_FUNC (IntPtr info, RESULT result);
public delegate IntPtr MEMORY_ALLOC_CALLBACK (uint size, MEMORY_TYPE type, StringWrapper sourcestr);
public delegate IntPtr MEMORY_REALLOC_CALLBACK (IntPtr ptr, uint size, MEMORY_TYPE type, StringWrapper sourcestr);
public delegate void MEMORY_FREE_CALLBACK (IntPtr ptr, MEMORY_TYPE type, StringWrapper sourcestr);
public delegate float CB_3D_ROLLOFF_CALLBACK (IntPtr channelcontrol, float distance);
public delegate IntPtr MEMORY_ALLOC_CALLBACK (uint size, MEMORY_TYPE type, IntPtr sourcestr);
public delegate IntPtr MEMORY_REALLOC_CALLBACK (IntPtr ptr, uint size, MEMORY_TYPE type, IntPtr sourcestr);
public delegate void MEMORY_FREE_CALLBACK (IntPtr ptr, MEMORY_TYPE type, IntPtr sourcestr);
public delegate float CB_3D_ROLLOFF_CALLBACK (IntPtr channelcontrol, float distance);
public enum DSP_RESAMPLER : int
{
@ -744,12 +733,9 @@ namespace FMOD
public float distanceFilterCenterFreq;
public int reverb3Dinstance;
public int DSPBufferPoolSize;
public uint stackSizeStream;
public uint stackSizeNonBlocking;
public uint stackSizeMixer;
public DSP_RESAMPLER resamplerMethod;
public uint commandQueueSize;
public uint randomSeed;
public int maxConvolutionThreads;
}
[Flags]
@ -759,6 +745,119 @@ namespace FMOD
DEFAULT = 0x00000002,
}
public enum THREAD_PRIORITY : int
{
/* Platform specific priority range */
PLATFORM_MIN = -32 * 1024,
PLATFORM_MAX = 32 * 1024,
/* Platform agnostic priorities, maps internally to platform specific value */
DEFAULT = PLATFORM_MIN - 1,
LOW = PLATFORM_MIN - 2,
MEDIUM = PLATFORM_MIN - 3,
HIGH = PLATFORM_MIN - 4,
VERY_HIGH = PLATFORM_MIN - 5,
EXTREME = PLATFORM_MIN - 6,
CRITICAL = PLATFORM_MIN - 7,
/* Thread defaults */
MIXER = EXTREME,
FEEDER = CRITICAL,
STREAM = VERY_HIGH,
FILE = HIGH,
NONBLOCKING = HIGH,
RECORD = HIGH,
GEOMETRY = LOW,
PROFILER = MEDIUM,
STUDIO_UPDATE = MEDIUM,
STUDIO_LOAD_BANK = MEDIUM,
STUDIO_LOAD_SAMPLE = MEDIUM,
CONVOLUTION1 = VERY_HIGH,
CONVOLUTION2 = VERY_HIGH
}
public enum THREAD_STACK_SIZE : uint
{
DEFAULT = 0,
MIXER = 80 * 1024,
FEEDER = 16 * 1024,
STREAM = 96 * 1024,
FILE = 64 * 1024,
NONBLOCKING = 112 * 1024,
RECORD = 16 * 1024,
GEOMETRY = 48 * 1024,
PROFILER = 128 * 1024,
STUDIO_UPDATE = 96 * 1024,
STUDIO_LOAD_BANK = 96 * 1024,
STUDIO_LOAD_SAMPLE = 96 * 1024,
CONVOLUTION1 = 16 * 1024,
CONVOLUTION2 = 16 * 1024
}
[Flags]
public enum THREAD_AFFINITY : long // avoid ulong for Bolt compatibility
{
/* Platform agnostic thread groupings */
GROUP_DEFAULT = 0x4000000000000000,
GROUP_A = 0x4000000000000001,
GROUP_B = 0x4000000000000002,
GROUP_C = 0x4000000000000003,
/* Thread defaults */
MIXER = GROUP_A,
FEEDER = GROUP_C,
STREAM = GROUP_C,
FILE = GROUP_C,
NONBLOCKING = GROUP_C,
RECORD = GROUP_C,
GEOMETRY = GROUP_C,
PROFILER = GROUP_C,
STUDIO_UPDATE = GROUP_B,
STUDIO_LOAD_BANK = GROUP_C,
STUDIO_LOAD_SAMPLE = GROUP_C,
CONVOLUTION1 = GROUP_C,
CONVOLUTION2 = GROUP_C,
/* Core mask, valid up to 1 << 61 */
CORE_ALL = 0,
CORE_0 = 1 << 0,
CORE_1 = 1 << 1,
CORE_2 = 1 << 2,
CORE_3 = 1 << 3,
CORE_4 = 1 << 4,
CORE_5 = 1 << 5,
CORE_6 = 1 << 6,
CORE_7 = 1 << 7,
CORE_8 = 1 << 8,
CORE_9 = 1 << 9,
CORE_10 = 1 << 10,
CORE_11 = 1 << 11,
CORE_12 = 1 << 12,
CORE_13 = 1 << 13,
CORE_14 = 1 << 14,
CORE_15 = 1 << 15
}
public enum THREAD_TYPE : int
{
MIXER,
FEEDER,
STREAM,
FILE,
NONBLOCKING,
RECORD,
GEOMETRY,
PROFILER,
STUDIO_UPDATE,
STUDIO_LOAD_BANK,
STUDIO_LOAD_SAMPLE,
CONVOLUTION1,
CONVOLUTION2,
MAX
}
/*
FMOD System factory functions. Use this to create an FMOD System Instance. below you will see System init/close to get started.
*/
@ -817,6 +916,24 @@ namespace FMOD
#endregion
}
public struct Thread
{
public static RESULT SetAttributes(THREAD_TYPE type, THREAD_AFFINITY affinity = THREAD_AFFINITY.GROUP_DEFAULT, THREAD_PRIORITY priority = THREAD_PRIORITY.DEFAULT, THREAD_STACK_SIZE stacksize = THREAD_STACK_SIZE.DEFAULT)
{
if ((affinity & THREAD_AFFINITY.GROUP_DEFAULT) != 0)
{
affinity &= ~THREAD_AFFINITY.GROUP_DEFAULT;
affinity = (THREAD_AFFINITY)(((ulong)affinity) | 0x8000000000000000);
}
return FMOD5_Thread_SetAttributes(type, affinity, priority, stacksize);
}
#region importfunctions
[DllImport(VERSION.dll)]
private static extern RESULT FMOD5_Thread_SetAttributes(THREAD_TYPE type, THREAD_AFFINITY affinity, THREAD_PRIORITY priority, THREAD_STACK_SIZE stacksize);
#endregion
}
/*
'System' API.
*/
@ -899,12 +1016,12 @@ namespace FMOD
}
public RESULT setAdvancedSettings(ref ADVANCEDSETTINGS settings)
{
settings.cbSize = Marshal.SizeOf(settings);
settings.cbSize = MarshalHelper.SizeOf(typeof(ADVANCEDSETTINGS));
return FMOD5_System_SetAdvancedSettings(this.handle, ref settings);
}
public RESULT getAdvancedSettings(ref ADVANCEDSETTINGS settings)
{
settings.cbSize = Marshal.SizeOf(settings);
settings.cbSize = MarshalHelper.SizeOf(typeof(ADVANCEDSETTINGS));
return FMOD5_System_GetAdvancedSettings(this.handle, ref settings);
}
public RESULT setCallback(SYSTEM_CALLBACK callback, SYSTEM_CALLBACK_TYPE callbackmask = SYSTEM_CALLBACK_TYPE.ALL)
@ -1096,6 +1213,10 @@ namespace FMOD
{
return FMOD5_System_GetCPUUsage(this.handle, out dsp, out stream, out geometry, out update, out total);
}
public RESULT getCPUUsageEx(out float convolutionThread1, out float convolutionThread2)
{
return FMOD5_System_GetCPUUsageEx(this.handle, out convolutionThread1, out convolutionThread2);
}
public RESULT getFileUsage(out Int64 sampleBytesRead, out Int64 streamBytesRead, out Int64 otherBytesRead)
{
return FMOD5_System_GetFileUsage(this.handle, out sampleBytesRead, out streamBytesRead, out otherBytesRead);
@ -1120,7 +1241,7 @@ namespace FMOD
public RESULT createSound(string name, MODE mode, out Sound sound)
{
CREATESOUNDEXINFO exinfo = new CREATESOUNDEXINFO();
exinfo.cbsize = Marshal.SizeOf(exinfo);
exinfo.cbsize = MarshalHelper.SizeOf(typeof(CREATESOUNDEXINFO));
return createSound(name, mode, ref exinfo, out sound);
}
@ -1142,7 +1263,7 @@ namespace FMOD
public RESULT createStream(string name, MODE mode, out Sound sound)
{
CREATESOUNDEXINFO exinfo = new CREATESOUNDEXINFO();
exinfo.cbsize = Marshal.SizeOf(exinfo);
exinfo.cbsize = MarshalHelper.SizeOf(typeof(CREATESOUNDEXINFO));
return createStream(name, mode, ref exinfo, out sound);
}
@ -1184,6 +1305,10 @@ namespace FMOD
{
return FMOD5_System_GetChannel(this.handle, channelid, out channel.handle);
}
public RESULT getDSPInfoByType(DSP_TYPE type, out IntPtr description)
{
return FMOD5_System_GetDSPInfoByType(this.handle, type, out description);
}
public RESULT getMasterChannelGroup(out ChannelGroup channelgroup)
{
return FMOD5_System_GetMasterChannelGroup(this.handle, out channelgroup.handle);
@ -1439,6 +1564,8 @@ namespace FMOD
[DllImport(VERSION.dll)]
private static extern RESULT FMOD5_System_GetCPUUsage (IntPtr system, out float dsp, out float stream, out float geometry, out float update, out float total);
[DllImport(VERSION.dll)]
private static extern RESULT FMOD5_System_GetCPUUsageEx (IntPtr system, out float convolutionThread1, out float convolutionThread2);
[DllImport(VERSION.dll)]
private static extern RESULT FMOD5_System_GetFileUsage (IntPtr system, out Int64 sampleBytesRead, out Int64 streamBytesRead, out Int64 otherBytesRead);
[DllImport(VERSION.dll)]
private static extern RESULT FMOD5_System_CreateSound (IntPtr system, byte[] name_or_data, MODE mode, ref CREATESOUNDEXINFO exinfo, out IntPtr sound);
@ -1465,6 +1592,8 @@ namespace FMOD
[DllImport(VERSION.dll)]
private static extern RESULT FMOD5_System_GetChannel (IntPtr system, int channelid, out IntPtr channel);
[DllImport(VERSION.dll)]
private static extern RESULT FMOD5_System_GetDSPInfoByType (IntPtr system, DSP_TYPE type, out IntPtr description);
[DllImport(VERSION.dll)]
private static extern RESULT FMOD5_System_GetMasterChannelGroup (IntPtr system, out IntPtr channelgroup);
[DllImport(VERSION.dll)]
private static extern RESULT FMOD5_System_GetMasterSoundGroup (IntPtr system, out IntPtr soundgroup);
@ -1520,6 +1649,7 @@ namespace FMOD
public IntPtr handle;
public System(IntPtr ptr) { this.handle = ptr; }
public bool hasHandle() { return this.handle != IntPtr.Zero; }
public void clearHandle() { this.handle = IntPtr.Zero; }
@ -1837,6 +1967,7 @@ namespace FMOD
public IntPtr handle;
public Sound(IntPtr ptr) { this.handle = ptr; }
public bool hasHandle() { return this.handle != IntPtr.Zero; }
public void clearHandle() { this.handle = IntPtr.Zero; }
@ -2415,6 +2546,7 @@ namespace FMOD
public IntPtr handle;
public Channel(IntPtr ptr) { this.handle = ptr; }
public bool hasHandle() { return this.handle != IntPtr.Zero; }
public void clearHandle() { this.handle = IntPtr.Zero; }
@ -2886,8 +3018,9 @@ namespace FMOD
public IntPtr handle;
public bool hasHandle() { return this.handle != IntPtr.Zero; }
public void clearHandle() { this.handle = IntPtr.Zero; }
public ChannelGroup(IntPtr ptr) { this.handle = ptr; }
public bool hasHandle() { return this.handle != IntPtr.Zero; }
public void clearHandle() { this.handle = IntPtr.Zero; }
#endregion
}
@ -3023,8 +3156,9 @@ namespace FMOD
public IntPtr handle;
public bool hasHandle() { return this.handle != IntPtr.Zero; }
public void clearHandle() { this.handle = IntPtr.Zero; }
public SoundGroup(IntPtr ptr) { this.handle = ptr; }
public bool hasHandle() { return this.handle != IntPtr.Zero; }
public void clearHandle() { this.handle = IntPtr.Zero; }
#endregion
}
@ -3160,11 +3294,7 @@ namespace FMOD
{
IntPtr descPtr;
RESULT result = FMOD5_DSP_GetParameterInfo(this.handle, index, out descPtr);
#if (UNITY_2017_4_OR_NEWER) && !NET_4_6
desc = (DSP_PARAMETER_DESC)Marshal.PtrToStructure(descPtr, typeof(DSP_PARAMETER_DESC));
#else
desc = Marshal.PtrToStructure<DSP_PARAMETER_DESC>(descPtr);
#endif // (UNITY_2017_4_OR_NEWER) && !NET_4_6
desc = (DSP_PARAMETER_DESC)MarshalHelper.PtrToStructure(descPtr, typeof(DSP_PARAMETER_DESC));
return result;
}
public RESULT getDataParameterIndex(int datatype, out int index)
@ -3333,6 +3463,7 @@ namespace FMOD
public IntPtr handle;
public DSP(IntPtr ptr) { this.handle = ptr; }
public bool hasHandle() { return this.handle != IntPtr.Zero; }
public void clearHandle() { this.handle = IntPtr.Zero; }
@ -3408,8 +3539,9 @@ namespace FMOD
public IntPtr handle;
public bool hasHandle() { return this.handle != IntPtr.Zero; }
public void clearHandle() { this.handle = IntPtr.Zero; }
public DSPConnection(IntPtr ptr) { this.handle = ptr; }
public bool hasHandle() { return this.handle != IntPtr.Zero; }
public void clearHandle() { this.handle = IntPtr.Zero; }
#endregion
}
@ -3553,6 +3685,7 @@ namespace FMOD
public IntPtr handle;
public Geometry(IntPtr ptr) { this.handle = ptr; }
public bool hasHandle() { return this.handle != IntPtr.Zero; }
public void clearHandle() { this.handle = IntPtr.Zero; }
@ -3630,18 +3763,24 @@ namespace FMOD
public IntPtr handle;
public Reverb3D(IntPtr ptr) { this.handle = ptr; }
public bool hasHandle() { return this.handle != IntPtr.Zero; }
public void clearHandle() { this.handle = IntPtr.Zero; }
#endregion
}
#region String Helper Functions
#region Helper Functions
[StructLayout(LayoutKind.Sequential)]
public struct StringWrapper
{
IntPtr nativeUtf8Ptr;
public StringWrapper(IntPtr ptr)
{
nativeUtf8Ptr = ptr;
}
public static implicit operator string(StringWrapper fstring)
{
using (StringHelper.ThreadSafeEncoding encoder = StringHelper.GetFreeHelper())
@ -3790,5 +3929,22 @@ namespace FMOD
}
}
// Some of the Marshal functions were marked as deprecated / obsolete, however that decision was reversed: https://github.com/dotnet/corefx/pull/10541
// Use the old syntax (non-generic) to ensure maximum compatibility (especially with Unity) ignoring the warnings
public static class MarshalHelper
{
#pragma warning disable 618
public static int SizeOf(Type t)
{
return Marshal.SizeOf(t); // Always use Type version, never Object version as it boxes causes GC allocations
}
public static object PtrToStructure(IntPtr ptr, Type structureType)
{
return Marshal.PtrToStructure(ptr, structureType);
}
#pragma warning restore 618
}
#endregion
}

3
engine/FMOD/inc/fmod.h

@ -27,6 +27,7 @@ FMOD_RESULT F_API FMOD_Memory_GetStats (int *currentalloced, int *ma
FMOD_RESULT F_API FMOD_Debug_Initialize (FMOD_DEBUG_FLAGS flags, FMOD_DEBUG_MODE mode, FMOD_DEBUG_CALLBACK callback, const char *filename);
FMOD_RESULT F_API FMOD_File_SetDiskBusy (int busy);
FMOD_RESULT F_API FMOD_File_GetDiskBusy (int *busy);
FMOD_RESULT F_API FMOD_Thread_SetAttributes (FMOD_THREAD_TYPE type, FMOD_THREAD_AFFINITY affinity, FMOD_THREAD_PRIORITY priority, FMOD_THREAD_STACK_SIZE stacksize);
/*
FMOD System factory functions. Use this to create an FMOD System Instance. below you will see FMOD_System_Init/Close to get started.
@ -101,6 +102,7 @@ FMOD_RESULT F_API FMOD_System_GetVersion (FMOD_SYSTEM *system, un
FMOD_RESULT F_API FMOD_System_GetOutputHandle (FMOD_SYSTEM *system, void **handle);
FMOD_RESULT F_API FMOD_System_GetChannelsPlaying (FMOD_SYSTEM *system, int *channels, int *realchannels);
FMOD_RESULT F_API FMOD_System_GetCPUUsage (FMOD_SYSTEM *system, float *dsp, float *stream, float *geometry, float *update, float *total);
FMOD_RESULT F_API FMOD_System_GetCPUUsageEx (FMOD_SYSTEM *system, float *convolutionThread1, float *convolutionThread2);
FMOD_RESULT F_API FMOD_System_GetFileUsage (FMOD_SYSTEM *system, long long *sampleBytesRead, long long *streamBytesRead, long long *otherBytesRead);
/* Sound/DSP/Channel/FX creation and retrieval. */
@ -114,6 +116,7 @@ FMOD_RESULT F_API FMOD_System_CreateReverb3D (FMOD_SYSTEM *system, FM
FMOD_RESULT F_API FMOD_System_PlaySound (FMOD_SYSTEM *system, FMOD_SOUND *sound, FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL paused, FMOD_CHANNEL **channel);
FMOD_RESULT F_API FMOD_System_PlayDSP (FMOD_SYSTEM *system, FMOD_DSP *dsp, FMOD_CHANNELGROUP *channelgroup, FMOD_BOOL paused, FMOD_CHANNEL **channel);
FMOD_RESULT F_API FMOD_System_GetChannel (FMOD_SYSTEM *system, int channelid, FMOD_CHANNEL **channel);
FMOD_RESULT F_API FMOD_System_GetDSPInfoByType (FMOD_SYSTEM *system, FMOD_DSP_TYPE type, const FMOD_DSP_DESCRIPTION **description);
FMOD_RESULT F_API FMOD_System_GetMasterChannelGroup (FMOD_SYSTEM *system, FMOD_CHANNELGROUP **channelgroup);
FMOD_RESULT F_API FMOD_System_GetMasterSoundGroup (FMOD_SYSTEM *system, FMOD_SOUNDGROUP **soundgroup);

3
engine/FMOD/inc/fmod.hpp

@ -38,6 +38,7 @@ namespace FMOD
inline FMOD_RESULT Debug_Initialize (FMOD_DEBUG_FLAGS flags, FMOD_DEBUG_MODE mode = FMOD_DEBUG_MODE_TTY, FMOD_DEBUG_CALLBACK callback = 0, const char *filename = 0) { return FMOD_Debug_Initialize(flags, mode, callback, filename); }
inline FMOD_RESULT File_SetDiskBusy (int busy) { return FMOD_File_SetDiskBusy(busy); }
inline FMOD_RESULT File_GetDiskBusy (int *busy) { return FMOD_File_GetDiskBusy(busy); }
inline FMOD_RESULT Thread_SetAttributes (FMOD_THREAD_TYPE type, FMOD_THREAD_AFFINITY affinity = FMOD_THREAD_AFFINITY_GROUP_DEFAULT, FMOD_THREAD_PRIORITY priority = FMOD_THREAD_PRIORITY_DEFAULT, FMOD_THREAD_STACK_SIZE stacksize = FMOD_THREAD_STACK_SIZE_DEFAULT) { return FMOD_Thread_SetAttributes(type, affinity, priority, stacksize); }
/*
FMOD System factory functions.
@ -123,6 +124,7 @@ namespace FMOD
FMOD_RESULT F_API getOutputHandle (void **handle);
FMOD_RESULT F_API getChannelsPlaying (int *channels, int *realchannels = 0);
FMOD_RESULT F_API getCPUUsage (float *dsp, float *stream, float *geometry, float *update, float *total);
FMOD_RESULT F_API getCPUUsageEx (float *convolutionThread1, float *convolutionThread2);
FMOD_RESULT F_API getFileUsage (long long *sampleBytesRead, long long *streamBytesRead, long long *otherBytesRead);
// Sound/DSP/Channel/FX creation and retrieval.
@ -137,6 +139,7 @@ namespace FMOD
FMOD_RESULT F_API playSound (Sound *sound, ChannelGroup *channelgroup, bool paused, Channel **channel);
FMOD_RESULT F_API playDSP (DSP *dsp, ChannelGroup *channelgroup, bool paused, Channel **channel);
FMOD_RESULT F_API getChannel (int channelid, Channel **channel);
FMOD_RESULT F_API getDSPInfoByType (FMOD_DSP_TYPE type, const FMOD_DSP_DESCRIPTION **description);
FMOD_RESULT F_API getMasterChannelGroup (ChannelGroup **channelgroup);
FMOD_RESULT F_API getMasterSoundGroup (SoundGroup **soundgroup);

114
engine/FMOD/inc/fmod_common.h

@ -58,7 +58,7 @@ typedef unsigned long long FMOD_PORT_INDEX;
/*
FMOD constants
*/
#define FMOD_VERSION 0x00020016 /* 0xaaaabbcc -> aaaa = product version, bb = major version, cc = minor version.*/
#define FMOD_VERSION 0x00020111 /* 0xaaaabbcc -> aaaa = product version, bb = major version, cc = minor version.*/
typedef unsigned int FMOD_DEBUG_FLAGS;
#define FMOD_DEBUG_LEVEL_NONE 0x00000000
@ -126,6 +126,9 @@ typedef unsigned int FMOD_SYSTEM_CALLBACK_TYPE;
#define FMOD_SYSTEM_CALLBACK_PREUPDATE 0x00000400
#define FMOD_SYSTEM_CALLBACK_POSTUPDATE 0x00000800
#define FMOD_SYSTEM_CALLBACK_RECORDLISTCHANGED 0x00001000
#define FMOD_SYSTEM_CALLBACK_BUFFEREDNOMIX 0x00002000
#define FMOD_SYSTEM_CALLBACK_DEVICEREINITIALIZE 0x00004000
#define FMOD_SYSTEM_CALLBACK_OUTPUTUNDERRUN 0x00008000
#define FMOD_SYSTEM_CALLBACK_ALL 0xFFFFFFFF
typedef unsigned int FMOD_MODE;
@ -169,7 +172,6 @@ typedef unsigned int FMOD_CHANNELMASK;
#define FMOD_CHANNELMASK_BACK_LEFT 0x00000040
#define FMOD_CHANNELMASK_BACK_RIGHT 0x00000080
#define FMOD_CHANNELMASK_BACK_CENTER 0x00000100
#define FMOD_CHANNELMASK_MONO (FMOD_CHANNELMASK_FRONT_LEFT)
#define FMOD_CHANNELMASK_STEREO (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT)
#define FMOD_CHANNELMASK_LRC (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_FRONT_CENTER)
@ -180,6 +182,89 @@ typedef unsigned int FMOD_CHANNELMASK;
#define FMOD_CHANNELMASK_7POINT0 (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_FRONT_CENTER | FMOD_CHANNELMASK_SURROUND_LEFT | FMOD_CHANNELMASK_SURROUND_RIGHT | FMOD_CHANNELMASK_BACK_LEFT | FMOD_CHANNELMASK_BACK_RIGHT)
#define FMOD_CHANNELMASK_7POINT1 (FMOD_CHANNELMASK_FRONT_LEFT | FMOD_CHANNELMASK_FRONT_RIGHT | FMOD_CHANNELMASK_FRONT_CENTER | FMOD_CHANNELMASK_LOW_FREQUENCY | FMOD_CHANNELMASK_SURROUND_LEFT | FMOD_CHANNELMASK_SURROUND_RIGHT | FMOD_CHANNELMASK_BACK_LEFT | FMOD_CHANNELMASK_BACK_RIGHT)
typedef int FMOD_THREAD_PRIORITY;
/* Platform specific priority range */
#define FMOD_THREAD_PRIORITY_PLATFORM_MIN (-32 * 1024)
#define FMOD_THREAD_PRIORITY_PLATFORM_MAX ( 32 * 1024)
/* Platform agnostic priorities, maps internally to platform specific value */
#define FMOD_THREAD_PRIORITY_DEFAULT (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 1)
#define FMOD_THREAD_PRIORITY_LOW (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 2)
#define FMOD_THREAD_PRIORITY_MEDIUM (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 3)
#define FMOD_THREAD_PRIORITY_HIGH (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 4)
#define FMOD_THREAD_PRIORITY_VERY_HIGH (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 5)
#define FMOD_THREAD_PRIORITY_EXTREME (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 6)
#define FMOD_THREAD_PRIORITY_CRITICAL (FMOD_THREAD_PRIORITY_PLATFORM_MIN - 7)
/* Thread defaults */
#define FMOD_THREAD_PRIORITY_MIXER FMOD_THREAD_PRIORITY_EXTREME
#define FMOD_THREAD_PRIORITY_FEEDER FMOD_THREAD_PRIORITY_CRITICAL
#define FMOD_THREAD_PRIORITY_STREAM FMOD_THREAD_PRIORITY_VERY_HIGH
#define FMOD_THREAD_PRIORITY_FILE FMOD_THREAD_PRIORITY_HIGH
#define FMOD_THREAD_PRIORITY_NONBLOCKING FMOD_THREAD_PRIORITY_HIGH
#define FMOD_THREAD_PRIORITY_RECORD FMOD_THREAD_PRIORITY_HIGH
#define FMOD_THREAD_PRIORITY_GEOMETRY FMOD_THREAD_PRIORITY_LOW
#define FMOD_THREAD_PRIORITY_PROFILER FMOD_THREAD_PRIORITY_MEDIUM
#define FMOD_THREAD_PRIORITY_STUDIO_UPDATE FMOD_THREAD_PRIORITY_MEDIUM
#define FMOD_THREAD_PRIORITY_STUDIO_LOAD_BANK FMOD_THREAD_PRIORITY_MEDIUM
#define FMOD_THREAD_PRIORITY_STUDIO_LOAD_SAMPLE FMOD_THREAD_PRIORITY_MEDIUM
#define FMOD_THREAD_PRIORITY_CONVOLUTION1 FMOD_THREAD_PRIORITY_VERY_HIGH
#define FMOD_THREAD_PRIORITY_CONVOLUTION2 FMOD_THREAD_PRIORITY_VERY_HIGH
typedef unsigned int FMOD_THREAD_STACK_SIZE;
#define FMOD_THREAD_STACK_SIZE_DEFAULT 0
#define FMOD_THREAD_STACK_SIZE_MIXER (80 * 1024)
#define FMOD_THREAD_STACK_SIZE_FEEDER (16 * 1024)
#define FMOD_THREAD_STACK_SIZE_STREAM (96 * 1024)
#define FMOD_THREAD_STACK_SIZE_FILE (64 * 1024)
#define FMOD_THREAD_STACK_SIZE_NONBLOCKING (112 * 1024)
#define FMOD_THREAD_STACK_SIZE_RECORD (16 * 1024)
#define FMOD_THREAD_STACK_SIZE_GEOMETRY (48 * 1024)
#define FMOD_THREAD_STACK_SIZE_PROFILER (128 * 1024)
#define FMOD_THREAD_STACK_SIZE_STUDIO_UPDATE (96 * 1024)
#define FMOD_THREAD_STACK_SIZE_STUDIO_LOAD_BANK (96 * 1024)
#define FMOD_THREAD_STACK_SIZE_STUDIO_LOAD_SAMPLE (96 * 1024)
#define FMOD_THREAD_STACK_SIZE_CONVOLUTION1 (16 * 1024)
#define FMOD_THREAD_STACK_SIZE_CONVOLUTION2 (16 * 1024)
typedef unsigned long long FMOD_THREAD_AFFINITY;
/* Platform agnostic thread groupings */
#define FMOD_THREAD_AFFINITY_GROUP_DEFAULT 0x8000000000000000
#define FMOD_THREAD_AFFINITY_GROUP_A 0x8000000000000001
#define FMOD_THREAD_AFFINITY_GROUP_B 0x8000000000000002
#define FMOD_THREAD_AFFINITY_GROUP_C 0x8000000000000003
/* Thread defaults */
#define FMOD_THREAD_AFFINITY_MIXER FMOD_THREAD_AFFINITY_GROUP_A
#define FMOD_THREAD_AFFINITY_FEEDER FMOD_THREAD_AFFINITY_GROUP_C
#define FMOD_THREAD_AFFINITY_STREAM FMOD_THREAD_AFFINITY_GROUP_C
#define FMOD_THREAD_AFFINITY_FILE FMOD_THREAD_AFFINITY_GROUP_C
#define FMOD_THREAD_AFFINITY_NONBLOCKING FMOD_THREAD_AFFINITY_GROUP_C
#define FMOD_THREAD_AFFINITY_RECORD FMOD_THREAD_AFFINITY_GROUP_C
#define FMOD_THREAD_AFFINITY_GEOMETRY FMOD_THREAD_AFFINITY_GROUP_C
#define FMOD_THREAD_AFFINITY_PROFILER FMOD_THREAD_AFFINITY_GROUP_C
#define FMOD_THREAD_AFFINITY_STUDIO_UPDATE FMOD_THREAD_AFFINITY_GROUP_B
#define FMOD_THREAD_AFFINITY_STUDIO_LOAD_BANK FMOD_THREAD_AFFINITY_GROUP_C
#define FMOD_THREAD_AFFINITY_STUDIO_LOAD_SAMPLE FMOD_THREAD_AFFINITY_GROUP_C
#define FMOD_THREAD_AFFINITY_CONVOLUTION1 FMOD_THREAD_AFFINITY_GROUP_C
#define FMOD_THREAD_AFFINITY_CONVOLUTION2 FMOD_THREAD_AFFINITY_GROUP_C
/* Core mask, valid up to 1 << 62 */
#define FMOD_THREAD_AFFINITY_CORE_ALL 0
#define FMOD_THREAD_AFFINITY_CORE_0 (1 << 0)
#define FMOD_THREAD_AFFINITY_CORE_1 (1 << 1)
#define FMOD_THREAD_AFFINITY_CORE_2 (1 << 2)
#define FMOD_THREAD_AFFINITY_CORE_3 (1 << 3)
#define FMOD_THREAD_AFFINITY_CORE_4 (1 << 4)
#define FMOD_THREAD_AFFINITY_CORE_5 (1 << 5)
#define FMOD_THREAD_AFFINITY_CORE_6 (1 << 6)
#define FMOD_THREAD_AFFINITY_CORE_7 (1 << 7)
#define FMOD_THREAD_AFFINITY_CORE_8 (1 << 8)
#define FMOD_THREAD_AFFINITY_CORE_9 (1 << 9)
#define FMOD_THREAD_AFFINITY_CORE_10 (1 << 10)
#define FMOD_THREAD_AFFINITY_CORE_11 (1 << 11)
#define FMOD_THREAD_AFFINITY_CORE_12 (1 << 12)
#define FMOD_THREAD_AFFINITY_CORE_13 (1 << 13)
#define FMOD_THREAD_AFFINITY_CORE_14 (1 << 14)
#define FMOD_THREAD_AFFINITY_CORE_15 (1 << 15)
/* Preset for FMOD_REVERB_PROPERTIES */
#define FMOD_PRESET_OFF { 1000, 7, 11, 5000, 100, 100, 100, 250, 0, 20, 96, -80.0f }
#define FMOD_PRESET_GENERIC { 1500, 7, 11, 5000, 83, 100, 100, 250, 0, 14500, 96, -8.0f }
@ -212,6 +297,26 @@ typedef unsigned int FMOD_CHANNELMASK;
#define FMOD_REVERB_MAXINSTANCES 4
#define FMOD_PORT_INDEX_NONE 0xFFFFFFFFFFFFFFFF
typedef enum FMOD_THREAD_TYPE
{
FMOD_THREAD_TYPE_MIXER,
FMOD_THREAD_TYPE_FEEDER,
FMOD_THREAD_TYPE_STREAM,
FMOD_THREAD_TYPE_FILE,
FMOD_THREAD_TYPE_NONBLOCKING,
FMOD_THREAD_TYPE_RECORD,
FMOD_THREAD_TYPE_GEOMETRY,
FMOD_THREAD_TYPE_PROFILER,
FMOD_THREAD_TYPE_STUDIO_UPDATE,
FMOD_THREAD_TYPE_STUDIO_LOAD_BANK,
FMOD_THREAD_TYPE_STUDIO_LOAD_SAMPLE,
FMOD_THREAD_TYPE_CONVOLUTION1,
FMOD_THREAD_TYPE_CONVOLUTION2,
FMOD_THREAD_TYPE_MAX,
FMOD_THREAD_TYPE_FORCEINT = 65536
} FMOD_THREAD_TYPE;
typedef enum FMOD_RESULT
{
FMOD_OK,
@ -659,12 +764,9 @@ typedef struct FMOD_ADVANCEDSETTINGS
float distanceFilterCenterFreq;
int reverb3Dinstance;
int DSPBufferPoolSize;
unsigned int stackSizeStream;
unsigned int stackSizeNonBlocking;
unsigned int stackSizeMixer;
FMOD_DSP_RESAMPLER resamplerMethod;
unsigned int commandQueueSize;
unsigned int randomSeed;
int maxConvolutionThreads;
} FMOD_ADVANCEDSETTINGS;
typedef struct FMOD_TAG

47
engine/FMOD/inc/fmod_dsp.cs

@ -72,10 +72,10 @@ namespace FMOD
/*
DSP functions
*/
public delegate IntPtr DSP_ALLOC_FUNC (uint size, MEMORY_TYPE type, StringWrapper sourcestr);
public delegate IntPtr DSP_REALLOC_FUNC (IntPtr ptr, uint size, MEMORY_TYPE type, StringWrapper sourcestr);
public delegate void DSP_FREE_FUNC (IntPtr ptr, MEMORY_TYPE type, StringWrapper sourcestr);
public delegate void DSP_LOG_FUNC (DEBUG_FLAGS level, StringWrapper file, int line, StringWrapper function, StringWrapper format);
public delegate IntPtr DSP_ALLOC_FUNC (uint size, MEMORY_TYPE type, IntPtr sourcestr);
public delegate IntPtr DSP_REALLOC_FUNC (IntPtr ptr, uint size, MEMORY_TYPE type, IntPtr sourcestr);
public delegate void DSP_FREE_FUNC (IntPtr ptr, MEMORY_TYPE type, IntPtr sourcestr);
public delegate void DSP_LOG_FUNC (DEBUG_FLAGS level, IntPtr file, int line, IntPtr function, IntPtr format);
public delegate RESULT DSP_GETSAMPLERATE_FUNC (ref DSP_STATE dsp_state, ref int rate);
public delegate RESULT DSP_GETBLOCKSIZE_FUNC (ref DSP_STATE dsp_state, ref uint blocksize);
public delegate RESULT DSP_GETSPEAKERMODE_FUNC (ref DSP_STATE dsp_state, ref int speakermode_mixer, ref int speakermode_output);
@ -306,6 +306,27 @@ namespace FMOD
}
}
[StructLayout(LayoutKind.Sequential)]
public struct DSP_LOUDNESS_METER_INFO_TYPE
{
public float momentaryloudness;
public float shorttermloudness;
public float integratedloudness;
public float loudness10thpercentile;
public float loudness95thpercentile;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 66)]
public float[] loudnesshistogram;
public float maxtruepeak;
public float maxmomentaryloudness;
}
[StructLayout(LayoutKind.Sequential)]
public struct DSP_LOUDNESS_METER_WEIGHTING_TYPE
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)]
public float[] channelweight;
}
[StructLayout(LayoutKind.Sequential)]
public struct DSP_DESCRIPTION
{
@ -718,6 +739,24 @@ namespace FMOD
DOMINANT_FREQ
}
public enum DSP_LOUDNESS_METER : int
{
STATE,
WEIGHTING,
INFO
}
public enum DSP_LOUDNESS_METER_STATE_TYPE : int
{
RESET_INTEGRATED = -3,
RESET_MAXPEAK = -2,
RESET_ALL = -1,
PAUSED = 0,
ANALYZING = 1
}
public enum DSP_ENVELOPEFOLLOWER : int
{
ATTACK,

36
engine/FMOD/inc/fmod_dsp_effects.h

@ -404,6 +404,42 @@ typedef enum
FMOD_DSP_FFT_DOMINANT_FREQ
} FMOD_DSP_FFT;
#define FMOD_DSP_LOUDNESS_METER_HISTOGRAM_SAMPLES 66
typedef enum
{
FMOD_DSP_LOUDNESS_METER_STATE,
FMOD_DSP_LOUDNESS_METER_WEIGHTING,
FMOD_DSP_LOUDNESS_METER_INFO
} FMOD_DSP_LOUDNESS_METER;
typedef enum
{
FMOD_DSP_LOUDNESS_METER_STATE_RESET_INTEGRATED = -3,
FMOD_DSP_LOUDNESS_METER_STATE_RESET_MAXPEAK = -2,
FMOD_DSP_LOUDNESS_METER_STATE_RESET_ALL = -1,
FMOD_DSP_LOUDNESS_METER_STATE_PAUSED = 0,
FMOD_DSP_LOUDNESS_METER_STATE_ANALYZING = 1
} FMOD_DSP_LOUDNESS_METER_STATE_TYPE;
typedef struct FMOD_DSP_LOUDNESS_METER_INFO_TYPE
{
float momentaryloudness;
float shorttermloudness;
float integratedloudness;
float loudness10thpercentile;
float loudness95thpercentile;
float loudnesshistogram[FMOD_DSP_LOUDNESS_METER_HISTOGRAM_SAMPLES];
float maxtruepeak;
float maxmomentaryloudness;
} FMOD_DSP_LOUDNESS_METER_INFO_TYPE;
typedef struct FMOD_DSP_LOUDNESS_METER_WEIGHTING_TYPE
{
float channelweight[32];
} FMOD_DSP_LOUDNESS_METER_WEIGHTING_TYPE;
typedef enum
{

2
engine/FMOD/inc/fmod_output.h

@ -67,7 +67,7 @@ typedef struct FMOD_OUTPUT_DESCRIPTION
unsigned int apiversion;
const char *name;
unsigned int version;
FMOD_OUTPUT_METHOD polling; /* This will become "method" on the next major version */
FMOD_OUTPUT_METHOD method;
FMOD_OUTPUT_GETNUMDRIVERS_CALLBACK getnumdrivers;
FMOD_OUTPUT_GETDRIVERINFO_CALLBACK getdriverinfo;
FMOD_OUTPUT_INIT_CALLBACK init;

BIN
engine/FMOD/lib/x64/fmod.dll

BIN
engine/FMOD/lib/x64/fmodL.dll

BIN
engine/FMOD/lib/x64/fmodL_vc.lib

BIN
engine/FMOD/lib/x64/fmod_vc.lib

BIN
engine/FMOD/lib/x86/fmod.dll

BIN
engine/FMOD/lib/x86/fmodL.dll

BIN
engine/FMOD/lib/x86/fmodL_vc.lib

BIN
engine/FMOD/lib/x86/fmod_vc.lib

BIN
engine/FMOD/lib/x86/libfmod.a

BIN
engine/FMOD/lib/x86/libfmodL.a

Loading…
Cancel
Save