/// <summary> /// Decompress the given encoded audio data /// </summary> /// <param name="data">The encoded audio</param> /// <param name="samples">The number of encoded samples</param> /// <param name="channels">The number of channels</param> /// <param name="threeD">Whether the audio is 3D</param> /// <param name="mode">The bandwidth mode used to encode the data</param> /// <param name="Codec">The codec to decode the data with</param> /// <param name="gain">The gain to apply to the decoded audio</param> /// <returns>32bit raw audio data</returns> public static float[] DecompressAudio(byte[] data, int samples, int channels, bool threeD, BandMode mode, ICodec Codec, float gain) { int frequency = 4000; if (mode == BandMode.Narrow) { frequency = 8000; } else if (mode == BandMode.Wide) { frequency = 16000; } byte[] d; //d = unzip( data ); d = data; short[] pcm = Codec.Decode(d, mode); tmp.Clear(); tmp.AddRange(pcm); USpeakPoolUtils.Return(pcm); return(USpeakAudioClipConverter.ShortsToAudioData(tmp.ToArray(), channels, frequency, threeD, gain)); }
// public static byte[] CompressAudioClip( AudioClip clip, out int samples, BandMode mode, float gain = 1.0f ) public static byte[] CompressAudioClip(AudioClip clip, out int samples, float gain = 1.0f) { data.Clear(); samples = 0; short[] b = USpeakAudioClipConverter.AudioClipToShorts(clip, gain); int num = 0; for (int i = 0; i < b.Length; i++) { //identify "quiet" samples, set them to exactly 1 so that a row of these "near-zero" samples becomes a row of exactly-one samples and achieves better Deflate compression if (b[i] <= 5 && b[i] >= -5 && b[i] != 0) { b[i] = 1; num++; } } byte[] mlaw = Codec.Encode(b); data.AddRange(mlaw); return(zip(data.ToArray())); }
// public static AudioClip DecompressAudioClip( byte[] data, int samples, int channels, bool threeD, BandMode mode, float gain ) public static AudioClip DecompressAudioClip(byte[] data, int samples, int channels, bool threeD, float gain) { int frequency = 4000; // if( mode == BandMode.Narrow ) // { // frequency = 8000; // } // else if( mode == BandMode.Wide ) // { // frequency = 16000; // } byte[] d; d = unzip(data); short[] pcm = Codec.Decode(d); tmp.Clear(); tmp.AddRange(pcm); //while( tmp.Count > 1 && Mathf.Abs( tmp[ tmp.Count - 1 ] ) <= 10 ) //{ // tmp.RemoveAt( tmp.Count - 1 ); //} //while( tmp.Count > 1 && Mathf.Abs( tmp[ 0 ] ) <= 10 ) //{ // tmp.RemoveAt( 0 ); //} return(USpeakAudioClipConverter.ShortsToAudioClip(tmp.ToArray(), channels, frequency, threeD, gain)); }
// Token: 0x06004CA7 RID: 19623 RVA: 0x0019B4BC File Offset: 0x001998BC public static float[] DecompressAudio(byte[] data, int samples, int channels, bool threeD, BandMode mode, ICodec Codec, float gain) { int frequency = 4000; if (mode == BandMode.Narrow) { frequency = 8000; } else if (mode == BandMode.Wide) { frequency = 16000; } else if (mode == BandMode.UltraWide) { frequency = 32000; } else if (mode == BandMode.Opus48k) { frequency = 48000; } short[] array = Codec.Decode(data, mode); float[] result = USpeakAudioClipConverter.ShortsToAudioData(array, channels, frequency, threeD, gain); USpeakPoolUtils.Return(array); return(result); }
// public static byte[] CompressAudioClip( AudioClip clip, out int samples, BandMode mode, float gain = 1.0f ) // { // data.Clear(); // samples = 0; // short[] b = USpeakAudioClipConverter.AudioClipToShorts( clip, gain ); // byte[] mlaw = Codec.Encode( b, mode ); // data.AddRange( mlaw ); // return zip( data.ToArray() ); // } public static AudioClip DecompressAudioClip(byte[] data, int samples, int channels, bool threeD, BandMode mode, float gain) { // byte[] d; // d = unzip( data ); short[] pcm = Codec.Decode(data, mode); tmp.Clear(); tmp.AddRange(pcm); return(USpeakAudioClipConverter.ShortsToAudioClip(tmp.ToArray(), channels, WSpeak.getFrequency(mode), threeD, gain)); }
public static byte[] CompressAudioData(float[] samples, int channels, out int sample_count, BandMode mode, float gain = 1.0f) { data.Clear(); sample_count = 0; short[] b = USpeakAudioClipConverter.AudioDataToShorts(samples, channels, gain); byte[] mlaw = Codec.Encode(b, mode); data.AddRange(mlaw); return(data.ToArray()); //return zip( data.ToArray() ); }
// Token: 0x06004CA6 RID: 19622 RVA: 0x0019B47C File Offset: 0x0019987C public static byte[] CompressAudioData(float[] samples, int channels, BandMode mode, ICodec Codec, float gain = 1f) { short[] array = USpeakAudioClipConverter.AudioDataToShorts(samples, channels, gain); byte[] array2 = Codec.Encode(array, mode); USpeakPoolUtils.Return(array); byte[] array3 = new byte[array2.Length]; Array.Copy(array2, array3, array2.Length); USpeakPoolUtils.Return(array2); return(array3); }
// Token: 0x0600047E RID: 1150 RVA: 0x00016928 File Offset: 0x00014B28 public static byte[] CompressAudioData(float[] samples, int channels, out int sample_count, global::BandMode mode, MoPhoGames.USpeak.Codec.ICodec Codec, float gain = 1f) { USpeakAudioClipCompressor.data.Clear(); sample_count = 0; short[] d = USpeakAudioClipConverter.AudioDataToShorts(samples, channels, gain); byte[] array = Codec.Encode(d, mode); MoPhoGames.USpeak.Core.Utils.USpeakPoolUtils.Return(d); USpeakAudioClipCompressor.data.AddRange(array); MoPhoGames.USpeak.Core.Utils.USpeakPoolUtils.Return(array); return(USpeakAudioClipCompressor.data.ToArray()); }
public static byte[] CompressAudioData(float[] samples, int channels, out int sample_count, BandMode mode, ICodec Codec, float gain = 1f) { USpeakAudioClipCompressor.data.Clear(); sample_count = 0; short[] shorts = USpeakAudioClipConverter.AudioDataToShorts(samples, channels, gain); byte[] numArray = Codec.Encode(shorts, mode); USpeakPoolUtils.Return(shorts); USpeakAudioClipCompressor.data.AddRange(numArray); USpeakPoolUtils.Return(numArray); return(USpeakAudioClipCompressor.data.ToArray()); }
// Token: 0x0600047F RID: 1151 RVA: 0x00016978 File Offset: 0x00014B78 public static float[] DecompressAudio(byte[] data, int samples, int channels, bool threeD, global::BandMode mode, MoPhoGames.USpeak.Codec.ICodec Codec, float gain) { int frequency = 4000; if (mode == global::BandMode.Narrow) { frequency = 8000; } else if (mode == global::BandMode.Wide) { frequency = 16000; } short[] array = Codec.Decode(data, mode); USpeakAudioClipCompressor.tmp.Clear(); USpeakAudioClipCompressor.tmp.AddRange(array); MoPhoGames.USpeak.Core.Utils.USpeakPoolUtils.Return(array); return(USpeakAudioClipConverter.ShortsToAudioData(USpeakAudioClipCompressor.tmp.ToArray(), channels, frequency, threeD, gain)); }
public static float[] DecompressAudio(byte[] data, int samples, int channels, bool threeD, BandMode mode, ICodec Codec, float gain) { int num = 4000; if (mode == BandMode.Narrow) { num = 8000; } else if (mode == BandMode.Wide) { num = 16000; } short[] numArray = Codec.Decode(data, mode); USpeakAudioClipCompressor.tmp.Clear(); USpeakAudioClipCompressor.tmp.AddRange(numArray); USpeakPoolUtils.Return(numArray); return(USpeakAudioClipConverter.ShortsToAudioData(USpeakAudioClipCompressor.tmp.ToArray(), channels, num, threeD, gain)); }
public static float[] DecompressAudio(byte[] data, int samples, int channels, bool threeD, BandMode mode, ICodec Codec, float gain) { int frequency = 0xfa0; if (mode == BandMode.Narrow) { frequency = 0x1f40; } else if (mode == BandMode.Wide) { frequency = 0x3e80; } byte[] buffer = data; short[] collection = Codec.Decode(buffer, mode); tmp.Clear(); tmp.AddRange(collection); USpeakPoolUtils.Return(collection); return(USpeakAudioClipConverter.ShortsToAudioData(tmp.ToArray(), channels, frequency, threeD, gain)); }