Example #1
0
        private byte[] SpeexEncode(short[] input, BandMode mode)
        {
            NSpeex.SpeexEncoder speexEnc = null;
            int byteLen = 320;

            switch (mode)
            {
            case BandMode.Narrow:
                speexEnc = m_narrow_enc;
                byteLen  = 320;
                break;

            case BandMode.Wide:
                speexEnc = m_wide_enc;
                byteLen  = 640;
                break;

            case BandMode.UltraWide:
                speexEnc = m_ultrawide_enc;
                byteLen  = 1280;
                break;
            }

            byte[] encoded = USpeakPoolUtils.GetByte(byteLen + 4);

            int length = speexEnc.Encode(input, 0, input.Length, encoded, 4, encoded.Length);

            // first 4 bytes contains length
            byte[] len_bytes = BitConverter.GetBytes(length);

            System.Array.Copy(len_bytes, encoded, 4);

            return(encoded);
        }
 public static byte[] SpeexCompress(float[] input, out int length)
 {
     short[] shortBuffer = new short[input.Length];
     byte[]  encoded     = new byte[input.Length];
     input.ToShortArray(shortBuffer);
     length = speexEnc.Encode(shortBuffer, 0, shortBuffer.Length, encoded, 0, encoded.Length);
     return(encoded);
 }
Example #3
0
 static byte[] SpeexCompress(float[] input, out int length)
 {
     short[] shortBuffer = VoiceChatShortPool.Instance.Get();
     byte[]  encoded     = VoiceChatBytePool.Instance.Get();
     input.ToShortArray(shortBuffer);
     length = speexEnc.Encode(shortBuffer, 0, input.Length, encoded, 0, encoded.Length);
     VoiceChatShortPool.Instance.Return(shortBuffer);
     return(encoded);
 }
Example #4
0
 static byte[] SpeexCompress(float[] input, out int length)
 {
     short[] shortBuffer = new short[VoiceChatSettings.sampleSize];
     byte[]  encoded     = new byte[VoiceChatSettings.sampleSize];
     input.ToShortArray(shortBuffer);
     length = speexEnc.Encode(shortBuffer, 0, input.Length, encoded, 0, encoded.Length);
     // Debug.Log("compress length=" + length + " speexEnc.FrameSize" + speexEnc.FrameSize
     //     + " speexEnc.SampleRate" + speexEnc.SampleRate + " speexEnc.VBR" + speexEnc.VBR);
     return(encoded);
 }
Example #5
0
        public byte[] Encode(float[] data)
        {
            //Convert
            Convert(data, ref encodingBuffer);
            int length = encoder.Encode(encodingBuffer, 0, encodingBuffer.Length, encodedBuffer, 0, encodedBuffer.Length);
            //Copy to temp.
            var tmp = new byte[length];

            Buffer.BlockCopy(encodedBuffer, 0, tmp, 0, tmp.Length);
            //Return encoded data.
            return(tmp);
        }
Example #6
0
 private void Update()
 {
     isRecording = Input.GetKey(KeyCode.P);
     client.UpdateClient();
     if (client.peers.Count > 0)
     {
         while (packets.Count > 0)
         {
             float[] curPacket = packets.Dequeue();
             ToShortArray(curPacket, outBufferShort);
             int resLen = speexEnc.Encode(outBufferShort, 0, curPacket.Length, outBuffer, 0, outBuffer.Length);
             client.SendMessageToAll(outBuffer, 0, resLen, true);
         }
     }
 }
Example #7
0
        private byte[] EncodeAudio(short[] rawData)
        {
            var encoder = new NSpeex.SpeexEncoder(NSpeex.BandMode.Wide);

            encoder.Quality = 1;
            var encodedData = new List <byte[]>();

            var inDataSize = rawData.Length;

            inDataSize = inDataSize + inDataSize % encoder.FrameSize;
            var inData = new short[inDataSize];

            System.Array.Copy(rawData, inData, rawData.Length);

            var encodingFrameSize = encoder.FrameSize;
            var encodedBuffer     = new byte[1024];

            for (var offset = 0; offset + encodingFrameSize < inDataSize; offset += encodingFrameSize)
            {
                var encodedBytes = encoder.Encode(inData, offset, encodingFrameSize, encodedBuffer, 0, encodingFrameSize);
                var encodedFrame = new byte[encodedBytes];
                System.Array.Copy(encodedBuffer, 0, encodedFrame, 0, encodedBytes);
                encodedData.Add(encodedFrame);
            }

            var ms = new MemoryStream();

            var countBits = BitConverter.GetBytes((Int32)encodedData.Count);

            ms.Write(countBits, 0, countBits.Length);

            for (int i = 0; i < encodedData.Count; i++)
            {
                var d  = encodedData[i];
                var bc = BitConverter.GetBytes((Int32)d.Length);
                ms.Write(bc, 0, bc.Length);
            }
            for (int i = 0; i < encodedData.Count; i++)
            {
                var d = encodedData[i];
                ms.Write(d, 0, d.Length);
            }

            return(ms.ToArray());
        }