Coverage Report

Created: 2025-06-22 08:04

/src/aom/av1/common/entropymode.c
Line
Count
Source (jump to first uncovered line)
1
/*
2
 * Copyright (c) 2016, Alliance for Open Media. All rights reserved.
3
 *
4
 * This source code is subject to the terms of the BSD 2 Clause License and
5
 * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
6
 * was not distributed with this source code in the LICENSE file, you can
7
 * obtain it at www.aomedia.org/license/software. If the Alliance for Open
8
 * Media Patent License 1.0 was not distributed with this source code in the
9
 * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
10
 */
11
12
#include "aom_mem/aom_mem.h"
13
14
#include "av1/common/av1_common_int.h"
15
#include "av1/common/reconinter.h"
16
#include "av1/common/scan.h"
17
#include "av1/common/seg_common.h"
18
#include "av1/common/txb_common.h"
19
20
static const aom_cdf_prob
21
    default_kf_y_mode_cdf[KF_MODE_CONTEXTS][KF_MODE_CONTEXTS][CDF_SIZE(
22
        INTRA_MODES)] = {
23
      { { AOM_CDF13(15588, 17027, 19338, 20218, 20682, 21110, 21825, 23244,
24
                    24189, 28165, 29093, 30466) },
25
        { AOM_CDF13(12016, 18066, 19516, 20303, 20719, 21444, 21888, 23032,
26
                    24434, 28658, 30172, 31409) },
27
        { AOM_CDF13(10052, 10771, 22296, 22788, 23055, 23239, 24133, 25620,
28
                    26160, 29336, 29929, 31567) },
29
        { AOM_CDF13(14091, 15406, 16442, 18808, 19136, 19546, 19998, 22096,
30
                    24746, 29585, 30958, 32462) },
31
        { AOM_CDF13(12122, 13265, 15603, 16501, 18609, 20033, 22391, 25583,
32
                    26437, 30261, 31073, 32475) } },
33
      { { AOM_CDF13(10023, 19585, 20848, 21440, 21832, 22760, 23089, 24023,
34
                    25381, 29014, 30482, 31436) },
35
        { AOM_CDF13(5983, 24099, 24560, 24886, 25066, 25795, 25913, 26423,
36
                    27610, 29905, 31276, 31794) },
37
        { AOM_CDF13(7444, 12781, 20177, 20728, 21077, 21607, 22170, 23405,
38
                    24469, 27915, 29090, 30492) },
39
        { AOM_CDF13(8537, 14689, 15432, 17087, 17408, 18172, 18408, 19825,
40
                    24649, 29153, 31096, 32210) },
41
        { AOM_CDF13(7543, 14231, 15496, 16195, 17905, 20717, 21984, 24516,
42
                    26001, 29675, 30981, 31994) } },
43
      { { AOM_CDF13(12613, 13591, 21383, 22004, 22312, 22577, 23401, 25055,
44
                    25729, 29538, 30305, 32077) },
45
        { AOM_CDF13(9687, 13470, 18506, 19230, 19604, 20147, 20695, 22062,
46
                    23219, 27743, 29211, 30907) },
47
        { AOM_CDF13(6183, 6505, 26024, 26252, 26366, 26434, 27082, 28354, 28555,
48
                    30467, 30794, 32086) },
49
        { AOM_CDF13(10718, 11734, 14954, 17224, 17565, 17924, 18561, 21523,
50
                    23878, 28975, 30287, 32252) },
51
        { AOM_CDF13(9194, 9858, 16501, 17263, 18424, 19171, 21563, 25961, 26561,
52
                    30072, 30737, 32463) } },
53
      { { AOM_CDF13(12602, 14399, 15488, 18381, 18778, 19315, 19724, 21419,
54
                    25060, 29696, 30917, 32409) },
55
        { AOM_CDF13(8203, 13821, 14524, 17105, 17439, 18131, 18404, 19468,
56
                    25225, 29485, 31158, 32342) },
57
        { AOM_CDF13(8451, 9731, 15004, 17643, 18012, 18425, 19070, 21538, 24605,
58
                    29118, 30078, 32018) },
59
        { AOM_CDF13(7714, 9048, 9516, 16667, 16817, 16994, 17153, 18767, 26743,
60
                    30389, 31536, 32528) },
61
        { AOM_CDF13(8843, 10280, 11496, 15317, 16652, 17943, 19108, 22718,
62
                    25769, 29953, 30983, 32485) } },
63
      { { AOM_CDF13(12578, 13671, 15979, 16834, 19075, 20913, 22989, 25449,
64
                    26219, 30214, 31150, 32477) },
65
        { AOM_CDF13(9563, 13626, 15080, 15892, 17756, 20863, 22207, 24236,
66
                    25380, 29653, 31143, 32277) },
67
        { AOM_CDF13(8356, 8901, 17616, 18256, 19350, 20106, 22598, 25947, 26466,
68
                    29900, 30523, 32261) },
69
        { AOM_CDF13(10835, 11815, 13124, 16042, 17018, 18039, 18947, 22753,
70
                    24615, 29489, 30883, 32482) },
71
        { AOM_CDF13(7618, 8288, 9859, 10509, 15386, 18657, 22903, 28776, 29180,
72
                    31355, 31802, 32593) } }
73
    };
74
75
static const aom_cdf_prob default_angle_delta_cdf[DIRECTIONAL_MODES][CDF_SIZE(
76
    2 * MAX_ANGLE_DELTA + 1)] = {
77
  { AOM_CDF7(2180, 5032, 7567, 22776, 26989, 30217) },
78
  { AOM_CDF7(2301, 5608, 8801, 23487, 26974, 30330) },
79
  { AOM_CDF7(3780, 11018, 13699, 19354, 23083, 31286) },
80
  { AOM_CDF7(4581, 11226, 15147, 17138, 21834, 28397) },
81
  { AOM_CDF7(1737, 10927, 14509, 19588, 22745, 28823) },
82
  { AOM_CDF7(2664, 10176, 12485, 17650, 21600, 30495) },
83
  { AOM_CDF7(2240, 11096, 15453, 20341, 22561, 28917) },
84
  { AOM_CDF7(3605, 10428, 12459, 17676, 21244, 30655) }
85
};
86
87
static const aom_cdf_prob default_if_y_mode_cdf[BLOCK_SIZE_GROUPS][CDF_SIZE(
88
    INTRA_MODES)] = { { AOM_CDF13(22801, 23489, 24293, 24756, 25601, 26123,
89
                                  26606, 27418, 27945, 29228, 29685, 30349) },
90
                      { AOM_CDF13(18673, 19845, 22631, 23318, 23950, 24649,
91
                                  25527, 27364, 28152, 29701, 29984, 30852) },
92
                      { AOM_CDF13(19770, 20979, 23396, 23939, 24241, 24654,
93
                                  25136, 27073, 27830, 29360, 29730, 30659) },
94
                      { AOM_CDF13(20155, 21301, 22838, 23178, 23261, 23533,
95
                                  23703, 24804, 25352, 26575, 27016, 28049) } };
