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