static void compress2(ref byte[] dest, byte[] src, int level, bool noHeader) { ZStream stream = new ZStream(); stream.next_in = src; stream.avail_in = src.Length; stream.next_out = dest; stream.avail_out = dest.Length; if (noHeader == false) { stream.deflateInit(level); } else { stream.deflateInit(level, -15); } stream.deflate(zlibConst.Z_FINISH); Array.Resize<byte>(ref dest, (int)stream.total_out); }
internal int deflateParams(ZStream strm, int _level, int _strategy) { int err = Z_OK; if (_level == Z_DEFAULT_COMPRESSION) { _level = 6; } if (_level < 0 || _level > 9 || _strategy < 0 || _strategy > Z_HUFFMAN_ONLY) { return Z_STREAM_ERROR; } if (config_table[level].func != config_table[_level].func && strm.total_in != 0) { // Flush the last buffer: err = strm.deflate(Z_PARTIAL_FLUSH); } if (level != _level) { level = _level; max_lazy_match = config_table[level].max_lazy; good_match = config_table[level].good_length; nice_match = config_table[level].nice_length; max_chain_length = config_table[level].max_chain; } strategy = _strategy; return err; }