entropymode.c 84 KB
Newer Older
Jingning Han's avatar
Jingning Han committed
1
/*
Yaowu Xu's avatar
Yaowu Xu committed
2
 * Copyright (c) 2016, Alliance for Open Media. All rights reserved
Jingning Han's avatar
Jingning Han committed
3
 *
Yaowu Xu's avatar
Yaowu Xu committed
4
5
6
7
8
9
 * This source code is subject to the terms of the BSD 2 Clause License and
 * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
 * was not distributed with this source code in the LICENSE file, you can
 * obtain it at www.aomedia.org/license/software. If the Alliance for Open
 * Media Patent License 1.0 was not distributed with this source code in the
 * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
Jingning Han's avatar
Jingning Han committed
10
11
 */

Yaowu Xu's avatar
Yaowu Xu committed
12
#include "aom_mem/aom_mem.h"
Jingning Han's avatar
Jingning Han committed
13

14
#include "av1/common/reconinter.h"
Angie Chiang's avatar
Angie Chiang committed
15
#include "av1/common/scan.h"
16
17
#include "av1/common/onyxc_int.h"
#include "av1/common/seg_common.h"
Jingning Han's avatar
Jingning Han committed
18

19
#if CONFIG_EC_MULTISYMBOL
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
aom_cdf_prob av1_kf_y_mode_cdf[INTRA_MODES][INTRA_MODES][INTRA_MODES];
#endif

#if CONFIG_ALT_INTRA

const aom_prob av1_kf_y_mode_prob[INTRA_MODES][INTRA_MODES][INTRA_MODES - 1] = {
  {
      // above = dc
      { 121, 30, 54, 128, 164, 158, 45, 41, 57, 91 },   // left = dc
      { 91, 38, 101, 102, 124, 141, 49, 48, 45, 73 },   // left = v
      { 66, 28, 27, 177, 225, 178, 32, 27, 52, 114 },   // left = h
      { 106, 23, 50, 101, 134, 148, 64, 50, 49, 107 },  // left = d45
      { 75, 24, 32, 118, 66, 143, 42, 28, 57, 74 },     // left = d135
      { 95, 24, 40, 142, 56, 141, 72, 121, 129, 255 },  // left = d117
      { 71, 14, 25, 126, 117, 201, 28, 21, 117, 89 },   // left = d153
      { 85, 16, 37, 110, 163, 178, 41, 28, 48, 134 },   // left = d207
      { 86, 25, 32, 83, 105, 133, 58, 81, 46, 95 },     // left = d63
      { 79, 25, 38, 75, 150, 255, 30, 49, 34, 51 },     // left = smooth
      { 68, 59, 48, 122, 193, 158, 43, 46, 46, 112 },   // left = paeth
  },
  {
      // above = v
      { 66, 21, 118, 111, 145, 107, 27, 50, 27, 54 },    // left = dc
      { 52, 25, 167, 81, 120, 101, 34, 55, 19, 32 },     // left = v
      { 56, 18, 72, 134, 208, 139, 31, 34, 27, 89 },     // left = h
      { 75, 21, 94, 88, 134, 123, 49, 57, 30, 68 },      // left = d45
      { 54, 18, 95, 96, 78, 107, 33, 49, 28, 65 },       // left = d135
      { 61, 19, 121, 131, 58, 101, 56, 143, 120, 255 },  // left = d117
      { 53, 13, 78, 103, 110, 147, 31, 41, 64, 77 },     // left = d153
      { 69, 14, 78, 93, 167, 121, 31, 39, 25, 113 },     // left = d207
      { 64, 18, 103, 79, 90, 108, 34, 73, 27, 69 },      // left = d63
      { 52, 20, 103, 61, 161, 255, 22, 42, 16, 35 },     // left = smooth
      { 50, 31, 124, 92, 161, 120, 50, 53, 23, 60 },     // left = paeth
  },
  {
      // above = h
      { 94, 29, 31, 158, 214, 178, 35, 31, 72, 111 },   // left = dc
      { 72, 37, 72, 149, 184, 177, 43, 40, 53, 105 },   // left = v
      { 53, 21, 14, 196, 242, 209, 29, 19, 55, 145 },   // left = h
      { 93, 36, 36, 104, 176, 166, 56, 37, 49, 141 },   // left = d45
      { 84, 32, 27, 124, 108, 143, 38, 36, 76, 134 },   // left = d135
      { 82, 31, 47, 142, 122, 161, 83, 73, 126, 255 },  // left = d117
      { 66, 16, 20, 133, 148, 210, 30, 17, 113, 104 },  // left = d153
      { 76, 16, 17, 129, 207, 181, 41, 20, 46, 163 },   // left = d207
      { 72, 38, 21, 100, 142, 171, 37, 70, 49, 111 },   // left = d63
      { 61, 30, 27, 115, 208, 255, 27, 31, 44, 63 },    // left = smooth
      { 53, 45, 29, 157, 222, 185, 49, 37, 55, 102 },   // left = paeth
  },
  {
      // above = d45
      { 96, 18, 37, 98, 138, 154, 68, 56, 59, 96 },    // left = dc
      { 73, 18, 92, 81, 125, 132, 75, 64, 27, 67 },    // left = v
      { 73, 17, 27, 128, 213, 154, 56, 44, 32, 105 },  // left = h
      { 101, 20, 21, 75, 138, 138, 82, 56, 23, 154 },  // left = d45
      { 71, 15, 33, 91, 70, 150, 62, 55, 38, 118 },    // left = d135
      { 80, 19, 38, 116, 69, 122, 88, 132, 92, 255 },  // left = d117
      { 68, 11, 22, 101, 116, 179, 52, 44, 85, 96 },   // left = d153
      { 101, 8, 59, 77, 151, 170, 53, 41, 35, 172 },   // left = d207
      { 82, 19, 24, 81, 172, 129, 82, 128, 43, 108 },  // left = d63
      { 66, 18, 42, 64, 143, 255, 52, 52, 25, 83 },    // left = smooth
      { 57, 24, 42, 85, 169, 145, 104, 71, 34, 86 },   // left = paeth
  },
  {
      // above = d135
      { 85, 15, 29, 113, 83, 176, 26, 29, 70, 110 },    // left = dc
      { 78, 28, 49, 111, 91, 141, 30, 42, 48, 75 },     // left = v
      { 56, 21, 16, 146, 190, 178, 23, 31, 49, 92 },    // left = h
      { 70, 19, 20, 65, 90, 173, 97, 36, 57, 98 },      // left = d45
      { 77, 14, 26, 110, 51, 156, 34, 35, 54, 74 },     // left = d135
      { 78, 18, 36, 153, 47, 131, 62, 102, 155, 255 },  // left = d117
      { 56, 11, 15, 115, 85, 196, 32, 45, 81, 96 },     // left = d153
      { 90, 18, 24, 95, 126, 159, 34, 31, 46, 136 },    // left = d207
      { 80, 23, 28, 90, 75, 141, 39, 50, 46, 87 },      // left = d63
      { 63, 22, 31, 91, 110, 255, 26, 43, 51, 51 },     // left = smooth
      { 66, 32, 31, 122, 145, 165, 40, 43, 56, 79 },    // left = paeth
  },
  {
      // above = d117
      { 81, 16, 61, 170, 74, 105, 54, 105, 113, 255 },  // left = dc
      { 74, 20, 86, 163, 64, 97, 65, 129, 101, 255 },   // left = v
      { 63, 15, 47, 168, 141, 176, 69, 77, 77, 255 },   // left = h
      { 70, 17, 59, 97, 78, 114, 74, 122, 80, 255 },    // left = d45
      { 78, 13, 50, 153, 34, 126, 75, 114, 120, 255 },  // left = d135
      { 72, 16, 69, 159, 28, 108, 63, 134, 107, 255 },  // left = d117
      { 66, 9, 47, 131, 79, 148, 41, 88, 105, 255 },    // left = d153
      { 78, 12, 60, 119, 105, 133, 47, 95, 63, 255 },   // left = d207
      { 82, 21, 58, 128, 61, 98, 64, 136, 91, 255 },    // left = d63
      { 23, 26, 28, 96, 85, 128, 51, 64, 85, 128 },     // left = smooth
      { 58, 27, 62, 162, 109, 151, 75, 106, 78, 255 },  // left = paeth
  },
  {
      // above = d153
      { 91, 18, 25, 121, 166, 173, 25, 25, 128, 102 },  // left = dc
      { 80, 27, 51, 111, 141, 147, 45, 38, 70, 85 },    // left = v
      { 53, 12, 11, 154, 197, 225, 17, 17, 74, 145 },   // left = h
      { 93, 27, 23, 111, 143, 188, 43, 39, 69, 112 },   // left = d45
      { 83, 15, 21, 118, 67, 178, 40, 33, 73, 92 },     // left = d135
      { 94, 13, 31, 132, 66, 110, 61, 82, 148, 255 },   // left = d117
      { 76, 9, 11, 96, 105, 201, 16, 13, 157, 97 },     // left = d153
      { 70, 10, 12, 100, 172, 201, 23, 17, 53, 158 },   // left = d207
      { 114, 25, 21, 104, 108, 163, 30, 47, 53, 111 },  // left = d63
      { 70, 16, 21, 80, 157, 255, 25, 30, 81, 69 },     // left = smooth
      { 87, 32, 26, 120, 191, 168, 32, 33, 70, 118 },   // left = paeth
  },
  {
      // above = d207
      { 98, 20, 39, 122, 168, 188, 38, 36, 54, 132 },   // left = dc
      { 81, 37, 62, 97, 122, 153, 38, 43, 36, 118 },    // left = v
      { 71, 21, 22, 154, 227, 183, 37, 31, 46, 140 },   // left = h
      { 90, 34, 19, 93, 144, 194, 65, 47, 41, 163 },    // left = d45
      { 78, 20, 27, 91, 93, 173, 57, 52, 49, 113 },     // left = d135
      { 79, 25, 45, 121, 101, 147, 69, 56, 122, 255 },  // left = d117
      { 73, 13, 19, 105, 122, 206, 40, 28, 91, 126 },   // left = d153
      { 101, 14, 22, 87, 153, 169, 33, 25, 26, 175 },   // left = d207
      { 81, 28, 23, 86, 115, 169, 48, 56, 41, 111 },    // left = d63
      { 70, 24, 30, 90, 180, 255, 38, 26, 36, 82 },     // left = smooth
      { 61, 37, 30, 94, 189, 163, 76, 50, 36, 127 },    // left = paeth
  },
  {
      // above = d63
      { 77, 13, 46, 86, 138, 117, 55, 88, 34, 68 },     // left = dc
      { 68, 17, 80, 64, 105, 108, 66, 115, 32, 45 },    // left = v
      { 62, 13, 37, 124, 210, 131, 46, 57, 28, 103 },   // left = h
      { 88, 15, 45, 73, 134, 145, 73, 101, 37, 87 },    // left = d45
      { 68, 16, 35, 78, 81, 133, 54, 71, 33, 67 },      // left = d135
      { 71, 16, 57, 108, 61, 135, 71, 184, 113, 255 },  // left = d117
      { 55, 10, 27, 69, 107, 158, 39, 76, 82, 95 },     // left = d153
      { 80, 9, 38, 78, 153, 145, 50, 63, 28, 123 },     // left = d207
      { 86, 12, 33, 49, 107, 135, 64, 134, 57, 89 },    // left = d63
      { 56, 19, 55, 60, 163, 255, 38, 84, 22, 36 },     // left = smooth
      { 53, 17, 60, 69, 151, 126, 73, 113, 26, 80 },    // left = paeth
  },
  {
      // above = smooth
      { 79, 16, 46, 89, 167, 255, 22, 36, 29, 42 },   // left = dc
      { 63, 22, 88, 71, 131, 255, 26, 41, 21, 35 },   // left = v
      { 51, 18, 28, 142, 232, 255, 26, 25, 25, 75 },  // left = h
      { 75, 18, 43, 70, 140, 255, 37, 49, 34, 89 },   // left = d45
      { 70, 14, 35, 87, 83, 255, 30, 36, 34, 50 },    // left = d135
      { 23, 26, 28, 96, 85, 128, 51, 64, 85, 128 },   // left = d117
      { 74, 12, 33, 83, 128, 255, 27, 33, 58, 68 },   // left = d153
      { 66, 11, 30, 77, 179, 255, 21, 27, 23, 113 },  // left = d207
      { 68, 22, 40, 65, 118, 255, 28, 61, 30, 50 },   // left = d63
      { 60, 18, 44, 69, 141, 255, 18, 32, 22, 40 },   // left = smooth
      { 52, 32, 54, 96, 194, 255, 33, 37, 25, 53 },   // left = paeth
  },
  {
      // above = paeth
      { 76, 47, 67, 123, 182, 150, 41, 52, 55, 97 },    // left = dc
      { 69, 40, 125, 102, 138, 138, 42, 55, 32, 70 },   // left = v
      { 46, 28, 27, 160, 232, 169, 34, 21, 32, 122 },   // left = h
      { 78, 35, 41, 99, 128, 124, 49, 43, 35, 111 },    // left = d45
      { 66, 28, 47, 100, 113, 145, 37, 40, 72, 93 },    // left = d135
      { 77, 37, 76, 134, 124, 124, 65, 122, 88, 255 },  // left = d117
      { 53, 23, 38, 108, 128, 204, 26, 32, 115, 114 },  // left = d153
      { 65, 20, 29, 101, 202, 186, 29, 24, 29, 188 },   // left = d207
      { 71, 24, 49, 81, 126, 151, 36, 65, 28, 93 },     // left = d63
      { 54, 36, 53, 94, 193, 255, 25, 38, 20, 64 },     // left = smooth
      { 52, 54, 60, 108, 176, 168, 47, 44, 50, 105 },   // left = paeth
  },
};

