trees.c (237691) | trees.c (254069) |
---|---|
1/* trees.c -- output deflated data using Huffman coding 2 * Copyright (C) 1995-2012 Jean-loup Gailly 3 * detect_data_type() function provided freely by Cosmin Truta, 2006 4 * For conditions of distribution and use, see copyright notice in zlib.h 5 */ 6 7/* 8 * ALGORITHM --- 132 unchanged lines hidden (view full) --- 141local void gen_bitlen OF((deflate_state *s, tree_desc *desc)); 142local void gen_codes OF((ct_data *tree, int max_code, ushf *bl_count)); 143local void build_tree OF((deflate_state *s, tree_desc *desc)); 144local void scan_tree OF((deflate_state *s, ct_data *tree, int max_code)); 145local void send_tree OF((deflate_state *s, ct_data *tree, int max_code)); 146local int build_bl_tree OF((deflate_state *s)); 147local void send_all_trees OF((deflate_state *s, int lcodes, int dcodes, 148 int blcodes)); | 1/* trees.c -- output deflated data using Huffman coding 2 * Copyright (C) 1995-2012 Jean-loup Gailly 3 * detect_data_type() function provided freely by Cosmin Truta, 2006 4 * For conditions of distribution and use, see copyright notice in zlib.h 5 */ 6 7/* 8 * ALGORITHM --- 132 unchanged lines hidden (view full) --- 141local void gen_bitlen OF((deflate_state *s, tree_desc *desc)); 142local void gen_codes OF((ct_data *tree, int max_code, ushf *bl_count)); 143local void build_tree OF((deflate_state *s, tree_desc *desc)); 144local void scan_tree OF((deflate_state *s, ct_data *tree, int max_code)); 145local void send_tree OF((deflate_state *s, ct_data *tree, int max_code)); 146local int build_bl_tree OF((deflate_state *s)); 147local void send_all_trees OF((deflate_state *s, int lcodes, int dcodes, 148 int blcodes)); |
149local void compress_block OF((deflate_state *s, ct_data *ltree, 150 ct_data *dtree)); | 149local void compress_block OF((deflate_state *s, const ct_data *ltree, 150 const ct_data *dtree)); |
151local int detect_data_type OF((deflate_state *s)); 152local unsigned bi_reverse OF((unsigned value, int length)); 153local void bi_windup OF((deflate_state *s)); 154local void bi_flush OF((deflate_state *s)); 155local void copy_block OF((deflate_state *s, charf *buf, unsigned len, 156 int header)); 157 158#ifdef GEN_TREES_H --- 808 unchanged lines hidden (view full) --- 967 _tr_stored_block(s, buf, stored_len, last); 968 969#ifdef FORCE_STATIC 970 } else if (static_lenb >= 0) { /* force static trees */ 971#else 972 } else if (s->strategy == Z_FIXED || static_lenb == opt_lenb) { 973#endif 974 send_bits(s, (STATIC_TREES<<1)+last, 3); | 151local int detect_data_type OF((deflate_state *s)); 152local unsigned bi_reverse OF((unsigned value, int length)); 153local void bi_windup OF((deflate_state *s)); 154local void bi_flush OF((deflate_state *s)); 155local void copy_block OF((deflate_state *s, charf *buf, unsigned len, 156 int header)); 157 158#ifdef GEN_TREES_H --- 808 unchanged lines hidden (view full) --- 967 _tr_stored_block(s, buf, stored_len, last); 968 969#ifdef FORCE_STATIC 970 } else if (static_lenb >= 0) { /* force static trees */ 971#else 972 } else if (s->strategy == Z_FIXED || static_lenb == opt_lenb) { 973#endif 974 send_bits(s, (STATIC_TREES<<1)+last, 3); |
975 compress_block(s, (ct_data *)static_ltree, (ct_data *)static_dtree); | 975 compress_block(s, (const ct_data *)static_ltree, 976 (const ct_data *)static_dtree); |
976#ifdef DEBUG 977 s->compressed_len += 3 + s->static_len; 978#endif 979 } else { 980 send_bits(s, (DYN_TREES<<1)+last, 3); 981 send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1, 982 max_blindex+1); | 977#ifdef DEBUG 978 s->compressed_len += 3 + s->static_len; 979#endif 980 } else { 981 send_bits(s, (DYN_TREES<<1)+last, 3); 982 send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1, 983 max_blindex+1); |
983 compress_block(s, (ct_data *)s->dyn_ltree, (ct_data *)s->dyn_dtree); | 984 compress_block(s, (const ct_data *)s->dyn_ltree, 985 (const ct_data *)s->dyn_dtree); |
984#ifdef DEBUG 985 s->compressed_len += 3 + s->opt_len; 986#endif 987 } 988 Assert (s->compressed_len == s->bits_sent, "bad compressed size"); 989 /* The above check is made mod 2^32, for files larger than 512 MB 990 * and uLong implemented on 32 bits. 991 */ --- 60 unchanged lines hidden (view full) --- 1052 */ 1053} 1054 1055/* =========================================================================== 1056 * Send the block data compressed using the given Huffman trees 1057 */ 1058local void compress_block(s, ltree, dtree) 1059 deflate_state *s; | 986#ifdef DEBUG 987 s->compressed_len += 3 + s->opt_len; 988#endif 989 } 990 Assert (s->compressed_len == s->bits_sent, "bad compressed size"); 991 /* The above check is made mod 2^32, for files larger than 512 MB 992 * and uLong implemented on 32 bits. 993 */ --- 60 unchanged lines hidden (view full) --- 1054 */ 1055} 1056 1057/* =========================================================================== 1058 * Send the block data compressed using the given Huffman trees 1059 */ 1060local void compress_block(s, ltree, dtree) 1061 deflate_state *s; |
1060 ct_data *ltree; /* literal tree */ 1061 ct_data *dtree; /* distance tree */ | 1062 const ct_data *ltree; /* literal tree */ 1063 const ct_data *dtree; /* distance tree */ |
1062{ 1063 unsigned dist; /* distance of matched string */ 1064 int lc; /* match length or unmatched char (if dist == 0) */ 1065 unsigned lx = 0; /* running index in l_buf */ 1066 unsigned code; /* the code to send */ 1067 int extra; /* number of extra bits to send */ 1068 1069 if (s->last_lit != 0) do { --- 155 unchanged lines hidden --- | 1064{ 1065 unsigned dist; /* distance of matched string */ 1066 int lc; /* match length or unmatched char (if dist == 0) */ 1067 unsigned lx = 0; /* running index in l_buf */ 1068 unsigned code; /* the code to send */ 1069 int extra; /* number of extra bits to send */ 1070 1071 if (s->last_lit != 0) do { --- 155 unchanged lines hidden --- |