96
97
static const aom_cdf_prob
98
    default_uv_mode_cdf[CFL_ALLOWED_TYPES][INTRA_MODES][CDF_SIZE(
99
        UV_INTRA_MODES)] = {
100
      { { AOM_CDF13(22631, 24152, 25378, 25661, 25986, 26520, 27055, 27923,
101
                    28244, 30059, 30941, 31961) },
102
        { AOM_CDF13(9513, 26881, 26973, 27046, 27118, 27664, 27739, 27824,
103
                    28359, 29505, 29800, 31796) },
104
        { AOM_CDF13(9845, 9915, 28663, 28704, 28757, 28780, 29198, 29822, 29854,
105
                    30764, 31777, 32029) },
106
        { AOM_CDF13(13639, 13897, 14171, 25331, 25606, 25727, 25953, 27148,
107
                    28577, 30612, 31355, 32493) },
108
        { AOM_CDF13(9764, 9835, 9930, 9954, 25386, 27053, 27958, 28148, 28243,
109
                    31101, 31744, 32363) },
110
        { AOM_CDF13(11825, 13589, 13677, 13720, 15048, 29213, 29301, 29458,
111
                    29711, 31161, 31441, 32550) },
112
        { AOM_CDF13(14175, 14399, 16608, 16821, 17718, 17775, 28551, 30200,
113
                    30245, 31837, 32342, 32667) },
114
        { AOM_CDF13(12885, 13038, 14978, 15590, 15673, 15748, 16176, 29128,
115
                    29267, 30643, 31961, 32461) },
116
        { AOM_CDF13(12026, 13661, 13874, 15305, 15490, 15726, 15995, 16273,
117
                    28443, 30388, 30767, 32416) },
118
        { AOM_CDF13(19052, 19840, 20579, 20916, 21150, 21467, 21885, 22719,
119
                    23174, 28861, 30379, 32175) },
120
        { AOM_CDF13(18627, 19649, 20974, 21219, 21492, 21816, 22199, 23119,
121
                    23527, 27053, 31397, 32148) },
122
        { AOM_CDF13(17026, 19004, 19997, 20339, 20586, 21103, 21349, 21907,
123
                    22482, 25896, 26541, 31819) },
124
        { AOM_CDF13(12124, 13759, 14959, 14992, 15007, 15051, 15078, 15166,
125
                    15255, 15753, 16039, 16606) } },
126
      { { AOM_CDF14(10407, 11208, 12900, 13181, 13823, 14175, 14899, 15656,
127
                    15986, 20086, 20995, 22455, 24212) },
128
        { AOM_CDF14(4532, 19780, 20057, 20215, 20428, 21071, 21199, 21451,
129
                    22099, 24228, 24693, 27032, 29472) },
130
        { AOM_CDF14(5273, 5379, 20177, 20270, 20385, 20439, 20949, 21695, 21774,
131
                    23138, 24256, 24703, 26679) },
132
        { AOM_CDF14(6740, 7167, 7662, 14152, 14536, 14785, 15034, 16741, 18371,
133
                    21520, 22206, 23389, 24182) },
134
        { AOM_CDF14(4987, 5368, 5928, 6068, 19114, 20315, 21857, 22253, 22411,
135
                    24911, 25380, 26027, 26376) },
136
        { AOM_CDF14(5370, 6889, 7247, 7393, 9498, 21114, 21402, 21753, 21981,
137
                    24780, 25386, 26517, 27176) },
138
        { AOM_CDF14(4816, 4961, 7204, 7326, 8765, 8930, 20169, 20682, 20803,
139
                    23188, 23763, 24455, 24940) },
140
        { AOM_CDF14(6608, 6740, 8529, 9049, 9257, 9356, 9735, 18827, 19059,
141
                    22336, 23204, 23964, 24793) },
142
        { AOM_CDF14(5998, 7419, 7781, 8933, 9255, 9549, 9753, 10417, 18898,
143
                    22494, 23139, 24764, 25989) },
144
        { AOM_CDF14(10660, 11298, 12550, 12957, 13322, 13624, 14040, 15004,
145
                    15534, 20714, 21789, 23443, 24861) },
146
        { AOM_CDF14(10522, 11530, 12552, 12963, 13378, 13779, 14245, 15235,
147
                    15902, 20102, 22696, 23774, 25838) },
148
        { AOM_CDF14(10099, 10691, 12639, 13049, 13386, 13665, 14125, 15163,
149
                    15636, 19676, 20474, 23519, 25208) },
150
        { AOM_CDF14(3144, 5087, 7382, 7504, 7593, 7690, 7801, 8064, 8232, 9248,
151
                    9875, 10521, 29048) } }
152
    };
153
154
static const aom_cdf_prob default_partition_cdf[PARTITION_CONTEXTS][CDF_SIZE(
155
    EXT_PARTITION_TYPES)] = {
156
  { AOM_CDF4(19132, 25510, 30392) },
157
  { AOM_CDF4(13928, 19855, 28540) },
158
  { AOM_CDF4(12522, 23679, 28629) },
159
  { AOM_CDF4(9896, 18783, 25853) },
160
  { AOM_CDF10(15597, 20929, 24571, 26706, 27664, 28821, 29601, 30571, 31902) },
161
  { AOM_CDF10(7925, 11043, 16785, 22470, 23971, 25043, 26651, 28701, 29834) },
162
  { AOM_CDF10(5414, 13269, 15111, 20488, 22360, 24500, 25537, 26336, 32117) },
163
  { AOM_CDF10(2662, 6362, 8614, 20860, 23053, 24778, 26436, 27829, 31171) },
164
  { AOM_CDF10(18462, 20920, 23124, 27647, 28227, 29049, 29519, 30178, 31544) },
165
  { AOM_CDF10(7689, 9060, 12056, 24992, 25660, 26182, 26951, 28041, 29052) },
166
  { AOM_CDF10(6015, 9009, 10062, 24544, 25409, 26545, 27071, 27526, 32047) },
167
  { AOM_CDF10(1394, 2208, 2796, 28614, 29061, 29466, 29840, 30185, 31899) },
168
  { AOM_CDF10(20137, 21547, 23078, 29566, 29837, 30261, 30524, 30892, 31724) },
169
  { AOM_CDF10(6732, 7490, 9497, 27944, 28250, 28515, 28969, 29630, 30104) },
170
  { AOM_CDF10(5945, 7663, 8348, 28683, 29117, 29749, 30064, 30298, 32238) },
171
  { AOM_CDF10(870, 1212, 1487, 31198, 31394, 31574, 31743, 31881, 32332) },
172
  { AOM_CDF8(27899, 28219, 28529, 32484, 32539, 32619, 32639) },
173
  { AOM_CDF8(6607, 6990, 8268, 32060, 32219, 32338, 32371) },
174
  { AOM_CDF8(5429, 6676, 7122, 32027, 32227, 32531, 32582) },
175
  { AOM_CDF8(711, 966, 1172, 32448, 32538, 32617, 32664) },
176
};
177
178
static const aom_cdf_prob default_intra_ext_tx_cdf
179
    [EXT_TX_SETS_INTRA][EXT_TX_SIZES][INTRA_MODES][CDF_SIZE(TX_TYPES)] = {
180
      {
181
          {
182
              { 0 },
183
              { 0 },
184
              { 0 },
185
              { 0 },
186
              { 0 },
187
              { 0 },
188
              { 0 },
189
              { 0 },
190
              { 0 },
191
              { 0 },
192
              { 0 },
193
              { 0 },
194
              { 0 },
195
          },
196
          {
197
              { 0 },
198
              { 0 },
199
              { 0 },
200
              { 0 },
201
              { 0 },
202
              { 0 },
203
              { 0 },
204
              { 0 },
205
              { 0 },
206
              { 0 },
207
              { 0 },
208
              { 0 },
209
              { 0 },
210
          },
211
          {
212
              { 0 },
213
              { 0 },
214
              { 0 },
215
              { 0 },
216
              { 0 },
217
              { 0 },
218
              { 0 },
219
              { 0 },
220
              { 0 },
221
              { 0 },
222
              { 0 },
223
              { 0 },
224
              { 0 },
225
          },
226
          {
227
              { 0 },
228
              { 0 },
229
              { 0 },
230
              { 0 },
231
              { 0 },
232
              { 0 },
233
              { 0 },
234
              { 0 },
235
              { 0 },
236
              { 0 },
237
              { 0 },
238
              { 0 },
239
              { 0 },
240
          },
241
      },
242
      {
243
          {
244
              { AOM_CDF7(1535, 8035, 9461, 12751, 23467, 27825) },
245
              { AOM_CDF7(564, 3335, 9709, 10870, 18143, 28094) },
246
              { AOM_CDF7(672, 3247, 3676, 11982, 19415, 23127) },
247
              { AOM_CDF7(5279, 13885, 15487, 18044, 23527, 30252) },
248
              { AOM_CDF7(4423, 6074, 7985, 10416, 25693, 29298) },
249
              { AOM_CDF7(1486, 4241, 9460, 10662, 16456, 27694) },
250
              { AOM_CDF7(439, 2838, 3522, 6737, 18058, 23754) },
251
              { AOM_CDF7(1190, 4233, 4855, 11670, 20281, 24377) },
252
              { AOM_CDF7(1045, 4312, 8647, 10159, 18644, 29335) },
253
              { AOM_CDF7(202, 3734, 4747, 7298, 17127, 24016) },
254
              { AOM_CDF7(447, 4312, 6819, 8884, 16010, 23858) },
255
              { AOM_CDF7(277, 4369, 5255, 8905, 16465, 22271) },
256
              { AOM_CDF7(3409, 5436, 10599, 15599, 19687, 24040) },
257
          },
258
          {
259
              { AOM_CDF7(1870, 13742, 14530, 16498, 23770, 27698) },
260
              { AOM_CDF7(326, 8796, 14632, 15079, 19272, 27486) },
261
              { AOM_CDF7(484, 7576, 7712, 14443, 19159, 22591) },
262
              { AOM_CDF7(1126, 15340, 15895, 17023, 20896, 30279) },
263
              { AOM_CDF7(655, 4854, 5249, 5913, 22099, 27138) },
264
              { AOM_CDF7(1299, 6458, 8885, 9290, 14851, 25497) },
265
              { AOM_CDF7(311, 5295, 5552, 6885, 16107, 22672) },
266
              { AOM_CDF7(883, 8059, 8270, 11258, 17289, 21549) },
267
              { AOM_CDF7(741, 7580, 9318, 10345, 16688, 29046) },
268
              { AOM_CDF7(110, 7406, 7915, 9195, 16041, 23329) },
269
              { AOM_CDF7(363, 7974, 9357, 10673, 15629, 24474) },
270
              { AOM_CDF7(153, 7647, 8112, 9936, 15307, 19996) },
271
              { AOM_CDF7(3511, 6332, 11165, 15335, 19323, 23594) },
272
          },
273
          {
274
              { AOM_CDF7(4681, 9362, 14043, 18725, 23406, 28087) },
275
              { AOM_CDF7(4681, 9362, 14043, 18725, 23406, 28087) },
276
              { AOM_CDF7(4681, 9362, 14043, 18725, 23406, 28087) },
277
              { AOM_CDF7(4681, 9362, 14043, 18725, 23406, 28087) },
278
              { AOM_CDF7(4681, 9362, 14043, 18725, 23406, 28087) },
279
              { AOM_CDF7(4681, 9362, 14043, 18725, 23406, 28087) },
280
              { AOM_CDF7(4681, 9362, 14043, 18725, 23406, 28087) },
281
              { AOM_CDF7(4681, 9362, 14043, 18725, 23406, 28087) },
282
              { AOM_CDF7(4681, 9362, 14043, 18725, 23406, 28087) },
283
              { AOM_CDF7(4681, 9362, 14043, 18725, 23406, 28087) },
284
              { AOM_CDF7(4681, 9362, 14043, 18725, 23406, 28087) },
285
              { AOM_CDF7(4681, 9362, 14043, 18725, 23406, 28087) },
286
              { AOM_CDF7(4681, 9362, 14043, 18725, 23406, 28087) },
287
          },
288
          {
289
              { AOM_CDF7(4681, 9362, 14043, 18725, 23406, 28087) },
290
              { AOM_CDF7(4681, 9362, 14043, 18725, 23406, 28087) },
291
              { AOM_CDF7(4681, 9362, 14043, 18725, 23406, 28087) },
292
              { AOM_CDF7(4681, 9362, 14043, 18725, 23406, 28087) },
293
              { AOM_CDF7(4681, 9362, 14043, 18725, 23406, 28087) },
294
              { AOM_CDF7(4681, 9362, 14043, 18725, 23406, 28087) },
295
              { AOM_CDF7(4681, 9362, 14043, 18725, 23406, 28087) },
296
              { AOM_CDF7(4681, 9362, 14043, 18725, 23406, 28087) },
297
              { AOM_CDF7(4681, 9362, 14043, 18725, 23406, 28087) },
298
              { AOM_CDF7(4681, 9362, 14043, 18725, 23406, 28087) },
299
              { AOM_CDF7(4681, 9362, 14043, 18725, 23406, 28087) },
300
              { AOM_CDF7(4681, 9362, 14043, 18725, 23406, 28087) },
301
              { AOM_CDF7(4681, 9362, 14043, 18725, 23406, 28087) },
302
          },
303
      },
304
      {
305
          {
306
              { AOM_CDF5(6554, 13107, 19661, 26214) },
307
              { AOM_CDF5(6554, 13107, 19661, 26214) },
308
              { AOM_CDF5(6554, 13107, 19661, 26214) },
309
              { AOM_CDF5(6554, 13107, 19661, 26214) },
310
              { AOM_CDF5(6554, 13107, 19661, 26214) },
311
              { AOM_CDF5(6554, 13107, 19661, 26214) },
312
              { AOM_CDF5(6554, 13107, 19661, 26214) },
313
              { AOM_CDF5(6554, 13107, 19661, 26214) },
314
              { AOM_CDF5(6554, 13107, 19661, 26214) },
315
              { AOM_CDF5(6554, 13107, 19661, 26214) },
316
              { AOM_CDF5(6554, 13107, 19661, 26214) },
317
              { AOM_CDF5(6554, 13107, 19661, 26214) },
318
              { AOM_CDF5(6554, 13107, 19661, 26214) },
319
          },
320
          {
321
              { AOM_CDF5(6554, 13107, 19661, 26214) },
322
              { AOM_CDF5(6554, 13107, 19661, 26214) },
323
              { AOM_CDF5(6554, 13107, 19661, 26214) },
324
              { AOM_CDF5(6554, 13107, 19661, 26214) },
325
              { AOM_CDF5(6554, 13107, 19661, 26214) },
326
              { AOM_CDF5(6554, 13107, 19661, 26214) },
327
              { AOM_CDF5(6554, 13107, 19661, 26214) },
328
              { AOM_CDF5(6554, 13107, 19661, 26214) },
329
              { AOM_CDF5(6554, 13107, 19661, 26214) },
330
              { AOM_CDF5(6554, 13107, 19661, 26214) },
331
              { AOM_CDF5(6554, 13107, 19661, 26214) },
332
              { AOM_CDF5(6554, 13107, 19661, 26214) },
333
              { AOM_CDF5(6554, 13107, 19661, 26214) },
334
          },
335
          {
336
              { AOM_CDF5(1127, 12814, 22772, 27483) },
337
              { AOM_CDF5(145, 6761, 11980, 26667) },
338
              { AOM_CDF5(362, 5887, 11678, 16725) },
339
              { AOM_CDF5(385, 15213, 18587, 30693) },
340
              { AOM_CDF5(25, 2914, 23134, 27903) },
341
              { AOM_CDF5(60, 4470, 11749, 23991) },
342
              { AOM_CDF5(37, 3332, 14511, 21448) },
343
              { AOM_CDF5(157, 6320, 13036, 17439) },
344
              { AOM_CDF5(119, 6719, 12906, 29396) },
345
              { AOM_CDF5(47, 5537, 12576, 21499) },
346
              { AOM_CDF5(269, 6076, 11258, 23115) },
347
              { AOM_CDF5(83, 5615, 12001, 17228) },
348
              { AOM_CDF5(1968, 5556, 12023, 18547) },
349
          },
350
          {
351
              { AOM_CDF5(6554, 13107, 19661, 26214) },
352
              { AOM_CDF5(6554, 13107, 19661, 26214) },
353
              { AOM_CDF5(6554, 13107, 19661, 26214) },
354
              { AOM_CDF5(6554, 13107, 19661, 26214) },
355
              { AOM_CDF5(6554, 13107, 19661, 26214) },
356
              { AOM_CDF5(6554, 13107, 19661, 26214) },
357
              { AOM_CDF5(6554, 13107, 19661, 26214) },
358
              { AOM_CDF5(6554, 13107, 19661, 26214) },
359
              { AOM_CDF5(6554, 13107, 19661, 26214) },
360
              { AOM_CDF5(6554, 13107, 19661, 26214) },
361
              { AOM_CDF5(6554, 13107, 19661, 26214) },
362
              { AOM_CDF5(6554, 13107, 19661, 26214) },
363
              { AOM_CDF5(6554, 13107, 19661, 26214) },
364
          },
365
      },
366
    };