static const aom_prob default_if_y_probs[BLOCK_SIZE_GROUPS][INTRA_MODES - 1] = {
  { 88, 16, 47, 133, 143, 150, 70, 48, 84, 122 },  // block_size < 8x8
  { 75, 26, 51, 120, 158, 157, 44, 45, 56, 102 },  // block_size < 16x16
  { 73, 24, 60, 115, 184, 164, 26, 36, 32, 63 },   // block_size < 32x32
  { 96, 27, 50, 107, 221, 148, 16, 22, 14, 39 },   // block_size >= 32x32
};

static const aom_prob default_uv_probs[INTRA_MODES][INTRA_MODES - 1] = {
  { 199, 3, 79, 179, 220, 109, 38, 50, 68, 138 },   // y = dc
  { 17, 2, 219, 136, 131, 58, 21, 106, 23, 41 },    // y = v
  { 26, 1, 5, 244, 253, 138, 16, 21, 68, 205 },     // y = h
  { 183, 3, 66, 94, 195, 97, 101, 104, 41, 178 },   // y = d45
  { 178, 2, 36, 158, 99, 175, 21, 29, 105, 77 },    // y = d135
  { 154, 3, 65, 219, 40, 48, 45, 95, 146, 255 },    // y = d117
  { 167, 1, 16, 160, 214, 187, 10, 10, 200, 155 },  // y = d153
  { 154, 2, 18, 178, 238, 132, 25, 21, 34, 221 },   // y = d207
  { 153, 4, 76, 85, 157, 90, 38, 165, 46, 104 },    // y = d63
  { 163, 3, 68, 87, 190, 255, 19, 27, 25, 46 },     // y = smooth
  { 185, 7, 113, 171, 203, 57, 18, 69, 49, 104 },   // y = paeth
};

#else

