aboutsummaryrefslogtreecommitdiffstats
path: root/nihav-duck/src/codecs/vp7data.rs
blob: 8e60b3bcfbf839de91ff8b174100897007645a3b (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
pub const KF_Y_MODE_TREE_PROBS: &[u8; 4] = &[ 145, 156, 163, 128 ];
pub const KF_UV_MODE_TREE_PROBS: &[u8; 3] = &[ 142, 114, 183 ];
pub const Y_MODE_TREE_PROBS: &[u8; 4] = &[ 112, 86, 140, 37 ];
pub const UV_MODE_TREE_PROBS: &[u8; 3] = &[ 162, 101, 204 ];

pub const MV_UPDATE_PROBS: [[u8; 17]; 2] = [
    [ 237, 246, 253, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 250, 250, 252 ],
    [ 231, 243, 245, 253, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 251, 251, 254 ]
];
pub const DEFAULT_MV_PROBS: [[u8; 17]; 2] = [
    [ 162, 128, 225, 146, 172, 147, 214,  39, 156, 247, 210, 135,  68, 138, 220, 239, 246 ],
    [ 164, 128, 204, 170, 119, 235, 140, 230, 228, 244, 184, 201,  44, 173, 221, 239, 253 ]
];
pub const MV_SPLIT_MODE_PROBS: [u8; 3] = [ 110, 111, 150 ];
pub const SUB_MV_REF_PROBS: [u8; 3] = [ 180, 162, 25 ];

pub const INTER_MODE_PROBS: [[u8; 4]; 31] = [
    [   3,   3,   1, 246 ],
    [   7,  89,  66, 239 ],
    [  10,  90,  78, 238 ],
    [  14, 118,  95, 241 ],
    [  14, 123, 106, 238 ],
    [  20, 140, 109, 240 ],
    [  13, 155, 103, 238 ],
    [  21, 158,  99, 240 ],
    [  27,  82, 108, 232 ],
    [  19,  99, 123, 217 ],
    [  45, 139, 148, 236 ],
    [  50, 117, 144, 235 ],
    [  57, 128, 164, 238 ],
    [  69, 139, 171, 239 ],
    [  74, 154, 179, 238 ],
    [ 112, 165, 186, 242 ],
    [  98, 143, 185, 245 ],
    [ 105, 153, 190, 250 ],
    [ 124, 167, 192, 245 ],
    [ 131, 186, 203, 246 ],
    [  59, 184, 222, 224 ],
    [ 148, 215, 214, 213 ],
    [ 137, 211, 210, 219 ],
    [ 190, 227, 128, 228 ],
    [ 183, 228, 128, 228 ],
    [ 194, 234, 128, 228 ],
    [ 202, 236, 128, 228 ],
    [ 205, 240, 128, 228 ],
    [ 205, 244, 128, 228 ],
    [ 225, 246, 128, 228 ],
    [ 233, 251, 128, 228 ]
];

pub const B_MODE_TREE_PROBS: &[u8; 9] = &[ 120, 90, 79, 133, 87, 85, 80, 111, 151 ];
pub const KF_B_MODE_TREE_PROBS: [[[u8; 9]; 10]; 10] = [
  [
    [ 231, 120,  48,  89, 115, 113, 120, 152, 112 ],
    [ 152, 179,  64, 126, 170, 118,  46,  70,  95 ],
    [ 175,  69, 143,  80,  85,  82,  72, 155, 103 ],
    [  56,  58,  10, 171, 218, 189,  17,  13, 152 ],
    [ 144,  71,  10,  38, 171, 213, 144,  34,  26 ],
    [ 114,  26,  17, 163,  44, 195,  21,  10, 173 ],
    [ 121,  24,  80, 195,  26,  62,  44,  64,  85 ],
    [ 170,  46,  55,  19, 136, 160,  33, 206,  71 ],
    [  63,  20,   8, 114, 114, 208,  12,   9, 226 ],
    [  81,  40,  11,  96, 182,  84,  29,  16,  36 ],
  ], [
    [ 134, 183,  89, 137,  98, 101, 106, 165, 148 ],
    [  72, 187, 100, 130, 157, 111,  32,  75,  80 ],
    [  66, 102, 167,  99,  74,  62,  40, 234, 128 ],
    [  41,  53,   9, 178, 241, 141,  26,   8, 107 ],
    [ 104,  79,  12,  27, 217, 255,  87,  17,   7 ],
    [  74,  43,  26, 146,  73, 166,  49,  23, 157 ],
    [  65,  38, 105, 160,  51,  52,  31, 115, 128 ],
    [  87,  68,  71,  44, 114,  51,  15, 186,  23 ],
    [  47,  41,  14, 110, 182, 183,  21,  17, 194 ],
    [  66,  45,  25, 102, 197, 189,  23,  18,  22 ],
  ], [
    [  88,  88, 147, 150,  42,  46,  45, 196, 205 ],
    [  43,  97, 183, 117,  85,  38,  35, 179,  61 ],
    [  39,  53, 200,  87,  26,  21,  43, 232, 171 ],
    [  56,  34,  51, 104, 114, 102,  29,  93,  77 ],
    [ 107,  54,  32,  26,  51,   1,  81,  43,  31 ],
    [  39,  28,  85, 171,  58, 165,  90,  98,  64 ],
    [  34,  22, 116, 206,  23,  34,  43, 166,  73 ],
    [  68,  25, 106,  22,  64, 171,  36, 225, 114 ],
    [  34,  19,  21, 102, 132, 188,  16,  76, 124 ],
    [  62,  18,  78,  95,  85,  57,  50,  48,  51 ],
  ], [
    [ 193, 101,  35, 159, 215, 111,  89,  46, 111 ],
    [  60, 148,  31, 172, 219, 228,  21,  18, 111 ],
    [ 112, 113,  77,  85, 179, 255,  38, 120, 114 ],
    [  40,  42,   1, 196, 245, 209,  10,  25, 109 ],
    [ 100,  80,   8,  43, 154,   1,  51,  26,  71 ],
    [  88,  43,  29, 140, 166, 213,  37,  43, 154 ],
    [  61,  63,  30, 155,  67,  45,  68,   1, 209 ],
    [ 142,  78,  78,  16, 255, 128,  34, 197, 171 ],
    [  41,  40,   5, 102, 211, 183,   4,   1, 221 ],
    [  51,  50,  17, 168, 209, 192,  23,  25,  82 ],
  ], [
    [ 125,  98,  42,  88, 104,  85, 117, 175,  82 ],
    [  95,  84,  53,  89, 128, 100, 113, 101,  45 ],
    [  75,  79, 123,  47,  51, 128,  81, 171,   1 ],
    [  57,  17,   5,  71, 102,  57,  53,  41,  49 ],
    [ 115,  21,   2,  10, 102, 255, 166,  23,   6 ],
    [  38,  33,  13, 121,  57,  73,  26,   1,  85 ],
    [  41,  10,  67, 138,  77, 110,  90,  47, 114 ],
    [ 101,  29,  16,  10,  85, 128, 101, 196,  26 ],
    [  57,  18,  10, 102, 102, 213,  34,  20,  43 ],
    [ 117,  20,  15,  36, 163, 128,  68,   1,  26 ],
  ], [
    [ 138,  31,  36, 171,  27, 166,  38,  44, 229 ],
    [  67,  87,  58, 169,  82, 115,  26,  59, 179 ],
    [  63,  59,  90, 180,  59, 166,  93,  73, 154 ],
    [  40,  40,  21, 116, 143, 209,  34,  39, 175 ],
    [  57,  46,  22,  24, 128,   1,  54,  17,  37 ],
    [  47,  15,  16, 183,  34, 223,  49,  45, 183 ],
    [  46,  17,  33, 183,   6,  98,  15,  32, 183 ],
    [  65,  32,  73, 115,  28, 128,  23, 128, 205 ],
    [  40,   3,   9, 115,  51, 192,  18,   6, 223 ],
    [  87,  37,   9, 115,  59,  77,  64,  21,  47 ],
  ], [
    [ 104,  55,  44, 218,   9,  54,  53, 130, 226 ],
    [  64,  90,  70, 205,  40,  41,  23,  26,  57 ],
    [  54,  57, 112, 184,   5,  41,  38, 166, 213 ],
    [  30,  34,  26, 133, 152, 116,  10,  32, 134 ],
    [  75,  32,  12,  51, 192, 255, 160,  43,  51 ],
    [  39,  19,  53, 221,  26, 114,  32,  73, 255 ],
    [  31,   9,  65, 234,   2,  15,   1, 118,  73 ],
    [  88,  31,  35,  67, 102,  85,  55, 186,  85 ],
    [  56,  21,  23, 111,  59, 205,  45,  37, 192 ],
    [  55,  38,  70, 124,  73, 102,   1,  34,  98 ],
  ], [
    [ 102,  61,  71,  37,  34,  53,  31, 243, 192 ],
    [  69,  60,  71,  38,  73, 119,  28, 222,  37 ],
    [  68,  45, 128,  34,   1,  47,  11, 245, 171 ],
    [  62,  17,  19,  70, 146,  85,  55,  62,  70 ],
    [  75,  15,   9,   9,  64, 255, 184, 119,  16 ],
    [  37,  43,  37, 154, 100, 163,  85, 160,   1 ],
    [  63,   9,  92, 136,  28,  64,  32, 201,  85 ],
    [  86,   6,  28,   5,  64, 255,  25, 248,   1 ],
    [  56,   8,  17, 132, 137, 255,  55, 116, 128 ],
    [  58,  15,  20,  82, 135,  57,  26, 121,  40 ],
  ], [
    [ 164,  50,  31, 137, 154, 133,  25,  35, 218 ],
    [  51, 103,  44, 131, 131, 123,  31,   6, 158 ],
    [  86,  40,  64, 135, 148, 224,  45, 183, 128 ],
    [  22,  26,  17, 131, 240, 154,  14,   1, 209 ],
    [  83,  12,  13,  54, 192, 255,  68,  47,  28 ],
    [  45,  16,  21,  91,  64, 222,   7,   1, 197 ],
    [  56,  21,  39, 155,  60, 138,  23, 102, 213 ],
    [  85,  26,  85,  85, 128, 128,  32, 146, 171 ],
    [  18,  11,   7,  63, 144, 171,   4,   4, 246 ],
    [  35,  27,  10, 146, 174, 171,  12,  26, 128 ],
  ], [
    [ 190,  80,  35,  99, 180,  80, 126,  54,  45 ],
    [  85, 126,  47,  87, 176,  51,  41,  20,  32 ],
    [ 101,  75, 128, 139, 118, 146, 116, 128,  85 ],
    [  56,  41,  15, 176, 236,  85,  37,   9,  62 ],
    [ 146,  36,  19,  30, 171, 255,  97,  27,  20 ],
    [  71,  30,  17, 119, 118, 255,  17,  18, 138 ],
    [ 101,  38,  60, 138,  55,  70,  43,  26, 142 ],
    [ 138,  45,  61,  62, 219,   1,  81, 188,  64 ],
    [  32,  41,  20, 117, 151, 142,  20,  21, 163 ],
    [ 112,  19,  12,  61, 195, 128,  48,   4,  24 ],
  ]
];

pub const DCT_UPDATE_PROBS: [[[[u8; 11]; 3]; 8]; 4] = [
  [
    [
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ]
    ], [
      [ 176, 246, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 223, 241, 252, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 249, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255 ]
    ], [
      [ 255, 244, 252, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 234, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ]
    ], [
      [ 255, 246, 254, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 239, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 ]
    ], [
      [ 255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 251, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ]
    ], [
      [ 255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 251, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 254, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 ]
    ], [
      [ 255, 254, 253, 255, 254, 255, 255, 255, 255, 255, 255 ],
      [ 250, 255, 254, 255, 254, 255, 255, 255, 255, 255, 255 ],
      [ 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ]
    ], [
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ]
    ],
  ], [
    [
      [ 217, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 225, 252, 241, 253, 255, 255, 254, 255, 255, 255, 255 ],
      [ 234, 250, 241, 250, 253, 255, 253, 254, 255, 255, 255 ],
    ], [
      [ 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 223, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 238, 253, 254, 254, 255, 255, 255, 255, 255, 255, 255 ],
    ], [
      [ 255, 248, 254, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 249, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
    ], [
      [ 255, 253, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 247, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
    ], [
      [ 255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ]
    ], [
      [ 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ]
    ], [
      [ 255, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ]
    ], [
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ]
    ]
  ], [
    [
      [ 186, 251, 250, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 234, 251, 244, 254, 255, 255, 255, 255, 255, 255, 255 ],
      [ 251, 251, 243, 253, 254, 255, 254, 255, 255, 255, 255 ]
    ], [
      [ 255, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 236, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 251, 253, 253, 254, 254, 255, 255, 255, 255, 255, 255 ]
    ], [
      [ 255, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 254, 254, 254, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ]
    ], [
      [ 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 254, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ]
    ], [
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ]
    ], [
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ]
    ], [
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ]
    ], [
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ]
    ]
  ], [
    [
      [ 248, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 250, 254, 252, 254, 255, 255, 255, 255, 255, 255, 255 ],
      [ 248, 254, 249, 253, 255, 255, 255, 255, 255, 255, 255 ]
    ], [
      [ 255, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 246, 253, 253, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 252, 254, 251, 254, 254, 255, 255, 255, 255, 255, 255 ]
    ], [
      [ 255, 254, 252, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 248, 254, 253, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 253, 255, 254, 254, 255, 255, 255, 255, 255, 255, 255 ]
    ], [
      [ 255, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 245, 251, 254, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 253, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 ]
    ], [
      [ 255, 251, 253, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 252, 253, 254, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255 ]
    ], [
      [ 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 249, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255 ]
    ], [
      [ 255, 255, 253, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 250, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ]
    ], [
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ],
      [ 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 ]
    ]
  ]
];
pub const DEFAULT_DCT_PROBS: [[[[u8; 11]; 3]; 8]; 4] = [
  [
    [
      [ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 ],
      [ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 ],
      [ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 ],
    ], [
      [ 253, 136, 254, 255, 228, 219, 128, 128, 128, 128, 128 ],
      [ 189, 129, 242, 255, 227, 213, 255, 219, 128, 128, 128 ],
      [ 106, 126, 227, 252, 214, 209, 255, 255, 128, 128, 128 ],
    ], [
      [   1,  98, 248, 255, 236, 226, 255, 255, 128, 128, 128 ],
      [ 181, 133, 238, 254, 221, 234, 255, 154, 128, 128, 128 ],
      [  78, 134, 202, 247, 198, 180, 255, 219, 128, 128, 128 ],
    ], [
      [   1, 185, 249, 255, 243, 255, 128, 128, 128, 128, 128 ],
      [ 184, 150, 247, 255, 236, 224, 128, 128, 128, 128, 128 ],
      [  77, 110, 216, 255, 236, 230, 128, 128, 128, 128, 128 ],
    ], [
      [   1, 101, 251, 255, 241, 255, 128, 128, 128, 128, 128 ],
      [ 170, 139, 241, 252, 236, 209, 255, 255, 128, 128, 128 ],
      [  37, 116, 196, 243, 228, 255, 255, 255, 128, 128, 128 ],
    ], [
      [   1, 204, 254, 255, 245, 255, 128, 128, 128, 128, 128 ],
      [ 207, 160, 250, 255, 238, 128, 128, 128, 128, 128, 128 ],
      [ 102, 103, 231, 255, 211, 171, 128, 128, 128, 128, 128 ],
    ], [
      [   1, 152, 252, 255, 240, 255, 128, 128, 128, 128, 128 ],
      [ 177, 135, 243, 255, 234, 225, 128, 128, 128, 128, 128 ],
      [  80, 129, 211, 255, 194, 224, 128, 128, 128, 128, 128 ],
    ], [
      [   1,   1, 255, 128, 128, 128, 128, 128, 128, 128, 128 ],
      [ 246,   1, 255, 128, 128, 128, 128, 128, 128, 128, 128 ],
      [ 255, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 ],
    ]
  ], [
    [
      [ 198,  35, 237, 223, 193, 187, 162, 160, 145, 155,  62 ],
      [ 131,  45, 198, 221, 172, 176, 220, 157, 252, 221,   1 ],
      [  68,  47, 146, 208, 149, 167, 221, 162, 255, 223, 128 ],
    ], [
      [   1, 149, 241, 255, 221, 224, 255, 255, 128, 128, 128 ],
      [ 184, 141, 234, 253, 222, 220, 255, 199, 128, 128, 128 ],
      [  81,  99, 181, 242, 176, 190, 249, 202, 255, 255, 128 ],
    ], [
      [   1, 129, 232, 253, 214, 197, 242, 196, 255, 255, 128 ],
      [  99, 121, 210, 250, 201, 198, 255, 202, 128, 128, 128 ],
      [  23,  91, 163, 242, 170, 187, 247, 210, 255, 255, 128 ],
    ], [
      [   1, 200, 246, 255, 234, 255, 128, 128, 128, 128, 128 ],
      [ 109, 178, 241, 255, 231, 245, 255, 255, 128, 128, 128 ],
      [  44, 130, 201, 253, 205, 192, 255, 255, 128, 128, 128 ],
    ], [
      [   1, 132, 239, 251, 219, 209, 255, 165, 128, 128, 128 ],
      [  94, 136, 225, 251, 218, 190, 255, 255, 128, 128, 128 ],
      [  22, 100, 174, 245, 186, 161, 255, 199, 128, 128, 128 ],
    ], [
      [   1, 182, 249, 255, 232, 235, 128, 128, 128, 128, 128 ],
      [ 124, 143, 241, 255, 227, 234, 128, 128, 128, 128, 128 ],
      [  35,  77, 181, 251, 193, 211, 255, 205, 128, 128, 128 ],
    ], [
      [   1, 157, 247, 255, 236, 231, 255, 255, 128, 128, 128 ],
      [ 121, 141, 235, 255, 225, 227, 255, 255, 128, 128, 128 ],
      [  45,  99, 188, 251, 195, 217, 255, 224, 128, 128, 128 ],
    ], [
      [   1,   1, 251, 255, 213, 255, 128, 128, 128, 128, 128 ],
      [ 203,   1, 248, 255, 255, 128, 128, 128, 128, 128, 128 ],
      [ 137,   1, 177, 255, 224, 255, 128, 128, 128, 128, 128 ],
    ]
  ], [
    [
      [ 253,   9, 248, 251, 207, 208, 255, 192, 128, 128, 128 ],
      [ 175,  13, 224, 243, 193, 185, 249, 198, 255, 255, 128 ],
      [  73,  17, 171, 221, 161, 179, 236, 167, 255, 234, 128 ],
    ], [
      [   1,  95, 247, 253, 212, 183, 255, 255, 128, 128, 128 ],
      [ 239,  90, 244, 250, 211, 209, 255, 255, 128, 128, 128 ],
      [ 155,  77, 195, 248, 188, 195, 255, 255, 128, 128, 128 ],
    ], [
      [   1,  24, 239, 251, 218, 219, 255, 205, 128, 128, 128 ],
      [ 201,  51, 219, 255, 196, 186, 128, 128, 128, 128, 128 ],
      [  69,  46, 190, 239, 201, 218, 255, 228, 128, 128, 128 ],
    ], [
      [   1, 191, 251, 255, 255, 128, 128, 128, 128, 128, 128 ],
      [ 223, 165, 249, 255, 213, 255, 128, 128, 128, 128, 128 ],
      [ 141, 124, 248, 255, 255, 128, 128, 128, 128, 128, 128 ],
    ], [
      [   1,  16, 248, 255, 255, 128, 128, 128, 128, 128, 128 ],
      [ 190,  36, 230, 255, 236, 255, 128, 128, 128, 128, 128 ],
      [ 149,   1, 255, 128, 128, 128, 128, 128, 128, 128, 128 ],
    ], [
      [   1, 226, 255, 128, 128, 128, 128, 128, 128, 128, 128 ],
      [ 247, 192, 255, 128, 128, 128, 128, 128, 128, 128, 128 ],
      [ 240, 128, 255, 128, 128, 128, 128, 128, 128, 128, 128 ],
    ], [
      [   1, 134, 252, 255, 255, 128, 128, 128, 128, 128, 128 ],
      [ 213,  62, 250, 255, 255, 128, 128, 128, 128, 128, 128 ],
      [  55,  93, 255, 128, 128, 128, 128, 128, 128, 128, 128 ],
    ], [
      [ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 ],
      [ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 ],
      [ 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128 ],
    ]
  ], [
    [
      [ 202,  24, 213, 235, 186, 191, 220, 160, 240, 175, 255 ],
      [ 126,  38, 182, 232, 169, 184, 228, 174, 255, 187, 128 ],
      [  61,  46, 138, 219, 151, 178, 240, 170, 255, 216, 128 ],
    ], [
      [   1, 112, 230, 250, 199, 191, 247, 159, 255, 255, 128 ],
      [ 166, 109, 228, 252, 211, 215, 255, 174, 128, 128, 128 ],
      [  39,  77, 162, 232, 172, 180, 245, 178, 255, 255, 128 ],
    ], [
      [   1,  52, 220, 246, 198, 199, 249, 220, 255, 255, 128 ],
      [ 124,  74, 191, 243, 183, 193, 250, 221, 255, 255, 128 ],
      [  24,  71, 130, 219, 154, 170, 243, 182, 255, 255, 128 ],
    ], [
      [   1, 182, 225, 249, 219, 240, 255, 224, 128, 128, 128 ],
      [ 149, 150, 226, 252, 216, 205, 255, 171, 128, 128, 128 ],
      [  28, 108, 170, 242, 183, 194, 254, 223, 255, 255, 128 ],
    ], [
      [   1,  81, 230, 252, 204, 203, 255, 192, 128, 128, 128 ],
      [ 123, 102, 209, 247, 188, 196, 255, 233, 128, 128, 128 ],
      [  20,  95, 153, 243, 164, 173, 255, 203, 128, 128, 128 ],
    ], [
      [   1, 222, 248, 255, 216, 213, 128, 128, 128, 128, 128 ],
      [ 168, 175, 246, 252, 235, 205, 255, 255, 128, 128, 128 ],
      [  47, 116, 215, 255, 211, 212, 255, 255, 128, 128, 128 ],
    ], [
      [   1, 121, 236, 253, 212, 214, 255, 255, 128, 128, 128 ],
      [ 141,  84, 213, 252, 201, 202, 255, 219, 128, 128, 128 ],
      [  42,  80, 160, 240, 162, 185, 255, 205, 128, 128, 128 ],
    ], [
      [   1,   1, 255, 128, 128, 128, 128, 128, 128, 128, 128 ],
      [ 244,   1, 255, 128, 128, 128, 128, 128, 128, 128, 128 ],
      [ 238,   1, 255, 128, 128, 128, 128, 128, 128, 128, 128 ],
    ]
  ]
];

