Esempio n. 1
0
        /// <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());
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        /// <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();
        }
Esempio n. 4
0
        /// <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();
     }
 }
Esempio n. 6
0
 /// <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());
             }
 }
Esempio n. 7
0
 /// <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());
         }
 }
Esempio n. 8
0
        /// <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();
            }
        }
Esempio n. 9
0
 // 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());
         }
 }
Esempio n. 10
0
        /// <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);
        }