1 /*
2  *  Copyright (c) 2018 The WebM project authors. All Rights Reserved.
3  *
4  *  Use of this source code is governed by a BSD-style license
5  *  that can be found in the LICENSE file in the root of the source
6  *  tree. An additional intellectual property rights grant can be found
7  *  in the file PATENTS.  All contributing project authors may
8  *  be found in the AUTHORS file in the root of the source tree.
9  */
10 
11 #ifndef VPX_VP9_ENCODER_VP9_PARTITION_MODELS_H_
12 #define VPX_VP9_ENCODER_VP9_PARTITION_MODELS_H_
13 
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17 
18 #define NN_MAX_HIDDEN_LAYERS 10
19 #define NN_MAX_NODES_PER_LAYER 128
20 
21 // Neural net model config. It defines the layout of a neural net model, such as
22 // the number of inputs/outputs, number of layers, the number of nodes in each
23 // layer, as well as the weights and bias of each node.
24 typedef struct {
25   int num_inputs;         // Number of input nodes, i.e. features.
26   int num_outputs;        // Number of output nodes.
27   int num_hidden_layers;  // Number of hidden layers, maximum 10.
28   // Number of nodes for each hidden layer.
29   int num_hidden_nodes[NN_MAX_HIDDEN_LAYERS];
30   // Weight parameters, indexed by layer.
31   const float *weights[NN_MAX_HIDDEN_LAYERS + 1];
32   // Bias parameters, indexed by layer.
33   const float *bias[NN_MAX_HIDDEN_LAYERS + 1];
34 } NN_CONFIG;
35 
36 // Partition search breakout model.
37 #define FEATURES 4
38 #define Q_CTX 3
39 #define RESOLUTION_CTX 2
40 static const float
41     vp9_partition_breakout_weights_64[RESOLUTION_CTX][Q_CTX][FEATURES + 1] = {
42       {
43           {
44               -0.016673f,
45               -0.001025f,
46               -0.000032f,
47               0.000833f,
48               1.94261885f - 2.1f,
49           },
50           {
51               -0.160867f,
52               -0.002101f,
53               0.000011f,
54               0.002448f,
55               1.65738142f - 2.5f,
56           },
57           {
58               -0.628934f,
59               -0.011459f,
60               -0.000009f,
61               0.013833f,
62               1.47982645f - 1.6f,
63           },
64       },
65       {
66           {
67               -0.064309f,
68               -0.006121f,
69               0.000232f,
70               0.005778f,
71               0.7989465f - 5.0f,
72           },
73           {
74               -0.314957f,
75               -0.009346f,
76               -0.000225f,
77               0.010072f,
78               2.80695581f - 5.5f,
79           },
80           {
81               -0.635535f,
82               -0.015135f,
83               0.000091f,
84               0.015247f,
85               2.90381241f - 5.0f,
86           },
87       },
88     };
89 
90 static const float
91     vp9_partition_breakout_weights_32[RESOLUTION_CTX][Q_CTX][FEATURES + 1] = {
92       {
93           {
94               -0.010554f,
95               -0.003081f,
96               -0.000134f,
97               0.004491f,
98               1.68445992f - 3.5f,
99           },
100           {
101               -0.051489f,
102               -0.007609f,
103               0.000016f,
104               0.009792f,
105               1.28089404f - 2.5f,
106           },
107           {
108               -0.163097f,
109               -0.013081f,
110               0.000022f,
111               0.019006f,
112               1.36129403f - 3.2f,
113           },
114       },
115       {
116           {
117               -0.024629f,
118               -0.006492f,
119               -0.000254f,
120               0.004895f,
121               1.27919173f - 4.5f,
122           },
123           {
124               -0.083936f,
125               -0.009827f,
126               -0.000200f,
127               0.010399f,
128               2.73731065f - 4.5f,
129           },
130           {
131               -0.279052f,
132               -0.013334f,
133               0.000289f,
134               0.023203f,
135               2.43595719f - 3.5f,
136           },
137       },
138     };
139 
140 static const float
141     vp9_partition_breakout_weights_16[RESOLUTION_CTX][Q_CTX][FEATURES + 1] = {
142       {
143           {
144               -0.013154f,
145               -0.002404f,
146               -0.000977f,
147               0.008450f,
148               2.57404566f - 5.5f,
149           },
150           {
151               -0.019146f,
152               -0.004018f,
153               0.000064f,
154               0.008187f,
155               2.15043926f - 2.5f,
156           },
157           {
158               -0.075755f,
159               -0.010858f,
160               0.000030f,
161               0.024505f,
162               2.06848121f - 2.5f,
163           },
164       },
165       {
166           {
167               -0.007636f,
168               -0.002751f,
169               -0.000682f,
170               0.005968f,
171               0.19225763f - 4.5f,
172           },
173           {
174               -0.047306f,
175               -0.009113f,
176               -0.000518f,
177               0.016007f,
178               2.61068869f - 4.0f,
179           },
180           {
181               -0.069336f,
182               -0.010448f,
183               -0.001120f,
184               0.023083f,
185               1.47591054f - 5.5f,
186           },
187       },
188     };
189 
190 static const float vp9_partition_breakout_weights_8[RESOLUTION_CTX][Q_CTX]
191                                                    [FEATURES + 1] = {
192                                                      {
193                                                          {
194                                                              -0.011807f,
195                                                              -0.009873f,
196                                                              -0.000931f,
197                                                              0.034768f,
198                                                              1.32254851f - 2.0f,
199                                                          },
200                                                          {
201                                                              -0.003861f,
202                                                              -0.002701f,
203                                                              0.000100f,
204                                                              0.013876f,
205                                                              1.96755111f - 1.5f,
206                                                          },
207                                                          {
208                                                              -0.013522f,
209                                                              -0.008677f,
210                                                              -0.000562f,
211                                                              0.034468f,
212                                                              1.53440356f - 1.5f,
213                                                          },
214                                                      },
215                                                      {
216                                                          {
217                                                              -0.003221f,
218                                                              -0.002125f,
219                                                              0.000993f,
220                                                              0.012768f,
221                                                              0.03541421f - 2.0f,
222                                                          },
223                                                          {
224                                                              -0.006069f,
225                                                              -0.007335f,
226                                                              0.000229f,
227                                                              0.026104f,
228                                                              0.17135315f - 1.5f,
229                                                          },
230                                                          {
231                                                              -0.039894f,
232                                                              -0.011419f,
233                                                              0.000070f,
234                                                              0.061817f,
235                                                              0.6739977f - 1.5f,
236                                                          },
237                                                      },
238                                                    };
239 #undef FEATURES
240 #undef Q_CTX
241 #undef RESOLUTION_CTX
242 
243 // Rectangular partition search pruning model.
244 #define FEATURES 8
245 #define LABELS 4
246 #define NODES 16
247 static const float vp9_rect_part_nn_weights_16_layer0[FEATURES * NODES] = {
248   -0.432522f, 0.133070f,  -0.169187f, 0.768340f,  0.891228f,  0.554458f,
249   0.356000f,  0.403621f,  0.809165f,  0.778214f,  -0.520357f, 0.301451f,
250   -0.386972f, -0.314402f, 0.021878f,  1.148746f,  -0.462258f, -0.175524f,
251   -0.344589f, -0.475159f, -0.232322f, 0.471147f,  -0.489948f, 0.467740f,
252   -0.391550f, 0.208601f,  0.054138f,  0.076859f,  -0.309497f, -0.095927f,
253   0.225917f,  0.011582f,  -0.520730f, -0.585497f, 0.174036f,  0.072521f,
254   0.120771f,  -0.517234f, -0.581908f, -0.034003f, -0.694722f, -0.364368f,
255   0.290584f,  0.038373f,  0.685654f,  0.394019f,  0.759667f,  1.257502f,
256   -0.610516f, -0.185434f, 0.211997f,  -0.172458f, 0.044605f,  0.145316f,
257   -0.182525f, -0.147376f, 0.578742f,  0.312412f,  -0.446135f, -0.389112f,
258   0.454033f,  0.260490f,  0.664285f,  0.395856f,  -0.231827f, 0.215228f,
259   0.014856f,  -0.395462f, 0.479646f,  -0.391445f, -0.357788f, 0.166238f,
260   -0.056818f, -0.027783f, 0.060880f,  -1.604710f, 0.531268f,  0.282184f,
261   0.714944f,  0.093523f,  -0.218312f, -0.095546f, -0.285621f, -0.190871f,
262   -0.448340f, -0.016611f, 0.413913f,  -0.286720f, -0.158828f, -0.092635f,
263   -0.279551f, 0.166509f,  -0.088162f, 0.446543f,  -0.276830f, -0.065642f,
264   -0.176346f, -0.984754f, 0.338738f,  0.403809f,  0.738065f,  1.154439f,
265   0.750764f,  0.770959f,  -0.269403f, 0.295651f,  -0.331858f, 0.367144f,
266   0.279279f,  0.157419f,  -0.348227f, -0.168608f, -0.956000f, -0.647136f,
267   0.250516f,  0.858084f,  0.809802f,  0.492408f,  0.804841f,  0.282802f,
268   0.079395f,  -0.291771f, -0.024382f, -1.615880f, -0.445166f, -0.407335f,
269   -0.483044f, 0.141126f,
270 };
271 
272 static const float vp9_rect_part_nn_bias_16_layer0[NODES] = {
273   0.275384f,  -0.053745f, 0.000000f,  0.000000f, -0.178103f, 0.513965f,
274   -0.161352f, 0.228551f,  0.000000f,  1.013712f, 0.000000f,  0.000000f,
275   -1.144009f, -0.000006f, -0.241727f, 2.048764f,
276 };
277 
278 static const float vp9_rect_part_nn_weights_16_layer1[NODES * LABELS] = {
279   -1.435278f, 2.204691f,  -0.410718f, 0.202708f,  0.109208f,  1.059142f,
280   -0.306360f, 0.845906f,  0.489654f,  -1.121915f, -0.169133f, -0.003385f,
281   0.660590f,  -0.018711f, 1.227158f,  -2.967504f, 1.407345f,  -1.293243f,
282   -0.386921f, 0.300492f,  0.338824f,  -0.083250f, -0.069454f, -1.001827f,
283   -0.327891f, 0.899353f,  0.367397f,  -0.118601f, -0.171936f, -0.420646f,
284   -0.803319f, 2.029634f,  0.940268f,  -0.664484f, 0.339916f,  0.315944f,
285   0.157374f,  -0.402482f, -0.491695f, 0.595827f,  0.015031f,  0.255887f,
286   -0.466327f, -0.212598f, 0.136485f,  0.033363f,  -0.796921f, 1.414304f,
287   -0.282185f, -2.673571f, -0.280994f, 0.382658f,  -0.350902f, 0.227926f,
288   0.062602f,  -1.000199f, 0.433731f,  1.176439f,  -0.163216f, -0.229015f,
289   -0.640098f, -0.438852f, -0.947700f, 2.203434f,
290 };
291 
292 static const float vp9_rect_part_nn_bias_16_layer1[LABELS] = {
293   -0.875510f,
294   0.982408f,
295   0.560854f,
296   -0.415209f,
297 };
298 
299 static const NN_CONFIG vp9_rect_part_nnconfig_16 = {
300   FEATURES,  // num_inputs
301   LABELS,    // num_outputs
302   1,         // num_hidden_layers
303   {
304       NODES,
305   },  // num_hidden_nodes
306   {
307       vp9_rect_part_nn_weights_16_layer0,
308       vp9_rect_part_nn_weights_16_layer1,
309   },
310   {
311       vp9_rect_part_nn_bias_16_layer0,
312       vp9_rect_part_nn_bias_16_layer1,
313   },
314 };
315 
316 static const float vp9_rect_part_nn_weights_32_layer0[FEATURES * NODES] = {
317   -0.147312f, -0.753248f, 0.540206f,  0.661415f,  0.484117f,  -0.341609f,
318   0.016183f,  0.064177f,  0.781580f,  0.902232f,  -0.505342f, 0.325183f,
319   -0.231072f, -0.120107f, -0.076216f, 0.120038f,  0.403695f,  -0.463301f,
320   -0.192158f, 0.407442f,  0.106633f,  1.072371f,  -0.446779f, 0.467353f,
321   0.318812f,  -0.505996f, -0.008768f, -0.239598f, 0.085480f,  0.284640f,
322   -0.365045f, -0.048083f, -0.112090f, -0.067089f, 0.304138f,  -0.228809f,
323   0.383651f,  -0.196882f, 0.477039f,  -0.217978f, -0.506931f, -0.125675f,
324   0.050456f,  1.086598f,  0.732128f,  0.326941f,  0.103952f,  0.121769f,
325   -0.154487f, -0.255514f, 0.030591f,  -0.382797f, -0.019981f, -0.326570f,
326   0.149691f,  -0.435633f, -0.070795f, 0.167691f,  0.251413f,  -0.153405f,
327   0.160347f,  0.455107f,  -0.968580f, -0.575879f, 0.623115f,  -0.069793f,
328   -0.379768f, -0.965807f, -0.062057f, 0.071312f,  0.457098f,  0.350372f,
329   -0.460659f, -0.985393f, 0.359963f,  -0.093677f, 0.404272f,  -0.326896f,
330   -0.277752f, 0.609322f,  -0.114193f, -0.230701f, 0.089208f,  0.645381f,
331   0.494485f,  0.467876f,  -0.166187f, 0.251044f,  -0.394661f, 0.192895f,
332   -0.344777f, -0.041893f, -0.111163f, 0.066347f,  0.378158f,  -0.455465f,
333   0.339839f,  -0.418207f, -0.356515f, -0.227536f, -0.211091f, -0.122945f,
334   0.361772f,  -0.338095f, 0.004564f,  -0.398510f, 0.060876f,  -2.132504f,
335   -0.086776f, -0.029166f, 0.039241f,  0.222534f,  -0.188565f, -0.288792f,
336   -0.160789f, -0.123905f, 0.397916f,  -0.063779f, 0.167210f,  -0.445004f,
337   0.056889f,  0.207280f,  0.000101f,  0.384507f,  -1.721239f, -2.036402f,
338   -2.084403f, -2.060483f,
339 };
340 
341 static const float vp9_rect_part_nn_bias_32_layer0[NODES] = {
342   -0.859251f, -0.109938f, 0.091838f,  0.187817f,  -0.728265f, 0.253080f,
343   0.000000f,  -0.357195f, -0.031290f, -1.373237f, -0.761086f, 0.000000f,
344   -0.024504f, 1.765711f,  0.000000f,  1.505390f,
345 };
346 
347 static const float vp9_rect_part_nn_weights_32_layer1[NODES * LABELS] = {
348   0.680940f,  1.367178f,  0.403075f,  0.029957f,  0.500917f,  1.407776f,
349   -0.354002f, 0.011667f,  1.663767f,  0.959155f,  0.428323f,  -0.205345f,
350   -0.081850f, -3.920103f, -0.243802f, -4.253933f, -0.034020f, -1.361057f,
351   0.128236f,  -0.138422f, -0.025790f, -0.563518f, -0.148715f, -0.344381f,
352   -1.677389f, -0.868332f, -0.063792f, 0.052052f,  0.359591f,  2.739808f,
353   -0.414304f, 3.036597f,  -0.075368f, -1.019680f, 0.642501f,  0.209779f,
354   -0.374539f, -0.718294f, -0.116616f, -0.043212f, -1.787809f, -0.773262f,
355   0.068734f,  0.508309f,  0.099334f,  1.802239f,  -0.333538f, 2.708645f,
356   -0.447682f, -2.355555f, -0.506674f, -0.061028f, -0.310305f, -0.375475f,
357   0.194572f,  0.431788f,  -0.789624f, -0.031962f, 0.358353f,  0.382937f,
358   0.232002f,  2.321813f,  -0.037523f, 2.104652f,
359 };
360 
361 static const float vp9_rect_part_nn_bias_32_layer1[LABELS] = {
362   -0.693383f,
363   0.773661f,
364   0.426878f,
365   -0.070619f,
366 };
367 
368 static const NN_CONFIG vp9_rect_part_nnconfig_32 = {
369   FEATURES,  // num_inputs
370   LABELS,    // num_outputs
371   1,         // num_hidden_layers
372   {
373       NODES,
374   },  // num_hidden_nodes
375   {
376       vp9_rect_part_nn_weights_32_layer0,
377       vp9_rect_part_nn_weights_32_layer1,
378   },
379   {
380       vp9_rect_part_nn_bias_32_layer0,
381       vp9_rect_part_nn_bias_32_layer1,
382   },
383 };
384 #undef NODES
385 
386 #define NODES 24
387 static const float vp9_rect_part_nn_weights_64_layer0[FEATURES * NODES] = {
388   0.024671f,  -0.220610f, -0.284362f, -0.069556f, -0.315700f, 0.187861f,
389   0.139782f,  0.063110f,  0.796561f,  0.172868f,  -0.662194f, -1.393074f,
390   0.085003f,  0.393381f,  0.358477f,  -0.187268f, -0.370745f, 0.218287f,
391   0.027271f,  -0.254089f, -0.048236f, -0.459137f, 0.253171f,  0.122598f,
392   -0.550107f, -0.568456f, 0.159866f,  -0.246534f, 0.096384f,  -0.255460f,
393   0.077864f,  -0.334837f, 0.026921f,  -0.697252f, 0.345262f,  1.343578f,
394   0.815984f,  1.118211f,  1.574016f,  0.578476f,  -0.285967f, -0.508672f,
395   0.118137f,  0.037695f,  1.540510f,  1.256648f,  1.163819f,  1.172027f,
396   0.661551f,  -0.111980f, -0.434204f, -0.894217f, 0.570524f,  0.050292f,
397   -0.113680f, 0.000784f,  -0.211554f, -0.369394f, 0.158306f,  -0.512505f,
398   -0.238696f, 0.091498f,  -0.448490f, -0.491268f, -0.353112f, -0.303315f,
399   -0.428438f, 0.127998f,  -0.406790f, -0.401786f, -0.279888f, -0.384223f,
400   0.026100f,  0.041621f,  -0.315818f, -0.087888f, 0.353497f,  0.163123f,
401   -0.380128f, -0.090334f, -0.216647f, -0.117849f, -0.173502f, 0.301871f,
402   0.070854f,  0.114627f,  -0.050545f, -0.160381f, 0.595294f,  0.492696f,
403   -0.453858f, -1.154139f, 0.126000f,  0.034550f,  0.456665f,  -0.236618f,
404   -0.112640f, 0.050759f,  -0.449162f, 0.110059f,  0.147116f,  0.249358f,
405   -0.049894f, 0.063351f,  -0.004467f, 0.057242f,  -0.482015f, -0.174335f,
406   -0.085617f, -0.333808f, -0.358440f, -0.069006f, 0.099260f,  -1.243430f,
407   -0.052963f, 0.112088f,  -2.661115f, -2.445893f, -2.688174f, -2.624232f,
408   0.030494f,  0.161311f,  0.012136f,  0.207564f,  -2.776856f, -2.791940f,
409   -2.623962f, -2.918820f, 1.231619f,  -0.376692f, -0.698078f, 0.110336f,
410   -0.285378f, 0.258367f,  -0.180159f, -0.376608f, -0.034348f, -0.130206f,
411   0.160020f,  0.852977f,  0.580573f,  1.450782f,  1.357596f,  0.787382f,
412   -0.544004f, -0.014795f, 0.032121f,  -0.557696f, 0.159994f,  -0.540908f,
413   0.180380f,  -0.398045f, 0.705095f,  0.515103f,  -0.511521f, -1.271374f,
414   -0.231019f, 0.423647f,  0.064907f,  -0.255338f, -0.877748f, -0.667205f,
415   0.267847f,  0.135229f,  0.617844f,  1.349849f,  1.012623f,  0.730506f,
416   -0.078571f, 0.058401f,  0.053221f,  -2.426146f, -0.098808f, -0.138508f,
417   -0.153299f, 0.149116f,  -0.444243f, 0.301807f,  0.065066f,  0.092929f,
418   -0.372784f, -0.095540f, 0.192269f,  0.237894f,  0.080228f,  -0.214074f,
419   -0.011426f, -2.352367f, -0.085394f, -0.190361f, -0.001177f, 0.089197f,
420 };
421 
422 static const float vp9_rect_part_nn_bias_64_layer0[NODES] = {
423   0.000000f,  -0.057652f, -0.175413f, -0.175389f, -1.084097f, -1.423801f,
424   -0.076307f, -0.193803f, 0.000000f,  -0.066474f, -0.050318f, -0.019832f,
425   -0.038814f, -0.144184f, 2.652451f,  2.415006f,  0.197464f,  -0.729842f,
426   -0.173774f, 0.239171f,  0.486425f,  2.463304f,  -0.175279f, 2.352637f,
427 };
428 
429 static const float vp9_rect_part_nn_weights_64_layer1[NODES * LABELS] = {
430   -0.063237f, 1.925696f,  -0.182145f, -0.226687f, 0.602941f,  -0.941140f,
431   0.814598f,  -0.117063f, 0.282988f,  0.066369f,  0.096951f,  1.049735f,
432   -0.188188f, -0.281227f, -4.836746f, -5.047797f, 0.892358f,  0.417145f,
433   -0.279849f, 1.335945f,  0.660338f,  -2.757938f, -0.115714f, -1.862183f,
434   -0.045980f, -1.597624f, -0.586822f, -0.615589f, -0.330537f, 1.068496f,
435   -0.167290f, 0.141290f,  -0.112100f, 0.232761f,  0.252307f,  -0.399653f,
436   0.353118f,  0.241583f,  2.635241f,  4.026119f,  -1.137327f, -0.052446f,
437   -0.139814f, -1.104256f, -0.759391f, 2.508457f,  -0.526297f, 2.095348f,
438   -0.444473f, -1.090452f, 0.584122f,  0.468729f,  -0.368865f, 1.041425f,
439   -1.079504f, 0.348837f,  0.390091f,  0.416191f,  0.212906f,  -0.660255f,
440   0.053630f,  0.209476f,  3.595525f,  2.257293f,  -0.514030f, 0.074203f,
441   -0.375862f, -1.998307f, -0.930310f, 1.866686f,  -0.247137f, 1.087789f,
442   0.100186f,  0.298150f,  0.165265f,  0.050478f,  0.249167f,  0.371789f,
443   -0.294497f, 0.202954f,  0.037310f,  0.193159f,  0.161551f,  0.301597f,
444   0.299286f,  0.185946f,  0.822976f,  2.066130f,  -1.724588f, 0.055977f,
445   -0.330747f, -0.067747f, -0.475801f, 1.555958f,  -0.025808f, -0.081516f,
446 };
447 
448 static const float vp9_rect_part_nn_bias_64_layer1[LABELS] = {
449   -0.090723f,
450   0.894968f,
451   0.844754f,
452   -3.496194f,
453 };
454 
455 static const NN_CONFIG vp9_rect_part_nnconfig_64 = {
456   FEATURES,  // num_inputs
457   LABELS,    // num_outputs
458   1,         // num_hidden_layers
459   {
460       NODES,
461   },  // num_hidden_nodes
462   {
463       vp9_rect_part_nn_weights_64_layer0,
464       vp9_rect_part_nn_weights_64_layer1,
465   },
466   {
467       vp9_rect_part_nn_bias_64_layer0,
468       vp9_rect_part_nn_bias_64_layer1,
469   },
470 };
471 #undef FEATURES
472 #undef LABELS
473 #undef NODES
474 
475 #define FEATURES 7
476 // Partition pruning model(neural nets).
477 static const float vp9_partition_nn_weights_64x64_layer0[FEATURES * 8] = {
478   -3.571348f, 0.014835f,  -3.255393f, -0.098090f, -0.013120f, 0.000221f,
479   0.056273f,  0.190179f,  -0.268130f, -1.828242f, -0.010655f, 0.937244f,
480   -0.435120f, 0.512125f,  1.610679f,  0.190816f,  -0.799075f, -0.377348f,
481   -0.144232f, 0.614383f,  -0.980388f, 1.754150f,  -0.185603f, -0.061854f,
482   -0.807172f, 1.240177f,  1.419531f,  -0.438544f, -5.980774f, 0.139045f,
483   -0.032359f, -0.068887f, -1.237918f, 0.115706f,  0.003164f,  2.924212f,
484   1.246838f,  -0.035833f, 0.810011f,  -0.805894f, 0.010966f,  0.076463f,
485   -4.226380f, -2.437764f, -0.010619f, -0.020935f, -0.451494f, 0.300079f,
486   -0.168961f, -3.326450f, -2.731094f, 0.002518f,  0.018840f,  -1.656815f,
487   0.068039f,  0.010586f,
488 };
489 
490 static const float vp9_partition_nn_bias_64x64_layer0[8] = {
491   -3.469882f, 0.683989f, 0.194010f,  0.313782f,
492   -3.153335f, 2.245849f, -1.946190f, -3.740020f,
493 };
494 
495 static const float vp9_partition_nn_weights_64x64_layer1[8] = {
496   -8.058566f, 0.108306f, -0.280620f, -0.818823f,
497   -6.445117f, 0.865364f, -1.127127f, -8.808660f,
498 };
499 
500 static const float vp9_partition_nn_bias_64x64_layer1[1] = {
501   6.46909416f,
502 };
503 
504 static const NN_CONFIG vp9_partition_nnconfig_64x64 = {
505   FEATURES,  // num_inputs
506   1,         // num_outputs
507   1,         // num_hidden_layers
508   {
509       8,
510   },  // num_hidden_nodes
511   {
512       vp9_partition_nn_weights_64x64_layer0,
513       vp9_partition_nn_weights_64x64_layer1,
514   },
515   {
516       vp9_partition_nn_bias_64x64_layer0,
517       vp9_partition_nn_bias_64x64_layer1,
518   },
519 };
520 
521 static const float vp9_partition_nn_weights_32x32_layer0[FEATURES * 8] = {
522   -0.295437f, -4.002648f, -0.205399f, -0.060919f, 0.708037f,  0.027221f,
523   -0.039137f, -0.907724f, -3.151662f, 0.007106f,  0.018726f,  -0.534928f,
524   0.022744f,  0.000159f,  -1.717189f, -3.229031f, -0.027311f, 0.269863f,
525   -0.400747f, -0.394366f, -0.108878f, 0.603027f,  0.455369f,  -0.197170f,
526   1.241746f,  -1.347820f, -0.575636f, -0.462879f, -2.296426f, 0.196696f,
527   -0.138347f, -0.030754f, -0.200774f, 0.453795f,  0.055625f,  -3.163116f,
528   -0.091003f, -0.027028f, -0.042984f, -0.605185f, 0.143240f,  -0.036439f,
529   -0.801228f, 0.313409f,  -0.159942f, 0.031267f,  0.886454f,  -1.531644f,
530   -0.089655f, 0.037683f,  -0.163441f, -0.130454f, -0.058344f, 0.060011f,
531   0.275387f,  1.552226f,
532 };
533 
534 static const float vp9_partition_nn_bias_32x32_layer0[8] = {
535   -0.838372f, -2.609089f, -0.055763f, 1.329485f,
536   -1.297638f, -2.636622f, -0.826909f, 1.012644f,
537 };
538 
539 static const float vp9_partition_nn_weights_32x32_layer1[8] = {
540   -1.792632f, -7.322353f, -0.683386f, 0.676564f,
541   -1.488118f, -7.527719f, 1.240163f,  0.614309f,
542 };
543 
544 static const float vp9_partition_nn_bias_32x32_layer1[1] = {
545   4.97422546f,
546 };
547 
548 static const NN_CONFIG vp9_partition_nnconfig_32x32 = {
549   FEATURES,  // num_inputs
550   1,         // num_outputs
551   1,         // num_hidden_layers
552   {
553       8,
554   },  // num_hidden_nodes
555   {
556       vp9_partition_nn_weights_32x32_layer0,
557       vp9_partition_nn_weights_32x32_layer1,
558   },
559   {
560       vp9_partition_nn_bias_32x32_layer0,
561       vp9_partition_nn_bias_32x32_layer1,
562   },
563 };
564 
565 static const float vp9_partition_nn_weights_16x16_layer0[FEATURES * 8] = {
566   -1.717673f, -4.718130f, -0.125725f, -0.183427f, -0.511764f, 0.035328f,
567   0.130891f,  -3.096753f, 0.174968f,  -0.188769f, -0.640796f, 1.305661f,
568   1.700638f,  -0.073806f, -4.006781f, -1.630999f, -0.064863f, -0.086410f,
569   -0.148617f, 0.172733f,  -0.018619f, 2.152595f,  0.778405f,  -0.156455f,
570   0.612995f,  -0.467878f, 0.152022f,  -0.236183f, 0.339635f,  -0.087119f,
571   -3.196610f, -1.080401f, -0.637704f, -0.059974f, 1.706298f,  -0.793705f,
572   -6.399260f, 0.010624f,  -0.064199f, -0.650621f, 0.338087f,  -0.001531f,
573   1.023655f,  -3.700272f, -0.055281f, -0.386884f, 0.375504f,  -0.898678f,
574   0.281156f,  -0.314611f, 0.863354f,  -0.040582f, -0.145019f, 0.029329f,
575   -2.197880f, -0.108733f,
576 };
577 
578 static const float vp9_partition_nn_bias_16x16_layer0[8] = {
579   0.411516f,  -2.143737f, -3.693192f, 2.123142f,
580   -1.356910f, -3.561016f, -0.765045f, -2.417082f,
581 };
582 
583 static const float vp9_partition_nn_weights_16x16_layer1[8] = {
584   -0.619755f, -2.202391f, -4.337171f, 0.611319f,
585   0.377677f,  -4.998723f, -1.052235f, 1.949922f,
586 };
587 
588 static const float vp9_partition_nn_bias_16x16_layer1[1] = {
589   3.20981717f,
590 };
591 
592 static const NN_CONFIG vp9_partition_nnconfig_16x16 = {
593   FEATURES,  // num_inputs
594   1,         // num_outputs
595   1,         // num_hidden_layers
596   {
597       8,
598   },  // num_hidden_nodes
599   {
600       vp9_partition_nn_weights_16x16_layer0,
601       vp9_partition_nn_weights_16x16_layer1,
602   },
603   {
604       vp9_partition_nn_bias_16x16_layer0,
605       vp9_partition_nn_bias_16x16_layer1,
606   },
607 };
608 #undef FEATURES
609 
610 #define FEATURES 6
611 static const float vp9_var_part_nn_weights_64_layer0[FEATURES * 8] = {
612   -0.249572f, 0.205532f,  -2.175608f, 1.094836f,  -2.986370f, 0.193160f,
613   -0.143823f, 0.378511f,  -1.997788f, -2.166866f, -1.930158f, -1.202127f,
614   -0.611875f, -0.506422f, -0.432487f, 0.071205f,  0.578172f,  -0.154285f,
615   -0.051830f, 0.331681f,  -1.457177f, -2.443546f, -2.000302f, -1.389283f,
616   0.372084f,  -0.464917f, 2.265235f,  2.385787f,  2.312722f,  2.127868f,
617   -0.403963f, -0.177860f, -0.436751f, -0.560539f, 0.254903f,  0.193976f,
618   -0.305611f, 0.256632f,  0.309388f,  -0.437439f, 1.702640f,  -5.007069f,
619   -0.323450f, 0.294227f,  1.267193f,  1.056601f,  0.387181f,  -0.191215f,
620 };
621 
622 static const float vp9_var_part_nn_bias_64_layer0[8] = {
623   -0.044396f, -0.938166f, 0.000000f,  -0.916375f,
624   1.242299f,  0.000000f,  -0.405734f, 0.014206f,
625 };
626 
627 static const float vp9_var_part_nn_weights_64_layer1[8] = {
628   1.635945f,  0.979557f,  0.455315f, 1.197199f,
629   -2.251024f, -0.464953f, 1.378676f, -0.111927f,
630 };
631 
632 static const float vp9_var_part_nn_bias_64_layer1[1] = {
633   -0.37972447f,
634 };
635 
636 static const NN_CONFIG vp9_var_part_nnconfig_64 = {
637   FEATURES,  // num_inputs
638   1,         // num_outputs
639   1,         // num_hidden_layers
640   {
641       8,
642   },  // num_hidden_nodes
643   {
644       vp9_var_part_nn_weights_64_layer0,
645       vp9_var_part_nn_weights_64_layer1,
646   },
647   {
648       vp9_var_part_nn_bias_64_layer0,
649       vp9_var_part_nn_bias_64_layer1,
650   },
651 };
652 
653 static const float vp9_var_part_nn_weights_32_layer0[FEATURES * 8] = {
654   0.067243f,  -0.083598f, -2.191159f, 2.726434f,  -3.324013f, 3.477977f,
655   0.323736f,  -0.510199f, 2.960693f,  2.937661f,  2.888476f,  2.938315f,
656   -0.307602f, -0.503353f, -0.080725f, -0.473909f, -0.417162f, 0.457089f,
657   0.665153f,  -0.273210f, 0.028279f,  0.972220f,  -0.445596f, 1.756611f,
658   -0.177892f, -0.091758f, 0.436661f,  -0.521506f, 0.133786f,  0.266743f,
659   0.637367f,  -0.160084f, -1.396269f, 1.020841f,  -1.112971f, 0.919496f,
660   -0.235883f, 0.651954f,  0.109061f,  -0.429463f, 0.740839f,  -0.962060f,
661   0.299519f,  -0.386298f, 1.550231f,  2.464915f,  1.311969f,  2.561612f,
662 };
663 
664 static const float vp9_var_part_nn_bias_32_layer0[8] = {
665   0.368242f, 0.736617f, 0.000000f,  0.757287f,
666   0.000000f, 0.613248f, -0.776390f, 0.928497f,
667 };
668 
669 static const float vp9_var_part_nn_weights_32_layer1[8] = {
670   0.939884f, -2.420850f, -0.410489f, -0.186690f,
671   0.063287f, -0.522011f, 0.484527f,  -0.639625f,
672 };
673 
674 static const float vp9_var_part_nn_bias_32_layer1[1] = {
675   -0.6455006f,
676 };
677 
678 static const NN_CONFIG vp9_var_part_nnconfig_32 = {
679   FEATURES,  // num_inputs
680   1,         // num_outputs
681   1,         // num_hidden_layers
682   {
683       8,
684   },  // num_hidden_nodes
685   {
686       vp9_var_part_nn_weights_32_layer0,
687       vp9_var_part_nn_weights_32_layer1,
688   },
689   {
690       vp9_var_part_nn_bias_32_layer0,
691       vp9_var_part_nn_bias_32_layer1,
692   },
693 };
694 
695 static const float vp9_var_part_nn_weights_16_layer0[FEATURES * 8] = {
696   0.742567f,  -0.580624f, -0.244528f, 0.331661f,  -0.113949f, -0.559295f,
697   -0.386061f, 0.438653f,  1.467463f,  0.211589f,  0.513972f,  1.067855f,
698   -0.876679f, 0.088560f,  -0.687483f, -0.380304f, -0.016412f, 0.146380f,
699   0.015318f,  0.000351f,  -2.764887f, 3.269717f,  2.752428f,  -2.236754f,
700   0.561539f,  -0.852050f, -0.084667f, 0.202057f,  0.197049f,  0.364922f,
701   -0.463801f, 0.431790f,  1.872096f,  -0.091887f, -0.055034f, 2.443492f,
702   -0.156958f, -0.189571f, -0.542424f, -0.589804f, -0.354422f, 0.401605f,
703   0.642021f,  -0.875117f, 2.040794f,  1.921070f,  1.792413f,  1.839727f,
704 };
705 
706 static const float vp9_var_part_nn_bias_16_layer0[8] = {
707   2.901234f, -1.940932f, -0.198970f, -0.406524f,
708   0.059422f, -1.879207f, -0.232340f, 2.979821f,
709 };
710 
711 static const float vp9_var_part_nn_weights_16_layer1[8] = {
712   -0.528731f, 0.375234f, -0.088422f, 0.668629f,
713   0.870449f,  0.578735f, 0.546103f,  -1.957207f,
714 };
715 
716 static const float vp9_var_part_nn_bias_16_layer1[1] = {
717   -1.95769405f,
718 };
719 
720 static const NN_CONFIG vp9_var_part_nnconfig_16 = {
721   FEATURES,  // num_inputs
722   1,         // num_outputs
723   1,         // num_hidden_layers
724   {
725       8,
726   },  // num_hidden_nodes
727   {
728       vp9_var_part_nn_weights_16_layer0,
729       vp9_var_part_nn_weights_16_layer1,
730   },
731   {
732       vp9_var_part_nn_bias_16_layer0,
733       vp9_var_part_nn_bias_16_layer1,
734   },
735 };
736 #undef FEATURES
737 
738 #define FEATURES 12
739 #define LABELS 1
740 #define NODES 8
741 static const float vp9_part_split_nn_weights_64_layer0[FEATURES * NODES] = {
742   -0.609728f, -0.409099f, -0.472449f, 0.183769f,  -0.457740f, 0.081089f,
743   0.171003f,  0.578696f,  -0.019043f, -0.856142f, 0.557369f,  -1.779424f,
744   -0.274044f, -0.320632f, -0.392531f, -0.359462f, -0.404106f, -0.288357f,
745   0.200620f,  0.038013f,  -0.430093f, 0.235083f,  -0.487442f, 0.424814f,
746   -0.232758f, -0.442943f, 0.229397f,  -0.540301f, -0.648421f, -0.649747f,
747   -0.171638f, 0.603824f,  0.468497f,  -0.421580f, 0.178840f,  -0.533838f,
748   -0.029471f, -0.076296f, 0.197426f,  -0.187908f, -0.003950f, -0.065740f,
749   0.085165f,  -0.039674f, -5.640702f, 1.909538f,  -1.434604f, 3.294606f,
750   -0.788812f, 0.196864f,  0.057012f,  -0.019757f, 0.336233f,  0.075378f,
751   0.081503f,  0.491864f,  -1.899470f, -1.764173f, -1.888137f, -1.762343f,
752   0.845542f,  0.202285f,  0.381948f,  -0.150996f, 0.556893f,  -0.305354f,
753   0.561482f,  -0.021974f, -0.703117f, 0.268638f,  -0.665736f, 1.191005f,
754   -0.081568f, -0.115653f, 0.272029f,  -0.140074f, 0.072683f,  0.092651f,
755   -0.472287f, -0.055790f, -0.434425f, 0.352055f,  0.048246f,  0.372865f,
756   0.111499f,  -0.338304f, 0.739133f,  0.156519f,  -0.594644f, 0.137295f,
757   0.613350f,  -0.165102f, -1.003731f, 0.043070f,  -0.887896f, -0.174202f,
758 };
759 
760 static const float vp9_part_split_nn_bias_64_layer0[NODES] = {
761   1.182714f,  0.000000f,  0.902019f,  0.953115f,
762   -1.372486f, -1.288740f, -0.155144f, -3.041362f,
763 };
764 
765 static const float vp9_part_split_nn_weights_64_layer1[NODES * LABELS] = {
766   0.841214f,  0.456016f,  0.869270f, 1.692999f,
767   -1.700494f, -0.911761f, 0.030111f, -1.447548f,
768 };
769 
770 static const float vp9_part_split_nn_bias_64_layer1[LABELS] = {
771   1.17782545f,
772 };
773 
774 static const NN_CONFIG vp9_part_split_nnconfig_64 = {
775   FEATURES,  // num_inputs
776   LABELS,    // num_outputs
777   1,         // num_hidden_layers
778   {
779       NODES,
780   },  // num_hidden_nodes
781   {
782       vp9_part_split_nn_weights_64_layer0,
783       vp9_part_split_nn_weights_64_layer1,
784   },
785   {
786       vp9_part_split_nn_bias_64_layer0,
787       vp9_part_split_nn_bias_64_layer1,
788   },
789 };
790 
791 static const float vp9_part_split_nn_weights_32_layer0[FEATURES * NODES] = {
792   -0.105488f, -0.218662f, 0.010980f,  -0.226979f, 0.028076f,  0.743430f,
793   0.789266f,  0.031907f,  -1.464200f, 0.222336f,  -1.068493f, -0.052712f,
794   -0.176181f, -0.102654f, -0.973932f, -0.182637f, -0.198000f, 0.335977f,
795   0.271346f,  0.133005f,  1.674203f,  0.689567f,  0.657133f,  0.283524f,
796   0.115529f,  0.738327f,  0.317184f,  -0.179736f, 0.403691f,  0.679350f,
797   0.048925f,  0.271338f,  -1.538921f, -0.900737f, -1.377845f, 0.084245f,
798   0.803122f,  -0.107806f, 0.103045f,  -0.023335f, -0.098116f, -0.127809f,
799   0.037665f,  -0.523225f, 1.622185f,  1.903999f,  1.358889f,  1.680785f,
800   0.027743f,  0.117906f,  -0.158810f, 0.057775f,  0.168257f,  0.062414f,
801   0.086228f,  -0.087381f, -3.066082f, 3.021855f,  -4.092155f, 2.550104f,
802   -0.230022f, -0.207445f, -0.000347f, 0.034042f,  0.097057f,  0.220088f,
803   -0.228841f, -0.029405f, -1.507174f, -1.455184f, 2.624904f,  2.643355f,
804   0.319912f,  0.585531f,  -1.018225f, -0.699606f, 1.026490f,  0.169952f,
805   -0.093579f, -0.142352f, -0.107256f, 0.059598f,  0.043190f,  0.507543f,
806   -0.138617f, 0.030197f,  0.059574f,  -0.634051f, -0.586724f, -0.148020f,
807   -0.334380f, 0.459547f,  1.620600f,  0.496850f,  0.639480f,  -0.465715f,
808 };
809 
810 static const float vp9_part_split_nn_bias_32_layer0[NODES] = {
811   -1.125885f, 0.753197f, -0.825808f, 0.004839f,
812   0.583920f,  0.718062f, 0.976741f,  0.796188f,
813 };
814 
815 static const float vp9_part_split_nn_weights_32_layer1[NODES * LABELS] = {
816   -0.458745f, 0.724624f, -0.479720f, -2.199872f,
817   1.162661f,  1.194153f, -0.716896f, 0.824080f,
818 };
819 
820 static const float vp9_part_split_nn_bias_32_layer1[LABELS] = {
821   0.71644074f,
822 };
823 
824 static const NN_CONFIG vp9_part_split_nnconfig_32 = {
825   FEATURES,  // num_inputs
826   LABELS,    // num_outputs
827   1,         // num_hidden_layers
828   {
829       NODES,
830   },  // num_hidden_nodes
831   {
832       vp9_part_split_nn_weights_32_layer0,
833       vp9_part_split_nn_weights_32_layer1,
834   },
835   {
836       vp9_part_split_nn_bias_32_layer0,
837       vp9_part_split_nn_bias_32_layer1,
838   },
839 };
840 
841 static const float vp9_part_split_nn_weights_16_layer0[FEATURES * NODES] = {
842   -0.003629f, -0.046852f, 0.220428f,  -0.033042f, 0.049365f,  0.112818f,
843   -0.306149f, -0.005872f, 1.066947f,  -2.290226f, 2.159505f,  -0.618714f,
844   -0.213294f, 0.451372f,  -0.199459f, 0.223730f,  -0.321709f, 0.063364f,
845   0.148704f,  -0.293371f, 0.077225f,  -0.421947f, -0.515543f, -0.240975f,
846   -0.418516f, 1.036523f,  -0.009165f, 0.032484f,  1.086549f,  0.220322f,
847   -0.247585f, -0.221232f, -0.225050f, 0.993051f,  0.285907f,  1.308846f,
848   0.707456f,  0.335152f,  0.234556f,  0.264590f,  -0.078033f, 0.542226f,
849   0.057777f,  0.163471f,  0.039245f,  -0.725960f, 0.963780f,  -0.972001f,
850   0.252237f,  -0.192745f, -0.836571f, -0.460539f, -0.528713f, -0.160198f,
851   -0.621108f, 0.486405f,  -0.221923f, 1.519426f,  -0.857871f, 0.411595f,
852   0.947188f,  0.203339f,  0.174526f,  0.016382f,  0.256879f,  0.049818f,
853   0.057836f,  -0.659096f, 0.459894f,  0.174695f,  0.379359f,  0.062530f,
854   -0.210201f, -0.355788f, -0.208432f, -0.401723f, -0.115373f, 0.191336f,
855   -0.109342f, 0.002455f,  -0.078746f, -0.391871f, 0.149892f,  -0.239615f,
856   -0.520709f, 0.118568f,  -0.437975f, 0.118116f,  -0.565426f, -0.206446f,
857   0.113407f,  0.558894f,  0.534627f,  1.154350f,  -0.116833f, 1.723311f,
858 };
859 
860 static const float vp9_part_split_nn_bias_16_layer0[NODES] = {
861   0.013109f,  -0.034341f, 0.679845f,  -0.035781f,
862   -0.104183f, 0.098055f,  -0.041130f, 0.160107f,
863 };
864 
865 static const float vp9_part_split_nn_weights_16_layer1[NODES * LABELS] = {
866   1.499564f, -0.403259f, 1.366532f, -0.469868f,
867   0.482227f, -2.076697f, 0.527691f, 0.540495f,
868 };
869 
870 static const float vp9_part_split_nn_bias_16_layer1[LABELS] = {
871   0.01134653f,
872 };
873 
874 static const NN_CONFIG vp9_part_split_nnconfig_16 = {
875   FEATURES,  // num_inputs
876   LABELS,    // num_outputs
877   1,         // num_hidden_layers
878   {
879       NODES,
880   },  // num_hidden_nodes
881   {
882       vp9_part_split_nn_weights_16_layer0,
883       vp9_part_split_nn_weights_16_layer1,
884   },
885   {
886       vp9_part_split_nn_bias_16_layer0,
887       vp9_part_split_nn_bias_16_layer1,
888   },
889 };
890 
891 static const float vp9_part_split_nn_weights_8_layer0[FEATURES * NODES] = {
892   -0.668875f, -0.159078f, -0.062663f, -0.483785f, -0.146814f, -0.608975f,
893   -0.589145f, 0.203704f,  -0.051007f, -0.113769f, -0.477511f, -0.122603f,
894   -1.329890f, 1.403386f,  0.199636f,  -0.161139f, 2.182090f,  -0.014307f,
895   0.015755f,  -0.208468f, 0.884353f,  0.815920f,  0.632464f,  0.838225f,
896   1.369483f,  -0.029068f, 0.570213f,  -0.573546f, 0.029617f,  0.562054f,
897   -0.653093f, -0.211910f, -0.661013f, -0.384418f, -0.574038f, -0.510069f,
898   0.173047f,  -0.274231f, -1.044008f, -0.422040f, -0.810296f, 0.144069f,
899   -0.406704f, 0.411230f,  -0.144023f, 0.745651f,  -0.595091f, 0.111787f,
900   0.840651f,  0.030123f,  -0.242155f, 0.101486f,  -0.017889f, -0.254467f,
901   -0.285407f, -0.076675f, -0.549542f, -0.013544f, -0.686566f, -0.755150f,
902   1.623949f,  -0.286369f, 0.170976f,  0.016442f,  -0.598353f, -0.038540f,
903   0.202597f,  -0.933582f, 0.599510f,  0.362273f,  0.577722f,  0.477603f,
904   0.767097f,  0.431532f,  0.457034f,  0.223279f,  0.381349f,  0.033777f,
905   0.423923f,  -0.664762f, 0.385662f,  0.075744f,  0.182681f,  0.024118f,
906   0.319408f,  -0.528864f, 0.976537f,  -0.305971f, -0.189380f, -0.241689f,
907   -1.318092f, 0.088647f,  -0.109030f, -0.945654f, 1.082797f,  0.184564f,
908 };
909 
910 static const float vp9_part_split_nn_bias_8_layer0[NODES] = {
911   -0.237472f, 2.051396f,  0.297062f, -0.730194f,
912   0.060472f,  -0.565959f, 0.560869f, -0.395448f,
913 };
914 
915 static const float vp9_part_split_nn_weights_8_layer1[NODES * LABELS] = {
916   0.568121f,  1.575915f,  -0.544309f, 0.751595f,
917   -0.117911f, -1.340730f, -0.739671f, 0.661216f,
918 };
919 
920 static const float vp9_part_split_nn_bias_8_layer1[LABELS] = {
921   -0.63375306f,
922 };
923 
924 static const NN_CONFIG vp9_part_split_nnconfig_8 = {
925   FEATURES,  // num_inputs
926   LABELS,    // num_outputs
927   1,         // num_hidden_layers
928   {
929       NODES,
930   },  // num_hidden_nodes
931   {
932       vp9_part_split_nn_weights_8_layer0,
933       vp9_part_split_nn_weights_8_layer1,
934   },
935   {
936       vp9_part_split_nn_bias_8_layer0,
937       vp9_part_split_nn_bias_8_layer1,
938   },
939 };
940 #undef NODES
941 #undef FEATURES
942 #undef LABELS
943 
944 // Partition pruning model(linear).
945 static const float vp9_partition_feature_mean[24] = {
946   303501.697372f, 3042630.372158f, 24.694696f, 1.392182f,
947   689.413511f,    162.027012f,     1.478213f,  0.0,
948   135382.260230f, 912738.513263f,  28.845217f, 1.515230f,
949   544.158492f,    131.807995f,     1.436863f,  0.0f,
950   43682.377587f,  208131.711766f,  28.084737f, 1.356677f,
951   138.254122f,    119.522553f,     1.252322f,  0.0f,
952 };
953 
954 static const float vp9_partition_feature_std[24] = {
955   673689.212982f, 5996652.516628f, 0.024449f, 1.989792f,
956   985.880847f,    0.014638f,       2.001898f, 0.0f,
957   208798.775332f, 1812548.443284f, 0.018693f, 1.838009f,
958   396.986910f,    0.015657f,       1.332541f, 0.0f,
959   55888.847031f,  448587.962714f,  0.017900f, 1.904776f,
960   98.652832f,     0.016598f,       1.320992f, 0.0f,
961 };
962 
963 // Error tolerance: 0.01%-0.0.05%-0.1%
964 static const float vp9_partition_linear_weights[24] = {
965   0.111736f, 0.289977f, 0.042219f, 0.204765f, 0.120410f, -0.143863f,
966   0.282376f, 0.847811f, 0.637161f, 0.131570f, 0.018636f, 0.202134f,
967   0.112797f, 0.028162f, 0.182450f, 1.124367f, 0.386133f, 0.083700f,
968   0.050028f, 0.150873f, 0.061119f, 0.109318f, 0.127255f, 0.625211f,
969 };
970 
971 #ifdef __cplusplus
972 }  // extern "C"
973 #endif
974 
975 #endif  // VPX_VP9_ENCODER_VP9_PARTITION_MODELS_H_
976