3 * Copyright (c) 2003 the ffmpeg project
5 * This file is part of FFmpeg.
7 * FFmpeg is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public
9 * License as published by the Free Software Foundation; either
10 * version 2.1 of the License, or (at your option) any later version.
12 * FFmpeg is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Lesser General Public License for more details.
17 * You should have received a copy of the GNU Lesser General Public
18 * License along with FFmpeg; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
25 static const uint8_t sp5x_data_sof[] =
30 0x00, 0xf0, /* height (default: 240) */
31 0x01, 0x40, /* width (default: 240) */
32 0x03, /* nb components */
33 0x01, 0x22, 0x00, /* 21 vs 22 ? */
38 static const uint8_t sp5x_data_sos[] =
42 0x03, /* nb components */
51 static const uint8_t sp5x_data_dqt[] =
56 0x05, 0x03, 0x04, 0x04, 0x04, 0x03, 0x05, 0x04,
57 0x04, 0x04, 0x06, 0x05, 0x05, 0x06, 0x08, 0x0D,
58 0x08, 0x08, 0x07, 0x07, 0x08, 0x10, 0x0C, 0x0C,
59 0x0A, 0x0D, 0x14, 0x11, 0x15, 0x14, 0x13, 0x11,
60 0x13, 0x13, 0x16, 0x18, 0x1F, 0x1A, 0x16, 0x17,
61 0x1E, 0x17, 0x13, 0x13, 0x1B, 0x25, 0x1C, 0x1E,
62 0x20, 0x21, 0x23, 0x23, 0x23, 0x15, 0x1A, 0x27,
63 0x29, 0x26, 0x22, 0x29, 0x1F, 0x22, 0x23, 0x22,
65 0x05, 0x06, 0x06, 0x08, 0x07, 0x08, 0x10, 0x08,
66 0x08, 0x10, 0x22, 0x16, 0x13, 0x16, 0x22, 0x22,
67 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
68 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
69 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
70 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
71 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22,
72 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22
75 static const uint8_t sp5x_data_dht[] = {
78 0x00, 0x00, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01,
79 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
80 0x00, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06,
81 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x01, 0x00, 0x03,
82 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
83 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
84 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
85 0x0A, 0x0B, 0x10, 0x00, 0x02, 0x01, 0x03, 0x03,
86 0x02, 0x04, 0x03, 0x05, 0x05, 0x04, 0x04, 0x00,
87 0x00, 0x01, 0x7D, 0x01, 0x02, 0x03, 0x00, 0x04,
88 0x11, 0x05, 0x12, 0x21, 0x31, 0x41, 0x06, 0x13,
89 0x51, 0x61, 0x07, 0x22, 0x71, 0x14, 0x32, 0x81,
90 0x91, 0xA1, 0x08, 0x23, 0x42, 0xB1, 0xC1, 0x15,
91 0x52, 0xD1, 0xF0, 0x24, 0x33, 0x62, 0x72, 0x82,
92 0x09, 0x0A, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x25,
93 0x26, 0x27, 0x28, 0x29, 0x2A, 0x34, 0x35, 0x36,
94 0x37, 0x38, 0x39, 0x3A, 0x43, 0x44, 0x45, 0x46,
95 0x47, 0x48, 0x49, 0x4A, 0x53, 0x54, 0x55, 0x56,
96 0x57, 0x58, 0x59, 0x5A, 0x63, 0x64, 0x65, 0x66,
97 0x67, 0x68, 0x69, 0x6A, 0x73, 0x74, 0x75, 0x76,
98 0x77, 0x78, 0x79, 0x7A, 0x83, 0x84, 0x85, 0x86,
99 0x87, 0x88, 0x89, 0x8A, 0x92, 0x93, 0x94, 0x95,
100 0x96, 0x97, 0x98, 0x99, 0x9A, 0xA2, 0xA3, 0xA4,
101 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xB2, 0xB3,
102 0xB4, 0xB5, 0xB6, 0xB7, 0xB8, 0xB9, 0xBA, 0xC2,
103 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA,
104 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0xD7, 0xD8, 0xD9,
105 0xDA, 0xE1, 0xE2, 0xE3, 0xE4, 0xE5, 0xE6, 0xE7,
106 0xE8, 0xE9, 0xEA, 0xF1, 0xF2, 0xF3, 0xF4, 0xF5,
107 0xF6, 0xF7, 0xF8, 0xF9, 0xFA, 0x11, 0x00, 0x02,
108 0x01, 0x02, 0x04, 0x04, 0x03, 0x04, 0x07, 0x05,
109 0x04, 0x04, 0x00, 0x01, 0x02, 0x77, 0x00, 0x01,
110 0x02, 0x03, 0x11, 0x04, 0x05, 0x21, 0x31, 0x06,
111 0x12, 0x41, 0x51, 0x07, 0x61, 0x71, 0x13, 0x22,
112 0x32, 0x81, 0x08, 0x14, 0x42, 0x91, 0xA1, 0xB1,
113 0xC1, 0x09, 0x23, 0x33, 0x52, 0xF0, 0x15, 0x62,
114 0x72, 0xD1, 0x0A, 0x16, 0x24, 0x34, 0xE1, 0x25,
115 0xF1, 0x17, 0x18, 0x19, 0x1A, 0x26, 0x27, 0x28,
116 0x29, 0x2A, 0x35, 0x36, 0x37, 0x38, 0x39, 0x3A,
117 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4A,
118 0x53, 0x54, 0x55, 0x56, 0x57, 0x58, 0x59, 0x5A,
119 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x69, 0x6A,
120 0x73, 0x74, 0x75, 0x76, 0x77, 0x78, 0x79, 0x7A,
121 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89,
122 0x8A, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97, 0x98,
123 0x99, 0x9A, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7,
124 0xA8, 0xA9, 0xAA, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6,
125 0xB7, 0xB8, 0xB9, 0xBA, 0xC2, 0xC3, 0xC4, 0xC5,
126 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xD2, 0xD3, 0xD4,
127 0xD5, 0xD6, 0xD7, 0xD8, 0xD9, 0xDA, 0xE2, 0xE3,
128 0xE4, 0xE5, 0xE6, 0xE7, 0xE8, 0xE9, 0xEA, 0xF2,
129 0xF3, 0xF4, 0xF5, 0xF6, 0xF7, 0xF8, 0xF9, 0xFA
133 static const uint8_t sp5x_quant_table[20][64]=
136 { 16, 11, 12, 14, 12, 10, 16, 14, 13, 14, 18, 17, 16, 19, 24, 40,
137 26, 24, 22, 22, 24, 49, 35, 37, 29, 40, 58, 51, 61, 60, 57, 51,
138 56, 55, 64, 72, 92, 78, 64, 68, 87, 69, 55, 56, 80,109, 81, 87,
139 95, 98,103,104,103, 62, 77,113,121,112,100,120, 92,101,103, 99 },
140 { 17, 18, 18, 24, 21, 24, 47, 26, 26, 47, 99, 66, 56, 66, 99, 99,
141 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
142 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
143 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 },
146 { 10, 7, 7, 8, 7, 6, 10, 8, 8, 8, 11, 10, 10, 11, 14, 24,
147 16, 14, 13, 13, 14, 29, 21, 22, 17, 24, 35, 31, 37, 36, 34, 31,
148 34, 33, 38, 43, 55, 47, 38, 41, 52, 41, 33, 34, 48, 65, 49, 52,
149 57, 59, 62, 62, 62, 37, 46, 68, 73, 67, 60, 72, 55, 61, 62, 59 },
150 { 10, 11, 11, 14, 13, 14, 28, 16, 16, 28, 59, 40, 34, 40, 59, 59,
151 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
152 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
153 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59 },
156 { 6, 4, 5, 6, 5, 4, 6, 6, 5, 6, 7, 7, 6, 8, 10, 16,
157 10, 10, 9, 9, 10, 20, 14, 15, 12, 16, 23, 20, 24, 24, 23, 20,
158 22, 22, 26, 29, 37, 31, 26, 27, 35, 28, 22, 22, 32, 44, 32, 35,
159 38, 39, 41, 42, 41, 25, 31, 45, 48, 45, 40, 48, 37, 40, 41, 40 },
160 { 7, 7, 7, 10, 8, 10, 19, 10, 10, 19, 40, 26, 22, 26, 40, 40,
161 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
162 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
163 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40 },
166 { 5, 3, 4, 4, 4, 3, 5, 4, 4, 4, 5, 5, 5, 6, 7, 12,
167 8, 7, 7, 7, 7, 15, 11, 11, 9, 12, 17, 15, 18, 18, 17, 15,
168 17, 17, 19, 22, 28, 23, 19, 20, 26, 21, 17, 17, 24, 33, 24, 26,
169 29, 29, 31, 31, 31, 19, 23, 34, 36, 34, 30, 36, 28, 30, 31, 30 },
170 { 5, 5, 5, 7, 6, 7, 14, 8, 8, 14, 30, 20, 17, 20, 30, 30,
171 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
172 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
173 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30 },
176 { 3, 2, 2, 3, 2, 2, 3, 3, 3, 3, 4, 3, 3, 4, 5, 8,
177 5, 5, 4, 4, 5, 10, 7, 7, 6, 8, 12, 10, 12, 12, 11, 10,
178 11, 11, 13, 14, 18, 16, 13, 14, 17, 14, 11, 11, 16, 22, 16, 17,
179 19, 20, 21, 21, 21, 12, 15, 23, 24, 22, 20, 24, 18, 20, 21, 20 },
180 { 3, 4, 4, 5, 4, 5, 9, 5, 5, 9, 20, 13, 11, 13, 20, 20,
181 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
182 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
183 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 },
186 { 13, 9, 10, 11, 10, 8, 13, 11, 10, 11, 14, 14, 13, 15, 19, 32,
187 21, 19, 18, 18, 19, 39, 28, 30, 23, 32, 46, 41, 49, 48, 46, 41,
188 45, 44, 51, 58, 74, 62, 51, 54, 70, 55, 44, 45, 64, 87, 65, 70,
189 76, 78, 82, 83, 82, 50, 62, 90, 97, 90, 80, 96, 74, 81, 82, 79 },
190 { 14, 14, 14, 19, 17, 19, 38, 21, 21, 38, 79, 53, 45, 53, 79, 79,
191 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
192 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
193 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79 },
196 { 32, 22, 24, 28, 24, 20, 32, 28, 26, 28, 36, 34, 32, 38, 48, 80,
197 52, 48, 44, 44, 48, 98, 70, 74, 58, 80,116,102,122,120,114,102,
198 112,110,128,144,184,156,128,136,174,138,110,112,160,218,162,174,
199 190,196,206,208,206,124,154,226,242,224,200,240,184,202,206,198 },
200 { 34, 36, 36, 48, 42, 48, 94, 52, 52, 94,198,132,112,132,198,198,
201 198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,
202 198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,
203 198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198 },
206 { 2, 1, 1, 1, 1, 1, 2, 1, 1, 1, 2, 2, 2, 2, 2, 4,
207 3, 2, 2, 2, 2, 5, 4, 4, 3, 4, 6, 5, 6, 6, 6, 5,
208 6, 6, 6, 7, 9, 8, 6, 7, 9, 7, 6, 6, 8, 11, 8, 9,
209 10, 10, 10, 10, 10, 6, 8, 11, 12, 11, 10, 12, 9, 10, 10, 10 },
210 { 2, 2, 2, 2, 2, 2, 5, 3, 3, 5, 10, 7, 6, 7, 10, 10,
211 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
212 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
213 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 },
216 { 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 3, 2, 2, 3, 3, 6,
217 4, 3, 3, 3, 3, 7, 5, 5, 4, 6, 8, 7, 9, 8, 8, 7,
218 8, 8, 9, 10, 13, 11, 9, 10, 12, 10, 8, 8, 11, 15, 11, 12,
219 13, 14, 14, 15, 14, 9, 11, 16, 17, 16, 14, 17, 13, 14, 14, 14 },
220 { 2, 3, 3, 3, 3, 3, 7, 4, 4, 7, 14, 9, 8, 9, 14, 14,
221 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
222 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
223 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14 },
226 { 20, 14, 15, 18, 15, 13, 20, 18, 16, 18, 23, 21, 20, 24, 30, 50,
227 33, 30, 28, 28, 30, 61, 44, 46, 36, 50, 73, 64, 76, 75, 71, 64,
228 70, 69, 80, 90,115, 98, 80, 85,109, 86, 69, 70,100,136,101,109,
229 119,123,129,130,129, 78, 96,141,151,140,125,150,115,126,129,124 },
230 { 21, 23, 23, 30, 26, 30, 59, 33, 33, 59,124, 83, 70, 83,124,124,
231 124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,
232 124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,
233 124,124,124,124,124,124,124,124,124,124,124,124,124,124,124,124 }
237 /* 4NF-M, not ZigZag */
238 static const uint8_t sp5x_quant_table_orig[18][64] =
241 { 16, 11, 10, 16, 24, 40, 51, 61, 12, 12, 14, 19, 26, 58, 60, 55,
242 14, 13, 16, 24, 40, 57, 69, 56, 14, 17, 22, 29, 51, 87, 80, 62,
243 18, 22, 37, 56, 68,109,103, 77, 24, 35, 55, 64, 81,104,113, 92,
244 49, 64, 78, 87,103,121,120,101, 72, 92, 95, 98,112,100,103, 99 },
245 { 17, 18, 24, 47, 99, 99, 99, 99, 18, 21, 26, 66, 99, 99, 99, 99,
246 24, 26, 56, 99, 99, 99, 99, 99, 47, 66, 99, 99, 99, 99, 99, 99,
247 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
248 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99 },
251 { 10, 7, 6, 10, 14, 24, 31, 37, 7, 7, 8, 11, 16, 35, 36, 33,
252 8, 8, 10, 14, 24, 34, 41, 34, 8, 10, 13, 17, 31, 52, 48, 37,
253 11, 13, 22, 34, 41, 65, 62, 46, 14, 21, 33, 38, 49, 62, 68, 55,
254 29, 38, 47, 52, 62, 73, 72, 61, 43, 55, 57, 59, 67, 60, 62, 59 },
255 { 10, 11, 14, 28, 59, 59, 59, 59, 11, 13, 16, 40, 59, 59, 59, 59,
256 14, 16, 34, 59, 59, 59, 59, 59, 28, 40, 59, 59, 59, 59, 59, 59,
257 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59,
258 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59 },
261 { 6, 4, 4, 6, 10, 16, 20, 24, 5, 5, 6, 8, 10, 23, 24, 22,
262 6, 5, 6, 10, 16, 23, 28, 22, 6, 7, 9, 12, 20, 35, 32, 25,
263 7, 9, 15, 22, 27, 44, 41, 31, 10, 14, 22, 26, 32, 42, 45, 37,
264 20, 26, 31, 35, 41, 48, 48, 40, 29, 37, 38, 39, 45, 40, 41, 40 },
265 { 7, 7, 10, 19, 40, 40, 40, 40, 7, 8, 10, 26, 40, 40, 40, 40,
266 10, 10, 22, 40, 40, 40, 40, 40, 19, 26, 40, 40, 40, 40, 40, 40,
267 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40,
268 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40 },
271 { 5, 3, 3, 5, 7, 12, 15, 18, 4, 4, 4, 6, 8, 17, 18, 17,
272 4, 4, 5, 7, 12, 17, 21, 17, 4, 5, 7, 9, 15, 26, 24, 19,
273 5, 7, 11, 17, 20, 33, 31, 23, 7, 11, 17, 19, 24, 31, 34, 28,
274 15, 19, 23, 26, 31, 36, 36, 30, 22, 28, 29, 29, 34, 30, 31, 30 },
275 { 5, 5, 7, 14, 30, 30, 30, 30, 5, 6, 8, 20, 30, 30, 30, 30,
276 7, 8, 17, 30, 30, 30, 30, 30, 14, 20, 30, 30, 30, 30, 30, 30,
277 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
278 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30 },
281 { 3, 2, 2, 3, 5, 8, 10, 12, 2, 2, 3, 4, 5, 12, 12, 11,
282 3, 3, 3, 5, 8, 11, 14, 11, 3, 3, 4, 6, 10, 17, 16, 12,
283 4, 4, 7, 11, 14, 22, 21, 15, 5, 7, 11, 13, 16, 21, 23, 18,
284 10, 13, 16, 17, 21, 24, 24, 20, 14, 18, 19, 20, 22, 20, 21, 20 },
285 { 3, 4, 5, 9, 20, 20, 20, 20, 4, 4, 5, 13, 20, 20, 20, 20,
286 5, 5, 11, 20, 20, 20, 20, 20, 9, 13, 20, 20, 20, 20, 20, 20,
287 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
288 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20 },
291 { 13, 9, 8, 13, 19, 32, 41, 49, 10, 10, 11, 15, 21, 46, 48, 44,
292 11, 10, 13, 19, 32, 46, 55, 45, 11, 14, 18, 23, 41, 70, 64, 50,
293 14, 18, 30, 45, 54, 87, 82, 62, 19, 28, 44, 51, 65, 83, 90, 74,
294 39, 51, 62, 70, 82, 97, 96, 81, 58, 74, 76, 78, 90, 80, 82, 79 },
295 { 14, 14, 19, 38, 79, 79, 79, 79, 14, 17, 21, 53, 79, 79, 79, 79,
296 19, 21, 45, 79, 79, 79, 79, 79, 38, 53, 79, 79, 79, 79, 79, 79,
297 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79,
298 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79, 79 },
301 { 32, 22, 20, 32, 48, 80,102,122, 24, 24, 28, 38, 52,116,120,110,
302 28, 26, 32, 48, 80,114,138,112, 28, 34, 44, 58,102,174,160,124,
303 36, 44, 74,112,136,218,206,154, 48, 70,110,128,162,208,226,184,
304 98,128,156,174,206,242,240,202,144,184,190,196,224,200,206,198 },
305 { 34, 36, 48, 94,198,198,198,198, 36, 42, 52,132,198,198,198,198,
306 48, 52,112,198,198,198,198,198, 94,132,198,198,198,198,198,198,
307 198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,
308 198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198 },
311 { 2, 1, 1, 2, 2, 4, 5, 6, 1, 1, 1, 2, 3, 6, 6, 6,
312 1, 1, 2, 2, 4, 6, 7, 6, 1, 2, 2, 3, 5, 9, 8, 6,
313 2, 2, 4, 6, 7, 11, 10, 8, 2, 4, 6, 6, 8, 10, 11, 9,
314 5, 6, 8, 9, 10, 12, 12, 10, 7, 9, 10, 10, 11, 10, 10, 10 },
315 { 2, 2, 2, 5, 10, 10, 10, 10, 2, 2, 3, 7, 10, 10, 10, 10,
316 2, 3, 6, 10, 10, 10, 10, 10, 5, 7, 10, 10, 10, 10, 10, 10,
317 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
318 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10 },
321 { 2, 2, 1, 2, 3, 6, 7, 9, 2, 2, 2, 3, 4, 8, 8, 8,
322 2, 2, 2, 3, 6, 8, 10, 8, 2, 2, 3, 4, 7, 12, 11, 9,
323 3, 3, 5, 8, 10, 15, 14, 11, 3, 5, 8, 9, 11, 15, 16, 13,
324 7, 9, 11, 12, 14, 17, 17, 14, 10, 13, 13, 14, 16, 14, 14, 14 },
325 { 2, 3, 3, 7, 14, 14, 14, 14, 3, 3, 4, 9, 14, 14, 14, 14,
326 3, 4, 8, 14, 14, 14, 14, 14, 7, 9, 14, 14, 14, 14, 14, 14,
327 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
328 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14 }