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); }
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); }
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); }
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); }
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); }
public void waveIn_DataAvailable(object sender, WaveInEventArgs e) { byte[] encodedData = audioCodec.Encode(e.Buffer, 0, e.BytesRecorded); udpSender.Send(encodedData, encodedData.Length); }