Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(218)

Side by Side Diff: jstdhuff.c

Issue 1934113002: Update libjpeg_turbo to 1.4.90 from https://github.com/libjpeg-turbo/ (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/libjpeg_turbo.git@master
Patch Set: Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 /*
2 * jstdhuff.c
3 *
4 * This file was part of the Independent JPEG Group's software:
5 * Copyright (C) 1991-1998, Thomas G. Lane.
6 * libjpeg-turbo Modifications:
7 * Copyright (C) 2013, D. R. Commander.
8 * For conditions of distribution and use, see the accompanying README.ijg
9 * file.
10 *
11 * This file contains routines to set the default Huffman tables, if they are
12 * not already set.
13 */
14
15 /*
16 * Huffman table setup routines
17 */
18
19 LOCAL(void)
20 add_huff_table (j_common_ptr cinfo,
21 JHUFF_TBL **htblptr, const UINT8 *bits, const UINT8 *val)
22 /* Define a Huffman table */
23 {
24 int nsymbols, len;
25
26 if (*htblptr == NULL)
27 *htblptr = jpeg_alloc_huff_table(cinfo);
28 else
29 return;
30
31 /* Copy the number-of-symbols-of-each-code-length counts */
32 MEMCOPY((*htblptr)->bits, bits, sizeof((*htblptr)->bits));
33
34 /* Validate the counts. We do this here mainly so we can copy the right
35 * number of symbols from the val[] array, without risking marching off
36 * the end of memory. jchuff.c will do a more thorough test later.
37 */
38 nsymbols = 0;
39 for (len = 1; len <= 16; len++)
40 nsymbols += bits[len];
41 if (nsymbols < 1 || nsymbols > 256)
42 ERREXIT(cinfo, JERR_BAD_HUFF_TABLE);
43
44 MEMCOPY((*htblptr)->huffval, val, nsymbols * sizeof(UINT8));
45
46 /* Initialize sent_table FALSE so table will be written to JPEG file. */
47 (*htblptr)->sent_table = FALSE;
48 }
49
50
51 LOCAL(void)
52 std_huff_tables (j_common_ptr cinfo)
53 /* Set up the standard Huffman tables (cf. JPEG standard section K.3) */
54 /* IMPORTANT: these are only valid for 8-bit data precision! */
55 {
56 JHUFF_TBL **dc_huff_tbl_ptrs, **ac_huff_tbl_ptrs;
57
58 static const UINT8 bits_dc_luminance[17] =
59 { /* 0-base */ 0, 0, 1, 5, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0 };
60 static const UINT8 val_dc_luminance[] =
61 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
62
63 static const UINT8 bits_dc_chrominance[17] =
64 { /* 0-base */ 0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0 };
65 static const UINT8 val_dc_chrominance[] =
66 { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11 };
67
68 static const UINT8 bits_ac_luminance[17] =
69 { /* 0-base */ 0, 0, 2, 1, 3, 3, 2, 4, 3, 5, 5, 4, 4, 0, 0, 1, 0x7d };
70 static const UINT8 val_ac_luminance[] =
71 { 0x01, 0x02, 0x03, 0x00, 0x04, 0x11, 0x05, 0x12,
72 0x21, 0x31, 0x41, 0x06, 0x13, 0x51, 0x61, 0x07,
73 0x22, 0x71, 0x14, 0x32, 0x81, 0x91, 0xa1, 0x08,
74 0x23, 0x42, 0xb1, 0xc1, 0x15, 0x52, 0xd1, 0xf0,
75 0x24, 0x33, 0x62, 0x72, 0x82, 0x09, 0x0a, 0x16,
76 0x17, 0x18, 0x19, 0x1a, 0x25, 0x26, 0x27, 0x28,
77 0x29, 0x2a, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
78 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49,
79 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59,
80 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69,
81 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79,
82 0x7a, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89,
83 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98,
84 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
85 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6,
86 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3, 0xc4, 0xc5,
87 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2, 0xd3, 0xd4,
88 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda, 0xe1, 0xe2,
89 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9, 0xea,
90 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
91 0xf9, 0xfa };
92
93 static const UINT8 bits_ac_chrominance[17] =
94 { /* 0-base */ 0, 0, 2, 1, 2, 4, 4, 3, 4, 7, 5, 4, 4, 0, 1, 2, 0x77 };
95 static const UINT8 val_ac_chrominance[] =
96 { 0x00, 0x01, 0x02, 0x03, 0x11, 0x04, 0x05, 0x21,
97 0x31, 0x06, 0x12, 0x41, 0x51, 0x07, 0x61, 0x71,
98 0x13, 0x22, 0x32, 0x81, 0x08, 0x14, 0x42, 0x91,
99 0xa1, 0xb1, 0xc1, 0x09, 0x23, 0x33, 0x52, 0xf0,
100 0x15, 0x62, 0x72, 0xd1, 0x0a, 0x16, 0x24, 0x34,
101 0xe1, 0x25, 0xf1, 0x17, 0x18, 0x19, 0x1a, 0x26,
102 0x27, 0x28, 0x29, 0x2a, 0x35, 0x36, 0x37, 0x38,
103 0x39, 0x3a, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48,
104 0x49, 0x4a, 0x53, 0x54, 0x55, 0x56, 0x57, 0x58,
105 0x59, 0x5a, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68,
106 0x69, 0x6a, 0x73, 0x74, 0x75, 0x76, 0x77, 0x78,
107 0x79, 0x7a, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
108 0x88, 0x89, 0x8a, 0x92, 0x93, 0x94, 0x95, 0x96,
109 0x97, 0x98, 0x99, 0x9a, 0xa2, 0xa3, 0xa4, 0xa5,
110 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xb2, 0xb3, 0xb4,
111 0xb5, 0xb6, 0xb7, 0xb8, 0xb9, 0xba, 0xc2, 0xc3,
112 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xd2,
113 0xd3, 0xd4, 0xd5, 0xd6, 0xd7, 0xd8, 0xd9, 0xda,
114 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7, 0xe8, 0xe9,
115 0xea, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
116 0xf9, 0xfa };
117
118 if (cinfo->is_decompressor) {
119 dc_huff_tbl_ptrs = ((j_decompress_ptr)cinfo)->dc_huff_tbl_ptrs;
120 ac_huff_tbl_ptrs = ((j_decompress_ptr)cinfo)->ac_huff_tbl_ptrs;
121 } else {
122 dc_huff_tbl_ptrs = ((j_compress_ptr)cinfo)->dc_huff_tbl_ptrs;
123 ac_huff_tbl_ptrs = ((j_compress_ptr)cinfo)->ac_huff_tbl_ptrs;
124 }
125
126 add_huff_table(cinfo, &dc_huff_tbl_ptrs[0], bits_dc_luminance,
127 val_dc_luminance);
128 add_huff_table(cinfo, &ac_huff_tbl_ptrs[0], bits_ac_luminance,
129 val_ac_luminance);
130 add_huff_table(cinfo, &dc_huff_tbl_ptrs[1], bits_dc_chrominance,
131 val_dc_chrominance);
132 add_huff_table(cinfo, &ac_huff_tbl_ptrs[1], bits_ac_chrominance,
133 val_ac_chrominance);
134 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698