367
368
static const aom_cdf_prob
369
    default_inter_ext_tx_cdf[EXT_TX_SETS_INTER][EXT_TX_SIZES][CDF_SIZE(
370
        TX_TYPES)] = {
371
      {
372
          { 0 },
373
          { 0 },
374
          { 0 },
375
          { 0 },
376
      },
377
      {
378
          { AOM_CDF16(4458, 5560, 7695, 9709, 13330, 14789, 17537, 20266, 21504,
379
                      22848, 23934, 25474, 27727, 28915, 30631) },
380
          { AOM_CDF16(1645, 2573, 4778, 5711, 7807, 8622, 10522, 15357, 17674,
381
                      20408, 22517, 25010, 27116, 28856, 30749) },
382
          { AOM_CDF16(2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432,
383
                      20480, 22528, 24576, 26624, 28672, 30720) },
384
          { AOM_CDF16(2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384, 18432,
385
                      20480, 22528, 24576, 26624, 28672, 30720) },
386
      },
387
      {
388
          { AOM_CDF12(2731, 5461, 8192, 10923, 13653, 16384, 19115, 21845,
389
                      24576, 27307, 30037) },
390
          { AOM_CDF12(2731, 5461, 8192, 10923, 13653, 16384, 19115, 21845,
391
                      24576, 27307, 30037) },
392
          { AOM_CDF12(770, 2421, 5225, 12907, 15819, 18927, 21561, 24089, 26595,
393
                      28526, 30529) },
394
          { AOM_CDF12(2731, 5461, 8192, 10923, 13653, 16384, 19115, 21845,
395
                      24576, 27307, 30037) },
396
      },
397
      {
398
          { AOM_CDF2(16384) },
399
          { AOM_CDF2(4167) },
400
          { AOM_CDF2(1998) },
401
          { AOM_CDF2(748) },
402
      },
403
    };
404
405
static const aom_cdf_prob default_cfl_sign_cdf[CDF_SIZE(CFL_JOINT_SIGNS)] = {
406
  AOM_CDF8(1418, 2123, 13340, 18405, 26972, 28343, 32294)
407
};
408
409
static const aom_cdf_prob
410
    default_cfl_alpha_cdf[CFL_ALPHA_CONTEXTS][CDF_SIZE(CFL_ALPHABET_SIZE)] = {
411
      { AOM_CDF16(7637, 20719, 31401, 32481, 32657, 32688, 32692, 32696, 32700,
412
                  32704, 32708, 32712, 32716, 32720, 32724) },
413
      { AOM_CDF16(14365, 23603, 28135, 31168, 32167, 32395, 32487, 32573, 32620,
414
                  32647, 32668, 32672, 32676, 32680, 32684) },
415
      { AOM_CDF16(11532, 22380, 28445, 31360, 32349, 32523, 32584, 32649, 32673,
416
                  32677, 32681, 32685, 32689, 32693, 32697) },
417
      { AOM_CDF16(26990, 31402, 32282, 32571, 32692, 32696, 32700, 32704, 32708,
418
                  32712, 32716, 32720, 32724, 32728, 32732) },
419
      { AOM_CDF16(17248, 26058, 28904, 30608, 31305, 31877, 32126, 32321, 32394,
420
                  32464, 32516, 32560, 32576, 32593, 32622) },
421
      { AOM_CDF16(14738, 21678, 25779, 27901, 29024, 30302, 30980, 31843, 32144,
422
                  32413, 32520, 32594, 32622, 32656, 32660) }
423
    };