Yaowu Xu's avatar
Yaowu Xu committed
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
const aom_prob av1_kf_y_mode_prob[INTRA_MODES][INTRA_MODES][INTRA_MODES - 1] = {
  {
      // above = dc
      { 137, 30, 42, 148, 151, 207, 70, 52, 91 },   // left = dc
      { 92, 45, 102, 136, 116, 180, 74, 90, 100 },  // left = v
      { 73, 32, 19, 187, 222, 215, 46, 34, 100 },   // left = h
      { 91, 30, 32, 116, 121, 186, 93, 86, 94 },    // left = d45
      { 72, 35, 36, 149, 68, 206, 68, 63, 105 },    // left = d135
      { 73, 31, 28, 138, 57, 124, 55, 122, 151 },   // left = d117
      { 67, 23, 21, 140, 126, 197, 40, 37, 171 },   // left = d153
      { 86, 27, 28, 128, 154, 212, 45, 43, 53 },    // left = d207
      { 74, 32, 27, 107, 86, 160, 63, 134, 102 },   // left = d63
      { 59, 67, 44, 140, 161, 202, 78, 67, 119 }    // left = tm
  },
  {
      // above = v
      { 63, 36, 126, 146, 123, 158, 60, 90, 96 },   // left = dc
      { 43, 46, 168, 134, 107, 128, 69, 142, 92 },  // left = v
      { 44, 29, 68, 159, 201, 177, 50, 57, 77 },    // left = h
      { 58, 38, 76, 114, 97, 172, 78, 133, 92 },    // left = d45
      { 46, 41, 76, 140, 63, 184, 69, 112, 57 },    // left = d135
      { 38, 32, 85, 140, 46, 112, 54, 151, 133 },   // left = d117
      { 39, 27, 61, 131, 110, 175, 44, 75, 136 },   // left = d153
      { 52, 30, 74, 113, 130, 175, 51, 64, 58 },    // left = d207
      { 47, 35, 80, 100, 74, 143, 64, 163, 74 },    // left = d63
      { 36, 61, 116, 114, 128, 162, 80, 125, 82 }   // left = tm
  },
  {
      // above = h
      { 82, 26, 26, 171, 208, 204, 44, 32, 105 },  // left = dc
      { 55, 44, 68, 166, 179, 192, 57, 57, 108 },  // left = v
      { 42, 26, 11, 199, 241, 228, 23, 15, 85 },   // left = h
      { 68, 42, 19, 131, 160, 199, 55, 52, 83 },   // left = d45
      { 58, 50, 25, 139, 115, 232, 39, 52, 118 },  // left = d135
      { 50, 35, 33, 153, 104, 162, 64, 59, 131 },  // left = d117
      { 44, 24, 16, 150, 177, 202, 33, 19, 156 },  // left = d153
      { 55, 27, 12, 153, 203, 218, 26, 27, 49 },   // left = d207
      { 53, 49, 21, 110, 116, 168, 59, 80, 76 },   // left = d63
      { 38, 72, 19, 168, 203, 212, 50, 50, 107 }   // left = tm
  },
  {
      // above = d45
      { 103, 26, 36, 129, 132, 201, 83, 80, 93 },  // left = dc
      { 59, 38, 83, 112, 103, 162, 98, 136, 90 },  // left = v
      { 62, 30, 23, 158, 200, 207, 59, 57, 50 },   // left = h
      { 67, 30, 29, 84, 86, 191, 102, 91, 59 },    // left = d45
      { 60, 32, 33, 112, 71, 220, 64, 89, 104 },   // left = d135
      { 53, 26, 34, 130, 56, 149, 84, 120, 103 },  // left = d117
      { 53, 21, 23, 133, 109, 210, 56, 77, 172 },  // left = d153
      { 77, 19, 29, 112, 142, 228, 55, 66, 36 },   // left = d207
      { 61, 29, 29, 93, 97, 165, 83, 175, 162 },   // left = d63
      { 47, 47, 43, 114, 137, 181, 100, 99, 95 }   // left = tm
  },
  {
      // above = d135
      { 69, 23, 29, 128, 83, 199, 46, 44, 101 },   // left = dc
      { 53, 40, 55, 139, 69, 183, 61, 80, 110 },   // left = v
      { 40, 29, 19, 161, 180, 207, 43, 24, 91 },   // left = h
      { 60, 34, 19, 105, 61, 198, 53, 64, 89 },    // left = d45
      { 52, 31, 22, 158, 40, 209, 58, 62, 89 },    // left = d135
      { 44, 31, 29, 147, 46, 158, 56, 102, 198 },  // left = d117
      { 35, 19, 12, 135, 87, 209, 41, 45, 167 },   // left = d153
      { 55, 25, 21, 118, 95, 215, 38, 39, 66 },    // left = d207
      { 51, 38, 25, 113, 58, 164, 70, 93, 97 },    // left = d63
      { 47, 54, 34, 146, 108, 203, 72, 103, 151 }  // left = tm
  },
  {
      // above = d117
      { 64, 19, 37, 156, 66, 138, 49, 95, 133 },   // left = dc
      { 46, 27, 80, 150, 55, 124, 55, 121, 135 },  // left = v
      { 36, 23, 27, 165, 149, 166, 54, 64, 118 },  // left = h
      { 53, 21, 36, 131, 63, 163, 60, 109, 81 },   // left = d45
      { 40, 26, 35, 154, 40, 185, 51, 97, 123 },   // left = d135
      { 35, 19, 34, 179, 19, 97, 48, 129, 124 },   // left = d117
      { 36, 20, 26, 136, 62, 164, 33, 77, 154 },   // left = d153
      { 45, 18, 32, 130, 90, 157, 40, 79, 91 },    // left = d207
      { 45, 26, 28, 129, 45, 129, 49, 147, 123 },  // left = d63
      { 38, 44, 51, 136, 74, 162, 57, 97, 121 }    // left = tm
  },
  {
      // above = d153
      { 75, 17, 22, 136, 138, 185, 32, 34, 166 },  // left = dc
      { 56, 39, 58, 133, 117, 173, 48, 53, 187 },  // left = v
      { 35, 21, 12, 161, 212, 207, 20, 23, 145 },  // left = h
      { 56, 29, 19, 117, 109, 181, 55, 68, 112 },  // left = d45
      { 47, 29, 17, 153, 64, 220, 59, 51, 114 },   // left = d135
      { 46, 16, 24, 136, 76, 147, 41, 64, 172 },   // left = d117
      { 34, 17, 11, 108, 152, 187, 13, 15, 209 },  // left = d153
      { 51, 24, 14, 115, 133, 209, 32, 26, 104 },  // left = d207
      { 55, 30, 18, 122, 79, 179, 44, 88, 116 },   // left = d63
      { 37, 49, 25, 129, 168, 164, 41, 54, 148 }   // left = tm
  },
  {
      // above = d207
      { 82, 22, 32, 127, 143, 213, 39, 41, 70 },   // left = dc
      { 62, 44, 61, 123, 105, 189, 48, 57, 64 },   // left = v
      { 47, 25, 17, 175, 222, 220, 24, 30, 86 },   // left = h
      { 68, 36, 17, 106, 102, 206, 59, 74, 74 },   // left = d45
      { 57, 39, 23, 151, 68, 216, 55, 63, 58 },    // left = d135
      { 49, 30, 35, 141, 70, 168, 82, 40, 115 },   // left = d117
      { 51, 25, 15, 136, 129, 202, 38, 35, 139 },  // left = d153
      { 68, 26, 16, 111, 141, 215, 29, 28, 28 },   // left = d207
      { 59, 39, 19, 114, 75, 180, 77, 104, 42 },   // left = d63
      { 40, 61, 26, 126, 152, 206, 61, 59, 93 }    // left = tm
  },
  {
      // above = d63
      { 78, 23, 39, 111, 117, 170, 74, 124, 94 },   // left = dc
      { 48, 34, 86, 101, 92, 146, 78, 179, 134 },   // left = v
      { 47, 22, 24, 138, 187, 178, 68, 69, 59 },    // left = h
      { 56, 25, 33, 105, 112, 187, 95, 177, 129 },  // left = d45
      { 48, 31, 27, 114, 63, 183, 82, 116, 56 },    // left = d135
      { 43, 28, 37, 121, 63, 123, 61, 192, 169 },   // left = d117
      { 42, 17, 24, 109, 97, 177, 56, 76, 122 },    // left = d153
      { 58, 18, 28, 105, 139, 182, 70, 92, 63 },    // left = d207
      { 46, 23, 32, 74, 86, 150, 67, 183, 88 },     // left = d63
      { 36, 38, 48, 92, 122, 165, 88, 137, 91 }     // left = tm
  },
  {
      // above = tm
      { 65, 70, 60, 155, 159, 199, 61, 60, 81 },    // left = dc
      { 44, 78, 115, 132, 119, 173, 71, 112, 93 },  // left = v
      { 39, 38, 21, 184, 227, 206, 42, 32, 64 },    // left = h
      { 58, 47, 36, 124, 137, 193, 80, 82, 78 },    // left = d45
      { 49, 50, 35, 144, 95, 205, 63, 78, 59 },     // left = d135
      { 41, 53, 52, 148, 71, 142, 65, 128, 51 },    // left = d117
      { 40, 36, 28, 143, 143, 202, 40, 55, 137 },   // left = d153
      { 52, 34, 29, 129, 183, 227, 42, 35, 43 },    // left = d207
      { 42, 44, 44, 104, 105, 164, 64, 130, 80 },   // left = d63
      { 43, 81, 53, 140, 169, 204, 68, 84, 72 }     // left = tm
  }
};

338
339
340
// Default probabilities for signaling Intra mode for Y plane -- used only for
// inter frames. ('av1_kf_y_mode_prob' is used for intra-only frames).
// Context used: block size group.
Yaowu Xu's avatar
Yaowu Xu committed
341
static const aom_prob default_if_y_probs[BLOCK_SIZE_GROUPS][INTRA_MODES - 1] = {
clang-format's avatar
clang-format committed
342
343
344
345
  { 65, 32, 18, 144, 162, 194, 41, 51, 98 },   // block_size < 8x8
  { 132, 68, 18, 165, 217, 196, 45, 40, 78 },  // block_size < 16x16
  { 173, 80, 19, 176, 240, 193, 64, 35, 46 },  // block_size < 32x32
  { 221, 135, 38, 194, 248, 121, 96, 85, 29 }  // block_size >= 32x32
Jingning Han's avatar
Jingning Han committed
346
347
};

348
349
350
// Default probabilities for signaling Intra mode for UV plane -- common for
// both intra and inter frames.
// Context used: Intra mode used by Y plane of the same block.
Yaowu Xu's avatar
Yaowu Xu committed
351
static const aom_prob default_uv_probs[INTRA_MODES][INTRA_MODES - 1] = {
clang-format's avatar
clang-format committed
352
353
354
355
356
357
358
359
360
361
  { 120, 7, 76, 176, 208, 126, 28, 54, 103 },   // y = dc
  { 48, 12, 154, 155, 139, 90, 34, 117, 119 },  // y = v
  { 67, 6, 25, 204, 243, 158, 13, 21, 96 },     // y = h
  { 97, 5, 44, 131, 176, 139, 48, 68, 97 },     // y = d45
  { 83, 5, 42, 156, 111, 152, 26, 49, 152 },    // y = d135
  { 80, 5, 58, 178, 74, 83, 33, 62, 145 },      // y = d117
  { 86, 5, 32, 154, 192, 168, 14, 22, 163 },    // y = d153
  { 85, 5, 32, 156, 216, 148, 19, 29, 73 },     // y = d207
  { 77, 7, 64, 116, 132, 122, 37, 126, 120 },   // y = d63
  { 101, 21, 107, 181, 192, 103, 19, 67, 125 }  // y = tm
Jingning Han's avatar
Jingning Han committed
362
363
};

