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));
    }
示例#4
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);
        }
示例#5
0
    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));
    }
示例#6
0
        /// <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);
        }