Example #1
0
        /// <summary>
        /// Creates a compression stream on top of the <see cref="Stream"/> specified.
        /// </summary>
        /// <param name="stream">Inner stream.</param>
        /// <param name="level">Compression level.</param>
        /// <param name="extraMemory">Extra memory used for compression.</param>
        /// <param name="leaveOpen">Leave inner stream open after disposing.</param>
        /// <returns>
        /// The compression stream.
        /// </returns>
        public static LZ4EncoderStream Encode(Stream stream, LZ4CompressionLevel level, int extraMemory = 0, bool leaveOpen = false)
        {
            LZ4EncoderSettings settings = new LZ4EncoderSettings
            {
                ChainBlocks      = true,
                ExtraMemory      = extraMemory,
                BlockSize        = LZ4MemoryHelper.K64,
                CompressionLevel = level
            };

            return(Encode(stream, settings, leaveOpen));
        }
Example #2
0
        /// <summary>
        /// Creates a compression stream on top of the <see cref="Stream"/> specified.
        /// </summary>
        /// <param name="stream">Inner stream.</param>
        /// <param name="settings">Compression settings.</param>
        /// <param name="leaveOpen">Leave inner stream open after disposing.</param>
        /// <returns>
        /// The compression stream.
        /// </returns>
        public static LZ4EncoderStream Encode(Stream stream, LZ4EncoderSettings settings = null, bool leaveOpen = false)
        {
            settings = settings ?? LZ4EncoderSettings.Default;

            LZ4FrameDescriptor frameInfo = new LZ4FrameDescriptor(
                settings.ContentLength,
                settings.ContentChecksum,
                settings.ChainBlocks,
                settings.BlockChecksum,
                settings.Dictionary,
                settings.BlockSize);

            LZ4CompressionLevel level = settings.CompressionLevel;
            int extraMemory           = settings.ExtraMemory;

            return(new LZ4EncoderStream(
                       stream,
                       frameInfo,
                       i => LZ4EncodingFactory.CreateEncoder(i.Chaining, level, i.BlockSize, ExtraBlocks(i.BlockSize, extraMemory)),
                       leaveOpen));
        }