364
365
#endif  // CONFIG_ALT_INTRA

366
#if CONFIG_EXT_PARTITION_TYPES
Yaowu Xu's avatar
Yaowu Xu committed
367
static const aom_prob
clang-format's avatar
clang-format committed
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
    default_partition_probs[PARTITION_CONTEXTS][EXT_PARTITION_TYPES - 1] = {
      // 8x8 -> 4x4
      { 199, 122, 141, 128, 128, 128, 128 },  // a/l both not split
      { 147, 63, 159, 128, 128, 128, 128 },   // a split, l not split
      { 148, 133, 118, 128, 128, 128, 128 },  // l split, a not split
      { 121, 104, 114, 128, 128, 128, 128 },  // a/l both split
      // 16x16 -> 8x8
      { 174, 73, 87, 128, 128, 128, 128 },  // a/l both not split
      { 92, 41, 83, 128, 128, 128, 128 },   // a split, l not split
      { 82, 99, 50, 128, 128, 128, 128 },   // l split, a not split
      { 53, 39, 39, 128, 128, 128, 128 },   // a/l both split
      // 32x32 -> 16x16
      { 177, 58, 59, 128, 128, 128, 128 },  // a/l both not split
      { 68, 26, 63, 128, 128, 128, 128 },   // a split, l not split
      { 52, 79, 25, 128, 128, 128, 128 },   // l split, a not split
      { 17, 14, 12, 128, 128, 128, 128 },   // a/l both split
      // 64x64 -> 32x32
      { 222, 34, 30, 128, 128, 128, 128 },  // a/l both not split
      { 72, 16, 44, 128, 128, 128, 128 },   // a split, l not split
      { 58, 32, 12, 128, 128, 128, 128 },   // l split, a not split
      { 10, 7, 6, 128, 128, 128, 128 },     // a/l both split
389
#if CONFIG_EXT_PARTITION
clang-format's avatar
clang-format committed
390
391
392
393
394
395
      // 128x128 -> 64x64
      { 222, 34, 30, 128, 128, 128, 128 },  // a/l both not split
      { 72, 16, 44, 128, 128, 128, 128 },   // a split, l not split
      { 58, 32, 12, 128, 128, 128, 128 },   // l split, a not split
      { 10, 7, 6, 128, 128, 128, 128 },     // a/l both split
#endif                                      // CONFIG_EXT_PARTITION
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
#if CONFIG_UNPOISON_PARTITION_CTX
      { 0, 0, 141, 0, 0, 0, 0 },  // 8x8 -> 4x4
      { 0, 0, 87, 0, 0, 0, 0 },   // 16x16 -> 8x8
      { 0, 0, 59, 0, 0, 0, 0 },   // 32x32 -> 16x16
      { 0, 0, 30, 0, 0, 0, 0 },   // 64x64 -> 32x32
#if CONFIG_EXT_PARTITION
      { 0, 0, 30, 0, 0, 0, 0 },   // 128x128 -> 64x64
#endif                            // CONFIG_EXT_PARTITION
      { 0, 122, 0, 0, 0, 0, 0 },  // 8x8 -> 4x4
      { 0, 73, 0, 0, 0, 0, 0 },   // 16x16 -> 8x8
      { 0, 58, 0, 0, 0, 0, 0 },   // 32x32 -> 16x16
      { 0, 34, 0, 0, 0, 0, 0 },   // 64x64 -> 32x32
#if CONFIG_EXT_PARTITION
      { 0, 34, 0, 0, 0, 0, 0 },  // 128x128 -> 64x64
#endif                           // CONFIG_EXT_PARTITION
#endif                           // CONFIG_UNPOISON_PARTITION_CTX
clang-format's avatar
clang-format committed
412
    };
413
#else
Yaowu Xu's avatar
Yaowu Xu committed
414
static const aom_prob
clang-format's avatar
clang-format committed
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
    default_partition_probs[PARTITION_CONTEXTS][PARTITION_TYPES - 1] = {
      // 8x8 -> 4x4
      { 199, 122, 141 },  // a/l both not split
      { 147, 63, 159 },   // a split, l not split
      { 148, 133, 118 },  // l split, a not split
      { 121, 104, 114 },  // a/l both split
      // 16x16 -> 8x8
      { 174, 73, 87 },  // a/l both not split
      { 92, 41, 83 },   // a split, l not split
      { 82, 99, 50 },   // l split, a not split
      { 53, 39, 39 },   // a/l both split
      // 32x32 -> 16x16
      { 177, 58, 59 },  // a/l both not split
      { 68, 26, 63 },   // a split, l not split
      { 52, 79, 25 },   // l split, a not split
      { 17, 14, 12 },   // a/l both split
      // 64x64 -> 32x32
      { 222, 34, 30 },  // a/l both not split
      { 72, 16, 44 },   // a split, l not split
      { 58, 32, 12 },   // l split, a not split
      { 10, 7, 6 },     // a/l both split
436
#if CONFIG_EXT_PARTITION
clang-format's avatar
clang-format committed
437
438
439
440
441
      // 128x128 -> 64x64
      { 222, 34, 30 },  // a/l both not split
      { 72, 16, 44 },   // a split, l not split
      { 58, 32, 12 },   // l split, a not split
      { 10, 7, 6 },     // a/l both split
442
#endif  // CONFIG_EXT_PARTITION
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
#if CONFIG_UNPOISON_PARTITION_CTX
      { 0, 0, 141 },    // 8x8 -> 4x4
      { 0, 0, 87 },     // 16x16 -> 8x8
      { 0, 0, 59 },     // 32x32 -> 16x16
      { 0, 0, 30 },     // 64x64 -> 32x32
#if CONFIG_EXT_PARTITION
      { 0, 0, 30 },     // 128x128 -> 64x64
#endif  // CONFIG_EXT_PARTITION
      { 0, 122, 0 },    // 8x8 -> 4x4
      { 0, 73, 0 },     // 16x16 -> 8x8
      { 0, 58, 0 },     // 32x32 -> 16x16
      { 0, 34, 0 },     // 64x64 -> 32x32
#if CONFIG_EXT_PARTITION
      { 0, 34, 0 },     // 128x128 -> 64x64
#endif  // CONFIG_EXT_PARTITION
#endif  // CONFIG_UNPOISON_PARTITION_CTX
clang-format's avatar
clang-format committed
459
    };
460
#endif  // CONFIG_EXT_PARTITION_TYPES
Jingning Han's avatar
Jingning Han committed
461

462
#if CONFIG_REF_MV
Yaowu Xu's avatar
Yaowu Xu committed
463
static const aom_prob default_newmv_prob[NEWMV_MODE_CONTEXTS] = {
clang-format's avatar
clang-format committed
464
  200, 180, 150, 150, 110, 70, 60,
465
466
};

Yaowu Xu's avatar
Yaowu Xu committed
467
static const aom_prob default_zeromv_prob[ZEROMV_MODE_CONTEXTS] = {
clang-format's avatar
clang-format committed
468
  192, 64,
469
470
};

Yaowu Xu's avatar
Yaowu Xu committed
471
static const aom_prob default_refmv_prob[REFMV_MODE_CONTEXTS] = {
clang-format's avatar
clang-format committed
472
  220, 220, 200, 200, 180, 128, 30, 220, 30,
473
};
Yue Chen's avatar
Yue Chen committed
474

Yaowu Xu's avatar
Yaowu Xu committed
475
static const aom_prob default_drl_prob[DRL_MODE_CONTEXTS] = { 128, 160, 180,
clang-format's avatar
clang-format committed
476
                                                              128, 160 };
477

Yue Chen's avatar
Yue Chen committed
478
#if CONFIG_EXT_INTER
Yaowu Xu's avatar
Yaowu Xu committed
479
static const aom_prob default_new2mv_prob = 180;
480
481
#endif  // CONFIG_EXT_INTER
#endif  // CONFIG_REF_MV
482

