备份CatanBuilding瘦身独立工程
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
#if UNITY_2017_1_OR_NEWER
|
||||
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace com.fpnn.rtm
|
||||
{
|
||||
internal static class AudioConvert
|
||||
{
|
||||
#if (UNITY_ANDROID || UNITY_EDITOR_WIN || UNITY_STANDALONE_WIN || UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX)
|
||||
[DllImport("audio-convert")]
|
||||
public static extern IntPtr convert_wav_to_amrwb(IntPtr wavSrc, int wavSrcSize, ref int status, ref int amrSize);
|
||||
|
||||
[DllImport("audio-convert")]
|
||||
public static extern IntPtr convert_amrwb_to_wav(IntPtr amrSrc, int amrSrcSize, ref int status, ref int wavSize);
|
||||
|
||||
[DllImport("audio-convert")]
|
||||
public static extern void free_memory(IntPtr ptr);
|
||||
|
||||
|
||||
#elif UNITY_IOS
|
||||
|
||||
[DllImport("__Internal")]
|
||||
public static extern IntPtr convert_wav_to_amrwb(IntPtr wavSrc, int wavSrcSize, ref int status, ref int amrSize);
|
||||
|
||||
[DllImport("__Internal")]
|
||||
public static extern IntPtr convert_amrwb_to_wav(IntPtr amrSrc, int amrSrcSize, ref int status, ref int wavSize);
|
||||
|
||||
[DllImport("__Internal")]
|
||||
public static extern void free_memory(IntPtr ptr);
|
||||
|
||||
#endif
|
||||
|
||||
public static byte[] ConvertToAmrwb(byte[] wavBuffer)
|
||||
{
|
||||
int status = 0;
|
||||
int amrSize = 0;
|
||||
|
||||
IntPtr wavSrcPtr = Marshal.AllocHGlobal(wavBuffer.Length);
|
||||
Marshal.Copy(wavBuffer, 0, wavSrcPtr, wavBuffer.Length);
|
||||
|
||||
IntPtr amrPtr = AudioConvert.convert_wav_to_amrwb(wavSrcPtr, wavBuffer.Length, ref status, ref amrSize);
|
||||
|
||||
Marshal.FreeHGlobal(wavSrcPtr);
|
||||
|
||||
if (amrPtr != null && status == 0) {
|
||||
byte[] amrBuffer = new byte[amrSize];
|
||||
Marshal.Copy(amrPtr, amrBuffer, 0, amrSize);
|
||||
AudioConvert.free_memory(amrPtr);
|
||||
return amrBuffer;
|
||||
}
|
||||
|
||||
if (amrPtr != null)
|
||||
AudioConvert.free_memory(amrPtr);
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static byte[] ConvertToWav(byte[] amrBuffer)
|
||||
{
|
||||
int status = 0;
|
||||
int wavSize = 0;
|
||||
|
||||
IntPtr amrSrcPtr = Marshal.AllocHGlobal(amrBuffer.Length);
|
||||
Marshal.Copy(amrBuffer, 0, amrSrcPtr, amrBuffer.Length);
|
||||
|
||||
IntPtr wavPtr = AudioConvert.convert_amrwb_to_wav(amrSrcPtr, amrBuffer.Length, ref status, ref wavSize);
|
||||
|
||||
Marshal.FreeHGlobal(amrSrcPtr);
|
||||
|
||||
if (wavPtr != null && status == 0) {
|
||||
byte[] wavBuffer = new byte[wavSize];
|
||||
Marshal.Copy(wavPtr, wavBuffer, 0, wavSize);
|
||||
AudioConvert.free_memory(wavPtr);
|
||||
return wavBuffer;
|
||||
}
|
||||
|
||||
if (wavPtr != null)
|
||||
AudioConvert.free_memory(wavPtr);
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user