Commit | Line | Data |
---|---|---|
2ba45a60 DM |
1 | /* |
2 | * Copyright (C) 2013 Ronald S. Bultje <rsbultje gmail com> | |
3 | * Copyright (C) 2013 Clément Bœsch <u pkh me> | |
4 | * | |
5 | * This file is part of FFmpeg. | |
6 | * | |
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. | |
11 | * | |
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. | |
16 | * | |
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 | |
20 | */ | |
21 | ||
22 | #ifndef AVCODEC_VP9DATA_H | |
23 | #define AVCODEC_VP9DATA_H | |
24 | ||
25 | #include <stdint.h> | |
26 | ||
27 | #include "vp9.h" | |
28 | ||
29 | enum BlockPartition { | |
30 | PARTITION_NONE, // [ ] <-. | |
31 | PARTITION_H, // [-] | | |
32 | PARTITION_V, // [|] | | |
33 | PARTITION_SPLIT, // [+] --' | |
34 | }; | |
35 | ||
36 | static const int8_t vp9_partition_tree[3][2] = { | |
37 | { -PARTITION_NONE, 1 }, // '0' | |
38 | { -PARTITION_H, 2 }, // '10' | |
39 | { -PARTITION_V, -PARTITION_SPLIT }, // '110', '111' | |
40 | }; | |
41 | ||
42 | static const uint8_t vp9_default_kf_partition_probs[4][4][3] = { | |
43 | { /* 64x64 -> 32x32 */ | |
44 | { 174, 35, 49 } /* a/l both not split */, | |
45 | { 68, 11, 27 } /* a split, l not split */, | |
46 | { 57, 15, 9 } /* l split, a not split */, | |
47 | { 12, 3, 3 } /* a/l both split */ | |
48 | }, { /* 32x32 -> 16x16 */ | |
49 | { 150, 40, 39 } /* a/l both not split */, | |
50 | { 78, 12, 26 } /* a split, l not split */, | |
51 | { 67, 33, 11 } /* l split, a not split */, | |
52 | { 24, 7, 5 } /* a/l both split */, | |
53 | }, { /* 16x16 -> 8x8 */ | |
54 | { 149, 53, 53 } /* a/l both not split */, | |
55 | { 94, 20, 48 } /* a split, l not split */, | |
56 | { 83, 53, 24 } /* l split, a not split */, | |
57 | { 52, 18, 18 } /* a/l both split */, | |
58 | }, { /* 8x8 -> 4x4 */ | |
59 | { 158, 97, 94 } /* a/l both not split */, | |
60 | { 93, 24, 99 } /* a split, l not split */, | |
61 | { 85, 119, 44 } /* l split, a not split */, | |
62 | { 62, 59, 67 } /* a/l both split */, | |
63 | }, | |
64 | }; | |
65 | ||
66 | static const int8_t vp9_segmentation_tree[7][2] = { | |
67 | { 1, 2 }, | |
68 | { 3, 4 }, | |
69 | { 5, 6 }, | |
70 | { -0, -1 }, // '00x' | |
71 | { -2, -3 }, // '01x' | |
72 | { -4, -5 }, // '10x' | |
73 | { -6, -7 }, // '11x' | |
74 | }; | |
75 | ||
76 | static const int8_t vp9_intramode_tree[9][2] = { | |
77 | { -DC_PRED, 1 }, // '0' | |
78 | { -TM_VP8_PRED, 2 }, // '10' | |
79 | { -VERT_PRED, 3 }, // '110' | |
80 | { 4, 6 }, | |
81 | { -HOR_PRED, 5 }, // '11100' | |
82 | { -DIAG_DOWN_RIGHT_PRED, -VERT_RIGHT_PRED }, // '11101x' | |
83 | { -DIAG_DOWN_LEFT_PRED, 7 }, // '11110' | |
84 | { -VERT_LEFT_PRED, 8 }, // '111110' | |
85 | { -HOR_DOWN_PRED, -HOR_UP_PRED }, // '111111x' | |
86 | }; | |
87 | ||
88 | static const uint8_t vp9_default_kf_ymode_probs[10][10][9] = { | |
89 | { /* above = v */ | |
90 | { 43, 46, 168, 134, 107, 128, 69, 142, 92 } /* left = v */, | |
91 | { 44, 29, 68, 159, 201, 177, 50, 57, 77 } /* left = h */, | |
92 | { 63, 36, 126, 146, 123, 158, 60, 90, 96 } /* left = dc */, | |
93 | { 58, 38, 76, 114, 97, 172, 78, 133, 92 } /* left = d45 */, | |
94 | { 46, 41, 76, 140, 63, 184, 69, 112, 57 } /* left = d135 */, | |
95 | { 38, 32, 85, 140, 46, 112, 54, 151, 133 } /* left = d117 */, | |
96 | { 39, 27, 61, 131, 110, 175, 44, 75, 136 } /* left = d153 */, | |
97 | { 47, 35, 80, 100, 74, 143, 64, 163, 74 } /* left = d63 */, | |
98 | { 52, 30, 74, 113, 130, 175, 51, 64, 58 } /* left = d27 */, | |
99 | { 36, 61, 116, 114, 128, 162, 80, 125, 82 } /* left = tm */ | |
100 | }, { /* above = h */ | |
101 | { 55, 44, 68, 166, 179, 192, 57, 57, 108 } /* left = v */, | |
102 | { 42, 26, 11, 199, 241, 228, 23, 15, 85 } /* left = h */, | |
103 | { 82, 26, 26, 171, 208, 204, 44, 32, 105 } /* left = dc */, | |
104 | { 68, 42, 19, 131, 160, 199, 55, 52, 83 } /* left = d45 */, | |
105 | { 58, 50, 25, 139, 115, 232, 39, 52, 118 } /* left = d135 */, | |
106 | { 50, 35, 33, 153, 104, 162, 64, 59, 131 } /* left = d117 */, | |
107 | { 44, 24, 16, 150, 177, 202, 33, 19, 156 } /* left = d153 */, | |
108 | { 53, 49, 21, 110, 116, 168, 59, 80, 76 } /* left = d63 */, | |
109 | { 55, 27, 12, 153, 203, 218, 26, 27, 49 } /* left = d27 */, | |
110 | { 38, 72, 19, 168, 203, 212, 50, 50, 107 } /* left = tm */ | |
111 | }, { /* above = dc */ | |
112 | { 92, 45, 102, 136, 116, 180, 74, 90, 100 } /* left = v */, | |
113 | { 73, 32, 19, 187, 222, 215, 46, 34, 100 } /* left = h */, | |
114 | { 137, 30, 42, 148, 151, 207, 70, 52, 91 } /* left = dc */, | |
115 | { 91, 30, 32, 116, 121, 186, 93, 86, 94 } /* left = d45 */, | |
116 | { 72, 35, 36, 149, 68, 206, 68, 63, 105 } /* left = d135 */, | |
117 | { 73, 31, 28, 138, 57, 124, 55, 122, 151 } /* left = d117 */, | |
118 | { 67, 23, 21, 140, 126, 197, 40, 37, 171 } /* left = d153 */, | |
119 | { 74, 32, 27, 107, 86, 160, 63, 134, 102 } /* left = d63 */, | |
120 | { 86, 27, 28, 128, 154, 212, 45, 43, 53 } /* left = d27 */, | |
121 | { 59, 67, 44, 140, 161, 202, 78, 67, 119 } /* left = tm */ | |
122 | }, { /* above = d45 */ | |
123 | { 59, 38, 83, 112, 103, 162, 98, 136, 90 } /* left = v */, | |
124 | { 62, 30, 23, 158, 200, 207, 59, 57, 50 } /* left = h */, | |
125 | { 103, 26, 36, 129, 132, 201, 83, 80, 93 } /* left = dc */, | |
126 | { 67, 30, 29, 84, 86, 191, 102, 91, 59 } /* left = d45 */, | |
127 | { 60, 32, 33, 112, 71, 220, 64, 89, 104 } /* left = d135 */, | |
128 | { 53, 26, 34, 130, 56, 149, 84, 120, 103 } /* left = d117 */, | |
129 | { 53, 21, 23, 133, 109, 210, 56, 77, 172 } /* left = d153 */, | |
130 | { 61, 29, 29, 93, 97, 165, 83, 175, 162 } /* left = d63 */, | |
131 | { 77, 19, 29, 112, 142, 228, 55, 66, 36 } /* left = d27 */, | |
132 | { 47, 47, 43, 114, 137, 181, 100, 99, 95 } /* left = tm */ | |
133 | }, { /* above = d135 */ | |
134 | { 53, 40, 55, 139, 69, 183, 61, 80, 110 } /* left = v */, | |
135 | { 40, 29, 19, 161, 180, 207, 43, 24, 91 } /* left = h */, | |
136 | { 69, 23, 29, 128, 83, 199, 46, 44, 101 } /* left = dc */, | |
137 | { 60, 34, 19, 105, 61, 198, 53, 64, 89 } /* left = d45 */, | |
138 | { 52, 31, 22, 158, 40, 209, 58, 62, 89 } /* left = d135 */, | |
139 | { 44, 31, 29, 147, 46, 158, 56, 102, 198 } /* left = d117 */, | |
140 | { 35, 19, 12, 135, 87, 209, 41, 45, 167 } /* left = d153 */, | |
141 | { 51, 38, 25, 113, 58, 164, 70, 93, 97 } /* left = d63 */, | |
142 | { 55, 25, 21, 118, 95, 215, 38, 39, 66 } /* left = d27 */, | |
143 | { 47, 54, 34, 146, 108, 203, 72, 103, 151 } /* left = tm */ | |
144 | }, { /* above = d117 */ | |
145 | { 46, 27, 80, 150, 55, 124, 55, 121, 135 } /* left = v */, | |
146 | { 36, 23, 27, 165, 149, 166, 54, 64, 118 } /* left = h */, | |
147 | { 64, 19, 37, 156, 66, 138, 49, 95, 133 } /* left = dc */, | |
148 | { 53, 21, 36, 131, 63, 163, 60, 109, 81 } /* left = d45 */, | |
149 | { 40, 26, 35, 154, 40, 185, 51, 97, 123 } /* left = d135 */, | |
150 | { 35, 19, 34, 179, 19, 97, 48, 129, 124 } /* left = d117 */, | |
151 | { 36, 20, 26, 136, 62, 164, 33, 77, 154 } /* left = d153 */, | |
152 | { 45, 26, 28, 129, 45, 129, 49, 147, 123 } /* left = d63 */, | |
153 | { 45, 18, 32, 130, 90, 157, 40, 79, 91 } /* left = d27 */, | |
154 | { 38, 44, 51, 136, 74, 162, 57, 97, 121 } /* left = tm */ | |
155 | }, { /* above = d153 */ | |
156 | { 56, 39, 58, 133, 117, 173, 48, 53, 187 } /* left = v */, | |
157 | { 35, 21, 12, 161, 212, 207, 20, 23, 145 } /* left = h */, | |
158 | { 75, 17, 22, 136, 138, 185, 32, 34, 166 } /* left = dc */, | |
159 | { 56, 29, 19, 117, 109, 181, 55, 68, 112 } /* left = d45 */, | |
160 | { 47, 29, 17, 153, 64, 220, 59, 51, 114 } /* left = d135 */, | |
161 | { 46, 16, 24, 136, 76, 147, 41, 64, 172 } /* left = d117 */, | |
162 | { 34, 17, 11, 108, 152, 187, 13, 15, 209 } /* left = d153 */, | |
163 | { 55, 30, 18, 122, 79, 179, 44, 88, 116 } /* left = d63 */, | |
164 | { 51, 24, 14, 115, 133, 209, 32, 26, 104 } /* left = d27 */, | |
165 | { 37, 49, 25, 129, 168, 164, 41, 54, 148 } /* left = tm */ | |
166 | }, { /* above = d63 */ | |
167 | { 48, 34, 86, 101, 92, 146, 78, 179, 134 } /* left = v */, | |
168 | { 47, 22, 24, 138, 187, 178, 68, 69, 59 } /* left = h */, | |
169 | { 78, 23, 39, 111, 117, 170, 74, 124, 94 } /* left = dc */, | |
170 | { 56, 25, 33, 105, 112, 187, 95, 177, 129 } /* left = d45 */, | |
171 | { 48, 31, 27, 114, 63, 183, 82, 116, 56 } /* left = d135 */, | |
172 | { 43, 28, 37, 121, 63, 123, 61, 192, 169 } /* left = d117 */, | |
173 | { 42, 17, 24, 109, 97, 177, 56, 76, 122 } /* left = d153 */, | |
174 | { 46, 23, 32, 74, 86, 150, 67, 183, 88 } /* left = d63 */, | |
175 | { 58, 18, 28, 105, 139, 182, 70, 92, 63 } /* left = d27 */, | |
176 | { 36, 38, 48, 92, 122, 165, 88, 137, 91 } /* left = tm */ | |
177 | }, { /* above = d27 */ | |
178 | { 62, 44, 61, 123, 105, 189, 48, 57, 64 } /* left = v */, | |
179 | { 47, 25, 17, 175, 222, 220, 24, 30, 86 } /* left = h */, | |
180 | { 82, 22, 32, 127, 143, 213, 39, 41, 70 } /* left = dc */, | |
181 | { 68, 36, 17, 106, 102, 206, 59, 74, 74 } /* left = d45 */, | |
182 | { 57, 39, 23, 151, 68, 216, 55, 63, 58 } /* left = d135 */, | |
183 | { 49, 30, 35, 141, 70, 168, 82, 40, 115 } /* left = d117 */, | |
184 | { 51, 25, 15, 136, 129, 202, 38, 35, 139 } /* left = d153 */, | |
185 | { 59, 39, 19, 114, 75, 180, 77, 104, 42 } /* left = d63 */, | |
186 | { 68, 26, 16, 111, 141, 215, 29, 28, 28 } /* left = d27 */, | |
187 | { 40, 61, 26, 126, 152, 206, 61, 59, 93 } /* left = tm */ | |
188 | }, { /* above = tm */ | |
189 | { 44, 78, 115, 132, 119, 173, 71, 112, 93 } /* left = v */, | |
190 | { 39, 38, 21, 184, 227, 206, 42, 32, 64 } /* left = h */, | |
191 | { 65, 70, 60, 155, 159, 199, 61, 60, 81 } /* left = dc */, | |
192 | { 58, 47, 36, 124, 137, 193, 80, 82, 78 } /* left = d45 */, | |
193 | { 49, 50, 35, 144, 95, 205, 63, 78, 59 } /* left = d135 */, | |
194 | { 41, 53, 52, 148, 71, 142, 65, 128, 51 } /* left = d117 */, | |
195 | { 40, 36, 28, 143, 143, 202, 40, 55, 137 } /* left = d153 */, | |
196 | { 42, 44, 44, 104, 105, 164, 64, 130, 80 } /* left = d63 */, | |
197 | { 52, 34, 29, 129, 183, 227, 42, 35, 43 } /* left = d27 */, | |
198 | { 43, 81, 53, 140, 169, 204, 68, 84, 72 } /* left = tm */ | |
199 | } | |
200 | }; | |
201 | ||
202 | static const uint8_t vp9_default_kf_uvmode_probs[10][9] = { | |
203 | { 118, 15, 123, 148, 131, 101, 44, 93, 131 } /* y = v */, | |
204 | { 113, 12, 23, 188, 226, 142, 26, 32, 125 } /* y = h */, | |
205 | { 144, 11, 54, 157, 195, 130, 46, 58, 108 } /* y = dc */, | |
206 | { 120, 11, 50, 123, 163, 135, 64, 77, 103 } /* y = d45 */, | |
207 | { 113, 9, 36, 155, 111, 157, 32, 44, 161 } /* y = d135 */, | |
208 | { 116, 9, 55, 176, 76, 96, 37, 61, 149 } /* y = d117 */, | |
209 | { 115, 9, 28, 141, 161, 167, 21, 25, 193 } /* y = d153 */, | |
210 | { 116, 12, 64, 120, 140, 125, 49, 115, 121 } /* y = d63 */, | |
211 | { 120, 12, 32, 145, 195, 142, 32, 38, 86 } /* y = d27 */, | |
212 | { 102, 19, 66, 162, 182, 122, 35, 59, 128 } /* y = tm */ | |
213 | }; | |
214 | ||
215 | enum InterPredMode { | |
216 | NEARESTMV = 10, | |
217 | NEARMV = 11, | |
218 | ZEROMV = 12, | |
219 | NEWMV = 13, | |
220 | }; | |
221 | ||
222 | static const int8_t vp9_inter_mode_tree[3][2] = { | |
223 | { -ZEROMV, 1 }, // '0' | |
224 | { -NEARESTMV, 2 }, // '10' | |
225 | { -NEARMV, -NEWMV }, // '11x' | |
226 | }; | |
227 | ||
228 | static const int8_t vp9_filter_tree[2][2] = { | |
229 | { -0, 1 }, // '0' | |
230 | { -1, -2 }, // '1x' | |
231 | }; | |
232 | ||
233 | static const enum FilterMode vp9_filter_lut[3] = { | |
234 | FILTER_8TAP_REGULAR, | |
235 | FILTER_8TAP_SMOOTH, | |
236 | FILTER_8TAP_SHARP, | |
237 | }; | |
238 | ||
239 | static const int16_t vp9_dc_qlookup[256] = { | |
240 | 4, 8, 8, 9, 10, 11, 12, 12, | |
241 | 13, 14, 15, 16, 17, 18, 19, 19, | |
242 | 20, 21, 22, 23, 24, 25, 26, 26, | |
243 | 27, 28, 29, 30, 31, 32, 32, 33, | |
244 | 34, 35, 36, 37, 38, 38, 39, 40, | |
245 | 41, 42, 43, 43, 44, 45, 46, 47, | |
246 | 48, 48, 49, 50, 51, 52, 53, 53, | |
247 | 54, 55, 56, 57, 57, 58, 59, 60, | |
248 | 61, 62, 62, 63, 64, 65, 66, 66, | |
249 | 67, 68, 69, 70, 70, 71, 72, 73, | |
250 | 74, 74, 75, 76, 77, 78, 78, 79, | |
251 | 80, 81, 81, 82, 83, 84, 85, 85, | |
252 | 87, 88, 90, 92, 93, 95, 96, 98, | |
253 | 99, 101, 102, 104, 105, 107, 108, 110, | |
254 | 111, 113, 114, 116, 117, 118, 120, 121, | |
255 | 123, 125, 127, 129, 131, 134, 136, 138, | |
256 | 140, 142, 144, 146, 148, 150, 152, 154, | |
257 | 156, 158, 161, 164, 166, 169, 172, 174, | |
258 | 177, 180, 182, 185, 187, 190, 192, 195, | |
259 | 199, 202, 205, 208, 211, 214, 217, 220, | |
260 | 223, 226, 230, 233, 237, 240, 243, 247, | |
261 | 250, 253, 257, 261, 265, 269, 272, 276, | |
262 | 280, 284, 288, 292, 296, 300, 304, 309, | |
263 | 313, 317, 322, 326, 330, 335, 340, 344, | |
264 | 349, 354, 359, 364, 369, 374, 379, 384, | |
265 | 389, 395, 400, 406, 411, 417, 423, 429, | |
266 | 435, 441, 447, 454, 461, 467, 475, 482, | |
267 | 489, 497, 505, 513, 522, 530, 539, 549, | |
268 | 559, 569, 579, 590, 602, 614, 626, 640, | |
269 | 654, 668, 684, 700, 717, 736, 755, 775, | |
270 | 796, 819, 843, 869, 896, 925, 955, 988, | |
271 | 1022, 1058, 1098, 1139, 1184, 1232, 1282, 1336, | |
272 | }; | |
273 | ||
274 | static const int16_t vp9_ac_qlookup[256] = { | |
275 | 4, 8, 9, 10, 11, 12, 13, 14, | |
276 | 15, 16, 17, 18, 19, 20, 21, 22, | |
277 | 23, 24, 25, 26, 27, 28, 29, 30, | |
278 | 31, 32, 33, 34, 35, 36, 37, 38, | |
279 | 39, 40, 41, 42, 43, 44, 45, 46, | |
280 | 47, 48, 49, 50, 51, 52, 53, 54, | |
281 | 55, 56, 57, 58, 59, 60, 61, 62, | |
282 | 63, 64, 65, 66, 67, 68, 69, 70, | |
283 | 71, 72, 73, 74, 75, 76, 77, 78, | |
284 | 79, 80, 81, 82, 83, 84, 85, 86, | |
285 | 87, 88, 89, 90, 91, 92, 93, 94, | |
286 | 95, 96, 97, 98, 99, 100, 101, 102, | |
287 | 104, 106, 108, 110, 112, 114, 116, 118, | |
288 | 120, 122, 124, 126, 128, 130, 132, 134, | |
289 | 136, 138, 140, 142, 144, 146, 148, 150, | |
290 | 152, 155, 158, 161, 164, 167, 170, 173, | |
291 | 176, 179, 182, 185, 188, 191, 194, 197, | |
292 | 200, 203, 207, 211, 215, 219, 223, 227, | |
293 | 231, 235, 239, 243, 247, 251, 255, 260, | |
294 | 265, 270, 275, 280, 285, 290, 295, 300, | |
295 | 305, 311, 317, 323, 329, 335, 341, 347, | |
296 | 353, 359, 366, 373, 380, 387, 394, 401, | |
297 | 408, 416, 424, 432, 440, 448, 456, 465, | |
298 | 474, 483, 492, 501, 510, 520, 530, 540, | |
299 | 550, 560, 571, 582, 593, 604, 615, 627, | |
300 | 639, 651, 663, 676, 689, 702, 715, 729, | |
301 | 743, 757, 771, 786, 801, 816, 832, 848, | |
302 | 864, 881, 898, 915, 933, 951, 969, 988, | |
303 | 1007, 1026, 1046, 1066, 1087, 1108, 1129, 1151, | |
304 | 1173, 1196, 1219, 1243, 1267, 1292, 1317, 1343, | |
305 | 1369, 1396, 1423, 1451, 1479, 1508, 1537, 1567, | |
306 | 1597, 1628, 1660, 1692, 1725, 1759, 1793, 1828, | |
307 | }; | |
308 | ||
309 | static const enum TxfmType vp9_intra_txfm_type[14] = { | |
310 | [VERT_PRED] = ADST_DCT, | |
311 | [HOR_PRED] = DCT_ADST, | |
312 | [DC_PRED] = DCT_DCT, | |
313 | [DIAG_DOWN_LEFT_PRED] = DCT_DCT, | |
314 | [DIAG_DOWN_RIGHT_PRED] = ADST_ADST, | |
315 | [VERT_RIGHT_PRED] = ADST_DCT, | |
316 | [HOR_DOWN_PRED] = DCT_ADST, | |
317 | [VERT_LEFT_PRED] = ADST_DCT, | |
318 | [HOR_UP_PRED] = DCT_ADST, | |
319 | [TM_VP8_PRED] = ADST_ADST, | |
320 | [NEARESTMV] = DCT_DCT, | |
321 | [NEARMV] = DCT_DCT, | |
322 | [ZEROMV] = DCT_DCT, | |
323 | [NEWMV] = DCT_DCT, | |
324 | }; | |
325 | ||
326 | static const int16_t vp9_default_scan_4x4[16] = { | |
327 | 0, 1, 4, 5, | |
328 | 2, 8, 3, 6, | |
329 | 12, 9, 7, 10, | |
330 | 13, 11, 14, 15, | |
331 | }; | |
332 | ||
333 | static const int16_t vp9_col_scan_4x4[16] = { | |
334 | 0, 1, 2, 4, | |
335 | 3, 5, 6, 8, | |
336 | 7, 9, 10, 12, | |
337 | 13, 11, 14, 15, | |
338 | }; | |
339 | ||
340 | static const int16_t vp9_row_scan_4x4[16] = { | |
341 | 0, 4, 1, 8, | |
342 | 5, 12, 9, 2, | |
343 | 6, 13, 3, 10, | |
344 | 7, 14, 11, 15, | |
345 | }; | |
346 | ||
347 | static const int16_t vp9_default_scan_8x8[64] = { | |
348 | 0, 1, 8, 2, 9, 16, 10, 3, | |
349 | 17, 24, 18, 11, 4, 25, 32, 19, | |
350 | 12, 26, 5, 33, 20, 27, 40, 13, | |
351 | 34, 6, 41, 28, 21, 35, 42, 48, | |
352 | 14, 7, 36, 29, 43, 56, 49, 22, | |
353 | 15, 37, 50, 44, 57, 30, 23, 51, | |
354 | 45, 58, 38, 31, 52, 59, 39, 46, | |
355 | 53, 60, 47, 54, 61, 55, 62, 63, | |
356 | }; | |
357 | ||
358 | static const int16_t vp9_col_scan_8x8[64] = { | |
359 | 0, 1, 2, 8, 3, 9, 4, 10, | |
360 | 16, 5, 11, 17, 12, 18, 6, 24, | |
361 | 19, 13, 25, 7, 26, 20, 32, 14, | |
362 | 27, 21, 33, 28, 34, 15, 22, 35, | |
363 | 40, 29, 41, 36, 23, 30, 42, 37, | |
364 | 48, 43, 31, 44, 49, 38, 50, 56, | |
365 | 45, 39, 51, 57, 52, 46, 58, 53, | |
366 | 59, 47, 60, 54, 61, 55, 62, 63, | |
367 | }; | |
368 | ||
369 | static const int16_t vp9_row_scan_8x8[64] = { | |
370 | 0, 8, 16, 1, 9, 24, 2, 17, | |
371 | 32, 10, 25, 3, 40, 18, 11, 33, | |
372 | 26, 19, 4, 48, 41, 34, 12, 27, | |
373 | 56, 20, 5, 42, 35, 13, 49, 28, | |
374 | 6, 21, 43, 36, 14, 50, 29, 57, | |
375 | 7, 44, 22, 37, 51, 15, 58, 30, | |
376 | 23, 45, 52, 38, 59, 31, 46, 53, | |
377 | 39, 60, 47, 61, 54, 62, 55, 63, | |
378 | }; | |
379 | ||
380 | static const int16_t vp9_default_scan_16x16[256] = { | |
381 | 0, 1, 16, 2, 17, 32, 3, 18, 33, 48, 4, 34, 19, 49, 20, 5, | |
382 | 35, 64, 50, 36, 65, 21, 6, 51, 80, 66, 37, 22, 52, 7, 81, 67, | |
383 | 38, 82, 53, 23, 96, 68, 8, 83, 97, 54, 39, 69, 112, 24, 98, 84, | |
384 | 70, 55, 9, 40, 85, 99, 113, 128, 25, 114, 100, 71, 86, 56, 10, 41, | |
385 | 115, 101, 129, 116, 72, 87, 26, 130, 144, 102, 57, 11, 42, 117, 131, 145, | |
386 | 88, 103, 27, 73, 132, 118, 146, 58, 160, 12, 43, 133, 147, 104, 89, 119, | |
387 | 161, 74, 148, 134, 28, 162, 59, 13, 176, 120, 149, 90, 135, 105, 163, 44, | |
388 | 75, 177, 164, 29, 150, 121, 136, 178, 165, 14, 106, 60, 91, 151, 45, 179, | |
389 | 192, 137, 166, 122, 76, 180, 152, 30, 61, 15, 107, 167, 181, 193, 92, 208, | |
390 | 46, 138, 123, 153, 194, 77, 168, 182, 31, 195, 209, 183, 108, 139, 62, 154, | |
391 | 47, 196, 93, 169, 210, 197, 224, 124, 184, 211, 78, 109, 170, 155, 63, 198, | |
392 | 212, 185, 225, 240, 140, 94, 199, 125, 79, 213, 226, 171, 186, 156, 214, 200, | |
393 | 110, 227, 141, 95, 241, 215, 228, 201, 126, 242, 187, 172, 157, 229, 111, 216, | |
394 | 243, 142, 202, 230, 127, 217, 244, 173, 188, 231, 158, 203, 143, 245, 218, 232, | |
395 | 189, 246, 159, 174, 233, 247, 219, 204, 175, 190, 248, 234, 205, 220, 249, 191, | |
396 | 235, 221, 250, 206, 222, 251, 236, 207, 237, 223, 252, 238, 253, 239, 254, 255, | |
397 | }; | |
398 | ||
399 | static const int16_t vp9_col_scan_16x16[256] = { | |
400 | 0, 1, 2, 3, 16, 4, 17, 5, 18, 6, 19, 32, 20, 7, 33, 21, | |
401 | 34, 8, 35, 22, 48, 36, 9, 49, 23, 50, 37, 10, 38, 51, 24, 64, | |
402 | 52, 11, 65, 39, 25, 53, 66, 54, 40, 67, 12, 80, 26, 68, 55, 81, | |
403 | 41, 69, 13, 27, 82, 56, 70, 83, 42, 14, 84, 96, 71, 28, 57, 85, | |
404 | 97, 15, 72, 98, 43, 86, 58, 99, 29, 87, 100, 112, 73, 44, 101, 59, | |
405 | 30, 113, 88, 114, 74, 128, 102, 45, 31, 115, 60, 103, 89, 116, 75, 129, | |
406 | 117, 46, 104, 90, 61, 130, 118, 131, 132, 105, 76, 47, 119, 144, 91, 62, | |
407 | 133, 106, 145, 120, 146, 134, 77, 147, 121, 92, 135, 148, 63, 107, 136, 122, | |
408 | 93, 149, 160, 78, 150, 137, 108, 161, 162, 151, 123, 79, 138, 163, 152, 94, | |
409 | 164, 109, 165, 153, 124, 139, 176, 166, 95, 177, 167, 110, 154, 178, 125, 179, | |
410 | 140, 168, 155, 111, 180, 192, 181, 169, 141, 126, 182, 193, 194, 156, 183, 170, | |
411 | 195, 127, 142, 196, 184, 208, 197, 157, 171, 143, 185, 198, 209, 199, 210, 172, | |
412 | 158, 186, 211, 224, 212, 200, 240, 159, 213, 225, 187, 201, 173, 226, 214, 215, | |
413 | 227, 202, 228, 188, 241, 216, 174, 229, 242, 203, 243, 217, 230, 175, 189, 244, | |
414 | 231, 204, 218, 232, 245, 219, 246, 190, 233, 205, 191, 247, 234, 248, 220, 206, | |
415 | 249, 235, 221, 207, 250, 236, 222, 251, 223, 237, 238, 252, 239, 253, 254, 255, | |
416 | }; | |
417 | ||
418 | static const int16_t vp9_row_scan_16x16[256] = { | |
419 | 0, 16, 32, 1, 48, 17, 64, 33, 2, 80, 18, 49, 96, 34, 3, 65, | |
420 | 19, 112, 50, 81, 35, 4, 128, 66, 20, 97, 51, 82, 5, 144, 36, 67, | |
421 | 113, 98, 21, 52, 160, 83, 129, 37, 68, 6, 114, 176, 99, 53, 22, 84, | |
422 | 145, 38, 69, 130, 7, 115, 192, 100, 54, 23, 85, 161, 146, 131, 39, 70, | |
423 | 208, 116, 8, 101, 177, 55, 86, 24, 162, 147, 132, 71, 224, 117, 40, 102, | |
424 | 9, 148, 56, 87, 193, 163, 240, 133, 178, 25, 118, 72, 41, 103, 164, 10, | |
425 | 149, 88, 134, 209, 179, 57, 119, 194, 26, 73, 165, 150, 104, 42, 135, 11, | |
426 | 180, 120, 89, 225, 195, 58, 27, 210, 151, 181, 166, 74, 43, 105, 12, 136, | |
427 | 90, 59, 241, 121, 28, 196, 167, 211, 152, 44, 182, 137, 75, 13, 226, 106, | |
428 | 122, 60, 197, 91, 168, 29, 183, 153, 14, 76, 212, 138, 45, 107, 15, 198, | |
429 | 92, 227, 169, 30, 123, 154, 61, 242, 184, 213, 139, 46, 77, 31, 108, 170, | |
430 | 199, 185, 124, 228, 93, 155, 214, 62, 140, 243, 78, 47, 200, 109, 186, 171, | |
431 | 201, 94, 63, 215, 229, 156, 79, 125, 141, 110, 216, 187, 172, 244, 202, 230, | |
432 | 217, 95, 157, 126, 245, 111, 142, 231, 188, 127, 158, 218, 173, 232, 246, 233, | |
433 | 203, 143, 247, 174, 189, 159, 219, 204, 248, 234, 249, 175, 190, 220, 205, 250, | |
434 | 235, 191, 221, 251, 236, 206, 252, 222, 207, 237, 223, 253, 238, 254, 239, 255, | |
435 | }; | |
436 | ||
437 | static const int16_t vp9_default_scan_32x32[1024] = { | |
438 | 0, 1, 32, 2, 33, 64, 3, 34, 65, 4, 96, 35, 66, 5, 36, 97, 67, 128, 98, 68, 37, 6, 129, 99, 7, 160, 69, 38, 130, 100, 161, 131, | |
439 | 39, 70, 8, 101, 162, 132, 192, 71, 40, 9, 102, 163, 133, 193, 72, 224, 103, 41, 164, 10, 194, 134, 165, 73, 104, 135, 225, 42, 195, 11, 256, 166, | |
440 | 226, 196, 74, 105, 136, 43, 12, 167, 197, 227, 257, 75, 106, 137, 228, 44, 198, 168, 258, 288, 13, 229, 76, 107, 199, 138, 259, 169, 289, 45, 230, 260, | |
441 | 200, 108, 14, 170, 139, 320, 290, 77, 231, 261, 46, 201, 140, 291, 109, 232, 321, 262, 171, 78, 292, 15, 322, 202, 263, 352, 172, 293, 233, 141, 323, 110, | |
442 | 47, 203, 264, 234, 294, 353, 324, 16, 79, 204, 265, 295, 325, 173, 354, 142, 235, 384, 48, 296, 111, 266, 355, 326, 80, 17, 205, 236, 174, 356, 385, 327, | |
443 | 143, 297, 267, 357, 386, 112, 49, 328, 298, 206, 416, 237, 358, 387, 81, 175, 18, 329, 359, 388, 299, 330, 389, 113, 417, 238, 360, 50, 207, 418, 390, 331, | |
444 | 19, 448, 361, 82, 419, 391, 239, 51, 362, 420, 114, 449, 480, 421, 83, 363, 450, 422, 512, 451, 423, 115, 452, 481, 453, 482, 454, 544, 483, 455, 513, 484, | |
445 | 514, 485, 515, 486, 545, 576, 487, 546, 547, 608, 577, 578, 579, 609, 610, 611, 20, 144, 268, 392, 516, 640, 21, 52, 145, 176, 269, 300, 393, 424, 517, 548, | |
446 | 641, 672, 22, 53, 84, 146, 177, 208, 270, 301, 332, 394, 425, 456, 518, 549, 580, 642, 673, 704, 23, 54, 85, 116, 147, 178, 209, 240, 271, 302, 333, 364, | |
447 | 395, 426, 457, 488, 519, 550, 581, 612, 643, 674, 705, 736, 55, 86, 117, 179, 210, 241, 303, 334, 365, 427, 458, 489, 551, 582, 613, 675, 706, 737, 87, 118, | |
448 | 211, 242, 335, 366, 459, 490, 583, 614, 707, 738, 119, 243, 367, 491, 615, 739, 24, 148, 272, 396, 520, 644, 768, 25, 56, 149, 180, 273, 304, 397, 428, 521, | |
449 | 552, 645, 676, 769, 800, 26, 57, 88, 150, 181, 212, 274, 305, 336, 398, 429, 460, 522, 553, 584, 646, 677, 708, 770, 801, 832, 27, 58, 89, 120, 151, 182, | |
450 | 213, 244, 275, 306, 337, 368, 399, 430, 461, 492, 523, 554, 585, 616, 647, 678, 709, 740, 771, 802, 833, 864, 59, 90, 121, 183, 214, 245, 307, 338, 369, 431, | |
451 | 462, 493, 555, 586, 617, 679, 710, 741, 803, 834, 865, 91, 122, 215, 246, 339, 370, 463, 494, 587, 618, 711, 742, 835, 866, 123, 247, 371, 495, 619, 743, 867, | |
452 | 28, 152, 276, 400, 524, 648, 772, 896, 29, 60, 153, 184, 277, 308, 401, 432, 525, 556, 649, 680, 773, 804, 897, 928, 30, 61, 92, 154, 185, 216, 278, 309, | |
453 | 340, 402, 433, 464, 526, 557, 588, 650, 681, 712, 774, 805, 836, 898, 929, 960, 31, 62, 93, 124, 155, 186, 217, 248, 279, 310, 341, 372, 403, 434, 465, 496, | |
454 | 527, 558, 589, 620, 651, 682, 713, 744, 775, 806, 837, 868, 899, 930, 961, 992, 63, 94, 125, 187, 218, 249, 311, 342, 373, 435, 466, 497, 559, 590, 621, 683, | |
455 | 714, 745, 807, 838, 869, 931, 962, 993, 95, 126, 219, 250, 343, 374, 467, 498, 591, 622, 715, 746, 839, 870, 963, 994, 127, 251, 375, 499, 623, 747, 871, 995, | |
456 | 156, 280, 404, 528, 652, 776, 900, 157, 188, 281, 312, 405, 436, 529, 560, 653, 684, 777, 808, 901, 932, 158, 189, 220, 282, 313, 344, 406, 437, 468, 530, 561, | |
457 | 592, 654, 685, 716, 778, 809, 840, 902, 933, 964, 159, 190, 221, 252, 283, 314, 345, 376, 407, 438, 469, 500, 531, 562, 593, 624, 655, 686, 717, 748, 779, 810, | |
458 | 841, 872, 903, 934, 965, 996, 191, 222, 253, 315, 346, 377, 439, 470, 501, 563, 594, 625, 687, 718, 749, 811, 842, 873, 935, 966, 997, 223, 254, 347, 378, 471, | |
459 | 502, 595, 626, 719, 750, 843, 874, 967, 998, 255, 379, 503, 627, 751, 875, 999, 284, 408, 532, 656, 780, 904, 285, 316, 409, 440, 533, 564, 657, 688, 781, 812, | |
460 | 905, 936, 286, 317, 348, 410, 441, 472, 534, 565, 596, 658, 689, 720, 782, 813, 844, 906, 937, 968, 287, 318, 349, 380, 411, 442, 473, 504, 535, 566, 597, 628, | |
461 | 659, 690, 721, 752, 783, 814, 845, 876, 907, 938, 969, 1000, 319, 350, 381, 443, 474, 505, 567, 598, 629, 691, 722, 753, 815, 846, 877, 939, 970, 1001, 351, 382, | |
462 | 475, 506, 599, 630, 723, 754, 847, 878, 971, 1002, 383, 507, 631, 755, 879, 1003, 412, 536, 660, 784, 908, 413, 444, 537, 568, 661, 692, 785, 816, 909, 940, 414, | |
463 | 445, 476, 538, 569, 600, 662, 693, 724, 786, 817, 848, 910, 941, 972, 415, 446, 477, 508, 539, 570, 601, 632, 663, 694, 725, 756, 787, 818, 849, 880, 911, 942, | |
464 | 973, 1004, 447, 478, 509, 571, 602, 633, 695, 726, 757, 819, 850, 881, 943, 974, 1005, 479, 510, 603, 634, 727, 758, 851, 882, 975, 1006, 511, 635, 759, 883, 1007, | |
465 | 540, 664, 788, 912, 541, 572, 665, 696, 789, 820, 913, 944, 542, 573, 604, 666, 697, 728, 790, 821, 852, 914, 945, 976, 543, 574, 605, 636, 667, 698, 729, 760, | |
466 | 791, 822, 853, 884, 915, 946, 977, 1008, 575, 606, 637, 699, 730, 761, 823, 854, 885, 947, 978, 1009, 607, 638, 731, 762, 855, 886, 979, 1010, 639, 763, 887, 1011, | |
467 | 668, 792, 916, 669, 700, 793, 824, 917, 948, 670, 701, 732, 794, 825, 856, 918, 949, 980, 671, 702, 733, 764, 795, 826, 857, 888, 919, 950, 981, 1012, 703, 734, | |
468 | 765, 827, 858, 889, 951, 982, 1013, 735, 766, 859, 890, 983, 1014, 767, 891, 1015, 796, 920, 797, 828, 921, 952, 798, 829, 860, 922, 953, 984, 799, 830, 861, 892, | |
469 | 923, 954, 985, 1016, 831, 862, 893, 955, 986, 1017, 863, 894, 987, 1018, 895, 1019, 924, 925, 956, 926, 957, 988, 927, 958, 989, 1020, 959, 990, 1021, 991, 1022, 1023, | |
470 | }; | |
471 | ||
472 | static const int16_t * const vp9_scans[5][4] = { | |
473 | { | |
474 | vp9_default_scan_4x4, vp9_col_scan_4x4, | |
475 | vp9_row_scan_4x4, vp9_default_scan_4x4 | |
476 | }, { | |
477 | vp9_default_scan_8x8, vp9_col_scan_8x8, | |
478 | vp9_row_scan_8x8, vp9_default_scan_8x8 | |
479 | }, { | |
480 | vp9_default_scan_16x16, vp9_col_scan_16x16, | |
481 | vp9_row_scan_16x16, vp9_default_scan_16x16 | |
482 | }, { | |
483 | vp9_default_scan_32x32, vp9_default_scan_32x32, | |
484 | vp9_default_scan_32x32, vp9_default_scan_32x32 | |
485 | }, { // lossless | |
486 | vp9_default_scan_4x4, vp9_default_scan_4x4, | |
487 | vp9_default_scan_4x4, vp9_default_scan_4x4 | |
488 | } | |
489 | }; | |
490 | ||
491 | static const int16_t vp9_default_scan_4x4_nb[16][2] = { | |
492 | { 0, 0 }, { 0, 0 }, { 4, 1 }, { 1, 1 }, | |
493 | { 4, 4 }, { 2, 2 }, { 5, 2 }, { 8, 8 }, | |
494 | { 8, 5 }, { 6, 3 }, { 9, 6 }, { 12, 9 }, | |
495 | { 10, 7 }, { 13, 10 }, { 14, 11 }, { 0, 0 }, | |
496 | }; | |
497 | ||
498 | static const int16_t vp9_col_scan_4x4_nb[16][2] = { | |
499 | { 0, 0 }, { 1, 1 }, { 0, 0 }, { 2, 2 }, | |
500 | { 4, 4 }, { 5, 5 }, { 4, 4 }, { 6, 6 }, | |
501 | { 8, 8 }, { 9, 9 }, { 8, 8 }, { 12, 12 }, | |
502 | { 10, 10 }, { 13, 13 }, { 14, 14 }, { 0, 0 }, | |
503 | }; | |
504 | ||
505 | static const int16_t vp9_row_scan_4x4_nb[16][2] = { | |
506 | { 0, 0 }, { 0, 0 }, { 4, 4 }, { 1, 1 }, | |
507 | { 8, 8 }, { 5, 5 }, { 1, 1 }, { 2, 2 }, | |
508 | { 9, 9 }, { 2, 2 }, { 6, 6 }, { 3, 3 }, | |
509 | { 10, 10 }, { 7, 7 }, { 11, 11 }, { 0, 0 }, | |
510 | }; | |
511 | ||
512 | static const int16_t vp9_default_scan_8x8_nb[64][2] = { | |
513 | { 0, 0 }, { 0, 0 }, { 1, 1 }, { 8, 1 }, | |
514 | { 8, 8 }, { 9, 2 }, { 2, 2 }, { 16, 9 }, | |
515 | { 16, 16 }, { 17, 10 }, { 10, 3 }, { 3, 3 }, | |
516 | { 24, 17 }, { 24, 24 }, { 18, 11 }, { 11, 4 }, | |
517 | { 25, 18 }, { 4, 4 }, { 32, 25 }, { 19, 12 }, | |
518 | { 26, 19 }, { 32, 32 }, { 12, 5 }, { 33, 26 }, | |
519 | { 5, 5 }, { 40, 33 }, { 27, 20 }, { 20, 13 }, | |
520 | { 34, 27 }, { 41, 34 }, { 40, 40 }, { 13, 6 }, | |
521 | { 6, 6 }, { 35, 28 }, { 28, 21 }, { 42, 35 }, | |
522 | { 48, 48 }, { 48, 41 }, { 21, 14 }, { 14, 7 }, | |
523 | { 36, 29 }, { 49, 42 }, { 43, 36 }, { 56, 49 }, | |
524 | { 29, 22 }, { 22, 15 }, { 50, 43 }, { 44, 37 }, | |
525 | { 57, 50 }, { 37, 30 }, { 30, 23 }, { 51, 44 }, | |
526 | { 58, 51 }, { 38, 31 }, { 45, 38 }, { 52, 45 }, | |
527 | { 59, 52 }, { 46, 39 }, { 53, 46 }, { 60, 53 }, | |
528 | { 54, 47 }, { 61, 54 }, { 62, 55 }, { 0, 0 }, | |
529 | }; | |
530 | ||
531 | static const int16_t vp9_col_scan_8x8_nb[64][2] = { | |
532 | { 0, 0 }, { 1, 1 }, { 0, 0 }, { 2, 2 }, | |
533 | { 8, 8 }, { 3, 3 }, { 9, 9 }, { 8, 8 }, | |
534 | { 4, 4 }, { 10, 10 }, { 16, 16 }, { 11, 11 }, | |
535 | { 17, 17 }, { 5, 5 }, { 16, 16 }, { 18, 18 }, | |
536 | { 12, 12 }, { 24, 24 }, { 6, 6 }, { 25, 25 }, | |
537 | { 19, 19 }, { 24, 24 }, { 13, 13 }, { 26, 26 }, | |
538 | { 20, 20 }, { 32, 32 }, { 27, 27 }, { 33, 33 }, | |
539 | { 14, 14 }, { 21, 21 }, { 34, 34 }, { 32, 32 }, | |
540 | { 28, 28 }, { 40, 40 }, { 35, 35 }, { 22, 22 }, | |
541 | { 29, 29 }, { 41, 41 }, { 36, 36 }, { 40, 40 }, | |
542 | { 42, 42 }, { 30, 30 }, { 43, 43 }, { 48, 48 }, | |
543 | { 37, 37 }, { 49, 49 }, { 48, 48 }, { 44, 44 }, | |
544 | { 38, 38 }, { 50, 50 }, { 56, 56 }, { 51, 51 }, | |
545 | { 45, 45 }, { 57, 57 }, { 52, 52 }, { 58, 58 }, | |
546 | { 46, 46 }, { 59, 59 }, { 53, 53 }, { 60, 60 }, | |
547 | { 54, 54 }, { 61, 61 }, { 62, 62 }, { 0, 0 }, | |
548 | }; | |
549 | ||
550 | static const int16_t vp9_row_scan_8x8_nb[64][2] = { | |
551 | { 0, 0 }, { 8, 8 }, { 0, 0 }, { 1, 1 }, | |
552 | { 16, 16 }, { 1, 1 }, { 9, 9 }, { 24, 24 }, | |
553 | { 2, 2 }, { 17, 17 }, { 2, 2 }, { 32, 32 }, | |
554 | { 10, 10 }, { 3, 3 }, { 25, 25 }, { 18, 18 }, | |
555 | { 11, 11 }, { 3, 3 }, { 40, 40 }, { 33, 33 }, | |
556 | { 26, 26 }, { 4, 4 }, { 19, 19 }, { 48, 48 }, | |
557 | { 12, 12 }, { 4, 4 }, { 34, 34 }, { 27, 27 }, | |
558 | { 5, 5 }, { 41, 41 }, { 20, 20 }, { 5, 5 }, | |
559 | { 13, 13 }, { 35, 35 }, { 28, 28 }, { 6, 6 }, | |
560 | { 42, 42 }, { 21, 21 }, { 49, 49 }, { 6, 6 }, | |
561 | { 36, 36 }, { 14, 14 }, { 29, 29 }, { 43, 43 }, | |
562 | { 7, 7 }, { 50, 50 }, { 22, 22 }, { 15, 15 }, | |
563 | { 37, 37 }, { 44, 44 }, { 30, 30 }, { 51, 51 }, | |
564 | { 23, 23 }, { 38, 38 }, { 45, 45 }, { 31, 31 }, | |
565 | { 52, 52 }, { 39, 39 }, { 53, 53 }, { 46, 46 }, | |
566 | { 54, 54 }, { 47, 47 }, { 55, 55 }, { 0, 0 }, | |
567 | }; | |
568 | ||
569 | static const int16_t vp9_default_scan_16x16_nb[256][2] = { | |
570 | { 0, 0 }, { 0, 0 }, { 1, 1 }, { 16, 1 }, | |
571 | { 16, 16 }, { 2, 2 }, { 17, 2 }, { 32, 17 }, | |
572 | { 32, 32 }, { 3, 3 }, { 33, 18 }, { 18, 3 }, | |
573 | { 48, 33 }, { 19, 4 }, { 4, 4 }, { 34, 19 }, | |
574 | { 48, 48 }, { 49, 34 }, { 35, 20 }, { 64, 49 }, | |
575 | { 20, 5 }, { 5, 5 }, { 50, 35 }, { 64, 64 }, | |
576 | { 65, 50 }, { 36, 21 }, { 21, 6 }, { 51, 36 }, | |
577 | { 6, 6 }, { 80, 65 }, { 66, 51 }, { 37, 22 }, | |
578 | { 81, 66 }, { 52, 37 }, { 22, 7 }, { 80, 80 }, | |
579 | { 67, 52 }, { 7, 7 }, { 82, 67 }, { 96, 81 }, | |
580 | { 53, 38 }, { 38, 23 }, { 68, 53 }, { 96, 96 }, | |
581 | { 23, 8 }, { 97, 82 }, { 83, 68 }, { 69, 54 }, | |
582 | { 54, 39 }, { 8, 8 }, { 39, 24 }, { 84, 69 }, | |
583 | { 98, 83 }, { 112, 97 }, { 112, 112 }, { 24, 9 }, | |
584 | { 113, 98 }, { 99, 84 }, { 70, 55 }, { 85, 70 }, | |
585 | { 55, 40 }, { 9, 9 }, { 40, 25 }, { 114, 99 }, | |
586 | { 100, 85 }, { 128, 113 }, { 115, 100 }, { 71, 56 }, | |
587 | { 86, 71 }, { 25, 10 }, { 129, 114 }, { 128, 128 }, | |
588 | { 101, 86 }, { 56, 41 }, { 10, 10 }, { 41, 26 }, | |
589 | { 116, 101 }, { 130, 115 }, { 144, 129 }, { 87, 72 }, | |
590 | { 102, 87 }, { 26, 11 }, { 72, 57 }, { 131, 116 }, | |
591 | { 117, 102 }, { 145, 130 }, { 57, 42 }, { 144, 144 }, | |
592 | { 11, 11 }, { 42, 27 }, { 132, 117 }, { 146, 131 }, | |
593 | { 103, 88 }, { 88, 73 }, { 118, 103 }, { 160, 145 }, | |
594 | { 73, 58 }, { 147, 132 }, { 133, 118 }, { 27, 12 }, | |
595 | { 161, 146 }, { 58, 43 }, { 12, 12 }, { 160, 160 }, | |
596 | { 119, 104 }, { 148, 133 }, { 89, 74 }, { 134, 119 }, | |
597 | { 104, 89 }, { 162, 147 }, { 43, 28 }, { 74, 59 }, | |
598 | { 176, 161 }, { 163, 148 }, { 28, 13 }, { 149, 134 }, | |
599 | { 120, 105 }, { 135, 120 }, { 177, 162 }, { 164, 149 }, | |
600 | { 13, 13 }, { 105, 90 }, { 59, 44 }, { 90, 75 }, | |
601 | { 150, 135 }, { 44, 29 }, { 178, 163 }, { 176, 176 }, | |
602 | { 136, 121 }, { 165, 150 }, { 121, 106 }, { 75, 60 }, | |
603 | { 179, 164 }, { 151, 136 }, { 29, 14 }, { 60, 45 }, | |
604 | { 14, 14 }, { 106, 91 }, { 166, 151 }, { 180, 165 }, | |
605 | { 192, 177 }, { 91, 76 }, { 192, 192 }, { 45, 30 }, | |
606 | { 137, 122 }, { 122, 107 }, { 152, 137 }, { 193, 178 }, | |
607 | { 76, 61 }, { 167, 152 }, { 181, 166 }, { 30, 15 }, | |
608 | { 194, 179 }, { 208, 193 }, { 182, 167 }, { 107, 92 }, | |
609 | { 138, 123 }, { 61, 46 }, { 153, 138 }, { 46, 31 }, | |
610 | { 195, 180 }, { 92, 77 }, { 168, 153 }, { 209, 194 }, | |
611 | { 196, 181 }, { 208, 208 }, { 123, 108 }, { 183, 168 }, | |
612 | { 210, 195 }, { 77, 62 }, { 108, 93 }, { 169, 154 }, | |
613 | { 154, 139 }, { 62, 47 }, { 197, 182 }, { 211, 196 }, | |
614 | { 184, 169 }, { 224, 209 }, { 224, 224 }, { 139, 124 }, | |
615 | { 93, 78 }, { 198, 183 }, { 124, 109 }, { 78, 63 }, | |
616 | { 212, 197 }, { 225, 210 }, { 170, 155 }, { 185, 170 }, | |
617 | { 155, 140 }, { 213, 198 }, { 199, 184 }, { 109, 94 }, | |
618 | { 226, 211 }, { 140, 125 }, { 94, 79 }, { 240, 225 }, | |
619 | { 214, 199 }, { 227, 212 }, { 200, 185 }, { 125, 110 }, | |
620 | { 241, 226 }, { 186, 171 }, { 171, 156 }, { 156, 141 }, | |
621 | { 228, 213 }, { 110, 95 }, { 215, 200 }, { 242, 227 }, | |
622 | { 141, 126 }, { 201, 186 }, { 229, 214 }, { 126, 111 }, | |
623 | { 216, 201 }, { 243, 228 }, { 172, 157 }, { 187, 172 }, | |
624 | { 230, 215 }, { 157, 142 }, { 202, 187 }, { 142, 127 }, | |
625 | { 244, 229 }, { 217, 202 }, { 231, 216 }, { 188, 173 }, | |
626 | { 245, 230 }, { 158, 143 }, { 173, 158 }, { 232, 217 }, | |
627 | { 246, 231 }, { 218, 203 }, { 203, 188 }, { 174, 159 }, | |
628 | { 189, 174 }, { 247, 232 }, { 233, 218 }, { 204, 189 }, | |
629 | { 219, 204 }, { 248, 233 }, { 190, 175 }, { 234, 219 }, | |
630 | { 220, 205 }, { 249, 234 }, { 205, 190 }, { 221, 206 }, | |
631 | { 250, 235 }, { 235, 220 }, { 206, 191 }, { 236, 221 }, | |
632 | { 222, 207 }, { 251, 236 }, { 237, 222 }, { 252, 237 }, | |
633 | { 238, 223 }, { 253, 238 }, { 254, 239 }, { 0, 0 }, | |
634 | }; | |
635 | ||
636 | static const int16_t vp9_col_scan_16x16_nb[256][2] = { | |
637 | { 0, 0 }, { 1, 1 }, { 2, 2 }, { 0, 0 }, | |
638 | { 3, 3 }, { 16, 16 }, { 4, 4 }, { 17, 17 }, | |
639 | { 5, 5 }, { 18, 18 }, { 16, 16 }, { 19, 19 }, | |
640 | { 6, 6 }, { 32, 32 }, { 20, 20 }, { 33, 33 }, | |
641 | { 7, 7 }, { 34, 34 }, { 21, 21 }, { 32, 32 }, | |
642 | { 35, 35 }, { 8, 8 }, { 48, 48 }, { 22, 22 }, | |
643 | { 49, 49 }, { 36, 36 }, { 9, 9 }, { 37, 37 }, | |
644 | { 50, 50 }, { 23, 23 }, { 48, 48 }, { 51, 51 }, | |
645 | { 10, 10 }, { 64, 64 }, { 38, 38 }, { 24, 24 }, | |
646 | { 52, 52 }, { 65, 65 }, { 53, 53 }, { 39, 39 }, | |
647 | { 66, 66 }, { 11, 11 }, { 64, 64 }, { 25, 25 }, | |
648 | { 67, 67 }, { 54, 54 }, { 80, 80 }, { 40, 40 }, | |
649 | { 68, 68 }, { 12, 12 }, { 26, 26 }, { 81, 81 }, | |
650 | { 55, 55 }, { 69, 69 }, { 82, 82 }, { 41, 41 }, | |
651 | { 13, 13 }, { 83, 83 }, { 80, 80 }, { 70, 70 }, | |
652 | { 27, 27 }, { 56, 56 }, { 84, 84 }, { 96, 96 }, | |
653 | { 14, 14 }, { 71, 71 }, { 97, 97 }, { 42, 42 }, | |
654 | { 85, 85 }, { 57, 57 }, { 98, 98 }, { 28, 28 }, | |
655 | { 86, 86 }, { 99, 99 }, { 96, 96 }, { 72, 72 }, | |
656 | { 43, 43 }, { 100, 100 }, { 58, 58 }, { 29, 29 }, | |
657 | { 112, 112 }, { 87, 87 }, { 113, 113 }, { 73, 73 }, | |
658 | { 112, 112 }, { 101, 101 }, { 44, 44 }, { 30, 30 }, | |
659 | { 114, 114 }, { 59, 59 }, { 102, 102 }, { 88, 88 }, | |
660 | { 115, 115 }, { 74, 74 }, { 128, 128 }, { 116, 116 }, | |
661 | { 45, 45 }, { 103, 103 }, { 89, 89 }, { 60, 60 }, | |
662 | { 129, 129 }, { 117, 117 }, { 130, 130 }, { 131, 131 }, | |
663 | { 104, 104 }, { 75, 75 }, { 46, 46 }, { 118, 118 }, | |
664 | { 128, 128 }, { 90, 90 }, { 61, 61 }, { 132, 132 }, | |
665 | { 105, 105 }, { 144, 144 }, { 119, 119 }, { 145, 145 }, | |
666 | { 133, 133 }, { 76, 76 }, { 146, 146 }, { 120, 120 }, | |
667 | { 91, 91 }, { 134, 134 }, { 147, 147 }, { 62, 62 }, | |
668 | { 106, 106 }, { 135, 135 }, { 121, 121 }, { 92, 92 }, | |
669 | { 148, 148 }, { 144, 144 }, { 77, 77 }, { 149, 149 }, | |
670 | { 136, 136 }, { 107, 107 }, { 160, 160 }, { 161, 161 }, | |
671 | { 150, 150 }, { 122, 122 }, { 78, 78 }, { 137, 137 }, | |
672 | { 162, 162 }, { 151, 151 }, { 93, 93 }, { 163, 163 }, | |
673 | { 108, 108 }, { 164, 164 }, { 152, 152 }, { 123, 123 }, | |
674 | { 138, 138 }, { 160, 160 }, { 165, 165 }, { 94, 94 }, | |
675 | { 176, 176 }, { 166, 166 }, { 109, 109 }, { 153, 153 }, | |
676 | { 177, 177 }, { 124, 124 }, { 178, 178 }, { 139, 139 }, | |
677 | { 167, 167 }, { 154, 154 }, { 110, 110 }, { 179, 179 }, | |
678 | { 176, 176 }, { 180, 180 }, { 168, 168 }, { 140, 140 }, | |
679 | { 125, 125 }, { 181, 181 }, { 192, 192 }, { 193, 193 }, | |
680 | { 155, 155 }, { 182, 182 }, { 169, 169 }, { 194, 194 }, | |
681 | { 126, 126 }, { 141, 141 }, { 195, 195 }, { 183, 183 }, | |
682 | { 192, 192 }, { 196, 196 }, { 156, 156 }, { 170, 170 }, | |
683 | { 142, 142 }, { 184, 184 }, { 197, 197 }, { 208, 208 }, | |
684 | { 198, 198 }, { 209, 209 }, { 171, 171 }, { 157, 157 }, | |
685 | { 185, 185 }, { 210, 210 }, { 208, 208 }, { 211, 211 }, | |
686 | { 199, 199 }, { 224, 224 }, { 158, 158 }, { 212, 212 }, | |
687 | { 224, 224 }, { 186, 186 }, { 200, 200 }, { 172, 172 }, | |
688 | { 225, 225 }, { 213, 213 }, { 214, 214 }, { 226, 226 }, | |
689 | { 201, 201 }, { 227, 227 }, { 187, 187 }, { 240, 240 }, | |
690 | { 215, 215 }, { 173, 173 }, { 228, 228 }, { 241, 241 }, | |
691 | { 202, 202 }, { 242, 242 }, { 216, 216 }, { 229, 229 }, | |
692 | { 174, 174 }, { 188, 188 }, { 243, 243 }, { 230, 230 }, | |
693 | { 203, 203 }, { 217, 217 }, { 231, 231 }, { 244, 244 }, | |
694 | { 218, 218 }, { 245, 245 }, { 189, 189 }, { 232, 232 }, | |
695 | { 204, 204 }, { 190, 190 }, { 246, 246 }, { 233, 233 }, | |
696 | { 247, 247 }, { 219, 219 }, { 205, 205 }, { 248, 248 }, | |
697 | { 234, 234 }, { 220, 220 }, { 206, 206 }, { 249, 249 }, | |
698 | { 235, 235 }, { 221, 221 }, { 250, 250 }, { 222, 222 }, | |
699 | { 236, 236 }, { 237, 237 }, { 251, 251 }, { 238, 238 }, | |
700 | { 252, 252 }, { 253, 253 }, { 254, 254 }, { 0, 0 }, | |
701 | }; | |
702 | ||
703 | static const int16_t vp9_row_scan_16x16_nb[256][2] = { | |
704 | { 0, 0 }, { 16, 16 }, { 0, 0 }, { 32, 32 }, | |
705 | { 1, 1 }, { 48, 48 }, { 17, 17 }, { 1, 1 }, | |
706 | { 64, 64 }, { 2, 2 }, { 33, 33 }, { 80, 80 }, | |
707 | { 18, 18 }, { 2, 2 }, { 49, 49 }, { 3, 3 }, | |
708 | { 96, 96 }, { 34, 34 }, { 65, 65 }, { 19, 19 }, | |
709 | { 3, 3 }, { 112, 112 }, { 50, 50 }, { 4, 4 }, | |
710 | { 81, 81 }, { 35, 35 }, { 66, 66 }, { 4, 4 }, | |
711 | { 128, 128 }, { 20, 20 }, { 51, 51 }, { 97, 97 }, | |
712 | { 82, 82 }, { 5, 5 }, { 36, 36 }, { 144, 144 }, | |
713 | { 67, 67 }, { 113, 113 }, { 21, 21 }, { 52, 52 }, | |
714 | { 5, 5 }, { 98, 98 }, { 160, 160 }, { 83, 83 }, | |
715 | { 37, 37 }, { 6, 6 }, { 68, 68 }, { 129, 129 }, | |
716 | { 22, 22 }, { 53, 53 }, { 114, 114 }, { 6, 6 }, | |
717 | { 99, 99 }, { 176, 176 }, { 84, 84 }, { 38, 38 }, | |
718 | { 7, 7 }, { 69, 69 }, { 145, 145 }, { 130, 130 }, | |
719 | { 115, 115 }, { 23, 23 }, { 54, 54 }, { 192, 192 }, | |
720 | { 100, 100 }, { 7, 7 }, { 85, 85 }, { 161, 161 }, | |
721 | { 39, 39 }, { 70, 70 }, { 8, 8 }, { 146, 146 }, | |
722 | { 131, 131 }, { 116, 116 }, { 55, 55 }, { 208, 208 }, | |
723 | { 101, 101 }, { 24, 24 }, { 86, 86 }, { 8, 8 }, | |
724 | { 132, 132 }, { 40, 40 }, { 71, 71 }, { 177, 177 }, | |
725 | { 147, 147 }, { 224, 224 }, { 117, 117 }, { 162, 162 }, | |
726 | { 9, 9 }, { 102, 102 }, { 56, 56 }, { 25, 25 }, | |
727 | { 87, 87 }, { 148, 148 }, { 9, 9 }, { 133, 133 }, | |
728 | { 72, 72 }, { 118, 118 }, { 193, 193 }, { 163, 163 }, | |
729 | { 41, 41 }, { 103, 103 }, { 178, 178 }, { 10, 10 }, | |
730 | { 57, 57 }, { 149, 149 }, { 134, 134 }, { 88, 88 }, | |
731 | { 26, 26 }, { 119, 119 }, { 10, 10 }, { 164, 164 }, | |
732 | { 104, 104 }, { 73, 73 }, { 209, 209 }, { 179, 179 }, | |
733 | { 42, 42 }, { 11, 11 }, { 194, 194 }, { 135, 135 }, | |
734 | { 165, 165 }, { 150, 150 }, { 58, 58 }, { 27, 27 }, | |
735 | { 89, 89 }, { 11, 11 }, { 120, 120 }, { 74, 74 }, | |
736 | { 43, 43 }, { 225, 225 }, { 105, 105 }, { 12, 12 }, | |
737 | { 180, 180 }, { 151, 151 }, { 195, 195 }, { 136, 136 }, | |
738 | { 28, 28 }, { 166, 166 }, { 121, 121 }, { 59, 59 }, | |
739 | { 12, 12 }, { 210, 210 }, { 90, 90 }, { 106, 106 }, | |
740 | { 44, 44 }, { 181, 181 }, { 75, 75 }, { 152, 152 }, | |
741 | { 13, 13 }, { 167, 167 }, { 137, 137 }, { 13, 13 }, | |
742 | { 60, 60 }, { 196, 196 }, { 122, 122 }, { 29, 29 }, | |
743 | { 91, 91 }, { 14, 14 }, { 182, 182 }, { 76, 76 }, | |
744 | { 211, 211 }, { 153, 153 }, { 14, 14 }, { 107, 107 }, | |
745 | { 138, 138 }, { 45, 45 }, { 226, 226 }, { 168, 168 }, | |
746 | { 197, 197 }, { 123, 123 }, { 30, 30 }, { 61, 61 }, | |
747 | { 15, 15 }, { 92, 92 }, { 154, 154 }, { 183, 183 }, | |
748 | { 169, 169 }, { 108, 108 }, { 212, 212 }, { 77, 77 }, | |
749 | { 139, 139 }, { 198, 198 }, { 46, 46 }, { 124, 124 }, | |
750 | { 227, 227 }, { 62, 62 }, { 31, 31 }, { 184, 184 }, | |
751 | { 93, 93 }, { 170, 170 }, { 155, 155 }, { 185, 185 }, | |
752 | { 78, 78 }, { 47, 47 }, { 199, 199 }, { 213, 213 }, | |
753 | { 140, 140 }, { 63, 63 }, { 109, 109 }, { 125, 125 }, | |
754 | { 94, 94 }, { 200, 200 }, { 171, 171 }, { 156, 156 }, | |
755 | { 228, 228 }, { 186, 186 }, { 214, 214 }, { 201, 201 }, | |
756 | { 79, 79 }, { 141, 141 }, { 110, 110 }, { 229, 229 }, | |
757 | { 95, 95 }, { 126, 126 }, { 215, 215 }, { 172, 172 }, | |
758 | { 111, 111 }, { 142, 142 }, { 202, 202 }, { 157, 157 }, | |
759 | { 216, 216 }, { 230, 230 }, { 217, 217 }, { 187, 187 }, | |
760 | { 127, 127 }, { 231, 231 }, { 158, 158 }, { 173, 173 }, | |
761 | { 143, 143 }, { 203, 203 }, { 188, 188 }, { 232, 232 }, | |
762 | { 218, 218 }, { 233, 233 }, { 159, 159 }, { 174, 174 }, | |
763 | { 204, 204 }, { 189, 189 }, { 234, 234 }, { 219, 219 }, | |
764 | { 175, 175 }, { 205, 205 }, { 235, 235 }, { 220, 220 }, | |
765 | { 190, 190 }, { 236, 236 }, { 206, 206 }, { 191, 191 }, | |
766 | { 221, 221 }, { 207, 207 }, { 237, 237 }, { 222, 222 }, | |
767 | { 238, 238 }, { 223, 223 }, { 239, 239 }, { 0, 0 }, | |
768 | }; | |
769 | ||
770 | static const int16_t vp9_default_scan_32x32_nb[1024][2] = { | |
771 | { 0, 0 }, { 0, 0 }, { 1, 1 }, { 32, 1 }, | |
772 | { 32, 32 }, { 2, 2 }, { 33, 2 }, { 64, 33 }, | |
773 | { 3, 3 }, { 64, 64 }, { 34, 3 }, { 65, 34 }, | |
774 | { 4, 4 }, { 35, 4 }, { 96, 65 }, { 66, 35 }, | |
775 | { 96, 96 }, { 97, 66 }, { 67, 36 }, { 36, 5 }, | |
776 | { 5, 5 }, { 128, 97 }, { 98, 67 }, { 6, 6 }, | |
777 | { 128, 128 }, { 68, 37 }, { 37, 6 }, { 129, 98 }, | |
778 | { 99, 68 }, { 160, 129 }, { 130, 99 }, { 38, 7 }, | |
779 | { 69, 38 }, { 7, 7 }, { 100, 69 }, { 161, 130 }, | |
780 | { 131, 100 }, { 160, 160 }, { 70, 39 }, { 39, 8 }, | |
781 | { 8, 8 }, { 101, 70 }, { 162, 131 }, { 132, 101 }, | |
782 | { 192, 161 }, { 71, 40 }, { 192, 192 }, { 102, 71 }, | |
783 | { 40, 9 }, { 163, 132 }, { 9, 9 }, { 193, 162 }, | |
784 | { 133, 102 }, { 164, 133 }, { 72, 41 }, { 103, 72 }, | |
785 | { 134, 103 }, { 224, 193 }, { 41, 10 }, { 194, 163 }, | |
786 | { 10, 10 }, { 224, 224 }, { 165, 134 }, { 225, 194 }, | |
787 | { 195, 164 }, { 73, 42 }, { 104, 73 }, { 135, 104 }, | |
788 | { 42, 11 }, { 11, 11 }, { 166, 135 }, { 196, 165 }, | |
789 | { 226, 195 }, { 256, 225 }, { 74, 43 }, { 105, 74 }, | |
790 | { 136, 105 }, { 227, 196 }, { 43, 12 }, { 197, 166 }, | |
791 | { 167, 136 }, { 257, 226 }, { 256, 256 }, { 12, 12 }, | |
792 | { 228, 197 }, { 75, 44 }, { 106, 75 }, { 198, 167 }, | |
793 | { 137, 106 }, { 258, 227 }, { 168, 137 }, { 288, 257 }, | |
794 | { 44, 13 }, { 229, 198 }, { 259, 228 }, { 199, 168 }, | |
795 | { 107, 76 }, { 13, 13 }, { 169, 138 }, { 138, 107 }, | |
796 | { 288, 288 }, { 289, 258 }, { 76, 45 }, { 230, 199 }, | |
797 | { 260, 229 }, { 45, 14 }, { 200, 169 }, { 139, 108 }, | |
798 | { 290, 259 }, { 108, 77 }, { 231, 200 }, { 320, 289 }, | |
799 | { 261, 230 }, { 170, 139 }, { 77, 46 }, { 291, 260 }, | |
800 | { 14, 14 }, { 321, 290 }, { 201, 170 }, { 262, 231 }, | |
801 | { 320, 320 }, { 171, 140 }, { 292, 261 }, { 232, 201 }, | |
802 | { 140, 109 }, { 322, 291 }, { 109, 78 }, { 46, 15 }, | |
803 | { 202, 171 }, { 263, 232 }, { 233, 202 }, { 293, 262 }, | |
804 | { 352, 321 }, { 323, 292 }, { 15, 15 }, { 78, 47 }, | |
805 | { 203, 172 }, { 264, 233 }, { 294, 263 }, { 324, 293 }, | |
806 | { 172, 141 }, { 353, 322 }, { 141, 110 }, { 234, 203 }, | |
807 | { 352, 352 }, { 47, 16 }, { 295, 264 }, { 110, 79 }, | |
808 | { 265, 234 }, { 354, 323 }, { 325, 294 }, { 79, 48 }, | |
809 | { 16, 16 }, { 204, 173 }, { 235, 204 }, { 173, 142 }, | |
810 | { 355, 324 }, { 384, 353 }, { 326, 295 }, { 142, 111 }, | |
811 | { 296, 265 }, { 266, 235 }, { 356, 325 }, { 385, 354 }, | |
812 | { 111, 80 }, { 48, 17 }, { 327, 296 }, { 297, 266 }, | |
813 | { 205, 174 }, { 384, 384 }, { 236, 205 }, { 357, 326 }, | |
814 | { 386, 355 }, { 80, 49 }, { 174, 143 }, { 17, 17 }, | |
815 | { 328, 297 }, { 358, 327 }, { 387, 356 }, { 298, 267 }, | |
816 | { 329, 298 }, { 388, 357 }, { 112, 81 }, { 416, 385 }, | |
817 | { 237, 206 }, { 359, 328 }, { 49, 18 }, { 206, 175 }, | |
818 | { 417, 386 }, { 389, 358 }, { 330, 299 }, { 18, 18 }, | |
819 | { 416, 416 }, { 360, 329 }, { 81, 50 }, { 418, 387 }, | |
820 | { 390, 359 }, { 238, 207 }, { 50, 19 }, { 361, 330 }, | |
821 | { 419, 388 }, { 113, 82 }, { 448, 417 }, { 448, 448 }, | |
822 | { 420, 389 }, { 82, 51 }, { 362, 331 }, { 449, 418 }, | |
823 | { 421, 390 }, { 480, 480 }, { 450, 419 }, { 422, 391 }, | |
824 | { 114, 83 }, { 451, 420 }, { 480, 449 }, { 452, 421 }, | |
825 | { 481, 450 }, { 453, 422 }, { 512, 512 }, { 482, 451 }, | |
826 | { 454, 423 }, { 512, 481 }, { 483, 452 }, { 513, 482 }, | |
827 | { 484, 453 }, { 514, 483 }, { 485, 454 }, { 544, 513 }, | |
828 | { 544, 544 }, { 486, 455 }, { 545, 514 }, { 546, 515 }, | |
829 | { 576, 576 }, { 576, 545 }, { 577, 546 }, { 578, 547 }, | |
830 | { 608, 577 }, { 609, 578 }, { 610, 579 }, { 19, 19 }, | |
831 | { 143, 112 }, { 267, 236 }, { 391, 360 }, { 515, 484 }, | |
832 | { 608, 608 }, { 20, 20 }, { 51, 20 }, { 144, 113 }, | |
833 | { 175, 144 }, { 268, 237 }, { 299, 268 }, { 392, 361 }, | |
834 | { 423, 392 }, { 516, 485 }, { 547, 516 }, { 640, 609 }, | |
835 | { 640, 640 }, { 21, 21 }, { 52, 21 }, { 83, 52 }, | |
836 | { 145, 114 }, { 176, 145 }, { 207, 176 }, { 269, 238 }, | |
837 | { 300, 269 }, { 331, 300 }, { 393, 362 }, { 424, 393 }, | |
838 | { 455, 424 }, { 517, 486 }, { 548, 517 }, { 579, 548 }, | |
839 | { 641, 610 }, { 672, 641 }, { 672, 672 }, { 22, 22 }, | |
840 | { 53, 22 }, { 84, 53 }, { 115, 84 }, { 146, 115 }, | |
841 | { 177, 146 }, { 208, 177 }, { 239, 208 }, { 270, 239 }, | |
842 | { 301, 270 }, { 332, 301 }, { 363, 332 }, { 394, 363 }, | |
843 | { 425, 394 }, { 456, 425 }, { 487, 456 }, { 518, 487 }, | |
844 | { 549, 518 }, { 580, 549 }, { 611, 580 }, { 642, 611 }, | |
845 | { 673, 642 }, { 704, 673 }, { 704, 704 }, { 54, 23 }, | |
846 | { 85, 54 }, { 116, 85 }, { 178, 147 }, { 209, 178 }, | |
847 | { 240, 209 }, { 302, 271 }, { 333, 302 }, { 364, 333 }, | |
848 | { 426, 395 }, { 457, 426 }, { 488, 457 }, { 550, 519 }, | |
849 | { 581, 550 }, { 612, 581 }, { 674, 643 }, { 705, 674 }, | |
850 | { 736, 705 }, { 86, 55 }, { 117, 86 }, { 210, 179 }, | |
851 | { 241, 210 }, { 334, 303 }, { 365, 334 }, { 458, 427 }, | |
852 | { 489, 458 }, { 582, 551 }, { 613, 582 }, { 706, 675 }, | |
853 | { 737, 706 }, { 118, 87 }, { 242, 211 }, { 366, 335 }, | |
854 | { 490, 459 }, { 614, 583 }, { 738, 707 }, { 23, 23 }, | |
855 | { 147, 116 }, { 271, 240 }, { 395, 364 }, { 519, 488 }, | |
856 | { 643, 612 }, { 736, 736 }, { 24, 24 }, { 55, 24 }, | |
857 | { 148, 117 }, { 179, 148 }, { 272, 241 }, { 303, 272 }, | |
858 | { 396, 365 }, { 427, 396 }, { 520, 489 }, { 551, 520 }, | |
859 | { 644, 613 }, { 675, 644 }, { 768, 737 }, { 768, 768 }, | |
860 | { 25, 25 }, { 56, 25 }, { 87, 56 }, { 149, 118 }, | |
861 | { 180, 149 }, { 211, 180 }, { 273, 242 }, { 304, 273 }, | |
862 | { 335, 304 }, { 397, 366 }, { 428, 397 }, { 459, 428 }, | |
863 | { 521, 490 }, { 552, 521 }, { 583, 552 }, { 645, 614 }, | |
864 | { 676, 645 }, { 707, 676 }, { 769, 738 }, { 800, 769 }, | |
865 | { 800, 800 }, { 26, 26 }, { 57, 26 }, { 88, 57 }, | |
866 | { 119, 88 }, { 150, 119 }, { 181, 150 }, { 212, 181 }, | |
867 | { 243, 212 }, { 274, 243 }, { 305, 274 }, { 336, 305 }, | |
868 | { 367, 336 }, { 398, 367 }, { 429, 398 }, { 460, 429 }, | |
869 | { 491, 460 }, { 522, 491 }, { 553, 522 }, { 584, 553 }, | |
870 | { 615, 584 }, { 646, 615 }, { 677, 646 }, { 708, 677 }, | |
871 | { 739, 708 }, { 770, 739 }, { 801, 770 }, { 832, 801 }, | |
872 | { 832, 832 }, { 58, 27 }, { 89, 58 }, { 120, 89 }, | |
873 | { 182, 151 }, { 213, 182 }, { 244, 213 }, { 306, 275 }, | |
874 | { 337, 306 }, { 368, 337 }, { 430, 399 }, { 461, 430 }, | |
875 | { 492, 461 }, { 554, 523 }, { 585, 554 }, { 616, 585 }, | |
876 | { 678, 647 }, { 709, 678 }, { 740, 709 }, { 802, 771 }, | |
877 | { 833, 802 }, { 864, 833 }, { 90, 59 }, { 121, 90 }, | |
878 | { 214, 183 }, { 245, 214 }, { 338, 307 }, { 369, 338 }, | |
879 | { 462, 431 }, { 493, 462 }, { 586, 555 }, { 617, 586 }, | |
880 | { 710, 679 }, { 741, 710 }, { 834, 803 }, { 865, 834 }, | |
881 | { 122, 91 }, { 246, 215 }, { 370, 339 }, { 494, 463 }, | |
882 | { 618, 587 }, { 742, 711 }, { 866, 835 }, { 27, 27 }, | |
883 | { 151, 120 }, { 275, 244 }, { 399, 368 }, { 523, 492 }, | |
884 | { 647, 616 }, { 771, 740 }, { 864, 864 }, { 28, 28 }, | |
885 | { 59, 28 }, { 152, 121 }, { 183, 152 }, { 276, 245 }, | |
886 | { 307, 276 }, { 400, 369 }, { 431, 400 }, { 524, 493 }, | |
887 | { 555, 524 }, { 648, 617 }, { 679, 648 }, { 772, 741 }, | |
888 | { 803, 772 }, { 896, 865 }, { 896, 896 }, { 29, 29 }, | |
889 | { 60, 29 }, { 91, 60 }, { 153, 122 }, { 184, 153 }, | |
890 | { 215, 184 }, { 277, 246 }, { 308, 277 }, { 339, 308 }, | |
891 | { 401, 370 }, { 432, 401 }, { 463, 432 }, { 525, 494 }, | |
892 | { 556, 525 }, { 587, 556 }, { 649, 618 }, { 680, 649 }, | |
893 | { 711, 680 }, { 773, 742 }, { 804, 773 }, { 835, 804 }, | |
894 | { 897, 866 }, { 928, 897 }, { 928, 928 }, { 30, 30 }, | |
895 | { 61, 30 }, { 92, 61 }, { 123, 92 }, { 154, 123 }, | |
896 | { 185, 154 }, { 216, 185 }, { 247, 216 }, { 278, 247 }, | |
897 | { 309, 278 }, { 340, 309 }, { 371, 340 }, { 402, 371 }, | |
898 | { 433, 402 }, { 464, 433 }, { 495, 464 }, { 526, 495 }, | |
899 | { 557, 526 }, { 588, 557 }, { 619, 588 }, { 650, 619 }, | |
900 | { 681, 650 }, { 712, 681 }, { 743, 712 }, { 774, 743 }, | |
901 | { 805, 774 }, { 836, 805 }, { 867, 836 }, { 898, 867 }, | |
902 | { 929, 898 }, { 960, 929 }, { 960, 960 }, { 62, 31 }, | |
903 | { 93, 62 }, { 124, 93 }, { 186, 155 }, { 217, 186 }, | |
904 | { 248, 217 }, { 310, 279 }, { 341, 310 }, { 372, 341 }, | |
905 | { 434, 403 }, { 465, 434 }, { 496, 465 }, { 558, 527 }, | |
906 | { 589, 558 }, { 620, 589 }, { 682, 651 }, { 713, 682 }, | |
907 | { 744, 713 }, { 806, 775 }, { 837, 806 }, { 868, 837 }, | |
908 | { 930, 899 }, { 961, 930 }, { 992, 961 }, { 94, 63 }, | |
909 | { 125, 94 }, { 218, 187 }, { 249, 218 }, { 342, 311 }, | |
910 | { 373, 342 }, { 466, 435 }, { 497, 466 }, { 590, 559 }, | |
911 | { 621, 590 }, { 714, 683 }, { 745, 714 }, { 838, 807 }, | |
912 | { 869, 838 }, { 962, 931 }, { 993, 962 }, { 126, 95 }, | |
913 | { 250, 219 }, { 374, 343 }, { 498, 467 }, { 622, 591 }, | |
914 | { 746, 715 }, { 870, 839 }, { 994, 963 }, { 155, 124 }, | |
915 | { 279, 248 }, { 403, 372 }, { 527, 496 }, { 651, 620 }, | |
916 | { 775, 744 }, { 899, 868 }, { 156, 125 }, { 187, 156 }, | |
917 | { 280, 249 }, { 311, 280 }, { 404, 373 }, { 435, 404 }, | |
918 | { 528, 497 }, { 559, 528 }, { 652, 621 }, { 683, 652 }, | |
919 | { 776, 745 }, { 807, 776 }, { 900, 869 }, { 931, 900 }, | |
920 | { 157, 126 }, { 188, 157 }, { 219, 188 }, { 281, 250 }, | |
921 | { 312, 281 }, { 343, 312 }, { 405, 374 }, { 436, 405 }, | |
922 | { 467, 436 }, { 529, 498 }, { 560, 529 }, { 591, 560 }, | |
923 | { 653, 622 }, { 684, 653 }, { 715, 684 }, { 777, 746 }, | |
924 | { 808, 777 }, { 839, 808 }, { 901, 870 }, { 932, 901 }, | |
925 | { 963, 932 }, { 158, 127 }, { 189, 158 }, { 220, 189 }, | |
926 | { 251, 220 }, { 282, 251 }, { 313, 282 }, { 344, 313 }, | |
927 | { 375, 344 }, { 406, 375 }, { 437, 406 }, { 468, 437 }, | |
928 | { 499, 468 }, { 530, 499 }, { 561, 530 }, { 592, 561 }, | |
929 | { 623, 592 }, { 654, 623 }, { 685, 654 }, { 716, 685 }, | |
930 | { 747, 716 }, { 778, 747 }, { 809, 778 }, { 840, 809 }, | |
931 | { 871, 840 }, { 902, 871 }, { 933, 902 }, { 964, 933 }, | |
932 | { 995, 964 }, { 190, 159 }, { 221, 190 }, { 252, 221 }, | |
933 | { 314, 283 }, { 345, 314 }, { 376, 345 }, { 438, 407 }, | |
934 | { 469, 438 }, { 500, 469 }, { 562, 531 }, { 593, 562 }, | |
935 | { 624, 593 }, { 686, 655 }, { 717, 686 }, { 748, 717 }, | |
936 | { 810, 779 }, { 841, 810 }, { 872, 841 }, { 934, 903 }, | |
937 | { 965, 934 }, { 996, 965 }, { 222, 191 }, { 253, 222 }, | |
938 | { 346, 315 }, { 377, 346 }, { 470, 439 }, { 501, 470 }, | |
939 | { 594, 563 }, { 625, 594 }, { 718, 687 }, { 749, 718 }, | |
940 | { 842, 811 }, { 873, 842 }, { 966, 935 }, { 997, 966 }, | |
941 | { 254, 223 }, { 378, 347 }, { 502, 471 }, { 626, 595 }, | |
942 | { 750, 719 }, { 874, 843 }, { 998, 967 }, { 283, 252 }, | |
943 | { 407, 376 }, { 531, 500 }, { 655, 624 }, { 779, 748 }, | |
944 | { 903, 872 }, { 284, 253 }, { 315, 284 }, { 408, 377 }, | |
945 | { 439, 408 }, { 532, 501 }, { 563, 532 }, { 656, 625 }, | |
946 | { 687, 656 }, { 780, 749 }, { 811, 780 }, { 904, 873 }, | |
947 | { 935, 904 }, { 285, 254 }, { 316, 285 }, { 347, 316 }, | |
948 | { 409, 378 }, { 440, 409 }, { 471, 440 }, { 533, 502 }, | |
949 | { 564, 533 }, { 595, 564 }, { 657, 626 }, { 688, 657 }, | |
950 | { 719, 688 }, { 781, 750 }, { 812, 781 }, { 843, 812 }, | |
951 | { 905, 874 }, { 936, 905 }, { 967, 936 }, { 286, 255 }, | |
952 | { 317, 286 }, { 348, 317 }, { 379, 348 }, { 410, 379 }, | |
953 | { 441, 410 }, { 472, 441 }, { 503, 472 }, { 534, 503 }, | |
954 | { 565, 534 }, { 596, 565 }, { 627, 596 }, { 658, 627 }, | |
955 | { 689, 658 }, { 720, 689 }, { 751, 720 }, { 782, 751 }, | |
956 | { 813, 782 }, { 844, 813 }, { 875, 844 }, { 906, 875 }, | |
957 | { 937, 906 }, { 968, 937 }, { 999, 968 }, { 318, 287 }, | |
958 | { 349, 318 }, { 380, 349 }, { 442, 411 }, { 473, 442 }, | |
959 | { 504, 473 }, { 566, 535 }, { 597, 566 }, { 628, 597 }, | |
960 | { 690, 659 }, { 721, 690 }, { 752, 721 }, { 814, 783 }, | |
961 | { 845, 814 }, { 876, 845 }, { 938, 907 }, { 969, 938 }, | |
962 | { 1000, 969 }, { 350, 319 }, { 381, 350 }, { 474, 443 }, | |
963 | { 505, 474 }, { 598, 567 }, { 629, 598 }, { 722, 691 }, | |
964 | { 753, 722 }, { 846, 815 }, { 877, 846 }, { 970, 939 }, | |
965 | { 1001, 970 }, { 382, 351 }, { 506, 475 }, { 630, 599 }, | |
966 | { 754, 723 }, { 878, 847 }, { 1002, 971 }, { 411, 380 }, | |
967 | { 535, 504 }, { 659, 628 }, { 783, 752 }, { 907, 876 }, | |
968 | { 412, 381 }, { 443, 412 }, { 536, 505 }, { 567, 536 }, | |
969 | { 660, 629 }, { 691, 660 }, { 784, 753 }, { 815, 784 }, | |
970 | { 908, 877 }, { 939, 908 }, { 413, 382 }, { 444, 413 }, | |
971 | { 475, 444 }, { 537, 506 }, { 568, 537 }, { 599, 568 }, | |
972 | { 661, 630 }, { 692, 661 }, { 723, 692 }, { 785, 754 }, | |
973 | { 816, 785 }, { 847, 816 }, { 909, 878 }, { 940, 909 }, | |
974 | { 971, 940 }, { 414, 383 }, { 445, 414 }, { 476, 445 }, | |
975 | { 507, 476 }, { 538, 507 }, { 569, 538 }, { 600, 569 }, | |
976 | { 631, 600 }, { 662, 631 }, { 693, 662 }, { 724, 693 }, | |
977 | { 755, 724 }, { 786, 755 }, { 817, 786 }, { 848, 817 }, | |
978 | { 879, 848 }, { 910, 879 }, { 941, 910 }, { 972, 941 }, | |
979 | { 1003, 972 }, { 446, 415 }, { 477, 446 }, { 508, 477 }, | |
980 | { 570, 539 }, { 601, 570 }, { 632, 601 }, { 694, 663 }, | |
981 | { 725, 694 }, { 756, 725 }, { 818, 787 }, { 849, 818 }, | |
982 | { 880, 849 }, { 942, 911 }, { 973, 942 }, { 1004, 973 }, | |
983 | { 478, 447 }, { 509, 478 }, { 602, 571 }, { 633, 602 }, | |
984 | { 726, 695 }, { 757, 726 }, { 850, 819 }, { 881, 850 }, | |
985 | { 974, 943 }, { 1005, 974 }, { 510, 479 }, { 634, 603 }, | |
986 | { 758, 727 }, { 882, 851 }, { 1006, 975 }, { 539, 508 }, | |
987 | { 663, 632 }, { 787, 756 }, { 911, 880 }, { 540, 509 }, | |
988 | { 571, 540 }, { 664, 633 }, { 695, 664 }, { 788, 757 }, | |
989 | { 819, 788 }, { 912, 881 }, { 943, 912 }, { 541, 510 }, | |
990 | { 572, 541 }, { 603, 572 }, { 665, 634 }, { 696, 665 }, | |
991 | { 727, 696 }, { 789, 758 }, { 820, 789 }, { 851, 820 }, | |
992 | { 913, 882 }, { 944, 913 }, { 975, 944 }, { 542, 511 }, | |
993 | { 573, 542 }, { 604, 573 }, { 635, 604 }, { 666, 635 }, | |
994 | { 697, 666 }, { 728, 697 }, { 759, 728 }, { 790, 759 }, | |
995 | { 821, 790 }, { 852, 821 }, { 883, 852 }, { 914, 883 }, | |
996 | { 945, 914 }, { 976, 945 }, { 1007, 976 }, { 574, 543 }, | |
997 | { 605, 574 }, { 636, 605 }, { 698, 667 }, { 729, 698 }, | |
998 | { 760, 729 }, { 822, 791 }, { 853, 822 }, { 884, 853 }, | |
999 | { 946, 915 }, { 977, 946 }, { 1008, 977 }, { 606, 575 }, | |
1000 | { 637, 606 }, { 730, 699 }, { 761, 730 }, { 854, 823 }, | |
1001 | { 885, 854 }, { 978, 947 }, { 1009, 978 }, { 638, 607 }, | |
1002 | { 762, 731 }, { 886, 855 }, { 1010, 979 }, { 667, 636 }, | |
1003 | { 791, 760 }, { 915, 884 }, { 668, 637 }, { 699, 668 }, | |
1004 | { 792, 761 }, { 823, 792 }, { 916, 885 }, { 947, 916 }, | |
1005 | { 669, 638 }, { 700, 669 }, { 731, 700 }, { 793, 762 }, | |
1006 | { 824, 793 }, { 855, 824 }, { 917, 886 }, { 948, 917 }, | |
1007 | { 979, 948 }, { 670, 639 }, { 701, 670 }, { 732, 701 }, | |
1008 | { 763, 732 }, { 794, 763 }, { 825, 794 }, { 856, 825 }, | |
1009 | { 887, 856 }, { 918, 887 }, { 949, 918 }, { 980, 949 }, | |
1010 | { 1011, 980 }, { 702, 671 }, { 733, 702 }, { 764, 733 }, | |
1011 | { 826, 795 }, { 857, 826 }, { 888, 857 }, { 950, 919 }, | |
1012 | { 981, 950 }, { 1012, 981 }, { 734, 703 }, { 765, 734 }, | |
1013 | { 858, 827 }, { 889, 858 }, { 982, 951 }, { 1013, 982 }, | |
1014 | { 766, 735 }, { 890, 859 }, { 1014, 983 }, { 795, 764 }, | |
1015 | { 919, 888 }, { 796, 765 }, { 827, 796 }, { 920, 889 }, | |
1016 | { 951, 920 }, { 797, 766 }, { 828, 797 }, { 859, 828 }, | |
1017 | { 921, 890 }, { 952, 921 }, { 983, 952 }, { 798, 767 }, | |
1018 | { 829, 798 }, { 860, 829 }, { 891, 860 }, { 922, 891 }, | |
1019 | { 953, 922 }, { 984, 953 }, { 1015, 984 }, { 830, 799 }, | |
1020 | { 861, 830 }, { 892, 861 }, { 954, 923 }, { 985, 954 }, | |
1021 | { 1016, 985 }, { 862, 831 }, { 893, 862 }, { 986, 955 }, | |
1022 | { 1017, 986 }, { 894, 863 }, { 1018, 987 }, { 923, 892 }, | |
1023 | { 924, 893 }, { 955, 924 }, { 925, 894 }, { 956, 925 }, | |
1024 | { 987, 956 }, { 926, 895 }, { 957, 926 }, { 988, 957 }, | |
1025 | { 1019, 988 }, { 958, 927 }, { 989, 958 }, { 1020, 989 }, | |
1026 | { 990, 959 }, { 1021, 990 }, { 1022, 991 }, { 0, 0 }, | |
1027 | }; | |
1028 | ||
1029 | static const int16_t (* const vp9_scans_nb[5][4])[2] = { | |
1030 | { | |
1031 | vp9_default_scan_4x4_nb, vp9_col_scan_4x4_nb, | |
1032 | vp9_row_scan_4x4_nb, vp9_default_scan_4x4_nb | |
1033 | }, { | |
1034 | vp9_default_scan_8x8_nb, vp9_col_scan_8x8_nb, | |
1035 | vp9_row_scan_8x8_nb, vp9_default_scan_8x8_nb | |
1036 | }, { | |
1037 | vp9_default_scan_16x16_nb, vp9_col_scan_16x16_nb, | |
1038 | vp9_row_scan_16x16_nb, vp9_default_scan_16x16_nb | |
1039 | }, { | |
1040 | vp9_default_scan_32x32_nb, vp9_default_scan_32x32_nb, | |
1041 | vp9_default_scan_32x32_nb, vp9_default_scan_32x32_nb | |
1042 | }, { // lossless | |
1043 | vp9_default_scan_4x4_nb, vp9_default_scan_4x4_nb, | |
1044 | vp9_default_scan_4x4_nb, vp9_default_scan_4x4_nb | |
1045 | } | |
1046 | }; | |
1047 | ||
1048 | static const uint8_t vp9_model_pareto8[256][8] = { | |
1049 | { 6, 86, 128, 11, 87, 42, 91, 52 }, | |
1050 | { 3, 86, 128, 6, 86, 23, 88, 29 }, | |
1051 | { 6, 86, 128, 11, 87, 42, 91, 52 }, | |
1052 | { 9, 86, 129, 17, 88, 61, 94, 76 }, | |
1053 | { 12, 86, 129, 22, 88, 77, 97, 93 }, | |
1054 | { 15, 87, 129, 28, 89, 93, 100, 110 }, | |
1055 | { 17, 87, 129, 33, 90, 105, 103, 123 }, | |
1056 | { 20, 88, 130, 38, 91, 118, 106, 136 }, | |
1057 | { 23, 88, 130, 43, 91, 128, 108, 146 }, | |
1058 | { 26, 89, 131, 48, 92, 139, 111, 156 }, | |
1059 | { 28, 89, 131, 53, 93, 147, 114, 163 }, | |
1060 | { 31, 90, 131, 58, 94, 156, 117, 171 }, | |
1061 | { 34, 90, 131, 62, 94, 163, 119, 177 }, | |
1062 | { 37, 90, 132, 66, 95, 171, 122, 184 }, | |
1063 | { 39, 90, 132, 70, 96, 177, 124, 189 }, | |
1064 | { 42, 91, 132, 75, 97, 183, 127, 194 }, | |
1065 | { 44, 91, 132, 79, 97, 188, 129, 198 }, | |
1066 | { 47, 92, 133, 83, 98, 193, 132, 202 }, | |
1067 | { 49, 92, 133, 86, 99, 197, 134, 205 }, | |
1068 | { 52, 93, 133, 90, 100, 201, 137, 208 }, | |
1069 | { 54, 93, 133, 94, 100, 204, 139, 211 }, | |
1070 | { 57, 94, 134, 98, 101, 208, 142, 214 }, | |
1071 | { 59, 94, 134, 101, 102, 211, 144, 216 }, | |
1072 | { 62, 94, 135, 105, 103, 214, 146, 218 }, | |
1073 | { 64, 94, 135, 108, 103, 216, 148, 220 }, | |
1074 | { 66, 95, 135, 111, 104, 219, 151, 222 }, | |
1075 | { 68, 95, 135, 114, 105, 221, 153, 223 }, | |
1076 | { 71, 96, 136, 117, 106, 224, 155, 225 }, | |
1077 | { 73, 96, 136, 120, 106, 225, 157, 226 }, | |
1078 | { 76, 97, 136, 123, 107, 227, 159, 228 }, | |
1079 | { 78, 97, 136, 126, 108, 229, 160, 229 }, | |
1080 | { 80, 98, 137, 129, 109, 231, 162, 231 }, | |
1081 | { 82, 98, 137, 131, 109, 232, 164, 232 }, | |
1082 | { 84, 98, 138, 134, 110, 234, 166, 233 }, | |
1083 | { 86, 98, 138, 137, 111, 235, 168, 234 }, | |
1084 | { 89, 99, 138, 140, 112, 236, 170, 235 }, | |
1085 | { 91, 99, 138, 142, 112, 237, 171, 235 }, | |
1086 | { 93, 100, 139, 145, 113, 238, 173, 236 }, | |
1087 | { 95, 100, 139, 147, 114, 239, 174, 237 }, | |
1088 | { 97, 101, 140, 149, 115, 240, 176, 238 }, | |
1089 | { 99, 101, 140, 151, 115, 241, 177, 238 }, | |
1090 | { 101, 102, 140, 154, 116, 242, 179, 239 }, | |
1091 | { 103, 102, 140, 156, 117, 242, 180, 239 }, | |
1092 | { 105, 103, 141, 158, 118, 243, 182, 240 }, | |
1093 | { 107, 103, 141, 160, 118, 243, 183, 240 }, | |
1094 | { 109, 104, 141, 162, 119, 244, 185, 241 }, | |
1095 | { 111, 104, 141, 164, 119, 244, 186, 241 }, | |
1096 | { 113, 104, 142, 166, 120, 245, 187, 242 }, | |
1097 | { 114, 104, 142, 168, 121, 245, 188, 242 }, | |
1098 | { 116, 105, 143, 170, 122, 246, 190, 243 }, | |
1099 | { 118, 105, 143, 171, 122, 246, 191, 243 }, | |
1100 | { 120, 106, 143, 173, 123, 247, 192, 244 }, | |
1101 | { 121, 106, 143, 175, 124, 247, 193, 244 }, | |
1102 | { 123, 107, 144, 177, 125, 248, 195, 244 }, | |
1103 | { 125, 107, 144, 178, 125, 248, 196, 244 }, | |
1104 | { 127, 108, 145, 180, 126, 249, 197, 245 }, | |
1105 | { 128, 108, 145, 181, 127, 249, 198, 245 }, | |
1106 | { 130, 109, 145, 183, 128, 249, 199, 245 }, | |
1107 | { 132, 109, 145, 184, 128, 249, 200, 245 }, | |
1108 | { 134, 110, 146, 186, 129, 250, 201, 246 }, | |
1109 | { 135, 110, 146, 187, 130, 250, 202, 246 }, | |
1110 | { 137, 111, 147, 189, 131, 251, 203, 246 }, | |
1111 | { 138, 111, 147, 190, 131, 251, 204, 246 }, | |
1112 | { 140, 112, 147, 192, 132, 251, 205, 247 }, | |
1113 | { 141, 112, 147, 193, 132, 251, 206, 247 }, | |
1114 | { 143, 113, 148, 194, 133, 251, 207, 247 }, | |
1115 | { 144, 113, 148, 195, 134, 251, 207, 247 }, | |
1116 | { 146, 114, 149, 197, 135, 252, 208, 248 }, | |
1117 | { 147, 114, 149, 198, 135, 252, 209, 248 }, | |
1118 | { 149, 115, 149, 199, 136, 252, 210, 248 }, | |
1119 | { 150, 115, 149, 200, 137, 252, 210, 248 }, | |
1120 | { 152, 115, 150, 201, 138, 252, 211, 248 }, | |
1121 | { 153, 115, 150, 202, 138, 252, 212, 248 }, | |
1122 | { 155, 116, 151, 204, 139, 253, 213, 249 }, | |
1123 | { 156, 116, 151, 205, 139, 253, 213, 249 }, | |
1124 | { 158, 117, 151, 206, 140, 253, 214, 249 }, | |
1125 | { 159, 117, 151, 207, 141, 253, 215, 249 }, | |
1126 | { 161, 118, 152, 208, 142, 253, 216, 249 }, | |
1127 | { 162, 118, 152, 209, 142, 253, 216, 249 }, | |
1128 | { 163, 119, 153, 210, 143, 253, 217, 249 }, | |
1129 | { 164, 119, 153, 211, 143, 253, 217, 249 }, | |
1130 | { 166, 120, 153, 212, 144, 254, 218, 250 }, | |
1131 | { 167, 120, 153, 212, 145, 254, 219, 250 }, | |
1132 | { 168, 121, 154, 213, 146, 254, 220, 250 }, | |
1133 | { 169, 121, 154, 214, 146, 254, 220, 250 }, | |
1134 | { 171, 122, 155, 215, 147, 254, 221, 250 }, | |
1135 | { 172, 122, 155, 216, 147, 254, 221, 250 }, | |
1136 | { 173, 123, 155, 217, 148, 254, 222, 250 }, | |
1137 | { 174, 123, 155, 217, 149, 254, 222, 250 }, | |
1138 | { 176, 124, 156, 218, 150, 254, 223, 250 }, | |
1139 | { 177, 124, 156, 219, 150, 254, 223, 250 }, | |
1140 | { 178, 125, 157, 220, 151, 254, 224, 251 }, | |
1141 | { 179, 125, 157, 220, 151, 254, 224, 251 }, | |
1142 | { 180, 126, 157, 221, 152, 254, 225, 251 }, | |
1143 | { 181, 126, 157, 221, 152, 254, 225, 251 }, | |
1144 | { 183, 127, 158, 222, 153, 254, 226, 251 }, | |
1145 | { 184, 127, 158, 223, 154, 254, 226, 251 }, | |
1146 | { 185, 128, 159, 224, 155, 255, 227, 251 }, | |
1147 | { 186, 128, 159, 224, 155, 255, 227, 251 }, | |
1148 | { 187, 129, 160, 225, 156, 255, 228, 251 }, | |
1149 | { 188, 130, 160, 225, 156, 255, 228, 251 }, | |
1150 | { 189, 131, 160, 226, 157, 255, 228, 251 }, | |
1151 | { 190, 131, 160, 226, 158, 255, 228, 251 }, | |
1152 | { 191, 132, 161, 227, 159, 255, 229, 251 }, | |
1153 | { 192, 132, 161, 227, 159, 255, 229, 251 }, | |
1154 | { 193, 133, 162, 228, 160, 255, 230, 252 }, | |
1155 | { 194, 133, 162, 229, 160, 255, 230, 252 }, | |
1156 | { 195, 134, 163, 230, 161, 255, 231, 252 }, | |
1157 | { 196, 134, 163, 230, 161, 255, 231, 252 }, | |
1158 | { 197, 135, 163, 231, 162, 255, 231, 252 }, | |
1159 | { 198, 135, 163, 231, 162, 255, 231, 252 }, | |
1160 | { 199, 136, 164, 232, 163, 255, 232, 252 }, | |
1161 | { 200, 136, 164, 232, 164, 255, 232, 252 }, | |
1162 | { 201, 137, 165, 233, 165, 255, 233, 252 }, | |
1163 | { 201, 137, 165, 233, 165, 255, 233, 252 }, | |
1164 | { 202, 138, 166, 233, 166, 255, 233, 252 }, | |
1165 | { 203, 138, 166, 233, 166, 255, 233, 252 }, | |
1166 | { 204, 139, 166, 234, 167, 255, 234, 252 }, | |
1167 | { 205, 139, 166, 234, 167, 255, 234, 252 }, | |
1168 | { 206, 140, 167, 235, 168, 255, 235, 252 }, | |
1169 | { 206, 140, 167, 235, 168, 255, 235, 252 }, | |
1170 | { 207, 141, 168, 236, 169, 255, 235, 252 }, | |
1171 | { 208, 141, 168, 236, 170, 255, 235, 252 }, | |
1172 | { 209, 142, 169, 237, 171, 255, 236, 252 }, | |
1173 | { 209, 143, 169, 237, 171, 255, 236, 252 }, | |
1174 | { 210, 144, 169, 237, 172, 255, 236, 252 }, | |
1175 | { 211, 144, 169, 237, 172, 255, 236, 252 }, | |
1176 | { 212, 145, 170, 238, 173, 255, 237, 252 }, | |
1177 | { 213, 145, 170, 238, 173, 255, 237, 252 }, | |
1178 | { 214, 146, 171, 239, 174, 255, 237, 253 }, | |
1179 | { 214, 146, 171, 239, 174, 255, 237, 253 }, | |
1180 | { 215, 147, 172, 240, 175, 255, 238, 253 }, | |
1181 | { 215, 147, 172, 240, 175, 255, 238, 253 }, | |
1182 | { 216, 148, 173, 240, 176, 255, 238, 253 }, | |
1183 | { 217, 148, 173, 240, 176, 255, 238, 253 }, | |
1184 | { 218, 149, 173, 241, 177, 255, 239, 253 }, | |
1185 | { 218, 149, 173, 241, 178, 255, 239, 253 }, | |
1186 | { 219, 150, 174, 241, 179, 255, 239, 253 }, | |
1187 | { 219, 151, 174, 241, 179, 255, 239, 253 }, | |
1188 | { 220, 152, 175, 242, 180, 255, 240, 253 }, | |
1189 | { 221, 152, 175, 242, 180, 255, 240, 253 }, | |
1190 | { 222, 153, 176, 242, 181, 255, 240, 253 }, | |
1191 | { 222, 153, 176, 242, 181, 255, 240, 253 }, | |
1192 | { 223, 154, 177, 243, 182, 255, 240, 253 }, | |
1193 | { 223, 154, 177, 243, 182, 255, 240, 253 }, | |
1194 | { 224, 155, 178, 244, 183, 255, 241, 253 }, | |
1195 | { 224, 155, 178, 244, 183, 255, 241, 253 }, | |
1196 | { 225, 156, 178, 244, 184, 255, 241, 253 }, | |
1197 | { 225, 157, 178, 244, 184, 255, 241, 253 }, | |
1198 | { 226, 158, 179, 244, 185, 255, 242, 253 }, | |
1199 | { 227, 158, 179, 244, 185, 255, 242, 253 }, | |
1200 | { 228, 159, 180, 245, 186, 255, 242, 253 }, | |
1201 | { 228, 159, 180, 245, 186, 255, 242, 253 }, | |
1202 | { 229, 160, 181, 245, 187, 255, 242, 253 }, | |
1203 | { 229, 160, 181, 245, 187, 255, 242, 253 }, | |
1204 | { 230, 161, 182, 246, 188, 255, 243, 253 }, | |
1205 | { 230, 162, 182, 246, 188, 255, 243, 253 }, | |
1206 | { 231, 163, 183, 246, 189, 255, 243, 253 }, | |
1207 | { 231, 163, 183, 246, 189, 255, 243, 253 }, | |
1208 | { 232, 164, 184, 247, 190, 255, 243, 253 }, | |
1209 | { 232, 164, 184, 247, 190, 255, 243, 253 }, | |
1210 | { 233, 165, 185, 247, 191, 255, 244, 253 }, | |
1211 | { 233, 165, 185, 247, 191, 255, 244, 253 }, | |
1212 | { 234, 166, 185, 247, 192, 255, 244, 253 }, | |
1213 | { 234, 167, 185, 247, 192, 255, 244, 253 }, | |
1214 | { 235, 168, 186, 248, 193, 255, 244, 253 }, | |
1215 | { 235, 168, 186, 248, 193, 255, 244, 253 }, | |
1216 | { 236, 169, 187, 248, 194, 255, 244, 253 }, | |
1217 | { 236, 169, 187, 248, 194, 255, 244, 253 }, | |
1218 | { 236, 170, 188, 248, 195, 255, 245, 253 }, | |
1219 | { 236, 170, 188, 248, 195, 255, 245, 253 }, | |
1220 | { 237, 171, 189, 249, 196, 255, 245, 254 }, | |
1221 | { 237, 172, 189, 249, 196, 255, 245, 254 }, | |
1222 | { 238, 173, 190, 249, 197, 255, 245, 254 }, | |
1223 | { 238, 173, 190, 249, 197, 255, 245, 254 }, | |
1224 | { 239, 174, 191, 249, 198, 255, 245, 254 }, | |
1225 | { 239, 174, 191, 249, 198, 255, 245, 254 }, | |
1226 | { 240, 175, 192, 249, 199, 255, 246, 254 }, | |
1227 | { 240, 176, 192, 249, 199, 255, 246, 254 }, | |
1228 | { 240, 177, 193, 250, 200, 255, 246, 254 }, | |
1229 | { 240, 177, 193, 250, 200, 255, 246, 254 }, | |
1230 | { 241, 178, 194, 250, 201, 255, 246, 254 }, | |
1231 | { 241, 178, 194, 250, 201, 255, 246, 254 }, | |
1232 | { 242, 179, 195, 250, 202, 255, 246, 254 }, | |
1233 | { 242, 180, 195, 250, 202, 255, 246, 254 }, | |
1234 | { 242, 181, 196, 250, 203, 255, 247, 254 }, | |
1235 | { 242, 181, 196, 250, 203, 255, 247, 254 }, | |
1236 | { 243, 182, 197, 251, 204, 255, 247, 254 }, | |
1237 | { 243, 183, 197, 251, 204, 255, 247, 254 }, | |
1238 | { 244, 184, 198, 251, 205, 255, 247, 254 }, | |
1239 | { 244, 184, 198, 251, 205, 255, 247, 254 }, | |
1240 | { 244, 185, 199, 251, 206, 255, 247, 254 }, | |
1241 | { 244, 185, 199, 251, 206, 255, 247, 254 }, | |
1242 | { 245, 186, 200, 251, 207, 255, 247, 254 }, | |
1243 | { 245, 187, 200, 251, 207, 255, 247, 254 }, | |
1244 | { 246, 188, 201, 252, 207, 255, 248, 254 }, | |
1245 | { 246, 188, 201, 252, 207, 255, 248, 254 }, | |
1246 | { 246, 189, 202, 252, 208, 255, 248, 254 }, | |
1247 | { 246, 190, 202, 252, 208, 255, 248, 254 }, | |
1248 | { 247, 191, 203, 252, 209, 255, 248, 254 }, | |
1249 | { 247, 191, 203, 252, 209, 255, 248, 254 }, | |
1250 | { 247, 192, 204, 252, 210, 255, 248, 254 }, | |
1251 | { 247, 193, 204, 252, 210, 255, 248, 254 }, | |
1252 | { 248, 194, 205, 252, 211, 255, 248, 254 }, | |
1253 | { 248, 194, 205, 252, 211, 255, 248, 254 }, | |
1254 | { 248, 195, 206, 252, 212, 255, 249, 254 }, | |
1255 | { 248, 196, 206, 252, 212, 255, 249, 254 }, | |
1256 | { 249, 197, 207, 253, 213, 255, 249, 254 }, | |
1257 | { 249, 197, 207, 253, 213, 255, 249, 254 }, | |
1258 | { 249, 198, 208, 253, 214, 255, 249, 254 }, | |
1259 | { 249, 199, 209, 253, 214, 255, 249, 254 }, | |
1260 | { 250, 200, 210, 253, 215, 255, 249, 254 }, | |
1261 | { 250, 200, 210, 253, 215, 255, 249, 254 }, | |
1262 | { 250, 201, 211, 253, 215, 255, 249, 254 }, | |
1263 | { 250, 202, 211, 253, 215, 255, 249, 254 }, | |
1264 | { 250, 203, 212, 253, 216, 255, 249, 254 }, | |
1265 | { 250, 203, 212, 253, 216, 255, 249, 254 }, | |
1266 | { 251, 204, 213, 253, 217, 255, 250, 254 }, | |
1267 | { 251, 205, 213, 253, 217, 255, 250, 254 }, | |
1268 | { 251, 206, 214, 254, 218, 255, 250, 254 }, | |
1269 | { 251, 206, 215, 254, 218, 255, 250, 254 }, | |
1270 | { 252, 207, 216, 254, 219, 255, 250, 254 }, | |
1271 | { 252, 208, 216, 254, 219, 255, 250, 254 }, | |
1272 | { 252, 209, 217, 254, 220, 255, 250, 254 }, | |
1273 | { 252, 210, 217, 254, 220, 255, 250, 254 }, | |
1274 | { 252, 211, 218, 254, 221, 255, 250, 254 }, | |
1275 | { 252, 212, 218, 254, 221, 255, 250, 254 }, | |
1276 | { 253, 213, 219, 254, 222, 255, 250, 254 }, | |
1277 | { 253, 213, 220, 254, 222, 255, 250, 254 }, | |
1278 | { 253, 214, 221, 254, 223, 255, 250, 254 }, | |
1279 | { 253, 215, 221, 254, 223, 255, 250, 254 }, | |
1280 | { 253, 216, 222, 254, 224, 255, 251, 254 }, | |
1281 | { 253, 217, 223, 254, 224, 255, 251, 254 }, | |
1282 | { 253, 218, 224, 254, 225, 255, 251, 254 }, | |
1283 | { 253, 219, 224, 254, 225, 255, 251, 254 }, | |
1284 | { 254, 220, 225, 254, 225, 255, 251, 254 }, | |
1285 | { 254, 221, 226, 254, 225, 255, 251, 254 }, | |
1286 | { 254, 222, 227, 255, 226, 255, 251, 254 }, | |
1287 | { 254, 223, 227, 255, 226, 255, 251, 254 }, | |
1288 | { 254, 224, 228, 255, 227, 255, 251, 254 }, | |
1289 | { 254, 225, 229, 255, 227, 255, 251, 254 }, | |
1290 | { 254, 226, 230, 255, 228, 255, 251, 254 }, | |
1291 | { 254, 227, 230, 255, 229, 255, 251, 254 }, | |
1292 | { 255, 228, 231, 255, 230, 255, 251, 254 }, | |
1293 | { 255, 229, 232, 255, 230, 255, 251, 254 }, | |
1294 | { 255, 230, 233, 255, 231, 255, 252, 254 }, | |
1295 | { 255, 231, 234, 255, 231, 255, 252, 254 }, | |
1296 | { 255, 232, 235, 255, 232, 255, 252, 254 }, | |
1297 | { 255, 233, 236, 255, 232, 255, 252, 254 }, | |
1298 | { 255, 235, 237, 255, 233, 255, 252, 254 }, | |
1299 | { 255, 236, 238, 255, 234, 255, 252, 254 }, | |
1300 | { 255, 238, 240, 255, 235, 255, 252, 255 }, | |
1301 | { 255, 239, 241, 255, 235, 255, 252, 254 }, | |
1302 | { 255, 241, 243, 255, 236, 255, 252, 254 }, | |
1303 | { 255, 243, 245, 255, 237, 255, 252, 254 }, | |
1304 | { 255, 246, 247, 255, 239, 255, 253, 255 }, | |
1305 | }; | |
1306 | ||
1307 | typedef struct { | |
1308 | uint8_t y_mode[4][9]; | |
1309 | uint8_t uv_mode[10][9]; | |
1310 | uint8_t filter[4][2]; | |
1311 | uint8_t mv_mode[7][3]; | |
1312 | uint8_t intra[4]; | |
1313 | uint8_t comp[5]; | |
1314 | uint8_t single_ref[5][2]; | |
1315 | uint8_t comp_ref[5]; | |
1316 | uint8_t tx32p[2][3]; | |
1317 | uint8_t tx16p[2][2]; | |
1318 | uint8_t tx8p[2]; | |
1319 | uint8_t skip[3]; | |
1320 | uint8_t mv_joint[3]; | |
1321 | struct { | |
1322 | uint8_t sign; | |
1323 | uint8_t classes[10]; | |
1324 | uint8_t class0; | |
1325 | uint8_t bits[10]; | |
1326 | uint8_t class0_fp[2][3]; | |
1327 | uint8_t fp[3]; | |
1328 | uint8_t class0_hp; | |
1329 | uint8_t hp; | |
1330 | } mv_comp[2]; | |
1331 | uint8_t partition[4][4][3]; | |
1332 | } prob_context; | |
1333 | ||
1334 | static const prob_context vp9_default_probs = { | |
1335 | { /* y_mode */ | |
1336 | { 65, 32, 18, 144, 162, 194, 41, 51, 98 } /* bsize < 8x8 */, | |
1337 | { 132, 68, 18, 165, 217, 196, 45, 40, 78 } /* bsize < 16x16 */, | |
1338 | { 173, 80, 19, 176, 240, 193, 64, 35, 46 } /* bsize < 32x32 */, | |
1339 | { 221, 135, 38, 194, 248, 121, 96, 85, 29 } /* bsize >= 32x32 */ | |
1340 | }, { /* uv_mode */ | |
1341 | { 48, 12, 154, 155, 139, 90, 34, 117, 119 } /* y = v */, | |
1342 | { 67, 6, 25, 204, 243, 158, 13, 21, 96 } /* y = h */, | |
1343 | { 120, 7, 76, 176, 208, 126, 28, 54, 103 } /* y = dc */, | |
1344 | { 97, 5, 44, 131, 176, 139, 48, 68, 97 } /* y = d45 */, | |
1345 | { 83, 5, 42, 156, 111, 152, 26, 49, 152 } /* y = d135 */, | |
1346 | { 80, 5, 58, 178, 74, 83, 33, 62, 145 } /* y = d117 */, | |
1347 | { 86, 5, 32, 154, 192, 168, 14, 22, 163 } /* y = d153 */, | |
1348 | { 77, 7, 64, 116, 132, 122, 37, 126, 120 } /* y = d63 */, | |
1349 | { 85, 5, 32, 156, 216, 148, 19, 29, 73 } /* y = d27 */, | |
1350 | { 101, 21, 107, 181, 192, 103, 19, 67, 125 } /* y = tm */ | |
1351 | }, { /* filter */ | |
1352 | { 235, 162, }, | |
1353 | { 36, 255, }, | |
1354 | { 34, 3, }, | |
1355 | { 149, 144, }, | |
1356 | }, { /* mv_mode */ | |
1357 | { 2, 173, 34}, // 0 = both zero mv | |
1358 | { 7, 145, 85}, // 1 = one zero mv + one a predicted mv | |
1359 | { 7, 166, 63}, // 2 = two predicted mvs | |
1360 | { 7, 94, 66}, // 3 = one predicted/zero and one new mv | |
1361 | { 8, 64, 46}, // 4 = two new mvs | |
1362 | { 17, 81, 31}, // 5 = one intra neighbour + x | |
1363 | { 25, 29, 30}, // 6 = two intra neighbours | |
1364 | }, { /* intra */ | |
1365 | 9, 102, 187, 225 | |
1366 | }, { /* comp */ | |
1367 | 239, 183, 119, 96, 41 | |
1368 | }, { /* single_ref */ | |
1369 | { 33, 16 }, | |
1370 | { 77, 74 }, | |
1371 | { 142, 142 }, | |
1372 | { 172, 170 }, | |
1373 | { 238, 247 } | |
1374 | }, { /* comp_ref */ | |
1375 | 50, 126, 123, 221, 226 | |
1376 | }, { /* tx32p */ | |
1377 | { 3, 136, 37, }, | |
1378 | { 5, 52, 13, }, | |
1379 | }, { /* tx16p */ | |
1380 | { 20, 152, }, | |
1381 | { 15, 101, }, | |
1382 | }, { /* tx8p */ | |
1383 | 100, 66 | |
1384 | }, { /* skip */ | |
1385 | 192, 128, 64 | |
1386 | }, { /* mv_joint */ | |
1387 | 32, 64, 96 | |
1388 | }, { | |
1389 | { /* mv vertical component */ | |
1390 | 128, /* sign */ | |
1391 | { 224, 144, 192, 168, 192, 176, 192, 198, 198, 245 }, /* class */ | |
1392 | 216, /* class0 */ | |
1393 | { 136, 140, 148, 160, 176, 192, 224, 234, 234, 240}, /* bits */ | |
1394 | { /* class0_fp */ | |
1395 | { 128, 128, 64 }, | |
1396 | { 96, 112, 64 } | |
1397 | }, | |
1398 | { 64, 96, 64 }, /* fp */ | |
1399 | 160, /* class0_hp bit */ | |
1400 | 128, /* hp */ | |
1401 | }, { /* mv horizontal component */ | |
1402 | 128, /* sign */ | |
1403 | { 216, 128, 176, 160, 176, 176, 192, 198, 198, 208 }, /* class */ | |
1404 | 208, /* class0 */ | |
1405 | { 136, 140, 148, 160, 176, 192, 224, 234, 234, 240 }, /* bits */ | |
1406 | { /* class0_fp */ | |
1407 | { 128, 128, 64 }, | |
1408 | { 96, 112, 64 } | |
1409 | }, | |
1410 | { 64, 96, 64 }, /* fp */ | |
1411 | 160, /* class0_hp bit */ | |
1412 | 128, /* hp */ | |
1413 | } | |
1414 | }, { /* partition */ | |
1415 | { /* 64x64 -> 32x32 */ | |
1416 | { 222, 34, 30 } /* a/l both not split */, | |
1417 | { 72, 16, 44 } /* a split, l not split */, | |
1418 | { 58, 32, 12 } /* l split, a not split */, | |
1419 | { 10, 7, 6 } /* a/l both split */, | |
1420 | }, { /* 32x32 -> 16x16 */ | |
1421 | { 177, 58, 59 } /* a/l both not split */, | |
1422 | { 68, 26, 63 } /* a split, l not split */, | |
1423 | { 52, 79, 25 } /* l split, a not split */, | |
1424 | { 17, 14, 12 } /* a/l both split */, | |
1425 | }, { /* 16x16 -> 8x8 */ | |
1426 | { 174, 73, 87 } /* a/l both not split */, | |
1427 | { 92, 41, 83 } /* a split, l not split */, | |
1428 | { 82, 99, 50 } /* l split, a not split */, | |
1429 | { 53, 39, 39 } /* a/l both split */, | |
1430 | }, { /* 8x8 -> 4x4 */ | |
1431 | { 199, 122, 141 } /* a/l both not split */, | |
1432 | { 147, 63, 159 } /* a split, l not split */, | |
1433 | { 148, 133, 118 } /* l split, a not split */, | |
1434 | { 121, 104, 114 } /* a/l both split */, | |
1435 | } | |
1436 | }, | |
1437 | }; | |
1438 | ||
1439 | static const uint8_t vp9_default_coef_probs[4][2][2][6][6][3] = { | |
1440 | { /* tx = 4x4 */ | |
1441 | { /* block Type 0 */ | |
1442 | { /* Intra */ | |
1443 | { /* Coeff Band 0 */ | |
1444 | { 195, 29, 183 }, | |
1445 | { 84, 49, 136 }, | |
1446 | { 8, 42, 71 } | |
1447 | }, { /* Coeff Band 1 */ | |
1448 | { 31, 107, 169 }, | |
1449 | { 35, 99, 159 }, | |
1450 | { 17, 82, 140 }, | |
1451 | { 8, 66, 114 }, | |
1452 | { 2, 44, 76 }, | |
1453 | { 1, 19, 32 } | |
1454 | }, { /* Coeff Band 2 */ | |
1455 | { 40, 132, 201 }, | |
1456 | { 29, 114, 187 }, | |
1457 | { 13, 91, 157 }, | |
1458 | { 7, 75, 127 }, | |
1459 | { 3, 58, 95 }, | |
1460 | { 1, 28, 47 } | |
1461 | }, { /* Coeff Band 3 */ | |
1462 | { 69, 142, 221 }, | |
1463 | { 42, 122, 201 }, | |
1464 | { 15, 91, 159 }, | |
1465 | { 6, 67, 121 }, | |
1466 | { 1, 42, 77 }, | |
1467 | { 1, 17, 31 } | |
1468 | }, { /* Coeff Band 4 */ | |
1469 | { 102, 148, 228 }, | |
1470 | { 67, 117, 204 }, | |
1471 | { 17, 82, 154 }, | |
1472 | { 6, 59, 114 }, | |
1473 | { 2, 39, 75 }, | |
1474 | { 1, 15, 29 } | |
1475 | }, { /* Coeff Band 5 */ | |
1476 | { 156, 57, 233 }, | |
1477 | { 119, 57, 212 }, | |
1478 | { 58, 48, 163 }, | |
1479 | { 29, 40, 124 }, | |
1480 | { 12, 30, 81 }, | |
1481 | { 3, 12, 31 } | |
1482 | } | |
1483 | }, { /* Inter */ | |
1484 | { /* Coeff Band 0 */ | |
1485 | { 191, 107, 226 }, | |
1486 | { 124, 117, 204 }, | |
1487 | { 25, 99, 155 } | |
1488 | }, { /* Coeff Band 1 */ | |
1489 | { 29, 148, 210 }, | |
1490 | { 37, 126, 194 }, | |
1491 | { 8, 93, 157 }, | |
1492 | { 2, 68, 118 }, | |
1493 | { 1, 39, 69 }, | |
1494 | { 1, 17, 33 } | |
1495 | }, { /* Coeff Band 2 */ | |
1496 | { 41, 151, 213 }, | |
1497 | { 27, 123, 193 }, | |
1498 | { 3, 82, 144 }, | |
1499 | { 1, 58, 105 }, | |
1500 | { 1, 32, 60 }, | |
1501 | { 1, 13, 26 } | |
1502 | }, { /* Coeff Band 3 */ | |
1503 | { 59, 159, 220 }, | |
1504 | { 23, 126, 198 }, | |
1505 | { 4, 88, 151 }, | |
1506 | { 1, 66, 114 }, | |
1507 | { 1, 38, 71 }, | |
1508 | { 1, 18, 34 } | |
1509 | }, { /* Coeff Band 4 */ | |
1510 | { 114, 136, 232 }, | |
1511 | { 51, 114, 207 }, | |
1512 | { 11, 83, 155 }, | |
1513 | { 3, 56, 105 }, | |
1514 | { 1, 33, 65 }, | |
1515 | { 1, 17, 34 } | |
1516 | }, { /* Coeff Band 5 */ | |
1517 | { 149, 65, 234 }, | |
1518 | { 121, 57, 215 }, | |
1519 | { 61, 49, 166 }, | |
1520 | { 28, 36, 114 }, | |
1521 | { 12, 25, 76 }, | |
1522 | { 3, 16, 42 } | |
1523 | } | |
1524 | } | |
1525 | }, { /* block Type 1 */ | |
1526 | { /* Intra */ | |
1527 | { /* Coeff Band 0 */ | |
1528 | { 214, 49, 220 }, | |
1529 | { 132, 63, 188 }, | |
1530 | { 42, 65, 137 } | |
1531 | }, { /* Coeff Band 1 */ | |
1532 | { 85, 137, 221 }, | |
1533 | { 104, 131, 216 }, | |
1534 | { 49, 111, 192 }, | |
1535 | { 21, 87, 155 }, | |
1536 | { 2, 49, 87 }, | |
1537 | { 1, 16, 28 } | |
1538 | }, { /* Coeff Band 2 */ | |
1539 | { 89, 163, 230 }, | |
1540 | { 90, 137, 220 }, | |
1541 | { 29, 100, 183 }, | |
1542 | { 10, 70, 135 }, | |
1543 | { 2, 42, 81 }, | |
1544 | { 1, 17, 33 } | |
1545 | }, { /* Coeff Band 3 */ | |
1546 | { 108, 167, 237 }, | |
1547 | { 55, 133, 222 }, | |
1548 | { 15, 97, 179 }, | |
1549 | { 4, 72, 135 }, | |
1550 | { 1, 45, 85 }, | |
1551 | { 1, 19, 38 } | |
1552 | }, { /* Coeff Band 4 */ | |
1553 | { 124, 146, 240 }, | |
1554 | { 66, 124, 224 }, | |
1555 | { 17, 88, 175 }, | |
1556 | { 4, 58, 122 }, | |
1557 | { 1, 36, 75 }, | |
1558 | { 1, 18, 37 } | |
1559 | }, { /* Coeff Band 5 */ | |
1560 | { 141, 79, 241 }, | |
1561 | { 126, 70, 227 }, | |
1562 | { 66, 58, 182 }, | |
1563 | { 30, 44, 136 }, | |
1564 | { 12, 34, 96 }, | |
1565 | { 2, 20, 47 } | |
1566 | } | |
1567 | }, { /* Inter */ | |
1568 | { /* Coeff Band 0 */ | |
1569 | { 229, 99, 249 }, | |
1570 | { 143, 111, 235 }, | |
1571 | { 46, 109, 192 } | |
1572 | }, { /* Coeff Band 1 */ | |
1573 | { 82, 158, 236 }, | |
1574 | { 94, 146, 224 }, | |
1575 | { 25, 117, 191 }, | |
1576 | { 9, 87, 149 }, | |
1577 | { 3, 56, 99 }, | |
1578 | { 1, 33, 57 } | |
1579 | }, { /* Coeff Band 2 */ | |
1580 | { 83, 167, 237 }, | |
1581 | { 68, 145, 222 }, | |
1582 | { 10, 103, 177 }, | |
1583 | { 2, 72, 131 }, | |
1584 | { 1, 41, 79 }, | |
1585 | { 1, 20, 39 } | |
1586 | }, { /* Coeff Band 3 */ | |
1587 | { 99, 167, 239 }, | |
1588 | { 47, 141, 224 }, | |
1589 | { 10, 104, 178 }, | |
1590 | { 2, 73, 133 }, | |
1591 | { 1, 44, 85 }, | |
1592 | { 1, 22, 47 } | |
1593 | }, { /* Coeff Band 4 */ | |
1594 | { 127, 145, 243 }, | |
1595 | { 71, 129, 228 }, | |
1596 | { 17, 93, 177 }, | |
1597 | { 3, 61, 124 }, | |
1598 | { 1, 41, 84 }, | |
1599 | { 1, 21, 52 } | |
1600 | }, { /* Coeff Band 5 */ | |
1601 | { 157, 78, 244 }, | |
1602 | { 140, 72, 231 }, | |
1603 | { 69, 58, 184 }, | |
1604 | { 31, 44, 137 }, | |
1605 | { 14, 38, 105 }, | |
1606 | { 8, 23, 61 } | |
1607 | } | |
1608 | } | |
1609 | } | |
1610 | }, { /* tx = 8x8 */ | |
1611 | { /* block Type 0 */ | |
1612 | { /* Intra */ | |
1613 | { /* Coeff Band 0 */ | |
1614 | { 125, 34, 187 }, | |
1615 | { 52, 41, 133 }, | |
1616 | { 6, 31, 56 } | |
1617 | }, { /* Coeff Band 1 */ | |
1618 | { 37, 109, 153 }, | |
1619 | { 51, 102, 147 }, | |
1620 | { 23, 87, 128 }, | |
1621 | { 8, 67, 101 }, | |
1622 | { 1, 41, 63 }, | |
1623 | { 1, 19, 29 } | |
1624 | }, { /* Coeff Band 2 */ | |
1625 | { 31, 154, 185 }, | |
1626 | { 17, 127, 175 }, | |
1627 | { 6, 96, 145 }, | |
1628 | { 2, 73, 114 }, | |
1629 | { 1, 51, 82 }, | |
1630 | { 1, 28, 45 } | |
1631 | }, { /* Coeff Band 3 */ | |
1632 | { 23, 163, 200 }, | |
1633 | { 10, 131, 185 }, | |
1634 | { 2, 93, 148 }, | |
1635 | { 1, 67, 111 }, | |
1636 | { 1, 41, 69 }, | |
1637 | { 1, 14, 24 } | |
1638 | }, { /* Coeff Band 4 */ | |
1639 | { 29, 176, 217 }, | |
1640 | { 12, 145, 201 }, | |
1641 | { 3, 101, 156 }, | |
1642 | { 1, 69, 111 }, | |
1643 | { 1, 39, 63 }, | |
1644 | { 1, 14, 23 } | |
1645 | }, { /* Coeff Band 5 */ | |
1646 | { 57, 192, 233 }, | |
1647 | { 25, 154, 215 }, | |
1648 | { 6, 109, 167 }, | |
1649 | { 3, 78, 118 }, | |
1650 | { 1, 48, 69 }, | |
1651 | { 1, 21, 29 } | |
1652 | } | |
1653 | }, { /* Inter */ | |
1654 | { /* Coeff Band 0 */ | |
1655 | { 202, 105, 245 }, | |
1656 | { 108, 106, 216 }, | |
1657 | { 18, 90, 144 } | |
1658 | }, { /* Coeff Band 1 */ | |
1659 | { 33, 172, 219 }, | |
1660 | { 64, 149, 206 }, | |
1661 | { 14, 117, 177 }, | |
1662 | { 5, 90, 141 }, | |
1663 | { 2, 61, 95 }, | |
1664 | { 1, 37, 57 } | |
1665 | }, { /* Coeff Band 2 */ | |
1666 | { 33, 179, 220 }, | |
1667 | { 11, 140, 198 }, | |
1668 | { 1, 89, 148 }, | |
1669 | { 1, 60, 104 }, | |
1670 | { 1, 33, 57 }, | |
1671 | { 1, 12, 21 } | |
1672 | }, { /* Coeff Band 3 */ | |
1673 | { 30, 181, 221 }, | |
1674 | { 8, 141, 198 }, | |
1675 | { 1, 87, 145 }, | |
1676 | { 1, 58, 100 }, | |
1677 | { 1, 31, 55 }, | |
1678 | { 1, 12, 20 } | |
1679 | }, { /* Coeff Band 4 */ | |
1680 | { 32, 186, 224 }, | |
1681 | { 7, 142, 198 }, | |
1682 | { 1, 86, 143 }, | |
1683 | { 1, 58, 100 }, | |
1684 | { 1, 31, 55 }, | |
1685 | { 1, 12, 22 } | |
1686 | }, { /* Coeff Band 5 */ | |
1687 | { 57, 192, 227 }, | |
1688 | { 20, 143, 204 }, | |
1689 | { 3, 96, 154 }, | |
1690 | { 1, 68, 112 }, | |
1691 | { 1, 42, 69 }, | |
1692 | { 1, 19, 32 } | |
1693 | } | |
1694 | } | |
1695 | }, { /* block Type 1 */ | |
1696 | { /* Intra */ | |
1697 | { /* Coeff Band 0 */ | |
1698 | { 212, 35, 215 }, | |
1699 | { 113, 47, 169 }, | |
1700 | { 29, 48, 105 } | |
1701 | }, { /* Coeff Band 1 */ | |
1702 | { 74, 129, 203 }, | |
1703 | { 106, 120, 203 }, | |
1704 | { 49, 107, 178 }, | |
1705 | { 19, 84, 144 }, | |
1706 | { 4, 50, 84 }, | |
1707 | { 1, 15, 25 } | |
1708 | }, { /* Coeff Band 2 */ | |
1709 | { 71, 172, 217 }, | |
1710 | { 44, 141, 209 }, | |
1711 | { 15, 102, 173 }, | |
1712 | { 6, 76, 133 }, | |
1713 | { 2, 51, 89 }, | |
1714 | { 1, 24, 42 } | |
1715 | }, { /* Coeff Band 3 */ | |
1716 | { 64, 185, 231 }, | |
1717 | { 31, 148, 216 }, | |
1718 | { 8, 103, 175 }, | |
1719 | { 3, 74, 131 }, | |
1720 | { 1, 46, 81 }, | |
1721 | { 1, 18, 30 } | |
1722 | }, { /* Coeff Band 4 */ | |
1723 | { 65, 196, 235 }, | |
1724 | { 25, 157, 221 }, | |
1725 | { 5, 105, 174 }, | |
1726 | { 1, 67, 120 }, | |
1727 | { 1, 38, 69 }, | |
1728 | { 1, 15, 30 } | |
1729 | }, { /* Coeff Band 5 */ | |
1730 | { 65, 204, 238 }, | |
1731 | { 30, 156, 224 }, | |
1732 | { 7, 107, 177 }, | |
1733 | { 2, 70, 124 }, | |
1734 | { 1, 42, 73 }, | |
1735 | { 1, 18, 34 } | |
1736 | } | |
1737 | }, { /* Inter */ | |
1738 | { /* Coeff Band 0 */ | |
1739 | { 225, 86, 251 }, | |
1740 | { 144, 104, 235 }, | |
1741 | { 42, 99, 181 } | |
1742 | }, { /* Coeff Band 1 */ | |
1743 | { 85, 175, 239 }, | |
1744 | { 112, 165, 229 }, | |
1745 | { 29, 136, 200 }, | |
1746 | { 12, 103, 162 }, | |
1747 | { 6, 77, 123 }, | |
1748 | { 2, 53, 84 } | |
1749 | }, { /* Coeff Band 2 */ | |
1750 | { 75, 183, 239 }, | |
1751 | { 30, 155, 221 }, | |
1752 | { 3, 106, 171 }, | |
1753 | { 1, 74, 128 }, | |
1754 | { 1, 44, 76 }, | |
1755 | { 1, 17, 28 } | |
1756 | }, { /* Coeff Band 3 */ | |
1757 | { 73, 185, 240 }, | |
1758 | { 27, 159, 222 }, | |
1759 | { 2, 107, 172 }, | |
1760 | { 1, 75, 127 }, | |
1761 | { 1, 42, 73 }, | |
1762 | { 1, 17, 29 } | |
1763 | }, { /* Coeff Band 4 */ | |
1764 | { 62, 190, 238 }, | |
1765 | { 21, 159, 222 }, | |
1766 | { 2, 107, 172 }, | |
1767 | { 1, 72, 122 }, | |
1768 | { 1, 40, 71 }, | |
1769 | { 1, 18, 32 } | |
1770 | }, { /* Coeff Band 5 */ | |
1771 | { 61, 199, 240 }, | |
1772 | { 27, 161, 226 }, | |
1773 | { 4, 113, 180 }, | |
1774 | { 1, 76, 129 }, | |
1775 | { 1, 46, 80 }, | |
1776 | { 1, 23, 41 } | |
1777 | } | |
1778 | } | |
1779 | } | |
1780 | }, { /* tx = 16x16 */ | |
1781 | { /* block Type 0 */ | |
1782 | { /* Intra */ | |
1783 | { /* Coeff Band 0 */ | |
1784 | { 7, 27, 153 }, | |
1785 | { 5, 30, 95 }, | |
1786 | { 1, 16, 30 } | |
1787 | }, { /* Coeff Band 1 */ | |
1788 | { 50, 75, 127 }, | |
1789 | { 57, 75, 124 }, | |
1790 | { 27, 67, 108 }, | |
1791 | { 10, 54, 86 }, | |
1792 | { 1, 33, 52 }, | |
1793 | { 1, 12, 18 } | |
1794 | }, { /* Coeff Band 2 */ | |
1795 | { 43, 125, 151 }, | |
1796 | { 26, 108, 148 }, | |
1797 | { 7, 83, 122 }, | |
1798 | { 2, 59, 89 }, | |
1799 | { 1, 38, 60 }, | |
1800 | { 1, 17, 27 } | |
1801 | }, { /* Coeff Band 3 */ | |
1802 | { 23, 144, 163 }, | |
1803 | { 13, 112, 154 }, | |
1804 | { 2, 75, 117 }, | |
1805 | { 1, 50, 81 }, | |
1806 | { 1, 31, 51 }, | |
1807 | { 1, 14, 23 } | |
1808 | }, { /* Coeff Band 4 */ | |
1809 | { 18, 162, 185 }, | |
1810 | { 6, 123, 171 }, | |
1811 | { 1, 78, 125 }, | |
1812 | { 1, 51, 86 }, | |
1813 | { 1, 31, 54 }, | |
1814 | { 1, 14, 23 } | |
1815 | }, { /* Coeff Band 5 */ | |
1816 | { 15, 199, 227 }, | |
1817 | { 3, 150, 204 }, | |
1818 | { 1, 91, 146 }, | |
1819 | { 1, 55, 95 }, | |
1820 | { 1, 30, 53 }, | |
1821 | { 1, 11, 20 } | |
1822 | } | |
1823 | }, { /* Inter */ | |
1824 | { /* Coeff Band 0 */ | |
1825 | { 19, 55, 240 }, | |
1826 | { 19, 59, 196 }, | |
1827 | { 3, 52, 105 } | |
1828 | }, { /* Coeff Band 1 */ | |
1829 | { 41, 166, 207 }, | |
1830 | { 104, 153, 199 }, | |
1831 | { 31, 123, 181 }, | |
1832 | { 14, 101, 152 }, | |
1833 | { 5, 72, 106 }, | |
1834 | { 1, 36, 52 } | |
1835 | }, { /* Coeff Band 2 */ | |
1836 | { 35, 176, 211 }, | |
1837 | { 12, 131, 190 }, | |
1838 | { 2, 88, 144 }, | |
1839 | { 1, 60, 101 }, | |
1840 | { 1, 36, 60 }, | |
1841 | { 1, 16, 28 } | |
1842 | }, { /* Coeff Band 3 */ | |
1843 | { 28, 183, 213 }, | |
1844 | { 8, 134, 191 }, | |
1845 | { 1, 86, 142 }, | |
1846 | { 1, 56, 96 }, | |
1847 | { 1, 30, 53 }, | |
1848 | { 1, 12, 20 } | |
1849 | }, { /* Coeff Band 4 */ | |
1850 | { 20, 190, 215 }, | |
1851 | { 4, 135, 192 }, | |
1852 | { 1, 84, 139 }, | |
1853 | { 1, 53, 91 }, | |
1854 | { 1, 28, 49 }, | |
1855 | { 1, 11, 20 } | |
1856 | }, { /* Coeff Band 5 */ | |
1857 | { 13, 196, 216 }, | |
1858 | { 2, 137, 192 }, | |
1859 | { 1, 86, 143 }, | |
1860 | { 1, 57, 99 }, | |
1861 | { 1, 32, 56 }, | |
1862 | { 1, 13, 24 } | |
1863 | } | |
1864 | } | |
1865 | }, { /* block Type 1 */ | |
1866 | { /* Intra */ | |
1867 | { /* Coeff Band 0 */ | |
1868 | { 211, 29, 217 }, | |
1869 | { 96, 47, 156 }, | |
1870 | { 22, 43, 87 } | |
1871 | }, { /* Coeff Band 1 */ | |
1872 | { 78, 120, 193 }, | |
1873 | { 111, 116, 186 }, | |
1874 | { 46, 102, 164 }, | |
1875 | { 15, 80, 128 }, | |
1876 | { 2, 49, 76 }, | |
1877 | { 1, 18, 28 } | |
1878 | }, { /* Coeff Band 2 */ | |
1879 | { 71, 161, 203 }, | |
1880 | { 42, 132, 192 }, | |
1881 | { 10, 98, 150 }, | |
1882 | { 3, 69, 109 }, | |
1883 | { 1, 44, 70 }, | |
1884 | { 1, 18, 29 } | |
1885 | }, { /* Coeff Band 3 */ | |
1886 | { 57, 186, 211 }, | |
1887 | { 30, 140, 196 }, | |
1888 | { 4, 93, 146 }, | |
1889 | { 1, 62, 102 }, | |
1890 | { 1, 38, 65 }, | |
1891 | { 1, 16, 27 } | |
1892 | }, { /* Coeff Band 4 */ | |
1893 | { 47, 199, 217 }, | |
1894 | { 14, 145, 196 }, | |
1895 | { 1, 88, 142 }, | |
1896 | { 1, 57, 98 }, | |
1897 | { 1, 36, 62 }, | |
1898 | { 1, 15, 26 } | |
1899 | }, { /* Coeff Band 5 */ | |
1900 | { 26, 219, 229 }, | |
1901 | { 5, 155, 207 }, | |
1902 | { 1, 94, 151 }, | |
1903 | { 1, 60, 104 }, | |
1904 | { 1, 36, 62 }, | |
1905 | { 1, 16, 28 } | |
1906 | } | |
1907 | }, { /* Inter */ | |
1908 | { /* Coeff Band 0 */ | |
1909 | { 233, 29, 248 }, | |
1910 | { 146, 47, 220 }, | |
1911 | { 43, 52, 140 } | |
1912 | }, { /* Coeff Band 1 */ | |
1913 | { 100, 163, 232 }, | |
1914 | { 179, 161, 222 }, | |
1915 | { 63, 142, 204 }, | |
1916 | { 37, 113, 174 }, | |
1917 | { 26, 89, 137 }, | |
1918 | { 18, 68, 97 } | |
1919 | }, { /* Coeff Band 2 */ | |
1920 | { 85, 181, 230 }, | |
1921 | { 32, 146, 209 }, | |
1922 | { 7, 100, 164 }, | |
1923 | { 3, 71, 121 }, | |
1924 | { 1, 45, 77 }, | |
1925 | { 1, 18, 30 } | |
1926 | }, { /* Coeff Band 3 */ | |
1927 | { 65, 187, 230 }, | |
1928 | { 20, 148, 207 }, | |
1929 | { 2, 97, 159 }, | |
1930 | { 1, 68, 116 }, | |
1931 | { 1, 40, 70 }, | |
1932 | { 1, 14, 29 } | |
1933 | }, { /* Coeff Band 4 */ | |
1934 | { 40, 194, 227 }, | |
1935 | { 8, 147, 204 }, | |
1936 | { 1, 94, 155 }, | |
1937 | { 1, 65, 112 }, | |
1938 | { 1, 39, 66 }, | |
1939 | { 1, 14, 26 } | |
1940 | }, { /* Coeff Band 5 */ | |
1941 | { 16, 208, 228 }, | |
1942 | { 3, 151, 207 }, | |
1943 | { 1, 98, 160 }, | |
1944 | { 1, 67, 117 }, | |
1945 | { 1, 41, 74 }, | |
1946 | { 1, 17, 31 } | |
1947 | } | |
1948 | } | |
1949 | } | |
1950 | }, { /* tx = 32x32 */ | |
1951 | { /* block Type 0 */ | |
1952 | { /* Intra */ | |
1953 | { /* Coeff Band 0 */ | |
1954 | { 17, 38, 140 }, | |
1955 | { 7, 34, 80 }, | |
1956 | { 1, 17, 29 } | |
1957 | }, { /* Coeff Band 1 */ | |
1958 | { 37, 75, 128 }, | |
1959 | { 41, 76, 128 }, | |
1960 | { 26, 66, 116 }, | |
1961 | { 12, 52, 94 }, | |
1962 | { 2, 32, 55 }, | |
1963 | { 1, 10, 16 } | |
1964 | }, { /* Coeff Band 2 */ | |
1965 | { 50, 127, 154 }, | |
1966 | { 37, 109, 152 }, | |
1967 | { 16, 82, 121 }, | |
1968 | { 5, 59, 85 }, | |
1969 | { 1, 35, 54 }, | |
1970 | { 1, 13, 20 } | |
1971 | }, { /* Coeff Band 3 */ | |
1972 | { 40, 142, 167 }, | |
1973 | { 17, 110, 157 }, | |
1974 | { 2, 71, 112 }, | |
1975 | { 1, 44, 72 }, | |
1976 | { 1, 27, 45 }, | |
1977 | { 1, 11, 17 } | |
1978 | }, { /* Coeff Band 4 */ | |
1979 | { 30, 175, 188 }, | |
1980 | { 9, 124, 169 }, | |
1981 | { 1, 74, 116 }, | |
1982 | { 1, 48, 78 }, | |
1983 | { 1, 30, 49 }, | |
1984 | { 1, 11, 18 } | |
1985 | }, { /* Coeff Band 5 */ | |
1986 | { 10, 222, 223 }, | |
1987 | { 2, 150, 194 }, | |
1988 | { 1, 83, 128 }, | |
1989 | { 1, 48, 79 }, | |
1990 | { 1, 27, 45 }, | |
1991 | { 1, 11, 17 } | |
1992 | } | |
1993 | }, { /* Inter */ | |
1994 | { /* Coeff Band 0 */ | |
1995 | { 36, 41, 235 }, | |
1996 | { 29, 36, 193 }, | |
1997 | { 10, 27, 111 } | |
1998 | }, { /* Coeff Band 1 */ | |
1999 | { 85, 165, 222 }, | |
2000 | { 177, 162, 215 }, | |
2001 | { 110, 135, 195 }, | |
2002 | { 57, 113, 168 }, | |
2003 | { 23, 83, 120 }, | |
2004 | { 10, 49, 61 } | |
2005 | }, { /* Coeff Band 2 */ | |
2006 | { 85, 190, 223 }, | |
2007 | { 36, 139, 200 }, | |
2008 | { 5, 90, 146 }, | |
2009 | { 1, 60, 103 }, | |
2010 | { 1, 38, 65 }, | |
2011 | { 1, 18, 30 } | |
2012 | }, { /* Coeff Band 3 */ | |
2013 | { 72, 202, 223 }, | |
2014 | { 23, 141, 199 }, | |
2015 | { 2, 86, 140 }, | |
2016 | { 1, 56, 97 }, | |
2017 | { 1, 36, 61 }, | |
2018 | { 1, 16, 27 } | |
2019 | }, { /* Coeff Band 4 */ | |
2020 | { 55, 218, 225 }, | |
2021 | { 13, 145, 200 }, | |
2022 | { 1, 86, 141 }, | |
2023 | { 1, 57, 99 }, | |
2024 | { 1, 35, 61 }, | |
2025 | { 1, 13, 22 } | |
2026 | }, { /* Coeff Band 5 */ | |
2027 | { 15, 235, 212 }, | |
2028 | { 1, 132, 184 }, | |
2029 | { 1, 84, 139 }, | |
2030 | { 1, 57, 97 }, | |
2031 | { 1, 34, 56 }, | |
2032 | { 1, 14, 23 } | |
2033 | } | |
2034 | } | |
2035 | }, { /* block Type 1 */ | |
2036 | { /* Intra */ | |
2037 | { /* Coeff Band 0 */ | |
2038 | { 181, 21, 201 }, | |
2039 | { 61, 37, 123 }, | |
2040 | { 10, 38, 71 } | |
2041 | }, { /* Coeff Band 1 */ | |
2042 | { 47, 106, 172 }, | |
2043 | { 95, 104, 173 }, | |
2044 | { 42, 93, 159 }, | |
2045 | { 18, 77, 131 }, | |
2046 | { 4, 50, 81 }, | |
2047 | { 1, 17, 23 } | |
2048 | }, { /* Coeff Band 2 */ | |
2049 | { 62, 147, 199 }, | |
2050 | { 44, 130, 189 }, | |
2051 | { 28, 102, 154 }, | |
2052 | { 18, 75, 115 }, | |
2053 | { 2, 44, 65 }, | |
2054 | { 1, 12, 19 } | |
2055 | }, { /* Coeff Band 3 */ | |
2056 | { 55, 153, 210 }, | |
2057 | { 24, 130, 194 }, | |
2058 | { 3, 93, 146 }, | |
2059 | { 1, 61, 97 }, | |
2060 | { 1, 31, 50 }, | |
2061 | { 1, 10, 16 } | |
2062 | }, { /* Coeff Band 4 */ | |
2063 | { 49, 186, 223 }, | |
2064 | { 17, 148, 204 }, | |
2065 | { 1, 96, 142 }, | |
2066 | { 1, 53, 83 }, | |
2067 | { 1, 26, 44 }, | |
2068 | { 1, 11, 17 } | |
2069 | }, { /* Coeff Band 5 */ | |
2070 | { 13, 217, 212 }, | |
2071 | { 2, 136, 180 }, | |
2072 | { 1, 78, 124 }, | |
2073 | { 1, 50, 83 }, | |
2074 | { 1, 29, 49 }, | |
2075 | { 1, 14, 23 } | |
2076 | } | |
2077 | }, { /* Inter */ | |
2078 | { /* Coeff Band 0 */ | |
2079 | { 197, 13, 247 }, | |
2080 | { 82, 17, 222 }, | |
2081 | { 25, 17, 162 } | |
2082 | }, { /* Coeff Band 1 */ | |
2083 | { 126, 186, 247 }, | |
2084 | { 234, 191, 243 }, | |
2085 | { 176, 177, 234 }, | |
2086 | { 104, 158, 220 }, | |
2087 | { 66, 128, 186 }, | |
2088 | { 55, 90, 137 } | |
2089 | }, { /* Coeff Band 2 */ | |
2090 | { 111, 197, 242 }, | |
2091 | { 46, 158, 219 }, | |
2092 | { 9, 104, 171 }, | |
2093 | { 2, 65, 125 }, | |
2094 | { 1, 44, 80 }, | |
2095 | { 1, 17, 91 } | |
2096 | }, { /* Coeff Band 3 */ | |
2097 | { 104, 208, 245 }, | |
2098 | { 39, 168, 224 }, | |
2099 | { 3, 109, 162 }, | |
2100 | { 1, 79, 124 }, | |
2101 | { 1, 50, 102 }, | |
2102 | { 1, 43, 102 } | |
2103 | }, { /* Coeff Band 4 */ | |
2104 | { 84, 220, 246 }, | |
2105 | { 31, 177, 231 }, | |
2106 | { 2, 115, 180 }, | |
2107 | { 1, 79, 134 }, | |
2108 | { 1, 55, 77 }, | |
2109 | { 1, 60, 79 } | |
2110 | }, { /* Coeff Band 5 */ | |
2111 | { 43, 243, 240 }, | |
2112 | { 8, 180, 217 }, | |
2113 | { 1, 115, 166 }, | |
2114 | { 1, 84, 121 }, | |
2115 | { 1, 51, 67 }, | |
2116 | { 1, 16, 6 } | |
2117 | } | |
2118 | } | |
2119 | } | |
2120 | } | |
2121 | }; | |
2122 | ||
2123 | enum MVJoint { | |
2124 | MV_JOINT_ZERO, | |
2125 | MV_JOINT_H, | |
2126 | MV_JOINT_V, | |
2127 | MV_JOINT_HV, | |
2128 | }; | |
2129 | ||
2130 | static const int8_t vp9_mv_joint_tree[3][2] = { | |
2131 | { -MV_JOINT_ZERO, 1 }, // '0' | |
2132 | { -MV_JOINT_H, 2 }, // '10' | |
2133 | { -MV_JOINT_V, -MV_JOINT_HV }, // '11x' | |
2134 | }; | |
2135 | ||
2136 | static const int8_t vp9_mv_class_tree[10][2] = { | |
2137 | { -0, 1 }, // '0' | |
2138 | { -1, 2 }, // '10' | |
2139 | { 3, 4 }, | |
2140 | { -2, -3 }, // '110x' | |
2141 | { 5, 6 }, | |
2142 | { -4, -5 }, // '1110x' | |
2143 | { -6, 7 }, // '11110' | |
2144 | { 8, 9 }, | |
2145 | { -7, -8 }, // '111110x' | |
2146 | { -9, -10 }, // '111111x' | |
2147 | }; | |
2148 | ||
2149 | static const int8_t vp9_mv_fp_tree[3][2] = { | |
2150 | { -0, 1 }, // '0' | |
2151 | { -1, 2 }, // '10' | |
2152 | { -2, -3 }, // '11x' | |
2153 | }; | |
2154 | ||
2155 | #endif /* AVCODEC_VP9DATA_H */ |