/// <summary> /// Initializes a new instance of the <see cref="ZlibOutputStream"/> class. /// </summary> /// <param name="output">The output stream.</param> /// <param name="level">The compression level for the data to compress.</param> public ZlibOutputStream(Stream output, ZlibCompressionLevel level) { this.BaseStream = output; this.InitBlock(); _ = this.zStream.DeflateInit(level); this.compress = true; }
/// <summary> /// Initializes a new instance of the <see cref="ZlibInputStream"/> class. /// </summary> /// <param name="input">The input stream.</param> /// <param name="level">The compression level for the data to compress.</param> public ZlibInputStream(Stream input, ZlibCompressionLevel level) { this.BaseStream = input; this.InitBlock(); _ = this.zStream.DeflateInit(level); this.compress = true; this.zStream.INextIn = this.chunkBuffer; this.zStream.NextInIndex = 0; this.zStream.AvailIn = 0; }
public void EncodeDecode(ZlibCompressionLevel compression) { const int count = 2 * 4096 * 4; var expected = GetBuffer(count); var reference = new byte[count]; var actual = new byte[count]; using (var compressed = new MemoryStream()) { using (var deflate = new ZlibOutputStream(compressed, compression)) { deflate.Write(expected); } compressed.Position = 0; using (var refInflate = new InflaterInputStream(compressed)) { refInflate.IsStreamOwner = false; refInflate.Read(reference); } compressed.Position = 0; using (var inflate = new ZlibInputStream(compressed)) { inflate.Read(actual); } } for (int i = 0; i < expected.Length; i++) { byte e = expected[i]; byte r = reference[i]; byte a = actual[i]; Assert.Equal(e, r); Assert.Equal(e, a); } }
/// <summary> /// Sets the compression paramiters. /// </summary> /// <param name="level">The compression level to use.</param> /// <param name="strategy">The strategy to use for compression.</param> /// <returns>The zlib status state.</returns> public ZlibCompressionState DeflateParams(ZlibCompressionLevel level, ZlibCompressionStrategy strategy) => this.Dstate == null ? ZlibCompressionState.ZSTREAMERROR : this.Dstate.DeflateParams(this, level, strategy);
/// <summary> /// Initializes compression. /// </summary> /// <param name="level">The compression level to use.</param> /// <param name="bits">The window bits to use.</param> /// <returns>The zlib status state.</returns> public ZlibCompressionState DeflateInit(ZlibCompressionLevel level, int bits) { this.Dstate = new Deflate(); return(this.Dstate.DeflateInit(this, level, bits)); }
/// <summary> /// Initializes compression. /// </summary> /// <param name="level">The compression level to use.</param> /// <returns>The zlib status state.</returns> public ZlibCompressionState DeflateInit(ZlibCompressionLevel level) => this.DeflateInit(level, MAXWBITS);