424
425
static const aom_cdf_prob
426
    default_switchable_interp_cdf[SWITCHABLE_FILTER_CONTEXTS][CDF_SIZE(
427
        SWITCHABLE_FILTERS)] = {
428
      { AOM_CDF3(31935, 32720) }, { AOM_CDF3(5568, 32719) },
429
      { AOM_CDF3(422, 2938) },    { AOM_CDF3(28244, 32608) },
430
      { AOM_CDF3(31206, 31953) }, { AOM_CDF3(4862, 32121) },
431
      { AOM_CDF3(770, 1152) },    { AOM_CDF3(20889, 25637) },
432
      { AOM_CDF3(31910, 32724) }, { AOM_CDF3(4120, 32712) },
433
      { AOM_CDF3(305, 2247) },    { AOM_CDF3(27403, 32636) },
434
      { AOM_CDF3(31022, 32009) }, { AOM_CDF3(2963, 32093) },
435
      { AOM_CDF3(601, 943) },     { AOM_CDF3(14969, 21398) }
436
    };
437
438
static const aom_cdf_prob default_newmv_cdf[NEWMV_MODE_CONTEXTS][CDF_SIZE(
439
    2)] = { { AOM_CDF2(24035) }, { AOM_CDF2(16630) }, { AOM_CDF2(15339) },
440
            { AOM_CDF2(8386) },  { AOM_CDF2(12222) }, { AOM_CDF2(4676) } };
441
442
static const aom_cdf_prob default_zeromv_cdf[GLOBALMV_MODE_CONTEXTS][CDF_SIZE(
443
    2)] = { { AOM_CDF2(2175) }, { AOM_CDF2(1054) } };
444
445
static const aom_cdf_prob default_refmv_cdf[REFMV_MODE_CONTEXTS][CDF_SIZE(
446
    2)] = { { AOM_CDF2(23974) }, { AOM_CDF2(24188) }, { AOM_CDF2(17848) },
447
            { AOM_CDF2(28622) }, { AOM_CDF2(24312) }, { AOM_CDF2(19923) } };
448
449
static const aom_cdf_prob default_drl_cdf[DRL_MODE_CONTEXTS][CDF_SIZE(2)] = {
450
  { AOM_CDF2(13104) }, { AOM_CDF2(24560) }, { AOM_CDF2(18945) }
451
};
452
453
static const aom_cdf_prob
454
    default_inter_compound_mode_cdf[INTER_MODE_CONTEXTS][CDF_SIZE(
455
        INTER_COMPOUND_MODES)] = {
456
      { AOM_CDF8(7760, 13823, 15808, 17641, 19156, 20666, 26891) },
457
      { AOM_CDF8(10730, 19452, 21145, 22749, 24039, 25131, 28724) },
458
      { AOM_CDF8(10664, 20221, 21588, 22906, 24295, 25387, 28436) },
459
      { AOM_CDF8(13298, 16984, 20471, 24182, 25067, 25736, 26422) },
460
      { AOM_CDF8(18904, 23325, 25242, 27432, 27898, 28258, 30758) },
461
      { AOM_CDF8(10725, 17454, 20124, 22820, 24195, 25168, 26046) },
462
      { AOM_CDF8(17125, 24273, 25814, 27492, 28214, 28704, 30592) },
463
      { AOM_CDF8(13046, 23214, 24505, 25942, 27435, 28442, 29330) }
464
    };
465
466
static const aom_cdf_prob default_interintra_cdf[BLOCK_SIZE_GROUPS][CDF_SIZE(
467
    2)] = { { AOM_CDF2(16384) },
468
            { AOM_CDF2(26887) },
469
            { AOM_CDF2(27597) },
470
            { AOM_CDF2(30237) } };
471
472
static const aom_cdf_prob
473
    default_interintra_mode_cdf[BLOCK_SIZE_GROUPS][CDF_SIZE(
474
        INTERINTRA_MODES)] = { { AOM_CDF4(8192, 16384, 24576) },
475
                               { AOM_CDF4(1875, 11082, 27332) },
476
                               { AOM_CDF4(2473, 9996, 26388) },
477
                               { AOM_CDF4(4238, 11537, 25926) } };
478
479
static const aom_cdf_prob
480
    default_wedge_interintra_cdf[BLOCK_SIZES_ALL][CDF_SIZE(2)] = {
481
      { AOM_CDF2(16384) }, { AOM_CDF2(16384) }, { AOM_CDF2(16384) },
482
      { AOM_CDF2(20036) }, { AOM_CDF2(24957) }, { AOM_CDF2(26704) },
483
      { AOM_CDF2(27530) }, { AOM_CDF2(29564) }, { AOM_CDF2(29444) },
484
      { AOM_CDF2(26872) }, { AOM_CDF2(16384) }, { AOM_CDF2(16384) },
485
      { AOM_CDF2(16384) }, { AOM_CDF2(16384) }, { AOM_CDF2(16384) },
486
      { AOM_CDF2(16384) }, { AOM_CDF2(16384) }, { AOM_CDF2(16384) },
487
      { AOM_CDF2(16384) }, { AOM_CDF2(16384) }, { AOM_CDF2(16384) },
488
      { AOM_CDF2(16384) }
489
    };
490
491
static const aom_cdf_prob default_compound_type_cdf[BLOCK_SIZES_ALL][CDF_SIZE(
492
    MASKED_COMPOUND_TYPES)] = {
493
  { AOM_CDF2(16384) }, { AOM_CDF2(16384) }, { AOM_CDF2(16384) },
494
  { AOM_CDF2(23431) }, { AOM_CDF2(13171) }, { AOM_CDF2(11470) },
495
  { AOM_CDF2(9770) },  { AOM_CDF2(9100) },  { AOM_CDF2(8233) },
496
  { AOM_CDF2(6172) },  { AOM_CDF2(16384) }, { AOM_CDF2(16384) },
497
  { AOM_CDF2(16384) }, { AOM_CDF2(16384) }, { AOM_CDF2(16384) },
498
  { AOM_CDF2(16384) }, { AOM_CDF2(16384) }, { AOM_CDF2(16384) },
499
  { AOM_CDF2(11820) }, { AOM_CDF2(7701) },  { AOM_CDF2(16384) },
500
  { AOM_CDF2(16384) }
501
};
502
503
static const aom_cdf_prob default_wedge_idx_cdf[BLOCK_SIZES_ALL][CDF_SIZE(
504
    16)] = { { AOM_CDF16(2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384,
505
                         18432, 20480, 22528, 24576, 26624, 28672, 30720) },
506
             { AOM_CDF16(2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384,
507
                         18432, 20480, 22528, 24576, 26624, 28672, 30720) },
508
             { AOM_CDF16(2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384,
509
                         18432, 20480, 22528, 24576, 26624, 28672, 30720) },
510
             { AOM_CDF16(2438, 4440, 6599, 8663, 11005, 12874, 15751, 18094,
511
                         20359, 22362, 24127, 25702, 27752, 29450, 31171) },
512
             { AOM_CDF16(806, 3266, 6005, 6738, 7218, 7367, 7771, 14588, 16323,
513
                         17367, 18452, 19422, 22839, 26127, 29629) },
514
             { AOM_CDF16(2779, 3738, 4683, 7213, 7775, 8017, 8655, 14357, 17939,
515
                         21332, 24520, 27470, 29456, 30529, 31656) },
516
             { AOM_CDF16(1684, 3625, 5675, 7108, 9302, 11274, 14429, 17144,
517
                         19163, 20961, 22884, 24471, 26719, 28714, 30877) },
518
             { AOM_CDF16(1142, 3491, 6277, 7314, 8089, 8355, 9023, 13624, 15369,
519
                         16730, 18114, 19313, 22521, 26012, 29550) },
520
             { AOM_CDF16(2742, 4195, 5727, 8035, 8980, 9336, 10146, 14124,
521
                         17270, 20533, 23434, 25972, 27944, 29570, 31416) },
522
             { AOM_CDF16(1727, 3948, 6101, 7796, 9841, 12344, 15766, 18944,
523
                         20638, 22038, 23963, 25311, 26988, 28766, 31012) },
524
             { AOM_CDF16(2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384,
525
                         18432, 20480, 22528, 24576, 26624, 28672, 30720) },
526
             { AOM_CDF16(2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384,
527
                         18432, 20480, 22528, 24576, 26624, 28672, 30720) },
528
             { AOM_CDF16(2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384,
529
                         18432, 20480, 22528, 24576, 26624, 28672, 30720) },
530
             { AOM_CDF16(2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384,
531
                         18432, 20480, 22528, 24576, 26624, 28672, 30720) },
532
             { AOM_CDF16(2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384,
533
                         18432, 20480, 22528, 24576, 26624, 28672, 30720) },
534
             { AOM_CDF16(2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384,
535
                         18432, 20480, 22528, 24576, 26624, 28672, 30720) },
536
             { AOM_CDF16(2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384,
537
                         18432, 20480, 22528, 24576, 26624, 28672, 30720) },
538
             { AOM_CDF16(2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384,
539
                         18432, 20480, 22528, 24576, 26624, 28672, 30720) },
540
             { AOM_CDF16(154, 987, 1925, 2051, 2088, 2111, 2151, 23033, 23703,
541
                         24284, 24985, 25684, 27259, 28883, 30911) },
542
             { AOM_CDF16(1135, 1322, 1493, 2635, 2696, 2737, 2770, 21016, 22935,
543
                         25057, 27251, 29173, 30089, 30960, 31933) },
544
             { AOM_CDF16(2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384,
545
                         18432, 20480, 22528, 24576, 26624, 28672, 30720) },
546
             { AOM_CDF16(2048, 4096, 6144, 8192, 10240, 12288, 14336, 16384,
547
                         18432, 20480, 22528, 24576, 26624, 28672, 30720) } };
