Coverage Report

Created: 2024-08-25 12:18

/src/libjpeg-turbo.main/jchuff.h
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * jchuff.h
3
 *
4
 * This file was part of the Independent JPEG Group's software:
5
 * Copyright (C) 1991-1997, Thomas G. Lane.
6
 * libjpeg-turbo Modifications:
7
 * Copyright (C) 2022, D. R. Commander.
8
 * For conditions of distribution and use, see the accompanying README.ijg
9
 * file.
10
 *
11
 * This file contains declarations for Huffman entropy encoding routines
12
 * that are shared between the sequential encoder (jchuff.c) and the
13
 * progressive encoder (jcphuff.c).  No other modules need to see these.
14
 */
15
16
/* The legal range of a DCT coefficient is
17
 *  -1024 .. +1023  for 8-bit data;
18
 * -16384 .. +16383 for 12-bit data.
19
 * Hence the magnitude should always fit in 10 or 14 bits respectively.
20
 */
21
22
#if BITS_IN_JSAMPLE == 8
23
0
#define MAX_COEF_BITS  10
24
#else
25
#define MAX_COEF_BITS  14
26
#endif
27
28
/* The progressive Huffman encoder uses an unsigned 16-bit data type to store
29
 * absolute values of coefficients, because it is possible to inject a
30
 * coefficient value of -32768 into the encoder by attempting to transform a
31
 * malformed 12-bit JPEG image, and the absolute value of -32768 would overflow
32
 * a signed 16-bit integer.
33
 */
34
typedef unsigned short UJCOEF;
35
36
/* Derived data constructed for each Huffman table */
37
38
typedef struct {
39
  unsigned int ehufco[256];     /* code for each symbol */
40
  char ehufsi[256];             /* length of code for each symbol */
41
  /* If no code has been allocated for a symbol S, ehufsi[S] contains 0 */
42
} c_derived_tbl;
43
44
/* Expand a Huffman table definition into the derived format */
45
EXTERN(void) jpeg_make_c_derived_tbl(j_compress_ptr cinfo, boolean isDC,
46
                                     int tblno, c_derived_tbl **pdtbl);
47
48
/* Generate an optimal table definition given the specified counts */
49
EXTERN(void) jpeg_gen_optimal_table(j_compress_ptr cinfo, JHUFF_TBL *htbl,
50
                                    long freq[]);