/// <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));
        }
Beispiel #2
0
//		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()));
        }
Beispiel #3
0
//		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());
 }
Beispiel #9
0
 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));
        }
Beispiel #11
0
        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));
        }
Beispiel #12
0
        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));
        }