Yaowu Xu's avatar
Yaowu Xu committed
483
static const aom_prob
clang-format's avatar
clang-format committed
484
    default_inter_mode_probs[INTER_MODE_CONTEXTS][INTER_MODES - 1] = {
Yue Chen's avatar
Yue Chen committed
485
#if CONFIG_EXT_INTER
clang-format's avatar
clang-format committed
486
487
488
489
490
491
492
493
      // TODO(zoeliu): To adjust the initial default probs
      { 2, 173, 34, 173 },  // 0 = both zero mv
      { 7, 145, 85, 145 },  // 1 = one zero mv + one a predicted mv
      { 7, 166, 63, 166 },  // 2 = two predicted mvs
      { 7, 94, 66, 128 },   // 3 = one predicted/zero and one new mv
      { 8, 64, 46, 128 },   // 4 = two new mvs
      { 17, 81, 31, 128 },  // 5 = one intra neighbour + x
      { 25, 29, 30, 96 },   // 6 = two intra neighbours
Yue Chen's avatar
Yue Chen committed
494
#else
clang-format's avatar
clang-format committed
495
496
497
498
499
500
501
      { 2, 173, 34 },  // 0 = both zero mv
      { 7, 145, 85 },  // 1 = one zero mv + one a predicted mv
      { 7, 166, 63 },  // 2 = two predicted mvs
      { 7, 94, 66 },   // 3 = one predicted/zero and one new mv
      { 8, 64, 46 },   // 4 = two new mvs
      { 17, 81, 31 },  // 5 = one intra neighbour + x
      { 25, 29, 30 },  // 6 = two intra neighbours
Yue Chen's avatar
Yue Chen committed
502
#endif  // CONFIG_EXT_INTER
clang-format's avatar
clang-format committed
503
    };
Jingning Han's avatar
Jingning Han committed
504

505
#if CONFIG_EXT_INTER
Yaowu Xu's avatar
Yaowu Xu committed
506
static const aom_prob default_inter_compound_mode_probs
clang-format's avatar
clang-format committed
507
508
509
510
511
512
513
514
515
    [INTER_MODE_CONTEXTS][INTER_COMPOUND_MODES - 1] = {
      { 2, 173, 68, 192, 64, 192, 128, 180, 180 },   // 0 = both zero mv
      { 7, 145, 160, 192, 64, 192, 128, 180, 180 },  // 1 = 1 zero + 1 predicted
      { 7, 166, 126, 192, 64, 192, 128, 180, 180 },  // 2 = two predicted mvs
      { 7, 94, 132, 192, 64, 192, 128, 180, 180 },   // 3 = 1 pred/zero, 1 new
      { 8, 64, 64, 192, 64, 192, 128, 180, 180 },    // 4 = two new mvs
      { 17, 81, 52, 192, 64, 192, 128, 180, 180 },   // 5 = one intra neighbour
      { 25, 29, 50, 192, 64, 192, 128, 180, 180 },   // 6 = two intra neighbours
    };
516

517
518
519
#if CONFIG_COMPOUND_SEGMENT
static const aom_prob
    default_compound_type_probs[BLOCK_SIZES][COMPOUND_TYPES - 1] = {
520
521
522
#if CONFIG_CB4X4
      { 255, 255 }, { 255, 255 }, { 255, 255 },
#endif
523
524
525
526
527
528
529
530
      { 208, 200 }, { 208, 200 }, { 208, 200 }, { 208, 200 }, { 208, 200 },
      { 208, 200 }, { 216, 200 }, { 216, 200 }, { 216, 200 }, { 224, 200 },
      { 224, 200 }, { 240, 200 }, { 240, 200 },
#if CONFIG_EXT_PARTITION
      { 255, 200 }, { 255, 200 }, { 255, 200 },
#endif  // CONFIG_EXT_PARTITION
    };
#else  // !CONFIG_COMPOUND_SEGMENT
531
532
static const aom_prob default_compound_type_probs[BLOCK_SIZES]
                                                 [COMPOUND_TYPES - 1] = {
533
534
535
#if CONFIG_CB4X4
                                                   { 208 }, { 208 }, { 208 },
#endif
536
537
538
539
540
541
542
543
544
                                                   { 208 }, { 208 }, { 208 },
                                                   { 208 }, { 208 }, { 208 },
                                                   { 216 }, { 216 }, { 216 },
                                                   { 224 }, { 224 }, { 240 },
                                                   { 240 },
#if CONFIG_EXT_PARTITION
                                                   { 255 }, { 255 }, { 255 },
#endif  // CONFIG_EXT_PARTITION
                                                 };
545
#endif  // CONFIG_COMPOUND_SEGMENT
546

Yaowu Xu's avatar
Yaowu Xu committed
547
static const aom_prob default_interintra_prob[BLOCK_SIZE_GROUPS] = {
548
549
550
  208, 208, 208, 208,
};

Yaowu Xu's avatar
Yaowu Xu committed
551
static const aom_prob
552
    default_interintra_mode_prob[BLOCK_SIZE_GROUPS][INTERINTRA_MODES - 1] = {
clang-format's avatar
clang-format committed
553
554
555
556
557
      { 65, 32, 18, 144, 162, 194, 41, 51, 98 },   // block_size < 8x8
      { 132, 68, 18, 165, 217, 196, 45, 40, 78 },  // block_size < 16x16
      { 173, 80, 19, 176, 240, 193, 64, 35, 46 },  // block_size < 32x32
      { 221, 135, 38, 194, 248, 121, 96, 85, 29 }  // block_size >= 32x32
    };
558

Yaowu Xu's avatar
Yaowu Xu committed
559
static const aom_prob default_wedge_interintra_prob[BLOCK_SIZES] = {
560
561
562
#if CONFIG_CB4X4
  208, 208, 208,
#endif
563
  208, 208, 208, 208, 208, 208, 216, 216, 216, 224, 224, 224, 240,
564
#if CONFIG_EXT_PARTITION
565
  208, 208, 208
566
#endif  // CONFIG_EXT_PARTITION
567
};
568
569
#endif  // CONFIG_EXT_INTER

570
// Change this section appropriately once warped motion is supported
Yue Chen's avatar
Yue Chen committed
571
572
#if CONFIG_MOTION_VAR && !CONFIG_WARPED_MOTION
const aom_tree_index av1_motion_mode_tree[TREE_SIZE(MOTION_MODES)] = {
573
574
  -SIMPLE_TRANSLATION, -OBMC_CAUSAL
};
Yue Chen's avatar
Yue Chen committed
575
576
static const aom_prob default_motion_mode_prob[BLOCK_SIZES]
                                              [MOTION_MODES - 1] = {
577
578
579
#if CONFIG_CB4X4
                                                { 255 }, { 255 }, { 255 },
#endif
Yue Chen's avatar
Yue Chen committed
580
581
582
583
584
                                                { 255 }, { 255 }, { 255 },
                                                { 151 }, { 153 }, { 144 },
                                                { 178 }, { 165 }, { 160 },
                                                { 207 }, { 195 }, { 168 },
                                                { 244 },
585
#if CONFIG_EXT_PARTITION
Yue Chen's avatar
Yue Chen committed
586
                                                { 252 }, { 252 }, { 252 },
587
#endif  // CONFIG_EXT_PARTITION
Yue Chen's avatar
Yue Chen committed
588
                                              };
589

Yue Chen's avatar
Yue Chen committed
590
#elif !CONFIG_MOTION_VAR && CONFIG_WARPED_MOTION
591

Yue Chen's avatar
Yue Chen committed
592
const aom_tree_index av1_motion_mode_tree[TREE_SIZE(MOTION_MODES)] = {
593
594
  -SIMPLE_TRANSLATION, -WARPED_CAUSAL
};
Yue Chen's avatar
Yue Chen committed
595

Yue Chen's avatar
Yue Chen committed
596
597
static const aom_prob default_motion_mode_prob[BLOCK_SIZES]
                                              [MOTION_MODES - 1] = {
598
599
600
#if CONFIG_CB4X4
                                                { 255 }, { 255 }, { 255 },
#endif
Yue Chen's avatar
Yue Chen committed
601
602
603
604
605
                                                { 255 }, { 255 }, { 255 },
                                                { 151 }, { 153 }, { 144 },
                                                { 178 }, { 165 }, { 160 },
                                                { 207 }, { 195 }, { 168 },
                                                { 244 },
606
#if CONFIG_EXT_PARTITION
Yue Chen's avatar
Yue Chen committed
607
                                                { 252 }, { 252 }, { 252 },
608
#endif  // CONFIG_EXT_PARTITION
Yue Chen's avatar
Yue Chen committed
609
                                              };
610

Yue Chen's avatar
Yue Chen committed
611
#elif CONFIG_MOTION_VAR && CONFIG_WARPED_MOTION
612

Yue Chen's avatar
Yue Chen committed
613
const aom_tree_index av1_motion_mode_tree[TREE_SIZE(MOTION_MODES)] = {
clang-format's avatar
clang-format committed
614
  -SIMPLE_TRANSLATION, 2, -OBMC_CAUSAL, -WARPED_CAUSAL,
615
};
Yue Chen's avatar
Yue Chen committed
616
static const aom_prob default_motion_mode_prob[BLOCK_SIZES][MOTION_MODES - 1] =
clang-format's avatar
clang-format committed
617
    {
618
619
620
#if CONFIG_CB4X4
      { 255, 200 }, { 255, 200 }, { 255, 200 },
#endif
clang-format's avatar
clang-format committed
621
622
623
      { 255, 200 }, { 255, 200 }, { 255, 200 }, { 151, 200 }, { 153, 200 },
      { 144, 200 }, { 178, 200 }, { 165, 200 }, { 160, 200 }, { 207, 200 },
      { 195, 200 }, { 168, 200 }, { 244, 200 },
624
#if CONFIG_EXT_PARTITION
clang-format's avatar
clang-format committed
625
      { 252, 200 }, { 252, 200 }, { 252, 200 },
626
#endif  // CONFIG_EXT_PARTITION
clang-format's avatar
clang-format committed
627
    };
