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); }
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); }
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); }
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); }
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); } } }
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()); }