548
549
static const aom_cdf_prob default_motion_mode_cdf[BLOCK_SIZES_ALL][CDF_SIZE(
550
    MOTION_MODES)] = { { AOM_CDF3(10923, 21845) }, { AOM_CDF3(10923, 21845) },
551
                       { AOM_CDF3(10923, 21845) }, { AOM_CDF3(7651, 24760) },
552
                       { AOM_CDF3(4738, 24765) },  { AOM_CDF3(5391, 25528) },
553
                       { AOM_CDF3(19419, 26810) }, { AOM_CDF3(5123, 23606) },
554
                       { AOM_CDF3(11606, 24308) }, { AOM_CDF3(26260, 29116) },
555
                       { AOM_CDF3(20360, 28062) }, { AOM_CDF3(21679, 26830) },
556
                       { AOM_CDF3(29516, 30701) }, { AOM_CDF3(28898, 30397) },
557
                       { AOM_CDF3(30878, 31335) }, { AOM_CDF3(32507, 32558) },
558
                       { AOM_CDF3(10923, 21845) }, { AOM_CDF3(10923, 21845) },
559
                       { AOM_CDF3(28799, 31390) }, { AOM_CDF3(26431, 30774) },
560
                       { AOM_CDF3(28973, 31594) }, { AOM_CDF3(29742, 31203) } };
561
562
static const aom_cdf_prob default_obmc_cdf[BLOCK_SIZES_ALL][CDF_SIZE(2)] = {
563
  { AOM_CDF2(16384) }, { AOM_CDF2(16384) }, { AOM_CDF2(16384) },
564
  { AOM_CDF2(10437) }, { AOM_CDF2(9371) },  { AOM_CDF2(9301) },
565
  { AOM_CDF2(17432) }, { AOM_CDF2(14423) }, { AOM_CDF2(15142) },
566
  { AOM_CDF2(25817) }, { AOM_CDF2(22823) }, { AOM_CDF2(22083) },
567
  { AOM_CDF2(30128) }, { AOM_CDF2(31014) }, { AOM_CDF2(31560) },
568
  { AOM_CDF2(32638) }, { AOM_CDF2(16384) }, { AOM_CDF2(16384) },
569
  { AOM_CDF2(23664) }, { AOM_CDF2(20901) }, { AOM_CDF2(24008) },
570
  { AOM_CDF2(26879) }
571
};
572
573
static const aom_cdf_prob default_intra_inter_cdf[INTRA_INTER_CONTEXTS]
574
                                                 [CDF_SIZE(2)] = {
575
                                                   { AOM_CDF2(806) },
576
                                                   { AOM_CDF2(16662) },
577
                                                   { AOM_CDF2(20186) },
578
                                                   { AOM_CDF2(26538) }
579
                                                 };
580
581
static const aom_cdf_prob default_comp_inter_cdf[COMP_INTER_CONTEXTS][CDF_SIZE(
582
    2)] = { { AOM_CDF2(26828) },
583
            { AOM_CDF2(24035) },
584
            { AOM_CDF2(12031) },
585
            { AOM_CDF2(10640) },
586
            { AOM_CDF2(2901) } };
587
588
static const aom_cdf_prob default_comp_ref_type_cdf[COMP_REF_TYPE_CONTEXTS]
589
                                                   [CDF_SIZE(2)] = {
590
                                                     { AOM_CDF2(1198) },
591
                                                     { AOM_CDF2(2070) },
592
                                                     { AOM_CDF2(9166) },
593
                                                     { AOM_CDF2(7499) },
594
                                                     { AOM_CDF2(22475) }
595
                                                   };
596
597
static const aom_cdf_prob
598
    default_uni_comp_ref_cdf[UNI_COMP_REF_CONTEXTS][UNIDIR_COMP_REFS -
599
                                                    1][CDF_SIZE(2)] = {
600
      { { AOM_CDF2(5284) }, { AOM_CDF2(3865) }, { AOM_CDF2(3128) } },
601
      { { AOM_CDF2(23152) }, { AOM_CDF2(14173) }, { AOM_CDF2(15270) } },
602
      { { AOM_CDF2(31774) }, { AOM_CDF2(25120) }, { AOM_CDF2(26710) } }
603
    };
604
605
static const aom_cdf_prob default_single_ref_cdf[REF_CONTEXTS][SINGLE_REFS - 1]
606
                                                [CDF_SIZE(2)] = {
607
                                                  { { AOM_CDF2(4897) },
608
                                                    { AOM_CDF2(1555) },
609
                                                    { AOM_CDF2(4236) },
610
                                                    { AOM_CDF2(8650) },
611
                                                    { AOM_CDF2(904) },
612
                                                    { AOM_CDF2(1444) } },
613
                                                  { { AOM_CDF2(16973) },
614
                                                    { AOM_CDF2(16751) },
615
                                                    { AOM_CDF2(19647) },
616
                                                    { AOM_CDF2(24773) },
617
                                                    { AOM_CDF2(11014) },
618
                                                    { AOM_CDF2(15087) } },
619
                                                  { { AOM_CDF2(29744) },
620
                                                    { AOM_CDF2(30279) },
621
                                                    { AOM_CDF2(31194) },
622
                                                    { AOM_CDF2(31895) },
623
                                                    { AOM_CDF2(26875) },
624
                                                    { AOM_CDF2(30304) } }
625
                                                };
626
627
static const aom_cdf_prob
628
    default_comp_ref_cdf[REF_CONTEXTS][FWD_REFS - 1][CDF_SIZE(2)] = {
629
      { { AOM_CDF2(4946) }, { AOM_CDF2(9468) }, { AOM_CDF2(1503) } },
630
      { { AOM_CDF2(19891) }, { AOM_CDF2(22441) }, { AOM_CDF2(15160) } },
631
      { { AOM_CDF2(30731) }, { AOM_CDF2(31059) }, { AOM_CDF2(27544) } }
632
    };
633
634
static const aom_cdf_prob
635
    default_comp_bwdref_cdf[REF_CONTEXTS][BWD_REFS - 1][CDF_SIZE(2)] = {
636
      { { AOM_CDF2(2235) }, { AOM_CDF2(1423) } },
637
      { { AOM_CDF2(17182) }, { AOM_CDF2(15175) } },
638
      { { AOM_CDF2(30606) }, { AOM_CDF2(30489) } }
639
    };
640
641
static const aom_cdf_prob
642
    default_palette_y_size_cdf[PALATTE_BSIZE_CTXS][CDF_SIZE(PALETTE_SIZES)] = {
643
      { AOM_CDF7(7952, 13000, 18149, 21478, 25527, 29241) },
644
      { AOM_CDF7(7139, 11421, 16195, 19544, 23666, 28073) },
645
      { AOM_CDF7(7788, 12741, 17325, 20500, 24315, 28530) },
646
      { AOM_CDF7(8271, 14064, 18246, 21564, 25071, 28533) },
647
      { AOM_CDF7(12725, 19180, 21863, 24839, 27535, 30120) },
648
      { AOM_CDF7(9711, 14888, 16923, 21052, 25661, 27875) },
649
      { AOM_CDF7(14940, 20797, 21678, 24186, 27033, 28999) }
650
    };
651
652
static const aom_cdf_prob
653
    default_palette_uv_size_cdf[PALATTE_BSIZE_CTXS][CDF_SIZE(PALETTE_SIZES)] = {
654
      { AOM_CDF7(8713, 19979, 27128, 29609, 31331, 32272) },
655
      { AOM_CDF7(5839, 15573, 23581, 26947, 29848, 31700) },
656
      { AOM_CDF7(4426, 11260, 17999, 21483, 25863, 29430) },
657
      { AOM_CDF7(3228, 9464, 14993, 18089, 22523, 27420) },
658
      { AOM_CDF7(3768, 8886, 13091, 17852, 22495, 27207) },
659
      { AOM_CDF7(2464, 8451, 12861, 21632, 25525, 28555) },
660
      { AOM_CDF7(1269, 5435, 10433, 18963, 21700, 25865) }
661
    };
662
663
static const aom_cdf_prob default_palette_y_mode_cdf
664
    [PALATTE_BSIZE_CTXS][PALETTE_Y_MODE_CONTEXTS][CDF_SIZE(2)] = {
665
      { { AOM_CDF2(31676) }, { AOM_CDF2(3419) }, { AOM_CDF2(1261) } },
666
      { { AOM_CDF2(31912) }, { AOM_CDF2(2859) }, { AOM_CDF2(980) } },
667
      { { AOM_CDF2(31823) }, { AOM_CDF2(3400) }, { AOM_CDF2(781) } },
668
      { { AOM_CDF2(32030) }, { AOM_CDF2(3561) }, { AOM_CDF2(904) } },
669
      { { AOM_CDF2(32309) }, { AOM_CDF2(7337) }, { AOM_CDF2(1462) } },
670
      { { AOM_CDF2(32265) }, { AOM_CDF2(4015) }, { AOM_CDF2(1521) } },
671
      { { AOM_CDF2(32450) }, { AOM_CDF2(7946) }, { AOM_CDF2(129) } }
672
    };