pub const Y_DC_QUANTS: [i16; 128] = [
      4,   4,   5,   6,   6,   7,   8,   8,   9,  10,  11,  12,  13,  14,  15,  16,
     17,  18,  19,  20,  21,  22,  23,  23,  24,  25,  26,  27,  28,  29,  30,  31,
     32,  33,  33,  34,  35,  36,  36,  37,  38,  39,  39,  40,  41,  41,  42,  43,
     43,  44,  45,  45,  46,  47,  48,  48,  49,  50,  51,  52,  53,  53,  54,  56,
     57,  58,  59,  60,  62,  63,  65,  66,  68,  70,  72,  74,  76,  79,  81,  84,
     87,  90,  93,  96, 100, 104, 108, 112, 116, 121, 126, 131, 136, 142, 148, 154,
    160, 167, 174, 182, 189, 198, 206, 215, 224, 234, 244, 254, 265, 277, 288, 301,
    313, 327, 340, 355, 370, 385, 401, 417, 434, 452, 470, 489, 509, 529, 550, 572
];
pub const Y_AC_QUANTS: [i16; 128] = [
      4,   4,   5,   5,   6,   6,   7,   8,   9,  10,  11,  12,   13,   15,   16,   17,
     19,  20,  22,  23,  25,  26,  28,  29,  31,  32,  34,  35,   37,   38,   40,   41,
     42,  44,  45,  46,  48,  49,  50,  51,  53,  54,  55,  56,   57,   58,   59,   61,
     62,  63,  64,  65,  67,  68,  69,  70,  72,  73,  75,  76,   78,   80,   82,   84,
     86,  88,  91,  93,  96,  99, 102, 105, 109, 112, 116, 121,  125,  130,  135,  140,
    146, 152, 158, 165, 172, 180, 188, 196, 205, 214, 224, 234,  245,  256,  268,  281,
    294, 308, 322, 337, 353, 369, 386, 404, 423, 443, 463, 484,  506,  529,  553,  578,
    604, 631, 659, 688, 718, 749, 781, 814, 849, 885, 922, 960, 1000, 1041, 1083, 1127
];
pub const Y2_DC_QUANTS: [i16; 128] = [
      7,   9,  11,  13,  15,  17,  19,  21,  23,  26,  28,  30,   33,   35,   37,   39,
     42,  44,  46,  48,  51,  53,  55,  57,  59,  61,  63,  65,   67,   69,   70,   72,
     74,  75,  77,  78,  80,  81,  83,  84,  85,  87,  88,  89,   90,   92,   93,   94,
     95,  96,  97,  99, 100, 101, 102, 104, 105, 106, 108, 109,  111,  113,  114,  116,
    118, 120, 123, 125, 128, 131, 134, 137, 140, 144, 148, 152,  156,  161,  166,  171,
    176, 182, 188, 195, 202, 209, 217, 225, 234, 243, 253, 263,  274,  285,  297,  309,
    322, 336, 350, 365, 381, 397, 414, 432, 450, 470, 490, 511,  533,  556,  579,  604,
    630, 656, 684, 713, 742, 773, 805, 838, 873, 908, 945, 983, 1022, 1063, 1105, 1148
];
pub const Y2_AC_QUANTS: [i16; 128] = [
      7,   9,   11,   13,   16,   18,   21,   24,   26,   29,   32,   35,   38,   41,   43,   46,
     49,  52,   55,   58,   61,   64,   66,   69,   72,   74,   77,   79,   82,   84,   86,   88,
     91,  93,   95,   97,   98,  100,  102,  104,  105,  107,  109,  110,  112,  113,  115,  116,
    117, 119,  120,  122,  123,  125,  127,  128,  130,  132,  134,  136,  138,  141,  143,  146,
    149, 152,  155,  158,  162,  166,  171,  175,  180,  185,  191,  197,  204,  210,  218,  226,
    234, 243,  252,  262,  273,  284,  295,  308,  321,  335,  350,  365,  381,  398,  416,  435,
    455, 476,  497,  520,  544,  569,  595,  622,  650,  680,  711,  743,  776,  811,  848,  885,
    925, 965, 1008, 1052, 1097, 1144, 1193, 1244, 1297, 1351, 1407, 1466, 1526, 1588, 1652, 1719
];
pub const UV_DC_QUANTS: [i16; 128] = [
      4,   4,   5,   6,   6,   7,   8,   8,   9,  10,  11,  12,  13,  14,  15,  16,
     17,  18,  19,  20,  21,  22,  23,  23,  24,  25,  26,  27,  28,  29,  30,  31,
     32,  33,  33,  34,  35,  36,  36,  37,  38,  39,  39,  40,  41,  41,  42,  43,
     43,  44,  45,  45,  46,  47,  48,  48,  49,  50,  51,  52,  53,  53,  54,  56,
     57,  58,  59,  60,  62,  63,  65,  66,  68,  70,  72,  74,  76,  79,  81,  84,
     87,  90,  93,  96, 100, 104, 108, 112, 116, 121, 126, 131, 132, 132, 132, 132,
    132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132,
    132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132
];
pub const UV_AC_QUANTS: [i16; 128] = [
      4,   4,   5,   5,   6,   6,   7,   8,   9,  10,  11,  12,   13,   15,   16,   17,
     19,  20,  22,  23,  25,  26,  28,  29,  31,  32,  34,  35,   37,   38,   40,   41,
     42,  44,  45,  46,  48,  49,  50,  51,  53,  54,  55,  56,   57,   58,   59,   61,
     62,  63,  64,  65,  67,  68,  69,  70,  72,  73,  75,  76,   78,   80,   82,   84,
     86,  88,  91,  93,  96,  99, 102, 105, 109, 112, 116, 121,  125,  130,  135,  140,
    146, 152, 158, 165, 172, 180, 188, 196, 205, 214, 224, 234,  245,  256,  268,  281,
    294, 308, 322, 337, 353, 369, 386, 404, 423, 443, 463, 484,  506,  529,  553,  578,
    604, 631, 659, 688, 718, 749, 781, 814, 849, 885, 922, 960, 1000, 1041, 1083, 1127
];