Yue Chen's avatar
Yue Chen committed
628
629
630

// Probability for the case that only 1 additional motion mode is allowed
static const aom_prob default_obmc_prob[BLOCK_SIZES] = {
631
632
633
#if CONFIG_CB4X4
  255, 255, 255,
#endif
Yue Chen's avatar
Yue Chen committed
634
635
636
637
638
639
  255, 255, 255, 151, 153, 144, 178, 165, 160, 207, 195, 168, 244,
#if CONFIG_EXT_PARTITION
  252, 252, 252,
#endif  // CONFIG_EXT_PARTITION
};
#endif
640

641
642
643
644
#if CONFIG_DELTA_Q
static const aom_prob default_delta_q_probs[DELTA_Q_CONTEXTS] = { 220, 220,
                                                                  220 };
#endif
645
#if CONFIG_EC_MULTISYMBOL
646
647
int av1_intra_mode_ind[INTRA_MODES];
int av1_intra_mode_inv[INTRA_MODES];
648
649
int av1_inter_mode_ind[INTER_MODES];
int av1_inter_mode_inv[INTER_MODES];
650
#endif
651

Jingning Han's avatar
Jingning Han committed
652
/* Array indices are identical to previously-existing INTRAMODECONTEXTNODES. */
653
654
655
656
657
658
659
660
661
662
663
664
665
666
#if CONFIG_ALT_INTRA
const aom_tree_index av1_intra_mode_tree[TREE_SIZE(INTRA_MODES)] = {
  -DC_PRED,   2,            /* 0 = DC_NODE */
  -TM_PRED,   4,            /* 1 = TM_NODE */
  -V_PRED,    6,            /* 2 = V_NODE */
  8,          12,           /* 3 = COM_NODE */
  -H_PRED,    10,           /* 4 = H_NODE */
  -D135_PRED, -D117_PRED,   /* 5 = D135_NODE */
  -D45_PRED,  14,           /* 6 = D45_NODE */
  -D63_PRED,  16,           /* 7 = D63_NODE */
  -D153_PRED, 18,           /* 8 = D153_NODE */
  -D207_PRED, -SMOOTH_PRED, /* 9 = D207_NODE */
};
#else
Yaowu Xu's avatar
Yaowu Xu committed
667
const aom_tree_index av1_intra_mode_tree[TREE_SIZE(INTRA_MODES)] = {
clang-format's avatar
clang-format committed
668
669
670
671
672
673
674
675
676
  -DC_PRED,   2,          /* 0 = DC_NODE */
  -TM_PRED,   4,          /* 1 = TM_NODE */
  -V_PRED,    6,          /* 2 = V_NODE */
  8,          12,         /* 3 = COM_NODE */
  -H_PRED,    10,         /* 4 = H_NODE */
  -D135_PRED, -D117_PRED, /* 5 = D135_NODE */
  -D45_PRED,  14,         /* 6 = D45_NODE */
  -D63_PRED,  16,         /* 7 = D63_NODE */
  -D153_PRED, -D207_PRED  /* 8 = D153_NODE */
Jingning Han's avatar
Jingning Han committed
677
};
678
#endif  // CONFIG_ALT_INTRA
Jingning Han's avatar
Jingning Han committed
679

Yaowu Xu's avatar
Yaowu Xu committed
680
const aom_tree_index av1_inter_mode_tree[TREE_SIZE(INTER_MODES)] = {
clang-format's avatar
clang-format committed
681
  -INTER_OFFSET(ZEROMV),    2,
Jingning Han's avatar
Jingning Han committed
682
  -INTER_OFFSET(NEARESTMV), 4,
Yue Chen's avatar
Yue Chen committed
683
#if CONFIG_EXT_INTER
clang-format's avatar
clang-format committed
684
685
  -INTER_OFFSET(NEARMV),    6,
  -INTER_OFFSET(NEWMV),     -INTER_OFFSET(NEWFROMNEARMV)
Yue Chen's avatar
Yue Chen committed
686
#else
clang-format's avatar
clang-format committed
687
  -INTER_OFFSET(NEARMV),    -INTER_OFFSET(NEWMV)
Yue Chen's avatar
Yue Chen committed
688
#endif  // CONFIG_EXT_INTER
Jingning Han's avatar
Jingning Han committed
689
690
};

691
#if CONFIG_EXT_INTER
clang-format's avatar
clang-format committed
692
/* clang-format off */
Yaowu Xu's avatar
Yaowu Xu committed
693
const aom_tree_index av1_interintra_mode_tree[TREE_SIZE(INTERINTRA_MODES)] = {
694
695
696
697
698
699
700
701
702
703
704
  -II_DC_PRED, 2,                   /* 0 = II_DC_NODE     */
  -II_TM_PRED, 4,                   /* 1 = II_TM_NODE     */
  -II_V_PRED, 6,                    /* 2 = II_V_NODE      */
  8, 12,                            /* 3 = II_COM_NODE    */
  -II_H_PRED, 10,                   /* 4 = II_H_NODE      */
  -II_D135_PRED, -II_D117_PRED,     /* 5 = II_D135_NODE   */
  -II_D45_PRED, 14,                 /* 6 = II_D45_NODE    */
  -II_D63_PRED, 16,                 /* 7 = II_D63_NODE    */
  -II_D153_PRED, -II_D207_PRED      /* 8 = II_D153_NODE   */
};

Yaowu Xu's avatar
Yaowu Xu committed
705
const aom_tree_index av1_inter_compound_mode_tree
clang-format's avatar
clang-format committed
706
    [TREE_SIZE(INTER_COMPOUND_MODES)] = {
707
708
709
  -INTER_COMPOUND_OFFSET(ZERO_ZEROMV), 2,
  -INTER_COMPOUND_OFFSET(NEAREST_NEARESTMV), 4,
  6, -INTER_COMPOUND_OFFSET(NEW_NEWMV),
710
711
  8, 12,
  -INTER_COMPOUND_OFFSET(NEAR_NEARMV), 10,
712
  -INTER_COMPOUND_OFFSET(NEAREST_NEARMV),
713
714
      -INTER_COMPOUND_OFFSET(NEAR_NEARESTMV),
  14, 16,
715
716
717
  -INTER_COMPOUND_OFFSET(NEAREST_NEWMV), -INTER_COMPOUND_OFFSET(NEW_NEARESTMV),
  -INTER_COMPOUND_OFFSET(NEAR_NEWMV), -INTER_COMPOUND_OFFSET(NEW_NEARMV)
};
718

719
720
721
722
723
#if CONFIG_COMPOUND_SEGMENT
const aom_tree_index av1_compound_type_tree[TREE_SIZE(COMPOUND_TYPES)] = {
  -COMPOUND_AVERAGE, 2, -COMPOUND_WEDGE, -COMPOUND_SEG
};
#else  // !CONFIG_COMPOUND_SEGMENT
724
725
726
const aom_tree_index av1_compound_type_tree[TREE_SIZE(COMPOUND_TYPES)] = {
  -COMPOUND_AVERAGE, -COMPOUND_WEDGE
};
727
#endif  // CONFIG_COMPOUND_SEGMENT
clang-format's avatar
clang-format committed
728
/* clang-format on */
729
730
#endif  // CONFIG_EXT_INTER

Yaowu Xu's avatar
Yaowu Xu committed
731
const aom_tree_index av1_partition_tree[TREE_SIZE(PARTITION_TYPES)] = {
clang-format's avatar
clang-format committed
732
  -PARTITION_NONE, 2, -PARTITION_HORZ, 4, -PARTITION_VERT, -PARTITION_SPLIT
Jingning Han's avatar
Jingning Han committed
733
734
};

735
#if CONFIG_EXT_PARTITION_TYPES
clang-format's avatar
clang-format committed
736
/* clang-format off */
Yaowu Xu's avatar
Yaowu Xu committed
737
const aom_tree_index av1_ext_partition_tree[TREE_SIZE(EXT_PARTITION_TYPES)] = {
738
739
740
741
742
743
744
745
  -PARTITION_NONE, 2,
  6, 4,
  8, -PARTITION_SPLIT,
  -PARTITION_HORZ, 10,
  -PARTITION_VERT, 12,
  -PARTITION_HORZ_A, -PARTITION_HORZ_B,
  -PARTITION_VERT_A, -PARTITION_VERT_B
};
clang-format's avatar
clang-format committed
746
/* clang-format on */
747
748
#endif  // CONFIG_EXT_PARTITION_TYPES

Yaowu Xu's avatar
Yaowu Xu committed
749
static const aom_prob default_intra_inter_p[INTRA_INTER_CONTEXTS] = {
Jingning Han's avatar
Jingning Han committed
750
751
752
  9, 102, 187, 225
};