673
674
static const aom_cdf_prob
675
    default_palette_uv_mode_cdf[PALETTE_UV_MODE_CONTEXTS][CDF_SIZE(2)] = {
676
      { AOM_CDF2(32461) }, { AOM_CDF2(21488) }
677
    };
678
679
static const aom_cdf_prob default_palette_y_color_index_cdf
680
    [PALETTE_SIZES][PALETTE_COLOR_INDEX_CONTEXTS][CDF_SIZE(PALETTE_COLORS)] = {
681
      {
682
          { AOM_CDF2(28710) },
683
          { AOM_CDF2(16384) },
684
          { AOM_CDF2(10553) },
685
          { AOM_CDF2(27036) },
686
          { AOM_CDF2(31603) },
687
      },
688
      {
689
          { AOM_CDF3(27877, 30490) },
690
          { AOM_CDF3(11532, 25697) },
691
          { AOM_CDF3(6544, 30234) },
692
          { AOM_CDF3(23018, 28072) },
693
          { AOM_CDF3(31915, 32385) },
694
      },
695
      {
696
          { AOM_CDF4(25572, 28046, 30045) },
697
          { AOM_CDF4(9478, 21590, 27256) },
698
          { AOM_CDF4(7248, 26837, 29824) },
699
          { AOM_CDF4(19167, 24486, 28349) },
700
          { AOM_CDF4(31400, 31825, 32250) },
701
      },
702
      {
703
          { AOM_CDF5(24779, 26955, 28576, 30282) },
704
          { AOM_CDF5(8669, 20364, 24073, 28093) },
705
          { AOM_CDF5(4255, 27565, 29377, 31067) },
706
          { AOM_CDF5(19864, 23674, 26716, 29530) },
707
          { AOM_CDF5(31646, 31893, 32147, 32426) },
708
      },
709
      {
710
          { AOM_CDF6(23132, 25407, 26970, 28435, 30073) },
711
          { AOM_CDF6(7443, 17242, 20717, 24762, 27982) },
712
          { AOM_CDF6(6300, 24862, 26944, 28784, 30671) },
713
          { AOM_CDF6(18916, 22895, 25267, 27435, 29652) },
714
          { AOM_CDF6(31270, 31550, 31808, 32059, 32353) },
715
      },
716
      {
717
          { AOM_CDF7(23105, 25199, 26464, 27684, 28931, 30318) },
718
          { AOM_CDF7(6950, 15447, 18952, 22681, 25567, 28563) },
719
          { AOM_CDF7(7560, 23474, 25490, 27203, 28921, 30708) },
720
          { AOM_CDF7(18544, 22373, 24457, 26195, 28119, 30045) },
721
          { AOM_CDF7(31198, 31451, 31670, 31882, 32123, 32391) },
722
      },
723
      {
724
          { AOM_CDF8(21689, 23883, 25163, 26352, 27506, 28827, 30195) },
725
          { AOM_CDF8(6892, 15385, 17840, 21606, 24287, 26753, 29204) },
726
          { AOM_CDF8(5651, 23182, 25042, 26518, 27982, 29392, 30900) },
727
          { AOM_CDF8(19349, 22578, 24418, 25994, 27524, 29031, 30448) },
728
          { AOM_CDF8(31028, 31270, 31504, 31705, 31927, 32153, 32392) },
729
      },
730
    };
731
732
static const aom_cdf_prob default_palette_uv_color_index_cdf
733
    [PALETTE_SIZES][PALETTE_COLOR_INDEX_CONTEXTS][CDF_SIZE(PALETTE_COLORS)] = {
734
      {
735
          { AOM_CDF2(29089) },
736
          { AOM_CDF2(16384) },
737
          { AOM_CDF2(8713) },
738
          { AOM_CDF2(29257) },
739
          { AOM_CDF2(31610) },
740
      },
741
      {
742
          { AOM_CDF3(25257, 29145) },
743
          { AOM_CDF3(12287, 27293) },
744
          { AOM_CDF3(7033, 27960) },
745
          { AOM_CDF3(20145, 25405) },
746
          { AOM_CDF3(30608, 31639) },
747
      },
748
      {
749
          { AOM_CDF4(24210, 27175, 29903) },
750
          { AOM_CDF4(9888, 22386, 27214) },
751
          { AOM_CDF4(5901, 26053, 29293) },
752
          { AOM_CDF4(18318, 22152, 28333) },
753
          { AOM_CDF4(30459, 31136, 31926) },
754
      },
755
      {
756
          { AOM_CDF5(22980, 25479, 27781, 29986) },
757
          { AOM_CDF5(8413, 21408, 24859, 28874) },
758
          { AOM_CDF5(2257, 29449, 30594, 31598) },
759
          { AOM_CDF5(19189, 21202, 25915, 28620) },
760
          { AOM_CDF5(31844, 32044, 32281, 32518) },
761
      },
762
      {
763
          { AOM_CDF6(22217, 24567, 26637, 28683, 30548) },
764
          { AOM_CDF6(7307, 16406, 19636, 24632, 28424) },
765
          { AOM_CDF6(4441, 25064, 26879, 28942, 30919) },
766
          { AOM_CDF6(17210, 20528, 23319, 26750, 29582) },
767
          { AOM_CDF6(30674, 30953, 31396, 31735, 32207) },
768
      },
769
      {
770
          { AOM_CDF7(21239, 23168, 25044, 26962, 28705, 30506) },
771
          { AOM_CDF7(6545, 15012, 18004, 21817, 25503, 28701) },
772
          { AOM_CDF7(3448, 26295, 27437, 28704, 30126, 31442) },
773
          { AOM_CDF7(15889, 18323, 21704, 24698, 26976, 29690) },
774
          { AOM_CDF7(30988, 31204, 31479, 31734, 31983, 32325) },
775
      },
776
      {
777
          { AOM_CDF8(21442, 23288, 24758, 26246, 27649, 28980, 30563) },
778
          { AOM_CDF8(5863, 14933, 17552, 20668, 23683, 26411, 29273) },
779
          { AOM_CDF8(3415, 25810, 26877, 27990, 29223, 30394, 31618) },
780
          { AOM_CDF8(17965, 20084, 22232, 23974, 26274, 28402, 30390) },
781
          { AOM_CDF8(31190, 31329, 31516, 31679, 31825, 32026, 32322) },
782
      },
783
    };
784
785
static const aom_cdf_prob
786
    default_txfm_partition_cdf[TXFM_PARTITION_CONTEXTS][CDF_SIZE(2)] = {
787
      { AOM_CDF2(28581) }, { AOM_CDF2(23846) }, { AOM_CDF2(20847) },
788
      { AOM_CDF2(24315) }, { AOM_CDF2(18196) }, { AOM_CDF2(12133) },
789
      { AOM_CDF2(18791) }, { AOM_CDF2(10887) }, { AOM_CDF2(11005) },
790
      { AOM_CDF2(27179) }, { AOM_CDF2(20004) }, { AOM_CDF2(11281) },
791
      { AOM_CDF2(26549) }, { AOM_CDF2(19308) }, { AOM_CDF2(14224) },
792
      { AOM_CDF2(28015) }, { AOM_CDF2(21546) }, { AOM_CDF2(14400) },
793
      { AOM_CDF2(28165) }, { AOM_CDF2(22401) }, { AOM_CDF2(16088) }
794
    };
795
796
static const aom_cdf_prob default_skip_txfm_cdfs[SKIP_CONTEXTS][CDF_SIZE(2)] = {
797
  { AOM_CDF2(31671) }, { AOM_CDF2(16515) }, { AOM_CDF2(4576) }
798
};
799
800
static const aom_cdf_prob default_skip_mode_cdfs[SKIP_MODE_CONTEXTS][CDF_SIZE(
801
    2)] = { { AOM_CDF2(32621) }, { AOM_CDF2(20708) }, { AOM_CDF2(8127) } };
802
803
static const aom_cdf_prob
804
    default_compound_idx_cdfs[COMP_INDEX_CONTEXTS][CDF_SIZE(2)] = {
805
      { AOM_CDF2(18244) }, { AOM_CDF2(12865) }, { AOM_CDF2(7053) },
806
      { AOM_CDF2(13259) }, { AOM_CDF2(9334) },  { AOM_CDF2(4644) }
807
    };
808
809
static const aom_cdf_prob
810
    default_comp_group_idx_cdfs[COMP_GROUP_IDX_CONTEXTS][CDF_SIZE(2)] = {
811
      { AOM_CDF2(26607) }, { AOM_CDF2(22891) }, { AOM_CDF2(18840) },
812
      { AOM_CDF2(24594) }, { AOM_CDF2(19934) }, { AOM_CDF2(22674) }
813
    };
814
815
static const aom_cdf_prob default_intrabc_cdf[CDF_SIZE(2)] = { AOM_CDF2(
816
    30531) };
