private static byte[] EncodeBlock(byte[] input, int topupSize, int blockSize) { using (var outputStream = new MemoryStream()) using (var inputStream = new MemoryStream(input)) { using (var inputReader = new BinaryReader(inputStream, Encoding.UTF8, false)) using (var outputWriter = new BinaryWriter(outputStream, Encoding.UTF8, true)) using (var encoder = new LZ4BlockEncoder(LZ4Level.L00_FAST, blockSize)) { var inputBuffer = new byte[topupSize]; var outputBuffer = new byte[LZ4Codec.MaximumOutputSize(encoder.BlockSize)]; while (true) { var bytes = inputReader.Read(inputBuffer, 0, inputBuffer.Length); if (bytes == 0) { Flush(outputWriter, encoder, outputBuffer); outputWriter.Write(-1); break; } Write(outputWriter, encoder, inputBuffer, bytes, outputBuffer); } } return(outputStream.ToArray()); } }
public Lz4CompressionEncoder(int bufferSize, int blockSize) : base(bufferSize) { _encoder = new LZ4BlockEncoder(LZ4Level.L10_OPT, blockSize); _compressedBuffer = new byte[LZ4Codec.MaximumOutputSize(blockSize)]; }