Yaowu Xu's avatar
Yaowu Xu committed
753
static const aom_prob default_comp_inter_p[COMP_INTER_CONTEXTS] = {
clang-format's avatar
clang-format committed
754
  239, 183, 119, 96, 41
Jingning Han's avatar
Jingning Han committed
755
756
};

757
#if CONFIG_EXT_REFS
Yaowu Xu's avatar
Yaowu Xu committed
758
static const aom_prob default_comp_ref_p[REF_CONTEXTS][FWD_REFS - 1] = {
759
  // TODO(zoeliu): To adjust the initial prob values.
clang-format's avatar
clang-format committed
760
761
  { 33, 16, 16 },
  { 77, 74, 74 },
762
763
764
  { 142, 142, 142 },
  { 172, 170, 170 },
  { 238, 247, 247 }
765
};
Yaowu Xu's avatar
Yaowu Xu committed
766
static const aom_prob default_comp_bwdref_p[REF_CONTEXTS][BWD_REFS - 1] = {
767
768
  { 16 }, { 74 }, { 142 }, { 170 }, { 247 }
};
769
#else
Yaowu Xu's avatar
Yaowu Xu committed
770
static const aom_prob default_comp_ref_p[REF_CONTEXTS][COMP_REFS - 1] = {
771
  { 50 }, { 126 }, { 123 }, { 221 }, { 226 }
Jingning Han's avatar
Jingning Han committed
772
};
773
#endif  // CONFIG_EXT_REFS
Jingning Han's avatar
Jingning Han committed
774

Yaowu Xu's avatar
Yaowu Xu committed
775
static const aom_prob default_single_ref_p[REF_CONTEXTS][SINGLE_REFS - 1] = {
776
#if CONFIG_EXT_REFS
clang-format's avatar
clang-format committed
777
778
  { 33, 16, 16, 16, 16 },
  { 77, 74, 74, 74, 74 },
779
780
781
  { 142, 142, 142, 142, 142 },
  { 172, 170, 170, 170, 170 },
  { 238, 247, 247, 247, 247 }
782
#else
clang-format's avatar
clang-format committed
783
  { 33, 16 }, { 77, 74 }, { 142, 142 }, { 172, 170 }, { 238, 247 }
784
#endif  // CONFIG_EXT_REFS
Jingning Han's avatar
Jingning Han committed
785
786
};

787
#if CONFIG_PALETTE
788
789
790

// Tree to code palette size (number of colors in a palette) and the
// corresponding probabilities for Y and UV planes.
Yaowu Xu's avatar
Yaowu Xu committed
791
const aom_tree_index av1_palette_size_tree[TREE_SIZE(PALETTE_SIZES)] = {
clang-format's avatar
clang-format committed
792
793
  -TWO_COLORS,  2, -THREE_COLORS, 4,  -FOUR_COLORS,  6,
  -FIVE_COLORS, 8, -SIX_COLORS,   10, -SEVEN_COLORS, -EIGHT_COLORS,
hui su's avatar
hui su committed
794
795
796
};

// TODO(huisu): tune these probs
Yaowu Xu's avatar
Yaowu Xu committed
797
798
const aom_prob
    av1_default_palette_y_size_prob[PALETTE_BLOCK_SIZES][PALETTE_SIZES - 1] = {
clang-format's avatar
clang-format committed
799
800
801
802
803
      { 96, 89, 100, 64, 77, 130 },   { 22, 15, 44, 16, 34, 82 },
      { 30, 19, 57, 18, 38, 86 },     { 94, 36, 104, 23, 43, 92 },
      { 116, 76, 107, 46, 65, 105 },  { 112, 82, 94, 40, 70, 112 },
      { 147, 124, 123, 58, 69, 103 }, { 180, 113, 136, 49, 45, 114 },
      { 107, 70, 87, 49, 154, 156 },  { 98, 105, 142, 63, 64, 152 },
804
#if CONFIG_EXT_PARTITION
clang-format's avatar
clang-format committed
805
806
      { 98, 105, 142, 63, 64, 152 },  { 98, 105, 142, 63, 64, 152 },
      { 98, 105, 142, 63, 64, 152 },
807
#endif  // CONFIG_EXT_PARTITION
clang-format's avatar
clang-format committed
808
    };
hui su's avatar
hui su committed
809

Yaowu Xu's avatar
Yaowu Xu committed
810
811
812
813
814
815
816
const aom_prob
    av1_default_palette_uv_size_prob[PALETTE_BLOCK_SIZES][PALETTE_SIZES - 1] = {
      { 160, 196, 228, 213, 175, 230 }, { 87, 148, 208, 141, 166, 163 },
      { 72, 151, 204, 139, 155, 161 },  { 78, 135, 171, 104, 120, 173 },
      { 59, 92, 131, 78, 92, 142 },     { 75, 118, 149, 84, 90, 128 },
      { 89, 87, 92, 66, 66, 128 },      { 67, 53, 54, 55, 66, 93 },
      { 120, 130, 83, 171, 75, 214 },   { 72, 55, 66, 68, 79, 107 },
817
#if CONFIG_EXT_PARTITION
Yaowu Xu's avatar
Yaowu Xu committed
818
819
      { 72, 55, 66, 68, 79, 107 },      { 72, 55, 66, 68, 79, 107 },
      { 72, 55, 66, 68, 79, 107 },
820
#endif  // CONFIG_EXT_PARTITION
Yaowu Xu's avatar
Yaowu Xu committed
821
    };
clang-format's avatar
clang-format committed
822

823
824
825
// When palette mode is enabled, following probability tables indicate the
// probabilities to code the "is_palette" bit (i.e. the bit that indicates
// if this block uses palette mode or DC_PRED mode).
clang-format's avatar
clang-format committed
826
827
828
829
830
831
832
833
const aom_prob
    av1_default_palette_y_mode_prob[PALETTE_BLOCK_SIZES]
                                   [PALETTE_Y_MODE_CONTEXTS] = {
                                     { 240, 180, 100 }, { 240, 180, 100 },
                                     { 240, 180, 100 }, { 240, 180, 100 },
                                     { 240, 180, 100 }, { 240, 180, 100 },
                                     { 240, 180, 100 }, { 240, 180, 100 },
                                     { 240, 180, 100 }, { 240, 180, 100 },
834
#if CONFIG_EXT_PARTITION
clang-format's avatar
clang-format committed
835
836
                                     { 240, 180, 100 }, { 240, 180, 100 },
                                     { 240, 180, 100 },
837
#endif  // CONFIG_EXT_PARTITION
clang-format's avatar
clang-format committed
838
                                   };
hui su's avatar
hui su committed
839

840
841
842
const aom_prob av1_default_palette_uv_mode_prob[PALETTE_UV_MODE_CONTEXTS] = {
  253, 229
};
hui su's avatar
hui su committed
843

844
845
// Trees to code palette color indices (for various palette sizes), and the
// corresponding probability tables for Y and UV planes.
Yaowu Xu's avatar
Yaowu Xu committed
846
const aom_tree_index
847
848
    av1_palette_color_index_tree[PALETTE_MAX_SIZE -
                                 1][TREE_SIZE(PALETTE_COLORS)] = {
clang-format's avatar
clang-format committed
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
      { // 2 colors
        -PALETTE_COLOR_ONE, -PALETTE_COLOR_TWO },
      { // 3 colors
        -PALETTE_COLOR_ONE, 2, -PALETTE_COLOR_TWO, -PALETTE_COLOR_THREE },
      { // 4 colors
        -PALETTE_COLOR_ONE, 2, -PALETTE_COLOR_TWO, 4, -PALETTE_COLOR_THREE,
        -PALETTE_COLOR_FOUR },
      { // 5 colors
        -PALETTE_COLOR_ONE, 2, -PALETTE_COLOR_TWO, 4, -PALETTE_COLOR_THREE, 6,
        -PALETTE_COLOR_FOUR, -PALETTE_COLOR_FIVE },
      { // 6 colors
        -PALETTE_COLOR_ONE, 2, -PALETTE_COLOR_TWO, 4, -PALETTE_COLOR_THREE, 6,
        -PALETTE_COLOR_FOUR, 8, -PALETTE_COLOR_FIVE, -PALETTE_COLOR_SIX },
      { // 7 colors
        -PALETTE_COLOR_ONE, 2, -PALETTE_COLOR_TWO, 4, -PALETTE_COLOR_THREE, 6,
        -PALETTE_COLOR_FOUR, 8, -PALETTE_COLOR_FIVE, 10, -PALETTE_COLOR_SIX,
        -PALETTE_COLOR_SEVEN },
      { // 8 colors
        -PALETTE_COLOR_ONE, 2, -PALETTE_COLOR_TWO, 4, -PALETTE_COLOR_THREE, 6,
        -PALETTE_COLOR_FOUR, 8, -PALETTE_COLOR_FIVE, 10, -PALETTE_COLOR_SIX, 12,
        -PALETTE_COLOR_SEVEN, -PALETTE_COLOR_EIGHT },
    };
hui su's avatar
hui su committed
871

