/// <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)); }
/// <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)); }