2
|
1 |
/*
|
|
2 |
* reserved comment block
|
|
3 |
* DO NOT REMOVE OR ALTER!
|
|
4 |
*/
|
|
5 |
/*
|
|
6 |
* jchuff.h
|
|
7 |
*
|
|
8 |
* Copyright (C) 1991-1997, Thomas G. Lane.
|
|
9 |
* This file is part of the Independent JPEG Group's software.
|
|
10 |
* For conditions of distribution and use, see the accompanying README file.
|
|
11 |
*
|
|
12 |
* This file contains declarations for Huffman entropy encoding routines
|
|
13 |
* that are shared between the sequential encoder (jchuff.c) and the
|
|
14 |
* progressive encoder (jcphuff.c). No other modules need to see these.
|
|
15 |
*/
|
|
16 |
|
|
17 |
/* The legal range of a DCT coefficient is
|
|
18 |
* -1024 .. +1023 for 8-bit data;
|
|
19 |
* -16384 .. +16383 for 12-bit data.
|
|
20 |
* Hence the magnitude should always fit in 10 or 14 bits respectively.
|
|
21 |
*/
|
|
22 |
|
|
23 |
#if BITS_IN_JSAMPLE == 8
|
|
24 |
#define MAX_COEF_BITS 10
|
|
25 |
#else
|
|
26 |
#define MAX_COEF_BITS 14
|
|
27 |
#endif
|
|
28 |
|
|
29 |
/* Derived data constructed for each Huffman table */
|
|
30 |
|
|
31 |
typedef struct {
|
|
32 |
unsigned int ehufco[256]; /* code for each symbol */
|
|
33 |
char ehufsi[256]; /* length of code for each symbol */
|
|
34 |
/* If no code has been allocated for a symbol S, ehufsi[S] contains 0 */
|
|
35 |
} c_derived_tbl;
|
|
36 |
|
|
37 |
/* Short forms of external names for systems with brain-damaged linkers. */
|
|
38 |
|
|
39 |
#ifdef NEED_SHORT_EXTERNAL_NAMES
|
|
40 |
#define jpeg_make_c_derived_tbl jMkCDerived
|
|
41 |
#define jpeg_gen_optimal_table jGenOptTbl
|
|
42 |
#endif /* NEED_SHORT_EXTERNAL_NAMES */
|
|
43 |
|
|
44 |
/* Expand a Huffman table definition into the derived format */
|
|
45 |
EXTERN(void) jpeg_make_c_derived_tbl
|
|
46 |
JPP((j_compress_ptr cinfo, boolean isDC, int tblno,
|
|
47 |
c_derived_tbl ** pdtbl));
|
|
48 |
|
|
49 |
/* Generate an optimal table definition given the specified counts */
|
|
50 |
EXTERN(void) jpeg_gen_optimal_table
|
|
51 |
JPP((j_compress_ptr cinfo, JHUFF_TBL * htbl, long freq[]));
|