872
873
874
// Note: Has to be non-zero to avoid any asserts triggering.
#define UNUSED_PROB 128

875
876
const aom_prob av1_default_palette_y_color_index_prob
    [PALETTE_MAX_SIZE - 1][PALETTE_COLOR_INDEX_CONTEXTS][PALETTE_COLORS - 1] = {
877
878
      {
          // 2 colors
879
          { 231, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB,
880
881
882
            UNUSED_PROB, UNUSED_PROB },
          { UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB,
            UNUSED_PROB, UNUSED_PROB },
883
          { 69, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB,
884
            UNUSED_PROB },
885
          { 224, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB,
886
            UNUSED_PROB, UNUSED_PROB },
887
          { 249, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB,
888
889
890
891
            UNUSED_PROB, UNUSED_PROB },
      },
      {
          // 3 colors
892
          { 219, 124, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB,
893
            UNUSED_PROB },
894
          { 91, 191, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB,
895
            UNUSED_PROB },
896
          { 34, 237, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB,
897
            UNUSED_PROB },
898
          { 184, 118, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB,
899
            UNUSED_PROB },
900
          { 252, 124, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB,
901
902
903
904
            UNUSED_PROB },
      },
      {
          // 4 colors
905
906
907
908
909
          { 204, 87, 97, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB },
          { 74, 144, 129, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB },
          { 52, 191, 134, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB },
          { 151, 85, 147, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB },
          { 248, 60, 115, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB },
910
911
912
      },
      {
          // 5 colors
913
914
915
916
917
          { 218, 69, 62, 106, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB },
          { 76, 143, 89, 127, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB },
          { 21, 233, 94, 131, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB },
          { 172, 72, 89, 112, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB },
          { 253, 66, 65, 128, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB },
918
919
920
      },
      {
          // 6 colors
921
922
923
924
925
          { 190, 60, 47, 54, 74, UNUSED_PROB, UNUSED_PROB },
          { 62, 106, 51, 95, 110, UNUSED_PROB, UNUSED_PROB },
          { 52, 180, 69, 72, 107, UNUSED_PROB, UNUSED_PROB },
          { 156, 83, 72, 83, 101, UNUSED_PROB, UNUSED_PROB },
          { 245, 45, 37, 52, 91, UNUSED_PROB, UNUSED_PROB },
926
927
928
      },
      {
          // 7 colors
929
930
931
932
933
          { 206, 56, 42, 42, 53, 85, UNUSED_PROB },
          { 70, 100, 45, 68, 77, 94, UNUSED_PROB },
          { 57, 169, 51, 62, 74, 119, UNUSED_PROB },
          { 172, 76, 71, 40, 59, 76, UNUSED_PROB },
          { 248, 47, 36, 53, 61, 110, UNUSED_PROB },
934
935
936
      },
      {
          // 8 colors
937
938
939
940
941
942
          { 208, 52, 38, 34, 34, 44, 66 },
          { 52, 107, 34, 73, 69, 82, 87 },
          { 28, 208, 53, 43, 62, 70, 102 },
          { 184, 64, 45, 37, 37, 69, 105 },
          { 251, 18, 31, 45, 47, 61, 104 },
      },
943
    };
hui su's avatar
hui su committed
944

945
946
const aom_prob av1_default_palette_uv_color_index_prob
    [PALETTE_MAX_SIZE - 1][PALETTE_COLOR_INDEX_CONTEXTS][PALETTE_COLORS - 1] = {
947
948
      {
          // 2 colors
949
          { 233, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB,
950
951
952
            UNUSED_PROB, UNUSED_PROB },
          { UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB,
            UNUSED_PROB, UNUSED_PROB },
953
          { 69, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB,
954
            UNUSED_PROB },
955
          { 240, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB,
956
            UNUSED_PROB, UNUSED_PROB },
957
          { 248, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB,
958
959
960
961
            UNUSED_PROB, UNUSED_PROB },
      },
      {
          // 3 colors
962
          { 216, 128, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB,
963
            UNUSED_PROB },
964
          { 110, 171, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB,
965
            UNUSED_PROB },
966
          { 40, 239, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB,
967
            UNUSED_PROB },
968
          { 191, 104, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB,
969
            UNUSED_PROB },
970
          { 247, 134, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB,
971
972
973
974
            UNUSED_PROB },
      },
      {
          // 4 colors
975
976
977
978
979
          { 202, 89, 132, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB },
          { 90, 132, 136, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB },
          { 63, 195, 149, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB },
          { 152, 84, 152, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB },
          { 241, 87, 136, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB },
980
981
982
      },
      {
          // 5 colors
983
984
985
986
987
          { 209, 54, 82, 134, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB },
          { 94, 173, 180, 93, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB },
          { 10, 251, 127, 84, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB },
          { 183, 20, 150, 47, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB },
          { 252, 73, 111, 150, UNUSED_PROB, UNUSED_PROB, UNUSED_PROB },
988
989
990
      },
      {
          // 6 colors
991
992
993
994
995
          { 192, 67, 59, 46, 184, UNUSED_PROB, UNUSED_PROB },
          { 59, 92, 61, 100, 130, UNUSED_PROB, UNUSED_PROB },
          { 49, 162, 68, 91, 150, UNUSED_PROB, UNUSED_PROB },
          { 133, 29, 36, 153, 101, UNUSED_PROB, UNUSED_PROB },
          { 247, 71, 44, 90, 129, UNUSED_PROB, UNUSED_PROB },
996
997
998
      },
      {
          // 7 colors
999
1000
1001
1002
1003
          { 182, 62, 80, 78, 46, 116, UNUSED_PROB },
          { 59, 62, 39, 81, 65, 99, UNUSED_PROB },
          { 54, 177, 48, 58, 93, 104, UNUSED_PROB },
          { 137, 79, 54, 55, 44, 134, UNUSED_PROB },
          { 239, 82, 79, 44, 69, 71, UNUSED_PROB },
1004
1005
1006
      },
      {
          // 8 colors
1007
1008
1009
1010
1011
1012
          { 172, 53, 27, 67, 30, 79, 113 },
          { 63, 57, 45, 81, 62, 35, 47 },
          { 51, 200, 36, 47, 82, 165, 129 },
          { 141, 100, 47, 29, 33, 37, 129 },
          { 236, 42, 50, 91, 24, 154, 65 },
      },
1013
1014
1015
    };

#undef UNUSED_PROB
hui su's avatar
hui su committed
1016

1017
1018
#define MAX_COLOR_CONTEXT_HASH 8
// Negative values are invalid
1019
1020
1021
static const int palette_color_index_context_lookup[MAX_COLOR_CONTEXT_HASH +
                                                    1] = { -1, -1, 0, -1, -1,
                                                           4,  3,  2, 1 };
1022

1023
#endif  // CONFIG_PALETTE
hui su's avatar
hui su committed
1024

1025
1026
// The transform size is coded as an offset to the smallest transform
// block size.
1027
const aom_tree_index av1_tx_size_tree[MAX_TX_DEPTH][TREE_SIZE(TX_SIZES)] = {
clang-format's avatar
clang-format committed
1028
1029
  {
      // Max tx_size is 8X8
1030
      -0, -1,
clang-format's avatar
clang-format committed
1031
1032
1033
  },
  {
      // Max tx_size is 16X16
1034
      -0, 2, -1, -2,
clang-format's avatar
clang-format committed
1035
1036
1037
  },
  {
      // Max tx_size is 32X32
1038
      -0, 2, -1, 4, -2, -3,
clang-format's avatar
clang-format committed
1039
  },
1040
#if CONFIG_TX64X64
1041
1042
  {
      // Max tx_size is 64X64
1043
      -0, 2, -1, 4, -2, 6, -3, -4,
1044
  },
1045
#endif  // CONFIG_TX64X64
1046
1047
};

Jingning Han's avatar
Jingning Han committed
1048
1049
static const aom_prob default_tx_size_prob[MAX_TX_DEPTH][TX_SIZE_CONTEXTS]
                                          [MAX_TX_DEPTH] = {
clang-format's avatar
clang-format committed
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
                                            {
                                                // Max tx_size is 8X8
                                                { 100 },
                                                { 66 },
                                            },
                                            {
                                                // Max tx_size is 16X16
                                                { 20, 152 },
                                                { 15, 101 },
                                            },
                                            {
                                                // Max tx_size is 32X32
                                                { 3, 136, 37 },
                                                { 5, 52, 13 },
                                            },
1065
1066
1067
1068
1069
1070
1071
#if CONFIG_TX64X64
                                            {
                                                // Max tx_size is 64X64
                                                { 1, 64, 136, 127 },
                                                { 1, 32, 52, 67 },
                                            },
#endif  // CONFIG_TX64X64
clang-format's avatar
clang-format committed
1072
                                          };
clang-format's avatar
clang-format committed
1073

1074
#if CONFIG_LOOP_RESTORATION
1075
1076
const aom_tree_index av1_switchable_restore_tree[TREE_SIZE(
    RESTORE_SWITCHABLE_TYPES)] = {