public override int FromPacketToAudioData(BytePacket packet, ref VoicePacketInfo info, float[] out_audioData, int out_audioDataOffset) { int length = packet.ReadInt(); int frameSize = packet.ReadInt(); return(decoder.Decode(packet.Data, packet.CurrentSeek, length, out_audioData, out_audioDataOffset, frameSize) * decoder.NumChannels); }
public override int FromPacketToAudioDataInt16(BytePacket packet, ref VoicePacketInfo info, byte[] out_audioData, int out_audioDataOffset) { //reads audio data length int count = packet.ReadInt(); //Restarts packet buffer to use decompressBuffer.ResetSeekLength(); //fills buffer with only audio data from given packet decompressBuffer.WriteByteData(packet.Data, packet.CurrentSeek, count); EVoiceResult res = EVoiceResult.k_EVoiceResultUnsupportedCodec; //number of bytes written uint b = 0; //audio data is decompressed res = SteamUser.DecompressVoice(decompressBuffer.Data, (uint)decompressBuffer.CurrentLength, out_audioData, (uint)out_audioData.Length, out b, info.Frequency); //if an error occurred packet is invalid if (res != EVoiceResult.k_EVoiceResultOK) { info.ValidPacketInfo = false; } return((int)b); }
public void TestProcessReceivedDataPayloadIntegrity2RedLight() { BytePacket buffer = new BytePacket(20); byte[] receivedData = new byte[20]; ByteManipulator.Write(receivedData, 0, (ushort)4588); ByteManipulator.Write(receivedData, 2, (byte)5); ByteManipulator.Write(receivedData, 3, (byte)99); ByteManipulator.Write(receivedData, 15, (int)77889); ulong netId = 5; transport.ProcessReceivedData(buffer, receivedData, 0, 20, netId); Assert.That(buffer.ReadInt(11), Is.Not.EqualTo(0)); }
/// <summary> /// Processes a Gamepacket into audio data in format Int16 /// </summary> /// <param name="packet">GamePacket to process</param> /// <param name="info">data info</param> /// <param name="out_audioData">output array on which data will be written</param> /// <param name="out_audioDataOffset">output array start index</param> /// <returns>total number of bytes written</returns> public override int FromPacketToAudioDataInt16(BytePacket packet, ref VoicePacketInfo info, byte[] out_audioData, int out_audioDataOffset) { int maxP = packet.CurrentLength - packet.CurrentSeek - sizeof(int); int dataCount = Mathf.Min(Mathf.Min(packet.ReadInt(), out_audioData.Length - out_audioDataOffset), maxP); if (dataCount <= 0) { info.ValidPacketInfo = false; return(dataCount); } packet.ReadByteData(out_audioData, out_audioDataOffset, dataCount); return(dataCount); }
public void TestFromAudioSingleToPacketHeaderValue3() { float[] audiodata = new float[200]; BytePacket output = new BytePacket(404); output.CurrentSeek = 0; output.CurrentLength = 0; VoicePacketInfo info = new VoicePacketInfo(); info.ValidPacketInfo = true; info.Frequency = 48000; info.Channels = 1; info.Format = AudioDataTypeFlag.Both; manipulator.FromAudioDataToPacket(audiodata, 0, audiodata.Length, ref info, output); Assert.That(output.ReadInt(0), Is.EqualTo(100)); }
/// <summary> /// Processes a Gamepacket into audio data in format Single /// </summary> /// <param name="packet">GamePacket to process</param> /// <param name="info">data info</param> /// <param name="out_audioData">output array on which data will be written</param> /// <param name="out_audioDataOffset">output array start index</param> /// <returns>total number of floats written</returns> public override int FromPacketToAudioData(BytePacket packet, ref VoicePacketInfo info, float[] out_audioData, int out_audioDataOffset) { int maxP = packet.CurrentLength - packet.CurrentSeek - sizeof(int); int dataCount = Mathf.Min(Mathf.Min(packet.ReadInt(), out_audioData.Length - out_audioDataOffset), maxP); if (dataCount <= 0) { info.ValidPacketInfo = false; return(dataCount); } int length = dataCount + out_audioDataOffset; for (int i = out_audioDataOffset; i < length; i++) { out_audioData[i] = packet.ReadFloat(); } return(dataCount); }