Esempio n. 1
0
    private void WaveIn_DataAvailable(object sender, WaveInEventArgs e)
    {
        var data = codec.Encode(e.Buffer, 0, e.BytesRecorded);

        buffer.AddSamples(data, 0, data.Length);
        writer.Write(data, 0, data.Length);
    }
Esempio n. 2
0
        public static int CompressWAVBits(byte[] wavFileBuffer, int wavFileBufferOffset, int wavFileBufferLength,
                                          byte[] compressedBuffer, int compressedBufferOffset, IAudioCodec codec,
                                          out int pcmSize)
        {
            if (compressedBuffer.Length - compressedBufferOffset < wavFileBuffer.Length)
            {
                Array.Resize(ref compressedBuffer, wavFileBuffer.Length + compressedBufferOffset); //allocate buffers
            }
            int compressedSize;

            pcmSize        = wavFileBuffer.Length - WAV_HEADER_SIZE;
            compressedSize = codec.Encode(wavFileBuffer, wavFileBufferOffset + WAV_HEADER_SIZE, pcmSize,
                                          compressedBuffer, compressedBufferOffset); //compress WAV file
            return(compressedSize);
        }
Esempio n. 3
0
        public void Write(ArraySegment <byte> bytes)
        {
            // TODO thread queued.
            var compressed = _codec.Encode(bytes);

            var packet = new AudioPacket
            {
                Mark       = _first,
                SequenceId = ++_sequenceId,
                RouteId    = Id,
                Payload    = compressed,
            };

            _first = false;

            _transport.Send(packet);
        }
Esempio n. 4
0
        void SendMediaPacket(ushort groupId, ushort sequenceNumber, uint userId, short[] audio)
        {
            var buffer = _protocolSwitch.SendBuffer();

            // Packet Type 12 (byte)
            buffer[0] = (byte)RopuPacketType.MediaPacketGroupCallClient;
            // Group Id (uint16)
            buffer.WriteUshort(groupId, 1);
            // Sequence Number (uint16)
            buffer.WriteUshort(sequenceNumber, 3);
            // User ID (uint32)
            buffer.WriteUint(userId, 5);
            // Key ID (uint16) - 0 means no encryption
            buffer.WriteUshort(0, 9);
            // Payload
            int ammountEncoded = _audioCodec.Encode(audio, buffer.AsSpan(11));

            _protocolSwitch.Send(11 + ammountEncoded);
        }
Esempio n. 5
0
        public static int CompressWAVBits(byte[] wavFileBuffer, int wavFileBufferOffset, int wavFileBufferLength,
                                          byte[] compressedBuffer, int compressedBufferOffset, IAudioCodec codec,
                                          out int pcmSize)
        {
            if (compressedBuffer.Length - compressedBufferOffset < wavFileBuffer.Length)
            {
                Array.Resize(ref compressedBuffer, wavFileBuffer.Length + compressedBufferOffset); //allocate buffers
            }
            int compressedSize;
            int dataChunkSizeFieldPosition;

            using (var stream = new MemoryStream(wavFileBuffer, wavFileBufferOffset, wavFileBufferLength))
                using (var reader = new BinaryReader(stream))
                {
                    dataChunkSizeFieldPosition = stream.ScanUntilFound(Encoding.ASCII.GetBytes("data"));
                    pcmSize = reader.ReadInt32();
                }

            compressedSize = codec.Encode(wavFileBuffer, dataChunkSizeFieldPosition, pcmSize,
                                          compressedBuffer, compressedBufferOffset); //compress PCM data
            return(compressedSize);
        }
Esempio n. 6
0
 public void waveIn_DataAvailable(object sender, WaveInEventArgs e)
 {
     byte[] encodedData = audioCodec.Encode(e.Buffer, 0, e.BytesRecorded);
     udpSender.Send(encodedData, encodedData.Length);
 }