AC coefficient weighing (per SMPTE 314M) for the DV encoder and decoder. The
[libav.git] / libavcodec / dvdata.h
1 /*
2 * Constants for DV codec
3 * Copyright (c) 2002 Fabrice Bellard.
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public
16 * License along with this library; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
18 */
19
20 /**
21 * @file dvdata.h
22 * Constants for DV codec.
23 */
24
25 /*
26 * DVprofile is used to express the differences between various
27 * DV flavors. For now it's primarily used for differentiating
28 * 525/60 and 625/50, but the plans are to use it for various
29 * DV specs as well (e.g. SMPTE314M vs. IEC 61834).
30 */
31 typedef struct DVprofile {
32 int dsf; /* value of the dsf in the DV header */
33 int frame_size; /* total size of one frame in bytes */
34 int difseg_size; /* number of DIF segments */
35 int frame_rate;
36 int frame_rate_base;
37 int ltc_divisor; /* FPS from the LTS standpoint */
38 int height; /* picture height in pixels */
39 int width; /* picture width in pixels */
40 AVRational sar[2]; /* sample aspect ratios for 4:3 and 16:9 */
41 const uint16_t *video_place; /* positions of all DV macro blocks */
42 enum PixelFormat pix_fmt; /* picture pixel format */
43
44 int audio_stride; /* size of audio_shuffle table */
45 int audio_min_samples[3];/* min ammount of audio samples */
46 /* for 48Khz, 44.1Khz and 32Khz */
47 int audio_samples_dist[5];/* how many samples are supposed to be */
48 /* in each frame in a 5 frames window */
49 const uint16_t (*audio_shuffle)[9]; /* PCM shuffling table */
50 } DVprofile;
51
52 #define NB_DV_VLC 409
53
54 /*
55 * There's a catch about the following three tables: the mapping they establish
56 * between (run, level) and vlc is not 1-1. So you have to watch out for that
57 * when building misc. tables. E.g. (1, 0) can be either 0x7cf or 0x1f82.
58 */
59 static const uint16_t dv_vlc_bits[409] = {
60 0x0000, 0x0002, 0x0007, 0x0008, 0x0009, 0x0014, 0x0015, 0x0016,
61 0x0017, 0x0030, 0x0031, 0x0032, 0x0033, 0x0068, 0x0069, 0x006a,
62 0x006b, 0x006c, 0x006d, 0x006e, 0x006f, 0x00e0, 0x00e1, 0x00e2,
63 0x00e3, 0x00e4, 0x00e5, 0x00e6, 0x00e7, 0x00e8, 0x00e9, 0x00ea,
64 0x00eb, 0x00ec, 0x00ed, 0x00ee, 0x00ef, 0x01e0, 0x01e1, 0x01e2,
65 0x01e3, 0x01e4, 0x01e5, 0x01e6, 0x01e7, 0x01e8, 0x01e9, 0x01ea,
66 0x01eb, 0x01ec, 0x01ed, 0x01ee, 0x01ef, 0x03e0, 0x03e1, 0x03e2,
67 0x03e3, 0x03e4, 0x03e5, 0x03e6, 0x07ce, 0x07cf, 0x07d0, 0x07d1,
68 0x07d2, 0x07d3, 0x07d4, 0x07d5, 0x0fac, 0x0fad, 0x0fae, 0x0faf,
69 0x0fb0, 0x0fb1, 0x0fb2, 0x0fb3, 0x0fb4, 0x0fb5, 0x0fb6, 0x0fb7,
70 0x0fb8, 0x0fb9, 0x0fba, 0x0fbb, 0x0fbc, 0x0fbd, 0x0fbe, 0x0fbf,
71 0x1f80, 0x1f81, 0x1f82, 0x1f83, 0x1f84, 0x1f85, 0x1f86, 0x1f87,
72 0x1f88, 0x1f89, 0x1f8a, 0x1f8b, 0x1f8c, 0x1f8d, 0x1f8e, 0x1f8f,
73 0x1f90, 0x1f91, 0x1f92, 0x1f93, 0x1f94, 0x1f95, 0x1f96, 0x1f97,
74 0x1f98, 0x1f99, 0x1f9a, 0x1f9b, 0x1f9c, 0x1f9d, 0x1f9e, 0x1f9f,
75 0x1fa0, 0x1fa1, 0x1fa2, 0x1fa3, 0x1fa4, 0x1fa5, 0x1fa6, 0x1fa7,
76 0x1fa8, 0x1fa9, 0x1faa, 0x1fab, 0x1fac, 0x1fad, 0x1fae, 0x1faf,
77 0x1fb0, 0x1fb1, 0x1fb2, 0x1fb3, 0x1fb4, 0x1fb5, 0x1fb6, 0x1fb7,
78 0x1fb8, 0x1fb9, 0x1fba, 0x1fbb, 0x1fbc, 0x1fbd, 0x1fbe, 0x1fbf,
79 0x7f00, 0x7f01, 0x7f02, 0x7f03, 0x7f04, 0x7f05, 0x7f06, 0x7f07,
80 0x7f08, 0x7f09, 0x7f0a, 0x7f0b, 0x7f0c, 0x7f0d, 0x7f0e, 0x7f0f,
81 0x7f10, 0x7f11, 0x7f12, 0x7f13, 0x7f14, 0x7f15, 0x7f16, 0x7f17,
82 0x7f18, 0x7f19, 0x7f1a, 0x7f1b, 0x7f1c, 0x7f1d, 0x7f1e, 0x7f1f,
83 0x7f20, 0x7f21, 0x7f22, 0x7f23, 0x7f24, 0x7f25, 0x7f26, 0x7f27,
84 0x7f28, 0x7f29, 0x7f2a, 0x7f2b, 0x7f2c, 0x7f2d, 0x7f2e, 0x7f2f,
85 0x7f30, 0x7f31, 0x7f32, 0x7f33, 0x7f34, 0x7f35, 0x7f36, 0x7f37,
86 0x7f38, 0x7f39, 0x7f3a, 0x7f3b, 0x7f3c, 0x7f3d, 0x7f3e, 0x7f3f,
87 0x7f40, 0x7f41, 0x7f42, 0x7f43, 0x7f44, 0x7f45, 0x7f46, 0x7f47,
88 0x7f48, 0x7f49, 0x7f4a, 0x7f4b, 0x7f4c, 0x7f4d, 0x7f4e, 0x7f4f,
89 0x7f50, 0x7f51, 0x7f52, 0x7f53, 0x7f54, 0x7f55, 0x7f56, 0x7f57,
90 0x7f58, 0x7f59, 0x7f5a, 0x7f5b, 0x7f5c, 0x7f5d, 0x7f5e, 0x7f5f,
91 0x7f60, 0x7f61, 0x7f62, 0x7f63, 0x7f64, 0x7f65, 0x7f66, 0x7f67,
92 0x7f68, 0x7f69, 0x7f6a, 0x7f6b, 0x7f6c, 0x7f6d, 0x7f6e, 0x7f6f,
93 0x7f70, 0x7f71, 0x7f72, 0x7f73, 0x7f74, 0x7f75, 0x7f76, 0x7f77,
94 0x7f78, 0x7f79, 0x7f7a, 0x7f7b, 0x7f7c, 0x7f7d, 0x7f7e, 0x7f7f,
95 0x7f80, 0x7f81, 0x7f82, 0x7f83, 0x7f84, 0x7f85, 0x7f86, 0x7f87,
96 0x7f88, 0x7f89, 0x7f8a, 0x7f8b, 0x7f8c, 0x7f8d, 0x7f8e, 0x7f8f,
97 0x7f90, 0x7f91, 0x7f92, 0x7f93, 0x7f94, 0x7f95, 0x7f96, 0x7f97,
98 0x7f98, 0x7f99, 0x7f9a, 0x7f9b, 0x7f9c, 0x7f9d, 0x7f9e, 0x7f9f,
99 0x7fa0, 0x7fa1, 0x7fa2, 0x7fa3, 0x7fa4, 0x7fa5, 0x7fa6, 0x7fa7,
100 0x7fa8, 0x7fa9, 0x7faa, 0x7fab, 0x7fac, 0x7fad, 0x7fae, 0x7faf,
101 0x7fb0, 0x7fb1, 0x7fb2, 0x7fb3, 0x7fb4, 0x7fb5, 0x7fb6, 0x7fb7,
102 0x7fb8, 0x7fb9, 0x7fba, 0x7fbb, 0x7fbc, 0x7fbd, 0x7fbe, 0x7fbf,
103 0x7fc0, 0x7fc1, 0x7fc2, 0x7fc3, 0x7fc4, 0x7fc5, 0x7fc6, 0x7fc7,
104 0x7fc8, 0x7fc9, 0x7fca, 0x7fcb, 0x7fcc, 0x7fcd, 0x7fce, 0x7fcf,
105 0x7fd0, 0x7fd1, 0x7fd2, 0x7fd3, 0x7fd4, 0x7fd5, 0x7fd6, 0x7fd7,
106 0x7fd8, 0x7fd9, 0x7fda, 0x7fdb, 0x7fdc, 0x7fdd, 0x7fde, 0x7fdf,
107 0x7fe0, 0x7fe1, 0x7fe2, 0x7fe3, 0x7fe4, 0x7fe5, 0x7fe6, 0x7fe7,
108 0x7fe8, 0x7fe9, 0x7fea, 0x7feb, 0x7fec, 0x7fed, 0x7fee, 0x7fef,
109 0x7ff0, 0x7ff1, 0x7ff2, 0x7ff3, 0x7ff4, 0x7ff5, 0x7ff6, 0x7ff7,
110 0x7ff8, 0x7ff9, 0x7ffa, 0x7ffb, 0x7ffc, 0x7ffd, 0x7ffe, 0x7fff,
111 0x0006,
112 };
113
114 static const uint8_t dv_vlc_len[409] = {
115 2, 3, 4, 4, 4, 5, 5, 5,
116 5, 6, 6, 6, 6, 7, 7, 7,
117 7, 7, 7, 7, 7, 8, 8, 8,
118 8, 8, 8, 8, 8, 8, 8, 8,
119 8, 8, 8, 8, 8, 9, 9, 9,
120 9, 9, 9, 9, 9, 9, 9, 9,
121 9, 9, 9, 9, 9, 10, 10, 10,
122 10, 10, 10, 10, 11, 11, 11, 11,
123 11, 11, 11, 11, 12, 12, 12, 12,
124 12, 12, 12, 12, 12, 12, 12, 12,
125 12, 12, 12, 12, 12, 12, 12, 12,
126 13, 13, 13, 13, 13, 13, 13, 13,
127 13, 13, 13, 13, 13, 13, 13, 13,
128 13, 13, 13, 13, 13, 13, 13, 13,
129 13, 13, 13, 13, 13, 13, 13, 13,
130 13, 13, 13, 13, 13, 13, 13, 13,
131 13, 13, 13, 13, 13, 13, 13, 13,
132 13, 13, 13, 13, 13, 13, 13, 13,
133 13, 13, 13, 13, 13, 13, 13, 13,
134 15, 15, 15, 15, 15, 15, 15, 15,
135 15, 15, 15, 15, 15, 15, 15, 15,
136 15, 15, 15, 15, 15, 15, 15, 15,
137 15, 15, 15, 15, 15, 15, 15, 15,
138 15, 15, 15, 15, 15, 15, 15, 15,
139 15, 15, 15, 15, 15, 15, 15, 15,
140 15, 15, 15, 15, 15, 15, 15, 15,
141 15, 15, 15, 15, 15, 15, 15, 15,
142 15, 15, 15, 15, 15, 15, 15, 15,
143 15, 15, 15, 15, 15, 15, 15, 15,
144 15, 15, 15, 15, 15, 15, 15, 15,
145 15, 15, 15, 15, 15, 15, 15, 15,
146 15, 15, 15, 15, 15, 15, 15, 15,
147 15, 15, 15, 15, 15, 15, 15, 15,
148 15, 15, 15, 15, 15, 15, 15, 15,
149 15, 15, 15, 15, 15, 15, 15, 15,
150 15, 15, 15, 15, 15, 15, 15, 15,
151 15, 15, 15, 15, 15, 15, 15, 15,
152 15, 15, 15, 15, 15, 15, 15, 15,
153 15, 15, 15, 15, 15, 15, 15, 15,
154 15, 15, 15, 15, 15, 15, 15, 15,
155 15, 15, 15, 15, 15, 15, 15, 15,
156 15, 15, 15, 15, 15, 15, 15, 15,
157 15, 15, 15, 15, 15, 15, 15, 15,
158 15, 15, 15, 15, 15, 15, 15, 15,
159 15, 15, 15, 15, 15, 15, 15, 15,
160 15, 15, 15, 15, 15, 15, 15, 15,
161 15, 15, 15, 15, 15, 15, 15, 15,
162 15, 15, 15, 15, 15, 15, 15, 15,
163 15, 15, 15, 15, 15, 15, 15, 15,
164 15, 15, 15, 15, 15, 15, 15, 15,
165 15, 15, 15, 15, 15, 15, 15, 15,
166 4,
167 };
168
169 static const uint8_t dv_vlc_run[409] = {
170 0, 0, 1, 0, 0, 2, 1, 0,
171 0, 3, 4, 0, 0, 5, 6, 2,
172 1, 1, 0, 0, 0, 7, 8, 9,
173 10, 3, 4, 2, 1, 1, 1, 0,
174 0, 0, 0, 0, 0, 11, 12, 13,
175 14, 5, 6, 3, 4, 2, 2, 1,
176 0, 0, 0, 0, 0, 5, 3, 3,
177 2, 1, 1, 1, 0, 1, 6, 4,
178 3, 1, 1, 1, 2, 3, 4, 5,
179 7, 8, 9, 10, 7, 8, 4, 3,
180 2, 2, 2, 2, 2, 1, 1, 1,
181 0, 1, 2, 3, 4, 5, 6, 7,
182 8, 9, 10, 11, 12, 13, 14, 15,
183 16, 17, 18, 19, 20, 21, 22, 23,
184 24, 25, 26, 27, 28, 29, 30, 31,
185 32, 33, 34, 35, 36, 37, 38, 39,
186 40, 41, 42, 43, 44, 45, 46, 47,
187 48, 49, 50, 51, 52, 53, 54, 55,
188 56, 57, 58, 59, 60, 61, 62, 63,
189 0, 0, 0, 0, 0, 0, 0, 0,
190 0, 0, 0, 0, 0, 0, 0, 0,
191 0, 0, 0, 0, 0, 0, 0, 0,
192 0, 0, 0, 0, 0, 0, 0, 0,
193 0, 0, 0, 0, 0, 0, 0, 0,
194 0, 0, 0, 0, 0, 0, 0, 0,
195 0, 0, 0, 0, 0, 0, 0, 0,
196 0, 0, 0, 0, 0, 0, 0, 0,
197 0, 0, 0, 0, 0, 0, 0, 0,
198 0, 0, 0, 0, 0, 0, 0, 0,
199 0, 0, 0, 0, 0, 0, 0, 0,
200 0, 0, 0, 0, 0, 0, 0, 0,
201 0, 0, 0, 0, 0, 0, 0, 0,
202 0, 0, 0, 0, 0, 0, 0, 0,
203 0, 0, 0, 0, 0, 0, 0, 0,
204 0, 0, 0, 0, 0, 0, 0, 0,
205 0, 0, 0, 0, 0, 0, 0, 0,
206 0, 0, 0, 0, 0, 0, 0, 0,
207 0, 0, 0, 0, 0, 0, 0, 0,
208 0, 0, 0, 0, 0, 0, 0, 0,
209 0, 0, 0, 0, 0, 0, 0, 0,
210 0, 0, 0, 0, 0, 0, 0, 0,
211 0, 0, 0, 0, 0, 0, 0, 0,
212 0, 0, 0, 0, 0, 0, 0, 0,
213 0, 0, 0, 0, 0, 0, 0, 0,
214 0, 0, 0, 0, 0, 0, 0, 0,
215 0, 0, 0, 0, 0, 0, 0, 0,
216 0, 0, 0, 0, 0, 0, 0, 0,
217 0, 0, 0, 0, 0, 0, 0, 0,
218 0, 0, 0, 0, 0, 0, 0, 0,
219 0, 0, 0, 0, 0, 0, 0, 0,
220 0, 0, 0, 0, 0, 0, 0, 0,
221 127,
222 };
223
224 static const uint8_t dv_vlc_level[409] = {
225 1, 2, 1, 3, 4, 1, 2, 5,
226 6, 1, 1, 7, 8, 1, 1, 2,
227 3, 4, 9, 10, 11, 1, 1, 1,
228 1, 2, 2, 3, 5, 6, 7, 12,
229 13, 14, 15, 16, 17, 1, 1, 1,
230 1, 2, 2, 3, 3, 4, 5, 8,
231 18, 19, 20, 21, 22, 3, 4, 5,
232 6, 9, 10, 11, 0, 0, 3, 4,
233 6, 12, 13, 14, 0, 0, 0, 0,
234 2, 2, 2, 2, 3, 3, 5, 7,
235 7, 8, 9, 10, 11, 15, 16, 17,
236 0, 0, 0, 0, 0, 0, 0, 0,
237 0, 0, 0, 0, 0, 0, 0, 0,
238 0, 0, 0, 0, 0, 0, 0, 0,
239 0, 0, 0, 0, 0, 0, 0, 0,
240 0, 0, 0, 0, 0, 0, 0, 0,
241 0, 0, 0, 0, 0, 0, 0, 0,
242 0, 0, 0, 0, 0, 0, 0, 0,
243 0, 0, 0, 0, 0, 0, 0, 0,
244 0, 1, 2, 3, 4, 5, 6, 7,
245 8, 9, 10, 11, 12, 13, 14, 15,
246 16, 17, 18, 19, 20, 21, 22, 23,
247 24, 25, 26, 27, 28, 29, 30, 31,
248 32, 33, 34, 35, 36, 37, 38, 39,
249 40, 41, 42, 43, 44, 45, 46, 47,
250 48, 49, 50, 51, 52, 53, 54, 55,
251 56, 57, 58, 59, 60, 61, 62, 63,
252 64, 65, 66, 67, 68, 69, 70, 71,
253 72, 73, 74, 75, 76, 77, 78, 79,
254 80, 81, 82, 83, 84, 85, 86, 87,
255 88, 89, 90, 91, 92, 93, 94, 95,
256 96, 97, 98, 99, 100, 101, 102, 103,
257 104, 105, 106, 107, 108, 109, 110, 111,
258 112, 113, 114, 115, 116, 117, 118, 119,
259 120, 121, 122, 123, 124, 125, 126, 127,
260 128, 129, 130, 131, 132, 133, 134, 135,
261 136, 137, 138, 139, 140, 141, 142, 143,
262 144, 145, 146, 147, 148, 149, 150, 151,
263 152, 153, 154, 155, 156, 157, 158, 159,
264 160, 161, 162, 163, 164, 165, 166, 167,
265 168, 169, 170, 171, 172, 173, 174, 175,
266 176, 177, 178, 179, 180, 181, 182, 183,
267 184, 185, 186, 187, 188, 189, 190, 191,
268 192, 193, 194, 195, 196, 197, 198, 199,
269 200, 201, 202, 203, 204, 205, 206, 207,
270 208, 209, 210, 211, 212, 213, 214, 215,
271 216, 217, 218, 219, 220, 221, 222, 223,
272 224, 225, 226, 227, 228, 229, 230, 231,
273 232, 233, 234, 235, 236, 237, 238, 239,
274 240, 241, 242, 243, 244, 245, 246, 247,
275 248, 249, 250, 251, 252, 253, 254, 255,
276 0,
277 };
278
279 /* unquant tables (not used directly) */
280 static const uint8_t dv_88_areas[64] = {
281 0,0,0,1,1,1,2,2,
282 0,0,1,1,1,2,2,2,
283 0,1,1,1,2,2,2,3,
284 1,1,1,2,2,2,3,3,
285 1,1,2,2,2,3,3,3,
286 1,2,2,2,3,3,3,3,
287 2,2,2,3,3,3,3,3,
288 2,2,3,3,3,3,3,3,
289 };
290
291 static const uint8_t dv_248_areas[64] = {
292 0,0,1,1,1,2,2,3,
293 0,0,1,1,2,2,2,3,
294 0,1,1,2,2,2,3,3,
295 0,1,1,2,2,2,3,3,
296 1,1,2,2,2,3,3,3,
297 1,1,2,2,2,3,3,3,
298 1,2,2,2,3,3,3,3,
299 1,2,2,3,3,3,3,3,
300 };
301
302 static const uint8_t dv_quant_shifts[22][4] = {
303 { 3,3,4,4 },
304 { 3,3,4,4 },
305 { 2,3,3,4 },
306 { 2,3,3,4 },
307 { 2,2,3,3 },
308 { 2,2,3,3 },
309 { 1,2,2,3 },
310 { 1,2,2,3 },
311 { 1,1,2,2 },
312 { 1,1,2,2 },
313 { 0,1,1,2 },
314 { 0,1,1,2 },
315 { 0,0,1,1 },
316 { 0,0,1,1 },
317 { 0,0,0,1 },
318 { 0,0,0,0 },
319 { 0,0,0,0 },
320 { 0,0,0,0 },
321 { 0,0,0,0 },
322 { 0,0,0,0 },
323 { 0,0,0,0 },
324 { 0,0,0,0 },
325 };
326
327 static const uint8_t dv_quant_offset[4] = { 6, 3, 0, 1 };
328
329 /* NOTE: I prefer hardcoding the positionning of dv blocks, it is
330 simpler :-) */
331
332 static const uint16_t dv_place_420[1620] = {
333 0x0c24, 0x2412, 0x3036, 0x0000, 0x1848,
334 0x0e24, 0x2612, 0x3236, 0x0200, 0x1a48,
335 0x1024, 0x2812, 0x3436, 0x0400, 0x1c48,
336 0x1026, 0x2814, 0x3438, 0x0402, 0x1c4a,
337 0x0e26, 0x2614, 0x3238, 0x0202, 0x1a4a,
338 0x0c26, 0x2414, 0x3038, 0x0002, 0x184a,
339 0x0c28, 0x2416, 0x303a, 0x0004, 0x184c,
340 0x0e28, 0x2616, 0x323a, 0x0204, 0x1a4c,
341 0x1028, 0x2816, 0x343a, 0x0404, 0x1c4c,
342 0x102a, 0x2818, 0x343c, 0x0406, 0x1c4e,
343 0x0e2a, 0x2618, 0x323c, 0x0206, 0x1a4e,
344 0x0c2a, 0x2418, 0x303c, 0x0006, 0x184e,
345 0x0c2c, 0x241a, 0x303e, 0x0008, 0x1850,
346 0x0e2c, 0x261a, 0x323e, 0x0208, 0x1a50,
347 0x102c, 0x281a, 0x343e, 0x0408, 0x1c50,
348 0x102e, 0x281c, 0x3440, 0x040a, 0x1c52,
349 0x0e2e, 0x261c, 0x3240, 0x020a, 0x1a52,
350 0x0c2e, 0x241c, 0x3040, 0x000a, 0x1852,
351 0x0c30, 0x241e, 0x3042, 0x000c, 0x1854,
352 0x0e30, 0x261e, 0x3242, 0x020c, 0x1a54,
353 0x1030, 0x281e, 0x3442, 0x040c, 0x1c54,
354 0x1032, 0x2820, 0x3444, 0x040e, 0x1c56,
355 0x0e32, 0x2620, 0x3244, 0x020e, 0x1a56,
356 0x0c32, 0x2420, 0x3044, 0x000e, 0x1856,
357 0x0c34, 0x2422, 0x3046, 0x0010, 0x1858,
358 0x0e34, 0x2622, 0x3246, 0x0210, 0x1a58,
359 0x1034, 0x2822, 0x3446, 0x0410, 0x1c58,
360 0x1224, 0x2a12, 0x3636, 0x0600, 0x1e48,
361 0x1424, 0x2c12, 0x3836, 0x0800, 0x2048,
362 0x1624, 0x2e12, 0x3a36, 0x0a00, 0x2248,
363 0x1626, 0x2e14, 0x3a38, 0x0a02, 0x224a,
364 0x1426, 0x2c14, 0x3838, 0x0802, 0x204a,
365 0x1226, 0x2a14, 0x3638, 0x0602, 0x1e4a,
366 0x1228, 0x2a16, 0x363a, 0x0604, 0x1e4c,
367 0x1428, 0x2c16, 0x383a, 0x0804, 0x204c,
368 0x1628, 0x2e16, 0x3a3a, 0x0a04, 0x224c,
369 0x162a, 0x2e18, 0x3a3c, 0x0a06, 0x224e,
370 0x142a, 0x2c18, 0x383c, 0x0806, 0x204e,
371 0x122a, 0x2a18, 0x363c, 0x0606, 0x1e4e,
372 0x122c, 0x2a1a, 0x363e, 0x0608, 0x1e50,
373 0x142c, 0x2c1a, 0x383e, 0x0808, 0x2050,
374 0x162c, 0x2e1a, 0x3a3e, 0x0a08, 0x2250,
375 0x162e, 0x2e1c, 0x3a40, 0x0a0a, 0x2252,
376 0x142e, 0x2c1c, 0x3840, 0x080a, 0x2052,
377 0x122e, 0x2a1c, 0x3640, 0x060a, 0x1e52,
378 0x1230, 0x2a1e, 0x3642, 0x060c, 0x1e54,
379 0x1430, 0x2c1e, 0x3842, 0x080c, 0x2054,
380 0x1630, 0x2e1e, 0x3a42, 0x0a0c, 0x2254,
381 0x1632, 0x2e20, 0x3a44, 0x0a0e, 0x2256,
382 0x1432, 0x2c20, 0x3844, 0x080e, 0x2056,
383 0x1232, 0x2a20, 0x3644, 0x060e, 0x1e56,
384 0x1234, 0x2a22, 0x3646, 0x0610, 0x1e58,
385 0x1434, 0x2c22, 0x3846, 0x0810, 0x2058,
386 0x1634, 0x2e22, 0x3a46, 0x0a10, 0x2258,
387 0x1824, 0x3012, 0x3c36, 0x0c00, 0x2448,
388 0x1a24, 0x3212, 0x3e36, 0x0e00, 0x2648,
389 0x1c24, 0x3412, 0x4036, 0x1000, 0x2848,
390 0x1c26, 0x3414, 0x4038, 0x1002, 0x284a,
391 0x1a26, 0x3214, 0x3e38, 0x0e02, 0x264a,
392 0x1826, 0x3014, 0x3c38, 0x0c02, 0x244a,
393 0x1828, 0x3016, 0x3c3a, 0x0c04, 0x244c,
394 0x1a28, 0x3216, 0x3e3a, 0x0e04, 0x264c,
395 0x1c28, 0x3416, 0x403a, 0x1004, 0x284c,
396 0x1c2a, 0x3418, 0x403c, 0x1006, 0x284e,
397 0x1a2a, 0x3218, 0x3e3c, 0x0e06, 0x264e,
398 0x182a, 0x3018, 0x3c3c, 0x0c06, 0x244e,
399 0x182c, 0x301a, 0x3c3e, 0x0c08, 0x2450,
400 0x1a2c, 0x321a, 0x3e3e, 0x0e08, 0x2650,
401 0x1c2c, 0x341a, 0x403e, 0x1008, 0x2850,
402 0x1c2e, 0x341c, 0x4040, 0x100a, 0x2852,
403 0x1a2e, 0x321c, 0x3e40, 0x0e0a, 0x2652,
404 0x182e, 0x301c, 0x3c40, 0x0c0a, 0x2452,
405 0x1830, 0x301e, 0x3c42, 0x0c0c, 0x2454,
406 0x1a30, 0x321e, 0x3e42, 0x0e0c, 0x2654,
407 0x1c30, 0x341e, 0x4042, 0x100c, 0x2854,
408 0x1c32, 0x3420, 0x4044, 0x100e, 0x2856,
409 0x1a32, 0x3220, 0x3e44, 0x0e0e, 0x2656,
410 0x1832, 0x3020, 0x3c44, 0x0c0e, 0x2456,
411 0x1834, 0x3022, 0x3c46, 0x0c10, 0x2458,
412 0x1a34, 0x3222, 0x3e46, 0x0e10, 0x2658,
413 0x1c34, 0x3422, 0x4046, 0x1010, 0x2858,
414 0x1e24, 0x3612, 0x4236, 0x1200, 0x2a48,
415 0x2024, 0x3812, 0x4436, 0x1400, 0x2c48,
416 0x2224, 0x3a12, 0x4636, 0x1600, 0x2e48,
417 0x2226, 0x3a14, 0x4638, 0x1602, 0x2e4a,
418 0x2026, 0x3814, 0x4438, 0x1402, 0x2c4a,
419 0x1e26, 0x3614, 0x4238, 0x1202, 0x2a4a,
420 0x1e28, 0x3616, 0x423a, 0x1204, 0x2a4c,
421 0x2028, 0x3816, 0x443a, 0x1404, 0x2c4c,
422 0x2228, 0x3a16, 0x463a, 0x1604, 0x2e4c,
423 0x222a, 0x3a18, 0x463c, 0x1606, 0x2e4e,
424 0x202a, 0x3818, 0x443c, 0x1406, 0x2c4e,
425 0x1e2a, 0x3618, 0x423c, 0x1206, 0x2a4e,
426 0x1e2c, 0x361a, 0x423e, 0x1208, 0x2a50,
427 0x202c, 0x381a, 0x443e, 0x1408, 0x2c50,
428 0x222c, 0x3a1a, 0x463e, 0x1608, 0x2e50,
429 0x222e, 0x3a1c, 0x4640, 0x160a, 0x2e52,
430 0x202e, 0x381c, 0x4440, 0x140a, 0x2c52,
431 0x1e2e, 0x361c, 0x4240, 0x120a, 0x2a52,
432 0x1e30, 0x361e, 0x4242, 0x120c, 0x2a54,
433 0x2030, 0x381e, 0x4442, 0x140c, 0x2c54,
434 0x2230, 0x3a1e, 0x4642, 0x160c, 0x2e54,
435 0x2232, 0x3a20, 0x4644, 0x160e, 0x2e56,
436 0x2032, 0x3820, 0x4444, 0x140e, 0x2c56,
437 0x1e32, 0x3620, 0x4244, 0x120e, 0x2a56,
438 0x1e34, 0x3622, 0x4246, 0x1210, 0x2a58,
439 0x2034, 0x3822, 0x4446, 0x1410, 0x2c58,
440 0x2234, 0x3a22, 0x4646, 0x1610, 0x2e58,
441 0x2424, 0x3c12, 0x0036, 0x1800, 0x3048,
442 0x2624, 0x3e12, 0x0236, 0x1a00, 0x3248,
443 0x2824, 0x4012, 0x0436, 0x1c00, 0x3448,
444 0x2826, 0x4014, 0x0438, 0x1c02, 0x344a,
445 0x2626, 0x3e14, 0x0238, 0x1a02, 0x324a,
446 0x2426, 0x3c14, 0x0038, 0x1802, 0x304a,
447 0x2428, 0x3c16, 0x003a, 0x1804, 0x304c,
448 0x2628, 0x3e16, 0x023a, 0x1a04, 0x324c,
449 0x2828, 0x4016, 0x043a, 0x1c04, 0x344c,
450 0x282a, 0x4018, 0x043c, 0x1c06, 0x344e,
451 0x262a, 0x3e18, 0x023c, 0x1a06, 0x324e,
452 0x242a, 0x3c18, 0x003c, 0x1806, 0x304e,
453 0x242c, 0x3c1a, 0x003e, 0x1808, 0x3050,
454 0x262c, 0x3e1a, 0x023e, 0x1a08, 0x3250,
455 0x282c, 0x401a, 0x043e, 0x1c08, 0x3450,
456 0x282e, 0x401c, 0x0440, 0x1c0a, 0x3452,
457 0x262e, 0x3e1c, 0x0240, 0x1a0a, 0x3252,
458 0x242e, 0x3c1c, 0x0040, 0x180a, 0x3052,
459 0x2430, 0x3c1e, 0x0042, 0x180c, 0x3054,
460 0x2630, 0x3e1e, 0x0242, 0x1a0c, 0x3254,
461 0x2830, 0x401e, 0x0442, 0x1c0c, 0x3454,
462 0x2832, 0x4020, 0x0444, 0x1c0e, 0x3456,
463 0x2632, 0x3e20, 0x0244, 0x1a0e, 0x3256,
464 0x2432, 0x3c20, 0x0044, 0x180e, 0x3056,
465 0x2434, 0x3c22, 0x0046, 0x1810, 0x3058,
466 0x2634, 0x3e22, 0x0246, 0x1a10, 0x3258,
467 0x2834, 0x4022, 0x0446, 0x1c10, 0x3458,
468 0x2a24, 0x4212, 0x0636, 0x1e00, 0x3648,
469 0x2c24, 0x4412, 0x0836, 0x2000, 0x3848,
470 0x2e24, 0x4612, 0x0a36, 0x2200, 0x3a48,
471 0x2e26, 0x4614, 0x0a38, 0x2202, 0x3a4a,
472 0x2c26, 0x4414, 0x0838, 0x2002, 0x384a,
473 0x2a26, 0x4214, 0x0638, 0x1e02, 0x364a,
474 0x2a28, 0x4216, 0x063a, 0x1e04, 0x364c,
475 0x2c28, 0x4416, 0x083a, 0x2004, 0x384c,
476 0x2e28, 0x4616, 0x0a3a, 0x2204, 0x3a4c,
477 0x2e2a, 0x4618, 0x0a3c, 0x2206, 0x3a4e,
478 0x2c2a, 0x4418, 0x083c, 0x2006, 0x384e,
479 0x2a2a, 0x4218, 0x063c, 0x1e06, 0x364e,
480 0x2a2c, 0x421a, 0x063e, 0x1e08, 0x3650,
481 0x2c2c, 0x441a, 0x083e, 0x2008, 0x3850,
482 0x2e2c, 0x461a, 0x0a3e, 0x2208, 0x3a50,
483 0x2e2e, 0x461c, 0x0a40, 0x220a, 0x3a52,
484 0x2c2e, 0x441c, 0x0840, 0x200a, 0x3852,
485 0x2a2e, 0x421c, 0x0640, 0x1e0a, 0x3652,
486 0x2a30, 0x421e, 0x0642, 0x1e0c, 0x3654,
487 0x2c30, 0x441e, 0x0842, 0x200c, 0x3854,
488 0x2e30, 0x461e, 0x0a42, 0x220c, 0x3a54,
489 0x2e32, 0x4620, 0x0a44, 0x220e, 0x3a56,
490 0x2c32, 0x4420, 0x0844, 0x200e, 0x3856,
491 0x2a32, 0x4220, 0x0644, 0x1e0e, 0x3656,
492 0x2a34, 0x4222, 0x0646, 0x1e10, 0x3658,
493 0x2c34, 0x4422, 0x0846, 0x2010, 0x3858,
494 0x2e34, 0x4622, 0x0a46, 0x2210, 0x3a58,
495 0x3024, 0x0012, 0x0c36, 0x2400, 0x3c48,
496 0x3224, 0x0212, 0x0e36, 0x2600, 0x3e48,
497 0x3424, 0x0412, 0x1036, 0x2800, 0x4048,
498 0x3426, 0x0414, 0x1038, 0x2802, 0x404a,
499 0x3226, 0x0214, 0x0e38, 0x2602, 0x3e4a,
500 0x3026, 0x0014, 0x0c38, 0x2402, 0x3c4a,
501 0x3028, 0x0016, 0x0c3a, 0x2404, 0x3c4c,
502 0x3228, 0x0216, 0x0e3a, 0x2604, 0x3e4c,
503 0x3428, 0x0416, 0x103a, 0x2804, 0x404c,
504 0x342a, 0x0418, 0x103c, 0x2806, 0x404e,
505 0x322a, 0x0218, 0x0e3c, 0x2606, 0x3e4e,
506 0x302a, 0x0018, 0x0c3c, 0x2406, 0x3c4e,
507 0x302c, 0x001a, 0x0c3e, 0x2408, 0x3c50,
508 0x322c, 0x021a, 0x0e3e, 0x2608, 0x3e50,
509 0x342c, 0x041a, 0x103e, 0x2808, 0x4050,
510 0x342e, 0x041c, 0x1040, 0x280a, 0x4052,
511 0x322e, 0x021c, 0x0e40, 0x260a, 0x3e52,
512 0x302e, 0x001c, 0x0c40, 0x240a, 0x3c52,
513 0x3030, 0x001e, 0x0c42, 0x240c, 0x3c54,
514 0x3230, 0x021e, 0x0e42, 0x260c, 0x3e54,
515 0x3430, 0x041e, 0x1042, 0x280c, 0x4054,
516 0x3432, 0x0420, 0x1044, 0x280e, 0x4056,
517 0x3232, 0x0220, 0x0e44, 0x260e, 0x3e56,
518 0x3032, 0x0020, 0x0c44, 0x240e, 0x3c56,
519 0x3034, 0x0022, 0x0c46, 0x2410, 0x3c58,
520 0x3234, 0x0222, 0x0e46, 0x2610, 0x3e58,
521 0x3434, 0x0422, 0x1046, 0x2810, 0x4058,
522 0x3624, 0x0612, 0x1236, 0x2a00, 0x4248,
523 0x3824, 0x0812, 0x1436, 0x2c00, 0x4448,
524 0x3a24, 0x0a12, 0x1636, 0x2e00, 0x4648,
525 0x3a26, 0x0a14, 0x1638, 0x2e02, 0x464a,
526 0x3826, 0x0814, 0x1438, 0x2c02, 0x444a,
527 0x3626, 0x0614, 0x1238, 0x2a02, 0x424a,
528 0x3628, 0x0616, 0x123a, 0x2a04, 0x424c,
529 0x3828, 0x0816, 0x143a, 0x2c04, 0x444c,
530 0x3a28, 0x0a16, 0x163a, 0x2e04, 0x464c,
531 0x3a2a, 0x0a18, 0x163c, 0x2e06, 0x464e,
532 0x382a, 0x0818, 0x143c, 0x2c06, 0x444e,
533 0x362a, 0x0618, 0x123c, 0x2a06, 0x424e,
534 0x362c, 0x061a, 0x123e, 0x2a08, 0x4250,
535 0x382c, 0x081a, 0x143e, 0x2c08, 0x4450,
536 0x3a2c, 0x0a1a, 0x163e, 0x2e08, 0x4650,
537 0x3a2e, 0x0a1c, 0x1640, 0x2e0a, 0x4652,
538 0x382e, 0x081c, 0x1440, 0x2c0a, 0x4452,
539 0x362e, 0x061c, 0x1240, 0x2a0a, 0x4252,
540 0x3630, 0x061e, 0x1242, 0x2a0c, 0x4254,
541 0x3830, 0x081e, 0x1442, 0x2c0c, 0x4454,
542 0x3a30, 0x0a1e, 0x1642, 0x2e0c, 0x4654,
543 0x3a32, 0x0a20, 0x1644, 0x2e0e, 0x4656,
544 0x3832, 0x0820, 0x1444, 0x2c0e, 0x4456,
545 0x3632, 0x0620, 0x1244, 0x2a0e, 0x4256,
546 0x3634, 0x0622, 0x1246, 0x2a10, 0x4258,
547 0x3834, 0x0822, 0x1446, 0x2c10, 0x4458,
548 0x3a34, 0x0a22, 0x1646, 0x2e10, 0x4658,
549 0x3c24, 0x0c12, 0x1836, 0x3000, 0x0048,
550 0x3e24, 0x0e12, 0x1a36, 0x3200, 0x0248,
551 0x4024, 0x1012, 0x1c36, 0x3400, 0x0448,
552 0x4026, 0x1014, 0x1c38, 0x3402, 0x044a,
553 0x3e26, 0x0e14, 0x1a38, 0x3202, 0x024a,
554 0x3c26, 0x0c14, 0x1838, 0x3002, 0x004a,
555 0x3c28, 0x0c16, 0x183a, 0x3004, 0x004c,
556 0x3e28, 0x0e16, 0x1a3a, 0x3204, 0x024c,
557 0x4028, 0x1016, 0x1c3a, 0x3404, 0x044c,
558 0x402a, 0x1018, 0x1c3c, 0x3406, 0x044e,
559 0x3e2a, 0x0e18, 0x1a3c, 0x3206, 0x024e,
560 0x3c2a, 0x0c18, 0x183c, 0x3006, 0x004e,
561 0x3c2c, 0x0c1a, 0x183e, 0x3008, 0x0050,
562 0x3e2c, 0x0e1a, 0x1a3e, 0x3208, 0x0250,
563 0x402c, 0x101a, 0x1c3e, 0x3408, 0x0450,
564 0x402e, 0x101c, 0x1c40, 0x340a, 0x0452,
565 0x3e2e, 0x0e1c, 0x1a40, 0x320a, 0x0252,
566 0x3c2e, 0x0c1c, 0x1840, 0x300a, 0x0052,
567 0x3c30, 0x0c1e, 0x1842, 0x300c, 0x0054,
568 0x3e30, 0x0e1e, 0x1a42, 0x320c, 0x0254,
569 0x4030, 0x101e, 0x1c42, 0x340c, 0x0454,
570 0x4032, 0x1020, 0x1c44, 0x340e, 0x0456,
571 0x3e32, 0x0e20, 0x1a44, 0x320e, 0x0256,
572 0x3c32, 0x0c20, 0x1844, 0x300e, 0x0056,
573 0x3c34, 0x0c22, 0x1846, 0x3010, 0x0058,
574 0x3e34, 0x0e22, 0x1a46, 0x3210, 0x0258,
575 0x4034, 0x1022, 0x1c46, 0x3410, 0x0458,
576 0x4224, 0x1212, 0x1e36, 0x3600, 0x0648,
577 0x4424, 0x1412, 0x2036, 0x3800, 0x0848,
578 0x4624, 0x1612, 0x2236, 0x3a00, 0x0a48,
579 0x4626, 0x1614, 0x2238, 0x3a02, 0x0a4a,
580 0x4426, 0x1414, 0x2038, 0x3802, 0x084a,
581 0x4226, 0x1214, 0x1e38, 0x3602, 0x064a,
582 0x4228, 0x1216, 0x1e3a, 0x3604, 0x064c,
583 0x4428, 0x1416, 0x203a, 0x3804, 0x084c,
584 0x4628, 0x1616, 0x223a, 0x3a04, 0x0a4c,
585 0x462a, 0x1618, 0x223c, 0x3a06, 0x0a4e,
586 0x442a, 0x1418, 0x203c, 0x3806, 0x084e,
587 0x422a, 0x1218, 0x1e3c, 0x3606, 0x064e,
588 0x422c, 0x121a, 0x1e3e, 0x3608, 0x0650,
589 0x442c, 0x141a, 0x203e, 0x3808, 0x0850,
590 0x462c, 0x161a, 0x223e, 0x3a08, 0x0a50,
591 0x462e, 0x161c, 0x2240, 0x3a0a, 0x0a52,
592 0x442e, 0x141c, 0x2040, 0x380a, 0x0852,
593 0x422e, 0x121c, 0x1e40, 0x360a, 0x0652,
594 0x4230, 0x121e, 0x1e42, 0x360c, 0x0654,
595 0x4430, 0x141e, 0x2042, 0x380c, 0x0854,
596 0x4630, 0x161e, 0x2242, 0x3a0c, 0x0a54,
597 0x4632, 0x1620, 0x2244, 0x3a0e, 0x0a56,
598 0x4432, 0x1420, 0x2044, 0x380e, 0x0856,
599 0x4232, 0x1220, 0x1e44, 0x360e, 0x0656,
600 0x4234, 0x1222, 0x1e46, 0x3610, 0x0658,
601 0x4434, 0x1422, 0x2046, 0x3810, 0x0858,
602 0x4634, 0x1622, 0x2246, 0x3a10, 0x0a58,
603 0x0024, 0x1812, 0x2436, 0x3c00, 0x0c48,
604 0x0224, 0x1a12, 0x2636, 0x3e00, 0x0e48,
605 0x0424, 0x1c12, 0x2836, 0x4000, 0x1048,
606 0x0426, 0x1c14, 0x2838, 0x4002, 0x104a,
607 0x0226, 0x1a14, 0x2638, 0x3e02, 0x0e4a,
608 0x0026, 0x1814, 0x2438, 0x3c02, 0x0c4a,
609 0x0028, 0x1816, 0x243a, 0x3c04, 0x0c4c,
610 0x0228, 0x1a16, 0x263a, 0x3e04, 0x0e4c,
611 0x0428, 0x1c16, 0x283a, 0x4004, 0x104c,
612 0x042a, 0x1c18, 0x283c, 0x4006, 0x104e,
613 0x022a, 0x1a18, 0x263c, 0x3e06, 0x0e4e,
614 0x002a, 0x1818, 0x243c, 0x3c06, 0x0c4e,
615 0x002c, 0x181a, 0x243e, 0x3c08, 0x0c50,
616 0x022c, 0x1a1a, 0x263e, 0x3e08, 0x0e50,
617 0x042c, 0x1c1a, 0x283e, 0x4008, 0x1050,
618 0x042e, 0x1c1c, 0x2840, 0x400a, 0x1052,
619 0x022e, 0x1a1c, 0x2640, 0x3e0a, 0x0e52,
620 0x002e, 0x181c, 0x2440, 0x3c0a, 0x0c52,
621 0x0030, 0x181e, 0x2442, 0x3c0c, 0x0c54,
622 0x0230, 0x1a1e, 0x2642, 0x3e0c, 0x0e54,
623 0x0430, 0x1c1e, 0x2842, 0x400c, 0x1054,
624 0x0432, 0x1c20, 0x2844, 0x400e, 0x1056,
625 0x0232, 0x1a20, 0x2644, 0x3e0e, 0x0e56,
626 0x0032, 0x1820, 0x2444, 0x3c0e, 0x0c56,
627 0x0034, 0x1822, 0x2446, 0x3c10, 0x0c58,
628 0x0234, 0x1a22, 0x2646, 0x3e10, 0x0e58,
629 0x0434, 0x1c22, 0x2846, 0x4010, 0x1058,
630 0x0624, 0x1e12, 0x2a36, 0x4200, 0x1248,
631 0x0824, 0x2012, 0x2c36, 0x4400, 0x1448,
632 0x0a24, 0x2212, 0x2e36, 0x4600, 0x1648,
633 0x0a26, 0x2214, 0x2e38, 0x4602, 0x164a,
634 0x0826, 0x2014, 0x2c38, 0x4402, 0x144a,
635 0x0626, 0x1e14, 0x2a38, 0x4202, 0x124a,
636 0x0628, 0x1e16, 0x2a3a, 0x4204, 0x124c,
637 0x0828, 0x2016, 0x2c3a, 0x4404, 0x144c,
638 0x0a28, 0x2216, 0x2e3a, 0x4604, 0x164c,
639 0x0a2a, 0x2218, 0x2e3c, 0x4606, 0x164e,
640 0x082a, 0x2018, 0x2c3c, 0x4406, 0x144e,
641 0x062a, 0x1e18, 0x2a3c, 0x4206, 0x124e,
642 0x062c, 0x1e1a, 0x2a3e, 0x4208, 0x1250,
643 0x082c, 0x201a, 0x2c3e, 0x4408, 0x1450,
644 0x0a2c, 0x221a, 0x2e3e, 0x4608, 0x1650,
645 0x0a2e, 0x221c, 0x2e40, 0x460a, 0x1652,
646 0x082e, 0x201c, 0x2c40, 0x440a, 0x1452,
647 0x062e, 0x1e1c, 0x2a40, 0x420a, 0x1252,
648 0x0630, 0x1e1e, 0x2a42, 0x420c, 0x1254,
649 0x0830, 0x201e, 0x2c42, 0x440c, 0x1454,
650 0x0a30, 0x221e, 0x2e42, 0x460c, 0x1654,
651 0x0a32, 0x2220, 0x2e44, 0x460e, 0x1656,
652 0x0832, 0x2020, 0x2c44, 0x440e, 0x1456,
653 0x0632, 0x1e20, 0x2a44, 0x420e, 0x1256,
654 0x0634, 0x1e22, 0x2a46, 0x4210, 0x1258,
655 0x0834, 0x2022, 0x2c46, 0x4410, 0x1458,
656 0x0a34, 0x2222, 0x2e46, 0x4610, 0x1658,
657 };
658
659 static const uint16_t dv_place_411P[1620] = {
660 0x0c24, 0x2710, 0x3334, 0x0000, 0x1848,
661 0x0d24, 0x2810, 0x3434, 0x0100, 0x1948,
662 0x0e24, 0x2910, 0x3534, 0x0200, 0x1a48,
663 0x0f24, 0x2914, 0x3538, 0x0300, 0x1b48,
664 0x1024, 0x2814, 0x3438, 0x0400, 0x1c48,
665 0x1124, 0x2714, 0x3338, 0x0500, 0x1d48,
666 0x1128, 0x2614, 0x3238, 0x0504, 0x1d4c,
667 0x1028, 0x2514, 0x3138, 0x0404, 0x1c4c,
668 0x0f28, 0x2414, 0x3038, 0x0304, 0x1b4c,
669 0x0e28, 0x2418, 0x303c, 0x0204, 0x1a4c,
670 0x0d28, 0x2518, 0x313c, 0x0104, 0x194c,
671 0x0c28, 0x2618, 0x323c, 0x0004, 0x184c,
672 0x0c2c, 0x2718, 0x333c, 0x0008, 0x1850,
673 0x0d2c, 0x2818, 0x343c, 0x0108, 0x1950,
674 0x0e2c, 0x2918, 0x353c, 0x0208, 0x1a50,
675 0x0f2c, 0x291c, 0x3540, 0x0308, 0x1b50,
676 0x102c, 0x281c, 0x3440, 0x0408, 0x1c50,
677 0x112c, 0x271c, 0x3340, 0x0508, 0x1d50,
678 0x1130, 0x261c, 0x3240, 0x050c, 0x1d54,
679 0x1030, 0x251c, 0x3140, 0x040c, 0x1c54,
680 0x0f30, 0x241c, 0x3040, 0x030c, 0x1b54,
681 0x0e30, 0x2420, 0x3044, 0x020c, 0x1a54,
682 0x0d30, 0x2520, 0x3144, 0x010c, 0x1954,
683 0x0c30, 0x2620, 0x3244, 0x000c, 0x1854,
684 0x0c34, 0x2720, 0x3344, 0x0010, 0x1858,
685 0x0d34, 0x2820, 0x3444, 0x0110, 0x1a58,
686 0x0e34, 0x2920, 0x3544, 0x0210, 0x1c58,
687 0x1224, 0x2d10, 0x3934, 0x0600, 0x1e48,
688 0x1324, 0x2e10, 0x3a34, 0x0700, 0x1f48,
689 0x1424, 0x2f10, 0x3b34, 0x0800, 0x2048,
690 0x1524, 0x2f14, 0x3b38, 0x0900, 0x2148,
691 0x1624, 0x2e14, 0x3a38, 0x0a00, 0x2248,
692 0x1724, 0x2d14, 0x3938, 0x0b00, 0x2348,
693 0x1728, 0x2c14, 0x3838, 0x0b04, 0x234c,
694 0x1628, 0x2b14, 0x3738, 0x0a04, 0x224c,
695 0x1528, 0x2a14, 0x3638, 0x0904, 0x214c,
696 0x1428, 0x2a18, 0x363c, 0x0804, 0x204c,
697 0x1328, 0x2b18, 0x373c, 0x0704, 0x1f4c,
698 0x1228, 0x2c18, 0x383c, 0x0604, 0x1e4c,
699 0x122c, 0x2d18, 0x393c, 0x0608, 0x1e50,
700 0x132c, 0x2e18, 0x3a3c, 0x0708, 0x1f50,
701 0x142c, 0x2f18, 0x3b3c, 0x0808, 0x2050,
702 0x152c, 0x2f1c, 0x3b40, 0x0908, 0x2150,
703 0x162c, 0x2e1c, 0x3a40, 0x0a08, 0x2250,
704 0x172c, 0x2d1c, 0x3940, 0x0b08, 0x2350,
705 0x1730, 0x2c1c, 0x3840, 0x0b0c, 0x2354,
706 0x1630, 0x2b1c, 0x3740, 0x0a0c, 0x2254,
707 0x1530, 0x2a1c, 0x3640, 0x090c, 0x2154,
708 0x1430, 0x2a20, 0x3644, 0x080c, 0x2054,
709 0x1330, 0x2b20, 0x3744, 0x070c, 0x1f54,
710 0x1230, 0x2c20, 0x3844, 0x060c, 0x1e54,
711 0x1234, 0x2d20, 0x3944, 0x0610, 0x1e58,
712 0x1334, 0x2e20, 0x3a44, 0x0710, 0x2058,
713 0x1434, 0x2f20, 0x3b44, 0x0810, 0x2258,
714 0x1824, 0x3310, 0x3f34, 0x0c00, 0x2448,
715 0x1924, 0x3410, 0x4034, 0x0d00, 0x2548,
716 0x1a24, 0x3510, 0x4134, 0x0e00, 0x2648,
717 0x1b24, 0x3514, 0x4138, 0x0f00, 0x2748,
718 0x1c24, 0x3414, 0x4038, 0x1000, 0x2848,
719 0x1d24, 0x3314, 0x3f38, 0x1100, 0x2948,
720 0x1d28, 0x3214, 0x3e38, 0x1104, 0x294c,
721 0x1c28, 0x3114, 0x3d38, 0x1004, 0x284c,
722 0x1b28, 0x3014, 0x3c38, 0x0f04, 0x274c,
723 0x1a28, 0x3018, 0x3c3c, 0x0e04, 0x264c,
724 0x1928, 0x3118, 0x3d3c, 0x0d04, 0x254c,
725 0x1828, 0x3218, 0x3e3c, 0x0c04, 0x244c,
726 0x182c, 0x3318, 0x3f3c, 0x0c08, 0x2450,
727 0x192c, 0x3418, 0x403c, 0x0d08, 0x2550,
728 0x1a2c, 0x3518, 0x413c, 0x0e08, 0x2650,
729 0x1b2c, 0x351c, 0x4140, 0x0f08, 0x2750,
730 0x1c2c, 0x341c, 0x4040, 0x1008, 0x2850,
731 0x1d2c, 0x331c, 0x3f40, 0x1108, 0x2950,
732 0x1d30, 0x321c, 0x3e40, 0x110c, 0x2954,
733 0x1c30, 0x311c, 0x3d40, 0x100c, 0x2854,
734 0x1b30, 0x301c, 0x3c40, 0x0f0c, 0x2754,
735 0x1a30, 0x3020, 0x3c44, 0x0e0c, 0x2654,
736 0x1930, 0x3120, 0x3d44, 0x0d0c, 0x2554,
737 0x1830, 0x3220, 0x3e44, 0x0c0c, 0x2454,
738 0x1834, 0x3320, 0x3f44, 0x0c10, 0x2458,
739 0x1934, 0x3420, 0x4044, 0x0d10, 0x2658,
740 0x1a34, 0x3520, 0x4144, 0x0e10, 0x2858,
741 0x1e24, 0x3910, 0x4534, 0x1200, 0x2a48,
742 0x1f24, 0x3a10, 0x4634, 0x1300, 0x2b48,
743 0x2024, 0x3b10, 0x4734, 0x1400, 0x2c48,
744 0x2124, 0x3b14, 0x4738, 0x1500, 0x2d48,
745 0x2224, 0x3a14, 0x4638, 0x1600, 0x2e48,
746 0x2324, 0x3914, 0x4538, 0x1700, 0x2f48,
747 0x2328, 0x3814, 0x4438, 0x1704, 0x2f4c,
748 0x2228, 0x3714, 0x4338, 0x1604, 0x2e4c,
749 0x2128, 0x3614, 0x4238, 0x1504, 0x2d4c,
750 0x2028, 0x3618, 0x423c, 0x1404, 0x2c4c,
751 0x1f28, 0x3718, 0x433c, 0x1304, 0x2b4c,
752 0x1e28, 0x3818, 0x443c, 0x1204, 0x2a4c,
753 0x1e2c, 0x3918, 0x453c, 0x1208, 0x2a50,
754 0x1f2c, 0x3a18, 0x463c, 0x1308, 0x2b50,
755 0x202c, 0x3b18, 0x473c, 0x1408, 0x2c50,
756 0x212c, 0x3b1c, 0x4740, 0x1508, 0x2d50,
757 0x222c, 0x3a1c, 0x4640, 0x1608, 0x2e50,
758 0x232c, 0x391c, 0x4540, 0x1708, 0x2f50,
759 0x2330, 0x381c, 0x4440, 0x170c, 0x2f54,
760 0x2230, 0x371c, 0x4340, 0x160c, 0x2e54,
761 0x2130, 0x361c, 0x4240, 0x150c, 0x2d54,
762 0x2030, 0x3620, 0x4244, 0x140c, 0x2c54,
763 0x1f30, 0x3720, 0x4344, 0x130c, 0x2b54,
764 0x1e30, 0x3820, 0x4444, 0x120c, 0x2a54,
765 0x1e34, 0x3920, 0x4544, 0x1210, 0x2a58,
766 0x1f34, 0x3a20, 0x4644, 0x1310, 0x2c58,
767 0x2034, 0x3b20, 0x4744, 0x1410, 0x2e58,
768 0x2424, 0x3f10, 0x0334, 0x1800, 0x3048,
769 0x2524, 0x4010, 0x0434, 0x1900, 0x3148,
770 0x2624, 0x4110, 0x0534, 0x1a00, 0x3248,
771 0x2724, 0x4114, 0x0538, 0x1b00, 0x3348,
772 0x2824, 0x4014, 0x0438, 0x1c00, 0x3448,
773 0x2924, 0x3f14, 0x0338, 0x1d00, 0x3548,
774 0x2928, 0x3e14, 0x0238, 0x1d04, 0x354c,
775 0x2828, 0x3d14, 0x0138, 0x1c04, 0x344c,
776 0x2728, 0x3c14, 0x0038, 0x1b04, 0x334c,
777 0x2628, 0x3c18, 0x003c, 0x1a04, 0x324c,
778 0x2528, 0x3d18, 0x013c, 0x1904, 0x314c,
779 0x2428, 0x3e18, 0x023c, 0x1804, 0x304c,
780 0x242c, 0x3f18, 0x033c, 0x1808, 0x3050,
781 0x252c, 0x4018, 0x043c, 0x1908, 0x3150,
782 0x262c, 0x4118, 0x053c, 0x1a08, 0x3250,
783 0x272c, 0x411c, 0x0540, 0x1b08, 0x3350,
784 0x282c, 0x401c, 0x0440, 0x1c08, 0x3450,
785 0x292c, 0x3f1c, 0x0340, 0x1d08, 0x3550,
786 0x2930, 0x3e1c, 0x0240, 0x1d0c, 0x3554,
787 0x2830, 0x3d1c, 0x0140, 0x1c0c, 0x3454,
788 0x2730, 0x3c1c, 0x0040, 0x1b0c, 0x3354,
789 0x2630, 0x3c20, 0x0044, 0x1a0c, 0x3254,
790 0x2530, 0x3d20, 0x0144, 0x190c, 0x3154,
791 0x2430, 0x3e20, 0x0244, 0x180c, 0x3054,
792 0x2434, 0x3f20, 0x0344, 0x1810, 0x3058,
793 0x2534, 0x4020, 0x0444, 0x1910, 0x3258,
794 0x2634, 0x4120, 0x0544, 0x1a10, 0x3458,
795 0x2a24, 0x4510, 0x0934, 0x1e00, 0x3648,
796 0x2b24, 0x4610, 0x0a34, 0x1f00, 0x3748,
797 0x2c24, 0x4710, 0x0b34, 0x2000, 0x3848,
798 0x2d24, 0x4714, 0x0b38, 0x2100, 0x3948,
799 0x2e24, 0x4614, 0x0a38, 0x2200, 0x3a48,
800 0x2f24, 0x4514, 0x0938, 0x2300, 0x3b48,
801 0x2f28, 0x4414, 0x0838, 0x2304, 0x3b4c,
802 0x2e28, 0x4314, 0x0738, 0x2204, 0x3a4c,
803 0x2d28, 0x4214, 0x0638, 0x2104, 0x394c,
804 0x2c28, 0x4218, 0x063c, 0x2004, 0x384c,
805 0x2b28, 0x4318, 0x073c, 0x1f04, 0x374c,
806 0x2a28, 0x4418, 0x083c, 0x1e04, 0x364c,
807 0x2a2c, 0x4518, 0x093c, 0x1e08, 0x3650,
808 0x2b2c, 0x4618, 0x0a3c, 0x1f08, 0x3750,
809 0x2c2c, 0x4718, 0x0b3c, 0x2008, 0x3850,
810 0x2d2c, 0x471c, 0x0b40, 0x2108, 0x3950,
811 0x2e2c, 0x461c, 0x0a40, 0x2208, 0x3a50,
812 0x2f2c, 0x451c, 0x0940, 0x2308, 0x3b50,
813 0x2f30, 0x441c, 0x0840, 0x230c, 0x3b54,
814 0x2e30, 0x431c, 0x0740, 0x220c, 0x3a54,
815 0x2d30, 0x421c, 0x0640, 0x210c, 0x3954,
816 0x2c30, 0x4220, 0x0644, 0x200c, 0x3854,
817 0x2b30, 0x4320, 0x0744, 0x1f0c, 0x3754,
818 0x2a30, 0x4420, 0x0844, 0x1e0c, 0x3654,
819 0x2a34, 0x4520, 0x0944, 0x1e10, 0x3658,
820 0x2b34, 0x4620, 0x0a44, 0x1f10, 0x3858,
821 0x2c34, 0x4720, 0x0b44, 0x2010, 0x3a58,
822 0x3024, 0x0310, 0x0f34, 0x2400, 0x3c48,
823 0x3124, 0x0410, 0x1034, 0x2500, 0x3d48,
824 0x3224, 0x0510, 0x1134, 0x2600, 0x3e48,
825 0x3324, 0x0514, 0x1138, 0x2700, 0x3f48,
826 0x3424, 0x0414, 0x1038, 0x2800, 0x4048,
827 0x3524, 0x0314, 0x0f38, 0x2900, 0x4148,
828 0x3528, 0x0214, 0x0e38, 0x2904, 0x414c,
829 0x3428, 0x0114, 0x0d38, 0x2804, 0x404c,
830 0x3328, 0x0014, 0x0c38, 0x2704, 0x3f4c,
831 0x3228, 0x0018, 0x0c3c, 0x2604, 0x3e4c,
832 0x3128, 0x0118, 0x0d3c, 0x2504, 0x3d4c,
833 0x3028, 0x0218, 0x0e3c, 0x2404, 0x3c4c,
834 0x302c, 0x0318, 0x0f3c, 0x2408, 0x3c50,
835 0x312c, 0x0418, 0x103c, 0x2508, 0x3d50,
836 0x322c, 0x0518, 0x113c, 0x2608, 0x3e50,
837 0x332c, 0x051c, 0x1140, 0x2708, 0x3f50,
838 0x342c, 0x041c, 0x1040, 0x2808, 0x4050,
839 0x352c, 0x031c, 0x0f40, 0x2908, 0x4150,
840 0x3530, 0x021c, 0x0e40, 0x290c, 0x4154,
841 0x3430, 0x011c, 0x0d40, 0x280c, 0x4054,
842 0x3330, 0x001c, 0x0c40, 0x270c, 0x3f54,
843 0x3230, 0x0020, 0x0c44, 0x260c, 0x3e54,
844 0x3130, 0x0120, 0x0d44, 0x250c, 0x3d54,
845 0x3030, 0x0220, 0x0e44, 0x240c, 0x3c54,
846 0x3034, 0x0320, 0x0f44, 0x2410, 0x3c58,
847 0x3134, 0x0420, 0x1044, 0x2510, 0x3e58,
848 0x3234, 0x0520, 0x1144, 0x2610, 0x4058,
849 0x3624, 0x0910, 0x1534, 0x2a00, 0x4248,
850 0x3724, 0x0a10, 0x1634, 0x2b00, 0x4348,
851 0x3824, 0x0b10, 0x1734, 0x2c00, 0x4448,
852 0x3924, 0x0b14, 0x1738, 0x2d00, 0x4548,
853 0x3a24, 0x0a14, 0x1638, 0x2e00, 0x4648,
854 0x3b24, 0x0914, 0x1538, 0x2f00, 0x4748,
855 0x3b28, 0x0814, 0x1438, 0x2f04, 0x474c,
856 0x3a28, 0x0714, 0x1338, 0x2e04, 0x464c,
857 0x3928, 0x0614, 0x1238, 0x2d04, 0x454c,
858 0x3828, 0x0618, 0x123c, 0x2c04, 0x444c,
859 0x3728, 0x0718, 0x133c, 0x2b04, 0x434c,
860 0x3628, 0x0818, 0x143c, 0x2a04, 0x424c,
861 0x362c, 0x0918, 0x153c, 0x2a08, 0x4250,
862 0x372c, 0x0a18, 0x163c, 0x2b08, 0x4350,
863 0x382c, 0x0b18, 0x173c, 0x2c08, 0x4450,
864 0x392c, 0x0b1c, 0x1740, 0x2d08, 0x4550,
865 0x3a2c, 0x0a1c, 0x1640, 0x2e08, 0x4650,
866 0x3b2c, 0x091c, 0x1540, 0x2f08, 0x4750,
867 0x3b30, 0x081c, 0x1440, 0x2f0c, 0x4754,
868 0x3a30, 0x071c, 0x1340, 0x2e0c, 0x4654,
869 0x3930, 0x061c, 0x1240, 0x2d0c, 0x4554,
870 0x3830, 0x0620, 0x1244, 0x2c0c, 0x4454,
871 0x3730, 0x0720, 0x1344, 0x2b0c, 0x4354,
872 0x3630, 0x0820, 0x1444, 0x2a0c, 0x4254,
873 0x3634, 0x0920, 0x1544, 0x2a10, 0x4258,
874 0x3734, 0x0a20, 0x1644, 0x2b10, 0x4458,
875 0x3834, 0x0b20, 0x1744, 0x2c10, 0x4658,
876 0x3c24, 0x0f10, 0x1b34, 0x3000, 0x0048,
877 0x3d24, 0x1010, 0x1c34, 0x3100, 0x0148,
878 0x3e24, 0x1110, 0x1d34, 0x3200, 0x0248,
879 0x3f24, 0x1114, 0x1d38, 0x3300, 0x0348,
880 0x4024, 0x1014, 0x1c38, 0x3400, 0x0448,
881 0x4124, 0x0f14, 0x1b38, 0x3500, 0x0548,
882 0x4128, 0x0e14, 0x1a38, 0x3504, 0x054c,
883 0x4028, 0x0d14, 0x1938, 0x3404, 0x044c,
884 0x3f28, 0x0c14, 0x1838, 0x3304, 0x034c,
885 0x3e28, 0x0c18, 0x183c, 0x3204, 0x024c,
886 0x3d28, 0x0d18, 0x193c, 0x3104, 0x014c,
887 0x3c28, 0x0e18, 0x1a3c, 0x3004, 0x004c,
888 0x3c2c, 0x0f18, 0x1b3c, 0x3008, 0x0050,
889 0x3d2c, 0x1018, 0x1c3c, 0x3108, 0x0150,
890 0x3e2c, 0x1118, 0x1d3c, 0x3208, 0x0250,
891 0x3f2c, 0x111c, 0x1d40, 0x3308, 0x0350,
892 0x402c, 0x101c, 0x1c40, 0x3408, 0x0450,
893 0x412c, 0x0f1c, 0x1b40, 0x3508, 0x0550,
894 0x4130, 0x0e1c, 0x1a40, 0x350c, 0x0554,
895 0x4030, 0x0d1c, 0x1940, 0x340c, 0x0454,
896 0x3f30, 0x0c1c, 0x1840, 0x330c, 0x0354,
897 0x3e30, 0x0c20, 0x1844, 0x320c, 0x0254,
898 0x3d30, 0x0d20, 0x1944, 0x310c, 0x0154,
899 0x3c30, 0x0e20, 0x1a44, 0x300c, 0x0054,
900 0x3c34, 0x0f20, 0x1b44, 0x3010, 0x0058,
901 0x3d34, 0x1020, 0x1c44, 0x3110, 0x0258,
902 0x3e34, 0x1120, 0x1d44, 0x3210, 0x0458,
903 0x4224, 0x1510, 0x2134, 0x3600, 0x0648,
904 0x4324, 0x1610, 0x2234, 0x3700, 0x0748,
905 0x4424, 0x1710, 0x2334, 0x3800, 0x0848,
906 0x4524, 0x1714, 0x2338, 0x3900, 0x0948,
907 0x4624, 0x1614, 0x2238, 0x3a00, 0x0a48,
908 0x4724, 0x1514, 0x2138, 0x3b00, 0x0b48,
909 0x4728, 0x1414, 0x2038, 0x3b04, 0x0b4c,
910 0x4628, 0x1314, 0x1f38, 0x3a04, 0x0a4c,
911 0x4528, 0x1214, 0x1e38, 0x3904, 0x094c,
912 0x4428, 0x1218, 0x1e3c, 0x3804, 0x084c,
913 0x4328, 0x1318, 0x1f3c, 0x3704, 0x074c,
914 0x4228, 0x1418, 0x203c, 0x3604, 0x064c,
915 0x422c, 0x1518, 0x213c, 0x3608, 0x0650,
916 0x432c, 0x1618, 0x223c, 0x3708, 0x0750,
917 0x442c, 0x1718, 0x233c, 0x3808, 0x0850,
918 0x452c, 0x171c, 0x2340, 0x3908, 0x0950,
919 0x462c, 0x161c, 0x2240, 0x3a08, 0x0a50,
920 0x472c, 0x151c, 0x2140, 0x3b08, 0x0b50,
921 0x4730, 0x141c, 0x2040, 0x3b0c, 0x0b54,
922 0x4630, 0x131c, 0x1f40, 0x3a0c, 0x0a54,
923 0x4530, 0x121c, 0x1e40, 0x390c, 0x0954,
924 0x4430, 0x1220, 0x1e44, 0x380c, 0x0854,
925 0x4330, 0x1320, 0x1f44, 0x370c, 0x0754,
926 0x4230, 0x1420, 0x2044, 0x360c, 0x0654,
927 0x4234, 0x1520, 0x2144, 0x3610, 0x0658,
928 0x4334, 0x1620, 0x2244, 0x3710, 0x0858,
929 0x4434, 0x1720, 0x2344, 0x3810, 0x0a58,
930 0x0024, 0x1b10, 0x2734, 0x3c00, 0x0c48,
931 0x0124, 0x1c10, 0x2834, 0x3d00, 0x0d48,
932 0x0224, 0x1d10, 0x2934, 0x3e00, 0x0e48,
933 0x0324, 0x1d14, 0x2938, 0x3f00, 0x0f48,
934 0x0424, 0x1c14, 0x2838, 0x4000, 0x1048,
935 0x0524, 0x1b14, 0x2738, 0x4100, 0x1148,
936 0x0528, 0x1a14, 0x2638, 0x4104, 0x114c,
937 0x0428, 0x1914, 0x2538, 0x4004, 0x104c,
938 0x0328, 0x1814, 0x2438, 0x3f04, 0x0f4c,
939 0x0228, 0x1818, 0x243c, 0x3e04, 0x0e4c,
940 0x0128, 0x1918, 0x253c, 0x3d04, 0x0d4c,
941 0x0028, 0x1a18, 0x263c, 0x3c04, 0x0c4c,
942 0x002c, 0x1b18, 0x273c, 0x3c08, 0x0c50,
943 0x012c, 0x1c18, 0x283c, 0x3d08, 0x0d50,
944 0x022c, 0x1d18, 0x293c, 0x3e08, 0x0e50,
945 0x032c, 0x1d1c, 0x2940, 0x3f08, 0x0f50,
946 0x042c, 0x1c1c, 0x2840, 0x4008, 0x1050,
947 0x052c, 0x1b1c, 0x2740, 0x4108, 0x1150,
948 0x0530, 0x1a1c, 0x2640, 0x410c, 0x1154,
949 0x0430, 0x191c, 0x2540, 0x400c, 0x1054,
950 0x0330, 0x181c, 0x2440, 0x3f0c, 0x0f54,
951 0x0230, 0x1820, 0x2444, 0x3e0c, 0x0e54,
952 0x0130, 0x1920, 0x2544, 0x3d0c, 0x0d54,
953 0x0030, 0x1a20, 0x2644, 0x3c0c, 0x0c54,
954 0x0034, 0x1b20, 0x2744, 0x3c10, 0x0c58,
955 0x0134, 0x1c20, 0x2844, 0x3d10, 0x0e58,
956 0x0234, 0x1d20, 0x2944, 0x3e10, 0x1058,
957 0x0624, 0x2110, 0x2d34, 0x4200, 0x1248,
958 0x0724, 0x2210, 0x2e34, 0x4300, 0x1348,
959 0x0824, 0x2310, 0x2f34, 0x4400, 0x1448,
960 0x0924, 0x2314, 0x2f38, 0x4500, 0x1548,
961 0x0a24, 0x2214, 0x2e38, 0x4600, 0x1648,
962 0x0b24, 0x2114, 0x2d38, 0x4700, 0x1748,
963 0x0b28, 0x2014, 0x2c38, 0x4704, 0x174c,
964 0x0a28, 0x1f14, 0x2b38, 0x4604, 0x164c,
965 0x0928, 0x1e14, 0x2a38, 0x4504, 0x154c,
966 0x0828, 0x1e18, 0x2a3c, 0x4404, 0x144c,
967 0x0728, 0x1f18, 0x2b3c, 0x4304, 0x134c,
968 0x0628, 0x2018, 0x2c3c, 0x4204, 0x124c,
969 0x062c, 0x2118, 0x2d3c, 0x4208, 0x1250,
970 0x072c, 0x2218, 0x2e3c, 0x4308, 0x1350,
971 0x082c, 0x2318, 0x2f3c, 0x4408, 0x1450,
972 0x092c, 0x231c, 0x2f40, 0x4508, 0x1550,
973 0x0a2c, 0x221c, 0x2e40, 0x4608, 0x1650,
974 0x0b2c, 0x211c, 0x2d40, 0x4708, 0x1750,
975 0x0b30, 0x201c, 0x2c40, 0x470c, 0x1754,
976 0x0a30, 0x1f1c, 0x2b40, 0x460c, 0x1654,
977 0x0930, 0x1e1c, 0x2a40, 0x450c, 0x1554,
978 0x0830, 0x1e20, 0x2a44, 0x440c, 0x1454,
979 0x0730, 0x1f20, 0x2b44, 0x430c, 0x1354,
980 0x0630, 0x2020, 0x2c44, 0x420c, 0x1254,
981 0x0634, 0x2120, 0x2d44, 0x4210, 0x1258,
982 0x0734, 0x2220, 0x2e44, 0x4310, 0x1458,
983 0x0834, 0x2320, 0x2f44, 0x4410, 0x1658,
984 };
985
986 static const uint16_t dv_place_411[1350] = {
987 0x0c24, 0x2710, 0x3334, 0x0000, 0x1848,
988 0x0d24, 0x2810, 0x3434, 0x0100, 0x1948,
989 0x0e24, 0x2910, 0x3534, 0x0200, 0x1a48,
990 0x0f24, 0x2914, 0x3538, 0x0300, 0x1b48,
991 0x1024, 0x2814, 0x3438, 0x0400, 0x1c48,
992 0x1124, 0x2714, 0x3338, 0x0500, 0x1d48,
993 0x1128, 0x2614, 0x3238, 0x0504, 0x1d4c,
994 0x1028, 0x2514, 0x3138, 0x0404, 0x1c4c,
995 0x0f28, 0x2414, 0x3038, 0x0304, 0x1b4c,
996 0x0e28, 0x2418, 0x303c, 0x0204, 0x1a4c,
997 0x0d28, 0x2518, 0x313c, 0x0104, 0x194c,
998 0x0c28, 0x2618, 0x323c, 0x0004, 0x184c,
999 0x0c2c, 0x2718, 0x333c, 0x0008, 0x1850,
1000 0x0d2c, 0x2818, 0x343c, 0x0108, 0x1950,
1001 0x0e2c, 0x2918, 0x353c, 0x0208, 0x1a50,
1002 0x0f2c, 0x291c, 0x3540, 0x0308, 0x1b50,
1003 0x102c, 0x281c, 0x3440, 0x0408, 0x1c50,
1004 0x112c, 0x271c, 0x3340, 0x0508, 0x1d50,
1005 0x1130, 0x261c, 0x3240, 0x050c, 0x1d54,
1006 0x1030, 0x251c, 0x3140, 0x040c, 0x1c54,
1007 0x0f30, 0x241c, 0x3040, 0x030c, 0x1b54,
1008 0x0e30, 0x2420, 0x3044, 0x020c, 0x1a54,
1009 0x0d30, 0x2520, 0x3144, 0x010c, 0x1954,
1010 0x0c30, 0x2620, 0x3244, 0x000c, 0x1854,
1011 0x0c34, 0x2720, 0x3344, 0x0010, 0x1858,
1012 0x0d34, 0x2820, 0x3444, 0x0110, 0x1a58,
1013 0x0e34, 0x2920, 0x3544, 0x0210, 0x1c58,
1014 0x1224, 0x2d10, 0x3934, 0x0600, 0x1e48,
1015 0x1324, 0x2e10, 0x3a34, 0x0700, 0x1f48,
1016 0x1424, 0x2f10, 0x3b34, 0x0800, 0x2048,
1017 0x1524, 0x2f14, 0x3b38, 0x0900, 0x2148,
1018 0x1624, 0x2e14, 0x3a38, 0x0a00, 0x2248,
1019 0x1724, 0x2d14, 0x3938, 0x0b00, 0x2348,
1020 0x1728, 0x2c14, 0x3838, 0x0b04, 0x234c,
1021 0x1628, 0x2b14, 0x3738, 0x0a04, 0x224c,
1022 0x1528, 0x2a14, 0x3638, 0x0904, 0x214c,
1023 0x1428, 0x2a18, 0x363c, 0x0804, 0x204c,
1024 0x1328, 0x2b18, 0x373c, 0x0704, 0x1f4c,
1025 0x1228, 0x2c18, 0x383c, 0x0604, 0x1e4c,
1026 0x122c, 0x2d18, 0x393c, 0x0608, 0x1e50,
1027 0x132c, 0x2e18, 0x3a3c, 0x0708, 0x1f50,
1028 0x142c, 0x2f18, 0x3b3c, 0x0808, 0x2050,
1029 0x152c, 0x2f1c, 0x3b40, 0x0908, 0x2150,
1030 0x162c, 0x2e1c, 0x3a40, 0x0a08, 0x2250,
1031 0x172c, 0x2d1c, 0x3940, 0x0b08, 0x2350,
1032 0x1730, 0x2c1c, 0x3840, 0x0b0c, 0x2354,
1033 0x1630, 0x2b1c, 0x3740, 0x0a0c, 0x2254,
1034 0x1530, 0x2a1c, 0x3640, 0x090c, 0x2154,
1035 0x1430, 0x2a20, 0x3644, 0x080c, 0x2054,
1036 0x1330, 0x2b20, 0x3744, 0x070c, 0x1f54,
1037 0x1230, 0x2c20, 0x3844, 0x060c, 0x1e54,
1038 0x1234, 0x2d20, 0x3944, 0x0610, 0x1e58,
1039 0x1334, 0x2e20, 0x3a44, 0x0710, 0x2058,
1040 0x1434, 0x2f20, 0x3b44, 0x0810, 0x2258,
1041 0x1824, 0x3310, 0x0334, 0x0c00, 0x2448,
1042 0x1924, 0x3410, 0x0434, 0x0d00, 0x2548,
1043 0x1a24, 0x3510, 0x0534, 0x0e00, 0x2648,
1044 0x1b24, 0x3514, 0x0538, 0x0f00, 0x2748,
1045 0x1c24, 0x3414, 0x0438, 0x1000, 0x2848,
1046 0x1d24, 0x3314, 0x0338, 0x1100, 0x2948,
1047 0x1d28, 0x3214, 0x0238, 0x1104, 0x294c,
1048 0x1c28, 0x3114, 0x0138, 0x1004, 0x284c,
1049 0x1b28, 0x3014, 0x0038, 0x0f04, 0x274c,
1050 0x1a28, 0x3018, 0x003c, 0x0e04, 0x264c,
1051 0x1928, 0x3118, 0x013c, 0x0d04, 0x254c,
1052 0x1828, 0x3218, 0x023c, 0x0c04, 0x244c,
1053 0x182c, 0x3318, 0x033c, 0x0c08, 0x2450,
1054 0x192c, 0x3418, 0x043c, 0x0d08, 0x2550,
1055 0x1a2c, 0x3518, 0x053c, 0x0e08, 0x2650,
1056 0x1b2c, 0x351c, 0x0540, 0x0f08, 0x2750,
1057 0x1c2c, 0x341c, 0x0440, 0x1008, 0x2850,
1058 0x1d2c, 0x331c, 0x0340, 0x1108, 0x2950,
1059 0x1d30, 0x321c, 0x0240, 0x110c, 0x2954,
1060 0x1c30, 0x311c, 0x0140, 0x100c, 0x2854,
1061 0x1b30, 0x301c, 0x0040, 0x0f0c, 0x2754,
1062 0x1a30, 0x3020, 0x0044, 0x0e0c, 0x2654,
1063 0x1930, 0x3120, 0x0144, 0x0d0c, 0x2554,
1064 0x1830, 0x3220, 0x0244, 0x0c0c, 0x2454,
1065 0x1834, 0x3320, 0x0344, 0x0c10, 0x2458,
1066 0x1934, 0x3420, 0x0444, 0x0d10, 0x2658,
1067 0x1a34, 0x3520, 0x0544, 0x0e10, 0x2858,
1068 0x1e24, 0x3910, 0x0934, 0x1200, 0x2a48,
1069 0x1f24, 0x3a10, 0x0a34, 0x1300, 0x2b48,
1070 0x2024, 0x3b10, 0x0b34, 0x1400, 0x2c48,
1071 0x2124, 0x3b14, 0x0b38, 0x1500, 0x2d48,
1072 0x2224, 0x3a14, 0x0a38, 0x1600, 0x2e48,
1073 0x2324, 0x3914, 0x0938, 0x1700, 0x2f48,
1074 0x2328, 0x3814, 0x0838, 0x1704, 0x2f4c,
1075 0x2228, 0x3714, 0x0738, 0x1604, 0x2e4c,
1076 0x2128, 0x3614, 0x0638, 0x1504, 0x2d4c,
1077 0x2028, 0x3618, 0x063c, 0x1404, 0x2c4c,
1078 0x1f28, 0x3718, 0x073c, 0x1304, 0x2b4c,
1079 0x1e28, 0x3818, 0x083c, 0x1204, 0x2a4c,
1080 0x1e2c, 0x3918, 0x093c, 0x1208, 0x2a50,
1081 0x1f2c, 0x3a18, 0x0a3c, 0x1308, 0x2b50,
1082 0x202c, 0x3b18, 0x0b3c, 0x1408, 0x2c50,
1083 0x212c, 0x3b1c, 0x0b40, 0x1508, 0x2d50,
1084 0x222c, 0x3a1c, 0x0a40, 0x1608, 0x2e50,
1085 0x232c, 0x391c, 0x0940, 0x1708, 0x2f50,
1086 0x2330, 0x381c, 0x0840, 0x170c, 0x2f54,
1087 0x2230, 0x371c, 0x0740, 0x160c, 0x2e54,
1088 0x2130, 0x361c, 0x0640, 0x150c, 0x2d54,
1089 0x2030, 0x3620, 0x0644, 0x140c, 0x2c54,
1090 0x1f30, 0x3720, 0x0744, 0x130c, 0x2b54,
1091 0x1e30, 0x3820, 0x0844, 0x120c, 0x2a54,
1092 0x1e34, 0x3920, 0x0944, 0x1210, 0x2a58,
1093 0x1f34, 0x3a20, 0x0a44, 0x1310, 0x2c58,
1094 0x2034, 0x3b20, 0x0b44, 0x1410, 0x2e58,
1095 0x2424, 0x0310, 0x0f34, 0x1800, 0x3048,
1096 0x2524, 0x0410, 0x1034, 0x1900, 0x3148,
1097 0x2624, 0x0510, 0x1134, 0x1a00, 0x3248,
1098 0x2724, 0x0514, 0x1138, 0x1b00, 0x3348,
1099 0x2824, 0x0414, 0x1038, 0x1c00, 0x3448,
1100 0x2924, 0x0314, 0x0f38, 0x1d00, 0x3548,
1101 0x2928, 0x0214, 0x0e38, 0x1d04, 0x354c,
1102 0x2828, 0x0114, 0x0d38, 0x1c04, 0x344c,
1103 0x2728, 0x0014, 0x0c38, 0x1b04, 0x334c,
1104 0x2628, 0x0018, 0x0c3c, 0x1a04, 0x324c,
1105 0x2528, 0x0118, 0x0d3c, 0x1904, 0x314c,
1106 0x2428, 0x0218, 0x0e3c, 0x1804, 0x304c,
1107 0x242c, 0x0318, 0x0f3c, 0x1808, 0x3050,
1108 0x252c, 0x0418, 0x103c, 0x1908, 0x3150,
1109 0x262c, 0x0518, 0x113c, 0x1a08, 0x3250,
1110 0x272c, 0x051c, 0x1140, 0x1b08, 0x3350,
1111 0x282c, 0x041c, 0x1040, 0x1c08, 0x3450,
1112 0x292c, 0x031c, 0x0f40, 0x1d08, 0x3550,
1113 0x2930, 0x021c, 0x0e40, 0x1d0c, 0x3554,
1114 0x2830, 0x011c, 0x0d40, 0x1c0c, 0x3454,
1115 0x2730, 0x001c, 0x0c40, 0x1b0c, 0x3354,
1116 0x2630, 0x0020, 0x0c44, 0x1a0c, 0x3254,
1117 0x2530, 0x0120, 0x0d44, 0x190c, 0x3154,
1118 0x2430, 0x0220, 0x0e44, 0x180c, 0x3054,
1119 0x2434, 0x0320, 0x0f44, 0x1810, 0x3058,
1120 0x2534, 0x0420, 0x1044, 0x1910, 0x3258,
1121 0x2634, 0x0520, 0x1144, 0x1a10, 0x3458,
1122 0x2a24, 0x0910, 0x1534, 0x1e00, 0x3648,
1123 0x2b24, 0x0a10, 0x1634, 0x1f00, 0x3748,
1124 0x2c24, 0x0b10, 0x1734, 0x2000, 0x3848,
1125 0x2d24, 0x0b14, 0x1738, 0x2100, 0x3948,
1126 0x2e24, 0x0a14, 0x1638, 0x2200, 0x3a48,
1127 0x2f24, 0x0914, 0x1538, 0x2300, 0x3b48,
1128 0x2f28, 0x0814, 0x1438, 0x2304, 0x3b4c,
1129 0x2e28, 0x0714, 0x1338, 0x2204, 0x3a4c,
1130 0x2d28, 0x0614, 0x1238, 0x2104, 0x394c,
1131 0x2c28, 0x0618, 0x123c, 0x2004, 0x384c,
1132 0x2b28, 0x0718, 0x133c, 0x1f04, 0x374c,
1133 0x2a28, 0x0818, 0x143c, 0x1e04, 0x364c,
1134 0x2a2c, 0x0918, 0x153c, 0x1e08, 0x3650,
1135 0x2b2c, 0x0a18, 0x163c, 0x1f08, 0x3750,
1136 0x2c2c, 0x0b18, 0x173c, 0x2008, 0x3850,
1137 0x2d2c, 0x0b1c, 0x1740, 0x2108, 0x3950,
1138 0x2e2c, 0x0a1c, 0x1640, 0x2208, 0x3a50,
1139 0x2f2c, 0x091c, 0x1540, 0x2308, 0x3b50,
1140 0x2f30, 0x081c, 0x1440, 0x230c, 0x3b54,
1141 0x2e30, 0x071c, 0x1340, 0x220c, 0x3a54,
1142 0x2d30, 0x061c, 0x1240, 0x210c, 0x3954,
1143 0x2c30, 0x0620, 0x1244, 0x200c, 0x3854,
1144 0x2b30, 0x0720, 0x1344, 0x1f0c, 0x3754,
1145 0x2a30, 0x0820, 0x1444, 0x1e0c, 0x3654,
1146 0x2a34, 0x0920, 0x1544, 0x1e10, 0x3658,
1147 0x2b34, 0x0a20, 0x1644, 0x1f10, 0x3858,
1148 0x2c34, 0x0b20, 0x1744, 0x2010, 0x3a58,
1149 0x3024, 0x0f10, 0x1b34, 0x2400, 0x0048,
1150 0x3124, 0x1010, 0x1c34, 0x2500, 0x0148,
1151 0x3224, 0x1110, 0x1d34, 0x2600, 0x0248,
1152 0x3324, 0x1114, 0x1d38, 0x2700, 0x0348,
1153 0x3424, 0x1014, 0x1c38, 0x2800, 0x0448,
1154 0x3524, 0x0f14, 0x1b38, 0x2900, 0x0548,
1155 0x3528, 0x0e14, 0x1a38, 0x2904, 0x054c,
1156 0x3428, 0x0d14, 0x1938, 0x2804, 0x044c,
1157 0x3328, 0x0c14, 0x1838, 0x2704, 0x034c,
1158 0x3228, 0x0c18, 0x183c, 0x2604, 0x024c,
1159 0x3128, 0x0d18, 0x193c, 0x2504, 0x014c,
1160 0x3028, 0x0e18, 0x1a3c, 0x2404, 0x004c,
1161 0x302c, 0x0f18, 0x1b3c, 0x2408, 0x0050,
1162 0x312c, 0x1018, 0x1c3c, 0x2508, 0x0150,
1163 0x322c, 0x1118, 0x1d3c, 0x2608, 0x0250,
1164 0x332c, 0x111c, 0x1d40, 0x2708, 0x0350,
1165 0x342c, 0x101c, 0x1c40, 0x2808, 0x0450,
1166 0x352c, 0x0f1c, 0x1b40, 0x2908, 0x0550,
1167 0x3530, 0x0e1c, 0x1a40, 0x290c, 0x0554,
1168 0x3430, 0x0d1c, 0x1940, 0x280c, 0x0454,
1169 0x3330, 0x0c1c, 0x1840, 0x270c, 0x0354,
1170 0x3230, 0x0c20, 0x1844, 0x260c, 0x0254,
1171 0x3130, 0x0d20, 0x1944, 0x250c, 0x0154,
1172 0x3030, 0x0e20, 0x1a44, 0x240c, 0x0054,
1173 0x3034, 0x0f20, 0x1b44, 0x2410, 0x0058,
1174 0x3134, 0x1020, 0x1c44, 0x2510, 0x0258,
1175 0x3234, 0x1120, 0x1d44, 0x2610, 0x0458,
1176 0x3624, 0x1510, 0x2134, 0x2a00, 0x0648,
1177 0x3724, 0x1610, 0x2234, 0x2b00, 0x0748,
1178 0x3824, 0x1710, 0x2334, 0x2c00, 0x0848,
1179 0x3924, 0x1714, 0x2338, 0x2d00, 0x0948,
1180 0x3a24, 0x1614, 0x2238, 0x2e00, 0x0a48,
1181 0x3b24, 0x1514, 0x2138, 0x2f00, 0x0b48,
1182 0x3b28, 0x1414, 0x2038, 0x2f04, 0x0b4c,
1183 0x3a28, 0x1314, 0x1f38, 0x2e04, 0x0a4c,
1184 0x3928, 0x1214, 0x1e38, 0x2d04, 0x094c,
1185 0x3828, 0x1218, 0x1e3c, 0x2c04, 0x084c,
1186 0x3728, 0x1318, 0x1f3c, 0x2b04, 0x074c,
1187 0x3628, 0x1418, 0x203c, 0x2a04, 0x064c,
1188 0x362c, 0x1518, 0x213c, 0x2a08, 0x0650,
1189 0x372c, 0x1618, 0x223c, 0x2b08, 0x0750,
1190 0x382c, 0x1718, 0x233c, 0x2c08, 0x0850,
1191 0x392c, 0x171c, 0x2340, 0x2d08, 0x0950,
1192 0x3a2c, 0x161c, 0x2240, 0x2e08, 0x0a50,
1193 0x3b2c, 0x151c, 0x2140, 0x2f08, 0x0b50,
1194 0x3b30, 0x141c, 0x2040, 0x2f0c, 0x0b54,
1195 0x3a30, 0x131c, 0x1f40, 0x2e0c, 0x0a54,
1196 0x3930, 0x121c, 0x1e40, 0x2d0c, 0x0954,
1197 0x3830, 0x1220, 0x1e44, 0x2c0c, 0x0854,
1198 0x3730, 0x1320, 0x1f44, 0x2b0c, 0x0754,
1199 0x3630, 0x1420, 0x2044, 0x2a0c, 0x0654,
1200 0x3634, 0x1520, 0x2144, 0x2a10, 0x0658,
1201 0x3734, 0x1620, 0x2244, 0x2b10, 0x0858,
1202 0x3834, 0x1720, 0x2344, 0x2c10, 0x0a58,
1203 0x0024, 0x1b10, 0x2734, 0x3000, 0x0c48,
1204 0x0124, 0x1c10, 0x2834, 0x3100, 0x0d48,
1205 0x0224, 0x1d10, 0x2934, 0x3200, 0x0e48,
1206 0x0324, 0x1d14, 0x2938, 0x3300, 0x0f48,
1207 0x0424, 0x1c14, 0x2838, 0x3400, 0x1048,
1208 0x0524, 0x1b14, 0x2738, 0x3500, 0x1148,
1209 0x0528, 0x1a14, 0x2638, 0x3504, 0x114c,
1210 0x0428, 0x1914, 0x2538, 0x3404, 0x104c,
1211 0x0328, 0x1814, 0x2438, 0x3304, 0x0f4c,
1212 0x0228, 0x1818, 0x243c, 0x3204, 0x0e4c,
1213 0x0128, 0x1918, 0x253c, 0x3104, 0x0d4c,
1214 0x0028, 0x1a18, 0x263c, 0x3004, 0x0c4c,
1215 0x002c, 0x1b18, 0x273c, 0x3008, 0x0c50,
1216 0x012c, 0x1c18, 0x283c, 0x3108, 0x0d50,
1217 0x022c, 0x1d18, 0x293c, 0x3208, 0x0e50,
1218 0x032c, 0x1d1c, 0x2940, 0x3308, 0x0f50,
1219 0x042c, 0x1c1c, 0x2840, 0x3408, 0x1050,
1220 0x052c, 0x1b1c, 0x2740, 0x3508, 0x1150,
1221 0x0530, 0x1a1c, 0x2640, 0x350c, 0x1154,
1222 0x0430, 0x191c, 0x2540, 0x340c, 0x1054,
1223 0x0330, 0x181c, 0x2440, 0x330c, 0x0f54,
1224 0x0230, 0x1820, 0x2444, 0x320c, 0x0e54,
1225 0x0130, 0x1920, 0x2544, 0x310c, 0x0d54,
1226 0x0030, 0x1a20, 0x2644, 0x300c, 0x0c54,
1227 0x0034, 0x1b20, 0x2744, 0x3010, 0x0c58,
1228 0x0134, 0x1c20, 0x2844, 0x3110, 0x0e58,
1229 0x0234, 0x1d20, 0x2944, 0x3210, 0x1058,
1230 0x0624, 0x2110, 0x2d34, 0x3600, 0x1248,
1231 0x0724, 0x2210, 0x2e34, 0x3700, 0x1348,
1232 0x0824, 0x2310, 0x2f34, 0x3800, 0x1448,
1233 0x0924, 0x2314, 0x2f38, 0x3900, 0x1548,
1234 0x0a24, 0x2214, 0x2e38, 0x3a00, 0x1648,
1235 0x0b24, 0x2114, 0x2d38, 0x3b00, 0x1748,
1236 0x0b28, 0x2014, 0x2c38, 0x3b04, 0x174c,
1237 0x0a28, 0x1f14, 0x2b38, 0x3a04, 0x164c,
1238 0x0928, 0x1e14, 0x2a38, 0x3904, 0x154c,
1239 0x0828, 0x1e18, 0x2a3c, 0x3804, 0x144c,
1240 0x0728, 0x1f18, 0x2b3c, 0x3704, 0x134c,
1241 0x0628, 0x2018, 0x2c3c, 0x3604, 0x124c,
1242 0x062c, 0x2118, 0x2d3c, 0x3608, 0x1250,
1243 0x072c, 0x2218, 0x2e3c, 0x3708, 0x1350,
1244 0x082c, 0x2318, 0x2f3c, 0x3808, 0x1450,
1245 0x092c, 0x231c, 0x2f40, 0x3908, 0x1550,
1246 0x0a2c, 0x221c, 0x2e40, 0x3a08, 0x1650,
1247 0x0b2c, 0x211c, 0x2d40, 0x3b08, 0x1750,
1248 0x0b30, 0x201c, 0x2c40, 0x3b0c, 0x1754,
1249 0x0a30, 0x1f1c, 0x2b40, 0x3a0c, 0x1654,
1250 0x0930, 0x1e1c, 0x2a40, 0x390c, 0x1554,
1251 0x0830, 0x1e20, 0x2a44, 0x380c, 0x1454,
1252 0x0730, 0x1f20, 0x2b44, 0x370c, 0x1354,
1253 0x0630, 0x2020, 0x2c44, 0x360c, 0x1254,
1254 0x0634, 0x2120, 0x2d44, 0x3610, 0x1258,
1255 0x0734, 0x2220, 0x2e44, 0x3710, 0x1458,
1256 0x0834, 0x2320, 0x2f44, 0x3810, 0x1658,
1257 };
1258
1259 /* DV25/50 DCT coefficient weights and inverse weights */
1260 /* created by dvtables.py */
1261 static const int dv_weight_bits = 18;
1262 static const int dv_weight_88[64] = {
1263 131072, 257107, 257107, 242189, 252167, 242189, 235923, 237536,
1264 237536, 235923, 229376, 231390, 223754, 231390, 229376, 222935,
1265 224969, 217965, 217965, 224969, 222935, 200636, 218652, 211916,
1266 212325, 211916, 218652, 200636, 188995, 196781, 205965, 206433,
1267 206433, 205965, 196781, 188995, 185364, 185364, 200636, 200704,
1268 200636, 185364, 185364, 174609, 180568, 195068, 195068, 180568,
1269 174609, 170091, 175557, 189591, 175557, 170091, 165371, 170627,
1270 170627, 165371, 160727, 153560, 160727, 144651, 144651, 136258,
1271 };
1272 static const int dv_weight_248[64] = {
1273 131072, 242189, 257107, 237536, 229376, 200636, 242189, 223754,
1274 224969, 196781, 262144, 242189, 229376, 200636, 257107, 237536,
1275 211916, 185364, 235923, 217965, 229376, 211916, 206433, 180568,
1276 242189, 223754, 224969, 196781, 211916, 185364, 235923, 217965,
1277 200704, 175557, 222935, 205965, 200636, 185364, 195068, 170627,
1278 229376, 211916, 206433, 180568, 200704, 175557, 222935, 205965,
1279 175557, 153560, 188995, 174609, 165371, 144651, 200636, 185364,
1280 195068, 170627, 175557, 153560, 188995, 174609, 165371, 144651,
1281 };
1282 static const int dv_iweight_bits = 14;
1283 static const int dv_iweight_88[64] = {
1284 32768, 16710, 16710, 17735, 17015, 17735, 18197, 18079,
1285 18079, 18197, 18725, 18559, 19196, 18559, 18725, 19284,
1286 19108, 19692, 19692, 19108, 19284, 21400, 19645, 20262,
1287 20214, 20262, 19645, 21400, 22733, 21845, 20867, 20815,
1288 20815, 20867, 21845, 22733, 23173, 23173, 21400, 21400,
1289 21400, 23173, 23173, 24600, 23764, 22017, 22017, 23764,
1290 24600, 25267, 24457, 22672, 24457, 25267, 25971, 25191,
1291 25191, 25971, 26715, 27962, 26715, 29642, 29642, 31536,
1292 };
1293 static const int dv_iweight_248[64] = {
1294 32768, 17735, 16710, 18079, 18725, 21400, 17735, 19196,
1295 19108, 21845, 16384, 17735, 18725, 21400, 16710, 18079,
1296 20262, 23173, 18197, 19692, 18725, 20262, 20815, 23764,
1297 17735, 19196, 19108, 21845, 20262, 23173, 18197, 19692,
1298 21400, 24457, 19284, 20867, 21400, 23173, 22017, 25191,
1299 18725, 20262, 20815, 23764, 21400, 24457, 19284, 20867,
1300 24457, 27962, 22733, 24600, 25971, 29642, 21400, 23173,
1301 22017, 25191, 24457, 27962, 22733, 24600, 25971, 29642,
1302 };
1303
1304 static const uint16_t dv_audio_shuffle525[10][9] = {
1305 { 0, 30, 60, 20, 50, 80, 10, 40, 70 }, /* 1st channel */
1306 { 6, 36, 66, 26, 56, 86, 16, 46, 76 },
1307 { 12, 42, 72, 2, 32, 62, 22, 52, 82 },
1308 { 18, 48, 78, 8, 38, 68, 28, 58, 88 },
1309 { 24, 54, 84, 14, 44, 74, 4, 34, 64 },
1310
1311 { 1, 31, 61, 21, 51, 81, 11, 41, 71 }, /* 2nd channel */
1312 { 7, 37, 67, 27, 57, 87, 17, 47, 77 },
1313 { 13, 43, 73, 3, 33, 63, 23, 53, 83 },
1314 { 19, 49, 79, 9, 39, 69, 29, 59, 89 },
1315 { 25, 55, 85, 15, 45, 75, 5, 35, 65 },
1316 };
1317
1318 static const uint16_t dv_audio_shuffle625[12][9] = {
1319 { 0, 36, 72, 26, 62, 98, 16, 52, 88}, /* 1st channel */
1320 { 6, 42, 78, 32, 68, 104, 22, 58, 94},
1321 { 12, 48, 84, 2, 38, 74, 28, 64, 100},
1322 { 18, 54, 90, 8, 44, 80, 34, 70, 106},
1323 { 24, 60, 96, 14, 50, 86, 4, 40, 76},
1324 { 30, 66, 102, 20, 56, 92, 10, 46, 82},
1325
1326 { 1, 37, 73, 27, 63, 99, 17, 53, 89}, /* 2nd channel */
1327 { 7, 43, 79, 33, 69, 105, 23, 59, 95},
1328 { 13, 49, 85, 3, 39, 75, 29, 65, 101},
1329 { 19, 55, 91, 9, 45, 81, 35, 71, 107},
1330 { 25, 61, 97, 15, 51, 87, 5, 41, 77},
1331 { 31, 67, 103, 21, 57, 93, 11, 47, 83},
1332 };
1333
1334 static const __attribute__((unused)) int dv_audio_frequency[3] = {
1335 48000, 44100, 32000,
1336 };
1337
1338 static const DVprofile dv_profiles[] = {
1339 { .dsf = 0,
1340 .frame_size = 120000, /* IEC 61834, SMPTE-314M - 525/60 (NTSC) */
1341 .difseg_size = 10,
1342 .frame_rate = 30000,
1343 .ltc_divisor = 30,
1344 .frame_rate_base = 1001,
1345 .height = 480,
1346 .width = 720,
1347 .sar = {{10, 11}, {40, 33}},
1348 .video_place = dv_place_411,
1349 .pix_fmt = PIX_FMT_YUV411P,
1350 .audio_stride = 90,
1351 .audio_min_samples = { 1580, 1452, 1053 }, /* for 48, 44.1 and 32Khz */
1352 .audio_samples_dist = { 1602, 1601, 1602, 1601, 1602 },
1353 .audio_shuffle = dv_audio_shuffle525,
1354 },
1355 { .dsf = 1,
1356 .frame_size = 144000, /* IEC 61834 - 625/50 (PAL) */
1357 .difseg_size = 12,
1358 .frame_rate = 25,
1359 .frame_rate_base = 1,
1360 .ltc_divisor = 25,
1361 .height = 576,
1362 .width = 720,
1363 .sar = {{59, 54}, {118, 81}},
1364 .video_place = dv_place_420,
1365 .pix_fmt = PIX_FMT_YUV420P,
1366 .audio_stride = 108,
1367 .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32Khz */
1368 .audio_samples_dist = { 1920, 1920, 1920, 1920, 1920 },
1369 .audio_shuffle = dv_audio_shuffle625,
1370 },
1371 { .dsf = 1,
1372 .frame_size = 144000, /* SMPTE-314M - 625/50 (PAL) */
1373 .difseg_size = 12,
1374 .frame_rate = 25,
1375 .frame_rate_base = 1,
1376 .ltc_divisor = 25,
1377 .height = 576,
1378 .width = 720,
1379 .sar = {{59, 54}, {118, 81}},
1380 .video_place = dv_place_411P,
1381 .pix_fmt = PIX_FMT_YUV411P,
1382 .audio_stride = 108,
1383 .audio_min_samples = { 1896, 1742, 1264 }, /* for 48, 44.1 and 32Khz */
1384 .audio_samples_dist = { 1920, 1920, 1920, 1920, 1920 },
1385 .audio_shuffle = dv_audio_shuffle625,
1386 }
1387 };
1388
1389 static inline const DVprofile* dv_frame_profile(uint8_t* frame)
1390 {
1391 if ((frame[3] & 0x80) == 0) { /* DSF flag */
1392 return &dv_profiles[0];
1393 }
1394 else if ((frame[5] & 0x07) == 0) { /* APT flag */
1395 return &dv_profiles[1];
1396 }
1397 else
1398 return &dv_profiles[2];
1399 }
1400
1401 static inline const DVprofile* dv_codec_profile(AVCodecContext* codec)
1402 {
1403 if (codec->width != 720) {
1404 return NULL;
1405 }
1406 else if (codec->height == 480) {
1407 return &dv_profiles[0];
1408 }
1409 else
1410 return &dv_profiles[1];
1411 }