/// <inheritdoc/> protected override byte[] BaseCompress(byte[] bytes) { //using (var outputStream = new MemoryStream()) //{ // using (var zstandardStream = new ZstandardStream(outputStream, DefaultLevel)) // { // zstandardStream.Write(bytes, 0, bytes.Length); // zstandardStream.Flush(); // } // return outputStream.ToArray(); //} using var inputStream = new MemoryStream(bytes); using var outputStream = new MemoryStream(); using (var zstandardStream = new ZstandardStream(outputStream, Level)) { inputStream.CopyTo(zstandardStream, bytes.Length); //inputStream.WriteTo(zstandardStream); //zstandardStream.Write(bytes, 0, bytes.Length); inputStream.Flush(); zstandardStream.Flush(); } return(outputStream.ToArray()); }
private int FinalizeBlock(bool last = false) { if (EnableCompression) { _zStdStream.Flush(); } var data = _memoryStream.ToArray(); _dataOut.Write(data); if (EnableCompression) { _zStdStream.Dispose(); } _memoryStream.Dispose(); if (!last) { _memoryStream = new MemoryStream(); if (EnableCompression) { _zStdStream = new ZstandardStream(_memoryStream, 10); } } #if DEBUG //if (Compress) //{ // Decompress(data); //} #endif return(data.Length); }
/// <inheritdoc/> protected override void BaseDecompress(Stream inputStream, Stream outputStream) { using var gZipStream = new ZstandardStream(inputStream, CompressionMode.Decompress, true); gZipStream.CopyTo(outputStream); outputStream.Flush(); gZipStream.Flush(); }
/// <inheritdoc/> protected override void BaseCompress(Stream inputStream, Stream outputStream) { using var gZipStream = new ZstandardStream(outputStream, Level, true); inputStream.CopyTo(gZipStream); inputStream.Flush(); gZipStream.Flush(); }
public void Compress(Stream input, Stream output) { using (var zstandardStream = new ZstandardStream(output, CompressionMode.Compress, _compressionLevel)) { input.EfficientCopyTo(zstandardStream); zstandardStream.Flush(); } }
/// <inheritdoc/> public override byte[] Decompress(byte[] compressedData, int blockLength) { using (var memoryStream = new MemoryStream(compressedData, 0, blockLength)) using (var outputStream = new MemoryStream()) using (var compressionStream = new ZstandardStream(memoryStream, CompressionMode.Decompress)) { compressionStream.CopyTo(outputStream); compressionStream.Flush(); return(outputStream.ToArray()); } }
/// <inheritdoc/> public override byte[] Compress(byte[] uncompressedData) { using (var outputStream = new MemoryStream()) using (var compressionStream = new ZstandardStream(outputStream, CompressionMode.Compress)) { compressionStream.CompressionLevel = (int)Level; compressionStream.Write(uncompressedData, 0, uncompressedData.Length); compressionStream.Flush(); return(outputStream.ToArray()); } }
/// <inheritdoc/> public override void Compress(MemoryStream inputStream, MemoryStream outputStream) { inputStream.Position = 0; outputStream.SetLength(0); using (var compressionStream = new ZstandardStream(outputStream, CompressionMode.Compress, true)) { compressionStream.CompressionLevel = (int)Level; inputStream.CopyTo(compressionStream); compressionStream.Flush(); } }
// private methods private byte[] Compress(byte[] data, int compressionLevel) { using (var inputStream = new MemoryStream(data)) using (var outputStream = new MemoryStream()) { using (var zstandardStream = new ZstandardStream(outputStream, CompressionMode.Compress, compressionLevel)) { inputStream.EfficientCopyTo(zstandardStream); zstandardStream.Flush(); } return(outputStream.ToArray()); } }
/// <inheritdoc/> protected override byte[] BaseDecompress(byte[] compressedBytes) { using var inputStream = new MemoryStream(compressedBytes); using var outputStream = new MemoryStream(); using (var gZipStream = new ZstandardStream(inputStream, CompressionMode.Decompress)) { gZipStream.CopyTo(outputStream, compressedBytes.Length); outputStream.Flush(); gZipStream.Flush(); } return(outputStream.ToArray()); }
/// <summary> /// Decompresses data using the zstd_stream compression algorithm. /// </summary> /// <param name="input">The data to decompress.</param> /// <param name="length">The expected length of the decompressed data.</param> /// <returns>A decompressed byte array.</returns> private byte[] DecompressUsingZstdStream(byte[] input, int length) { _buffer.Write(input, 0, input.Length); _buffer.Position -= input.Length; var target = new MemoryStream(); _zstdDecompressStream.CopyTo(target, length); _zstdDecompressStream.Flush(); var decompressedData = target.ToArray(); target.Dispose(); _buffer.SetLength(0); return(decompressedData); }