817
818
static const aom_cdf_prob default_filter_intra_mode_cdf[CDF_SIZE(
819
    FILTER_INTRA_MODES)] = { AOM_CDF5(8949, 12776, 17211, 29558) };
820
821
static const aom_cdf_prob default_filter_intra_cdfs[BLOCK_SIZES_ALL][CDF_SIZE(
822
    2)] = { { AOM_CDF2(4621) },  { AOM_CDF2(6743) },  { AOM_CDF2(5893) },
823
            { AOM_CDF2(7866) },  { AOM_CDF2(12551) }, { AOM_CDF2(9394) },
824
            { AOM_CDF2(12408) }, { AOM_CDF2(14301) }, { AOM_CDF2(12756) },
825
            { AOM_CDF2(22343) }, { AOM_CDF2(16384) }, { AOM_CDF2(16384) },
826
            { AOM_CDF2(16384) }, { AOM_CDF2(16384) }, { AOM_CDF2(16384) },
827
            { AOM_CDF2(16384) }, { AOM_CDF2(12770) }, { AOM_CDF2(10368) },
828
            { AOM_CDF2(20229) }, { AOM_CDF2(18101) }, { AOM_CDF2(16384) },
829
            { AOM_CDF2(16384) } };
830
831
static const aom_cdf_prob default_switchable_restore_cdf[CDF_SIZE(
832
    RESTORE_SWITCHABLE_TYPES)] = { AOM_CDF3(9413, 22581) };
833
834
static const aom_cdf_prob default_wiener_restore_cdf[CDF_SIZE(2)] = { AOM_CDF2(
835
    11570) };
836
837
static const aom_cdf_prob default_sgrproj_restore_cdf[CDF_SIZE(2)] = { AOM_CDF2(
838
    16855) };
839
840
static const aom_cdf_prob default_delta_q_cdf[CDF_SIZE(DELTA_Q_PROBS + 1)] = {
841
  AOM_CDF4(28160, 32120, 32677)
842
};
843
844
static const aom_cdf_prob default_delta_lf_multi_cdf[FRAME_LF_COUNT][CDF_SIZE(
845
    DELTA_LF_PROBS + 1)] = { { AOM_CDF4(28160, 32120, 32677) },
846
                             { AOM_CDF4(28160, 32120, 32677) },
847
                             { AOM_CDF4(28160, 32120, 32677) },
848
                             { AOM_CDF4(28160, 32120, 32677) } };
849
static const aom_cdf_prob default_delta_lf_cdf[CDF_SIZE(DELTA_LF_PROBS + 1)] = {
850
  AOM_CDF4(28160, 32120, 32677)
851
};
852
853
static const aom_cdf_prob
854
    default_segment_pred_cdf[SEG_TEMPORAL_PRED_CTXS][CDF_SIZE(2)] = {
855
      { AOM_CDF2(128 * 128) }, { AOM_CDF2(128 * 128) }, { AOM_CDF2(128 * 128) }
856
    };
857
858
static const aom_cdf_prob
859
    default_spatial_pred_seg_tree_cdf[SPATIAL_PREDICTION_PROBS][CDF_SIZE(
860
        MAX_SEGMENTS)] = {
861
      {
862
          AOM_CDF8(5622, 7893, 16093, 18233, 27809, 28373, 32533),
863
      },
864
      {
865
          AOM_CDF8(14274, 18230, 22557, 24935, 29980, 30851, 32344),
866
      },
867
      {
868
          AOM_CDF8(27527, 28487, 28723, 28890, 32397, 32647, 32679),
869
      },
870
    };
871
872
static const aom_cdf_prob default_tx_size_cdf[MAX_TX_CATS][TX_SIZE_CONTEXTS]
873
                                             [CDF_SIZE(MAX_TX_DEPTH + 1)] = {
874
                                               { { AOM_CDF2(19968) },
875
                                                 { AOM_CDF2(19968) },
876
                                                 { AOM_CDF2(24320) } },
877
                                               { { AOM_CDF3(12272, 30172) },
878
                                                 { AOM_CDF3(12272, 30172) },
879
                                                 { AOM_CDF3(18677, 30848) } },
880
                                               { { AOM_CDF3(12986, 15180) },
881
                                                 { AOM_CDF3(12986, 15180) },
882
                                                 { AOM_CDF3(24302, 25602) } },
883
                                               { { AOM_CDF3(5782, 11475) },
884
                                                 { AOM_CDF3(5782, 11475) },
885
                                                 { AOM_CDF3(16803, 22759) } },
886
                                             };
887
888
// Negative values are invalid
889
const int av1_palette_color_index_context_lookup[MAX_COLOR_CONTEXT_HASH + 1] = {
890
  -1, -1, 0, -1, -1, 4, 3, 2, 1
891
};
892
893
int av1_get_palette_color_index_context(const uint8_t *color_map, int stride,
894
                                        int r, int c, int palette_size,
895
172M
                                        uint8_t *color_order, int *color_idx) {
896
172M
  assert(palette_size <= PALETTE_MAX_SIZE);
897
172M
  assert(r > 0 || c > 0);
898
899
  // Get color indices of neighbors.
900
172M
  int color_neighbors[NUM_PALETTE_NEIGHBORS];
901
172M
  color_neighbors[0] = (c - 1 >= 0) ? color_map[r * stride + c - 1] : -1;
902
172M
  color_neighbors[1] =
903
172M
      (c - 1 >= 0 && r - 1 >= 0) ? color_map[(r - 1) * stride + c - 1] : -1;
904
172M
  color_neighbors[2] = (r - 1 >= 0) ? color_map[(r - 1) * stride + c] : -1;
905
906
  // The +10 below should not be needed. But we get a warning "array subscript
907
  // is above array bounds [-Werror=array-bounds]" without it, possibly due to
908
  // this (or similar) bug: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59124
909
172M
  int scores[PALETTE_MAX_SIZE + 10] = { 0 };
910
172M
  int i;
911
172M
  static const int weights[NUM_PALETTE_NEIGHBORS] = { 2, 1, 2 };
912
690M
  for (i = 0; i < NUM_PALETTE_NEIGHBORS; ++i) {
913
517M
    if (color_neighbors[i] >= 0) {
914
471M
      scores[color_neighbors[i]] += weights[i];
915
471M
    }
916
517M
  }
917
918
172M
  int inverse_color_order[PALETTE_MAX_SIZE];
919
1.55G
  for (i = 0; i < PALETTE_MAX_SIZE; ++i) {
920
1.38G
    color_order[i] = i;
921
1.38G
    inverse_color_order[i] = i;
922
1.38G
  }
923
924
  // Get the top NUM_PALETTE_NEIGHBORS scores (sorted from large to small).
925
690M
  for (i = 0; i < NUM_PALETTE_NEIGHBORS; ++i) {
926
517M
    int max = scores[i];
927
517M
    int max_idx = i;
928
1.72G
    for (int j = i + 1; j < palette_size; ++j) {
929
1.21G
      if (scores[j] > max) {
930
185M
        max = scores[j];
931
185M
        max_idx = j;
932
185M
      }
933
1.21G
    }
934
517M
    if (max_idx != i) {
935
      // Move the score at index 'max_idx' to index 'i', and shift the scores
936
      // from 'i' to 'max_idx - 1' by 1.
937
165M
      const int max_score = scores[max_idx];
938
165M
      const uint8_t max_color_order = color_order[max_idx];
939
580M
      for (int k = max_idx; k > i; --k) {
940
415M
        scores[k] = scores[k - 1];
941
415M
        color_order[k] = color_order[k - 1];
942
415M
        inverse_color_order[color_order[k]] = k;
943
415M
      }
944
165M
      scores[i] = max_score;
945
165M
      color_order[i] = max_color_order;
946
165M
      inverse_color_order[color_order[i]] = i;
947
165M
    }
948
517M
  }
949
950
172M
  if (color_idx != NULL)
951
0
    *color_idx = inverse_color_order[color_map[r * stride + c]];
952
953
  // Get hash value of context.
954
172M
  int color_index_ctx_hash = 0;
955
172M
  static const int hash_multipliers[NUM_PALETTE_NEIGHBORS] = { 1, 2, 2 };
956
690M
  for (i = 0; i < NUM_PALETTE_NEIGHBORS; ++i) {
957
517M
    color_index_ctx_hash += scores[i] * hash_multipliers[i];
958
517M
  }
959
172M
  assert(color_index_ctx_hash > 0);
960
172M
  assert(color_index_ctx_hash <= MAX_COLOR_CONTEXT_HASH);
961
962
  // Lookup context from hash.
963
172M
  const int color_index_ctx =
964
172M
      av1_palette_color_index_context_lookup[color_index_ctx_hash];
965
172M
  assert(color_index_ctx >= 0);
966
172M
  assert(color_index_ctx < PALETTE_COLOR_INDEX_CONTEXTS);
967
172M
  return color_index_ctx;
968
172M
}
969
970
37.0k
void av1_init_mode_probs(FRAME_CONTEXT *fc) {
971
37.0k
  av1_copy(fc->palette_y_size_cdf, default_palette_y_size_cdf);
972
37.0k
  av1_copy(fc->palette_uv_size_cdf, default_palette_uv_size_cdf);
973
37.0k
  av1_copy(fc->palette_y_color_index_cdf, default_palette_y_color_index_cdf);
974
37.0k
  av1_copy(fc->palette_uv_color_index_cdf, default_palette_uv_color_index_cdf);
975
37.0k
  av1_copy(fc->kf_y_cdf, default_kf_y_mode_cdf);
976
37.0k
  av1_copy(fc->angle_delta_cdf, default_angle_delta_cdf);
977
37.0k
  av1_copy(fc->comp_inter_cdf, default_comp_inter_cdf);
978
37.0k
  av1_copy(fc->comp_ref_type_cdf, default_comp_ref_type_cdf);
979
37.0k
  av1_copy(fc->uni_comp_ref_cdf, default_uni_comp_ref_cdf);
980
37.0k
  av1_copy(fc->palette_y_mode_cdf, default_palette_y_mode_cdf);
981
37.0k
  av1_copy(fc->palette_uv_mode_cdf, default_palette_uv_mode_cdf);
982
37.0k
  av1_copy(fc->comp_ref_cdf, default_comp_ref_cdf);
983
37.0k
  av1_copy(fc->comp_bwdref_cdf, default_comp_bwdref_cdf);
984
37.0k
  av1_copy(fc->single_ref_cdf, default_single_ref_cdf);
985
37.0k
  av1_copy(fc->txfm_partition_cdf, default_txfm_partition_cdf);
986
37.0k
  av1_copy(fc->compound_index_cdf, default_compound_idx_cdfs);
987
37.0k
  av1_copy(fc->comp_group_idx_cdf, default_comp_group_idx_cdfs);
988
37.0k
  av1_copy(fc->newmv_cdf, default_newmv_cdf);
989
37.0k
  av1_copy(fc->zeromv_cdf, default_zeromv_cdf);
990
37.0k
  av1_copy(fc->refmv_cdf, default_refmv_cdf);
991
37.0k
  av1_copy(fc->drl_cdf, default_drl_cdf);
992
37.0k
  av1_copy(fc->motion_mode_cdf, default_motion_mode_cdf);
993
37.0k
  av1_copy(fc->obmc_cdf, default_obmc_cdf);
994
37.0k
  av1_copy(fc->inter_compound_mode_cdf, default_inter_compound_mode_cdf);
995
37.0k
  av1_copy(fc->compound_type_cdf, default_compound_type_cdf);
996
37.0k
  av1_copy(fc->wedge_idx_cdf, default_wedge_idx_cdf);
997
37.0k
  av1_copy(fc->interintra_cdf, default_interintra_cdf);
998
37.0k
  av1_copy(fc->wedge_interintra_cdf, default_wedge_interintra_cdf);
999
37.0k
  av1_copy(fc->interintra_mode_cdf, default_interintra_mode_cdf);
1000
37.0k
  av1_copy(fc->seg.pred_cdf, default_segment_pred_cdf);
1001
37.0k
  av1_copy(fc->filter_intra_cdfs, default_filter_intra_cdfs);
1002
37.0k
  av1_copy(fc->filter_intra_mode_cdf, default_filter_intra_mode_cdf);
1003
37.0k
  av1_copy(fc->switchable_restore_cdf, default_switchable_restore_cdf);
1004
37.0k
  av1_copy(fc->wiener_restore_cdf, default_wiener_restore_cdf);
1005
37.0k
  av1_copy(fc->sgrproj_restore_cdf, default_sgrproj_restore_cdf);
1006
37.0k
  av1_copy(fc->y_mode_cdf, default_if_y_mode_cdf);
1007
37.0k
  av1_copy(fc->uv_mode_cdf, default_uv_mode_cdf);
1008
37.0k
  av1_copy(fc->switchable_interp_cdf, default_switchable_interp_cdf);
1009
37.0k
  av1_copy(fc->partition_cdf, default_partition_cdf);
1010
37.0k
  av1_copy(fc->intra_ext_tx_cdf, default_intra_ext_tx_cdf);
1011
37.0k
  av1_copy(fc->inter_ext_tx_cdf, default_inter_ext_tx_cdf);
1012
37.0k
  av1_copy(fc->skip_mode_cdfs, default_skip_mode_cdfs);
1013
37.0k
  av1_copy(fc->skip_txfm_cdfs, default_skip_txfm_cdfs);
1014
37.0k
  av1_copy(fc->intra_inter_cdf, default_intra_inter_cdf);
1015
148k
  for (int i = 0; i < SPATIAL_PREDICTION_PROBS; i++)
1016
111k
    av1_copy(fc->seg.spatial_pred_seg_cdf[i],
1017
37.0k
             default_spatial_pred_seg_tree_cdf[i]);
1018
37.0k
  av1_copy(fc->tx_size_cdf, default_tx_size_cdf);
1019
37.0k
  av1_copy(fc->delta_q_cdf, default_delta_q_cdf);
1020
37.0k
  av1_copy(fc->delta_lf_cdf, default_delta_lf_cdf);
1021
37.0k
  av1_copy(fc->delta_lf_multi_cdf, default_delta_lf_multi_cdf);
1022
37.0k
  av1_copy(fc->cfl_sign_cdf, default_cfl_sign_cdf);
1023
37.0k
  av1_copy(fc->cfl_alpha_cdf, default_cfl_alpha_cdf);
1024
37.0k
  av1_copy(fc->intrabc_cdf, default_intrabc_cdf);
1025
37.0k
}
1026
1027
111k
void av1_set_default_ref_deltas(int8_t *ref_deltas) {
1028
111k
  assert(ref_deltas != NULL);
1029
1030
111k
  ref_deltas[INTRA_FRAME] = 1;
1031
111k
  ref_deltas[LAST_FRAME] = 0;
1032
111k
  ref_deltas[LAST2_FRAME] = ref_deltas[LAST_FRAME];
1033
111k
  ref_deltas[LAST3_FRAME] = ref_deltas[LAST_FRAME];
1034
111k
  ref_deltas[BWDREF_FRAME] = ref_deltas[LAST_FRAME];
1035
111k
  ref_deltas[GOLDEN_FRAME] = -1;
1036
111k
  ref_deltas[ALTREF2_FRAME] = -1;
1037
111k
  ref_deltas[ALTREF_FRAME] = -1;
1038
111k
}
1039
1040
111k
void av1_set_default_mode_deltas(int8_t *mode_deltas) {
1041
111k
  assert(mode_deltas != NULL);
1042
1043
111k
  mode_deltas[0] = 0;
1044
111k
  mode_deltas[1] = 0;
1045
111k
}
1046
1047
37.0k
static void set_default_lf_deltas(struct loopfilter *lf) {
1048
37.0k
  lf->mode_ref_delta_enabled = 1;
1049
37.0k
  lf->mode_ref_delta_update = 1;
1050
1051
37.0k
  av1_set_default_ref_deltas(lf->ref_deltas);
1052
37.0k
  av1_set_default_mode_deltas(lf->mode_deltas);
1053
37.0k
}
1054
1055
37.0k
void av1_setup_frame_contexts(AV1_COMMON *cm) {
1056
  // Store the frame context into a special slot (not associated with any
1057
  // reference buffer), so that we can set up cm->pre_fc correctly later
1058
  // This function must ONLY be called when cm->fc has been initialized with
1059
  // default probs, either by av1_setup_past_independence or after manually
1060
  // initializing them
1061
37.0k
  *cm->default_frame_context = *cm->fc;
1062
  // TODO(jack.haughton@argondesign.com): don't think this should be necessary,
1063
  // but could do with fuller testing
1064
37.0k
  if (cm->tiles.large_scale) {
1065
0
    for (int i = LAST_FRAME; i <= ALTREF_FRAME; ++i) {
1066
0
      RefCntBuffer *const buf = get_ref_frame_buf(cm, i);
1067
0
      if (buf != NULL) buf->frame_context = *cm->fc;
1068
0
    }
1069
0
    for (int i = 0; i < cm->buffer_pool->num_frame_bufs; ++i)
1070
0
      cm->buffer_pool->frame_bufs[i].frame_context = *cm->fc;
1071
0
  }
1072
37.0k
}
1073
1074
37.0k
void av1_setup_past_independence(AV1_COMMON *cm) {
1075
  // Reset the segment feature data to the default stats:
1076
  // Features disabled, 0, with delta coding (Default state).
1077
37.0k
  av1_clearall_segfeatures(&cm->seg);
1078
1079
37.0k
  if (cm->cur_frame->seg_map) {
1080
37.0k
    memset(cm->cur_frame->seg_map, 0,
1081
37.0k
           (cm->cur_frame->mi_rows * cm->cur_frame->mi_cols));
1082
37.0k
  }
1083
1084
  // reset mode ref deltas
1085
37.0k
  av1_set_default_ref_deltas(cm->cur_frame->ref_deltas);
1086
37.0k
  av1_set_default_mode_deltas(cm->cur_frame->mode_deltas);
1087
37.0k
  set_default_lf_deltas(&cm->lf);
1088
1089
37.0k
  av1_default_coef_probs(cm);
1090
37.0k
  av1_init_mode_probs(cm->fc);
1091
37.0k
  av1_init_mv_probs(cm);
1092
37.0k
  cm->fc->initialized = 1;
1093
37.0k
  av1_setup_frame_contexts(cm);
1094
37.0k
}