xref: /aosp_15_r20/external/libdav1d/src/tables.c (revision c09093415860a1c2373dacd84c4fde00c507cdfd)
1*c0909341SAndroid Build Coastguard Worker /*
2*c0909341SAndroid Build Coastguard Worker  * Copyright © 2018-2021, VideoLAN and dav1d authors
3*c0909341SAndroid Build Coastguard Worker  * Copyright © 2018, Two Orioles, LLC
4*c0909341SAndroid Build Coastguard Worker  * All rights reserved.
5*c0909341SAndroid Build Coastguard Worker  *
6*c0909341SAndroid Build Coastguard Worker  * Redistribution and use in source and binary forms, with or without
7*c0909341SAndroid Build Coastguard Worker  * modification, are permitted provided that the following conditions are met:
8*c0909341SAndroid Build Coastguard Worker  *
9*c0909341SAndroid Build Coastguard Worker  * 1. Redistributions of source code must retain the above copyright notice, this
10*c0909341SAndroid Build Coastguard Worker  *    list of conditions and the following disclaimer.
11*c0909341SAndroid Build Coastguard Worker  *
12*c0909341SAndroid Build Coastguard Worker  * 2. Redistributions in binary form must reproduce the above copyright notice,
13*c0909341SAndroid Build Coastguard Worker  *    this list of conditions and the following disclaimer in the documentation
14*c0909341SAndroid Build Coastguard Worker  *    and/or other materials provided with the distribution.
15*c0909341SAndroid Build Coastguard Worker  *
16*c0909341SAndroid Build Coastguard Worker  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17*c0909341SAndroid Build Coastguard Worker  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18*c0909341SAndroid Build Coastguard Worker  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19*c0909341SAndroid Build Coastguard Worker  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
20*c0909341SAndroid Build Coastguard Worker  * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21*c0909341SAndroid Build Coastguard Worker  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22*c0909341SAndroid Build Coastguard Worker  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23*c0909341SAndroid Build Coastguard Worker  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24*c0909341SAndroid Build Coastguard Worker  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25*c0909341SAndroid Build Coastguard Worker  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26*c0909341SAndroid Build Coastguard Worker  */
27*c0909341SAndroid Build Coastguard Worker 
28*c0909341SAndroid Build Coastguard Worker #include "config.h"
29*c0909341SAndroid Build Coastguard Worker 
30*c0909341SAndroid Build Coastguard Worker #include <stdint.h>
31*c0909341SAndroid Build Coastguard Worker 
32*c0909341SAndroid Build Coastguard Worker #include "common/attributes.h"
33*c0909341SAndroid Build Coastguard Worker 
34*c0909341SAndroid Build Coastguard Worker #include "src/levels.h"
35*c0909341SAndroid Build Coastguard Worker #include "src/tables.h"
36*c0909341SAndroid Build Coastguard Worker 
37*c0909341SAndroid Build Coastguard Worker const uint8_t dav1d_al_part_ctx[2][N_BL_LEVELS][N_PARTITIONS] = {
38*c0909341SAndroid Build Coastguard Worker     {
39*c0909341SAndroid Build Coastguard Worker         // partitions:
40*c0909341SAndroid Build Coastguard Worker         // none,  h,    v, split,  tts,  tbs,  tls,  trs,   h4,   v4
41*c0909341SAndroid Build Coastguard Worker         { 0x00, 0x00, 0x10,   -1, 0x00, 0x10, 0x10, 0x10,   -1,   -1 }, // bl128
42*c0909341SAndroid Build Coastguard Worker         { 0x10, 0x10, 0x18,   -1, 0x10, 0x18, 0x18, 0x18, 0x10, 0x1c }, // bl64
43*c0909341SAndroid Build Coastguard Worker         { 0x18, 0x18, 0x1c,   -1, 0x18, 0x1c, 0x1c, 0x1c, 0x18, 0x1e }, // bl32
44*c0909341SAndroid Build Coastguard Worker         { 0x1c, 0x1c, 0x1e,   -1, 0x1c, 0x1e, 0x1e, 0x1e, 0x1c, 0x1f }, // bl16
45*c0909341SAndroid Build Coastguard Worker         { 0x1e, 0x1e, 0x1f, 0x1f,   -1,   -1,   -1,   -1,   -1,   -1 }, // bl8
46*c0909341SAndroid Build Coastguard Worker     }, {
47*c0909341SAndroid Build Coastguard Worker         { 0x00, 0x10, 0x00,   -1, 0x10, 0x10, 0x00, 0x10,   -1,   -1 }, // bl128
48*c0909341SAndroid Build Coastguard Worker         { 0x10, 0x18, 0x10,   -1, 0x18, 0x18, 0x10, 0x18, 0x1c, 0x10 }, // bl64
49*c0909341SAndroid Build Coastguard Worker         { 0x18, 0x1c, 0x18,   -1, 0x1c, 0x1c, 0x18, 0x1c, 0x1e, 0x18 }, // bl32
50*c0909341SAndroid Build Coastguard Worker         { 0x1c, 0x1e, 0x1c,   -1, 0x1e, 0x1e, 0x1c, 0x1e, 0x1f, 0x1c }, // bl16
51*c0909341SAndroid Build Coastguard Worker         { 0x1e, 0x1f, 0x1e, 0x1f,   -1,   -1,   -1,   -1,   -1,   -1 }, // bl8
52*c0909341SAndroid Build Coastguard Worker     }
53*c0909341SAndroid Build Coastguard Worker };
54*c0909341SAndroid Build Coastguard Worker 
55*c0909341SAndroid Build Coastguard Worker const uint8_t /* enum BlockSize */
56*c0909341SAndroid Build Coastguard Worker     dav1d_block_sizes[N_BL_LEVELS][N_PARTITIONS][2] =
57*c0909341SAndroid Build Coastguard Worker {
58*c0909341SAndroid Build Coastguard Worker     [BL_128X128] = {
59*c0909341SAndroid Build Coastguard Worker         [PARTITION_NONE]           = { BS_128x128 },
60*c0909341SAndroid Build Coastguard Worker         [PARTITION_H]              = { BS_128x64 },
61*c0909341SAndroid Build Coastguard Worker         [PARTITION_V]              = { BS_64x128 },
62*c0909341SAndroid Build Coastguard Worker         [PARTITION_T_TOP_SPLIT]    = { BS_64x64, BS_128x64 },
63*c0909341SAndroid Build Coastguard Worker         [PARTITION_T_BOTTOM_SPLIT] = { BS_128x64, BS_64x64 },
64*c0909341SAndroid Build Coastguard Worker         [PARTITION_T_LEFT_SPLIT]   = { BS_64x64, BS_64x128 },
65*c0909341SAndroid Build Coastguard Worker         [PARTITION_T_RIGHT_SPLIT]  = { BS_64x128, BS_64x64 },
66*c0909341SAndroid Build Coastguard Worker     }, [BL_64X64] = {
67*c0909341SAndroid Build Coastguard Worker         [PARTITION_NONE]           = { BS_64x64 },
68*c0909341SAndroid Build Coastguard Worker         [PARTITION_H]              = { BS_64x32 },
69*c0909341SAndroid Build Coastguard Worker         [PARTITION_V]              = { BS_32x64 },
70*c0909341SAndroid Build Coastguard Worker         [PARTITION_T_TOP_SPLIT]    = { BS_32x32, BS_64x32 },
71*c0909341SAndroid Build Coastguard Worker         [PARTITION_T_BOTTOM_SPLIT] = { BS_64x32, BS_32x32 },
72*c0909341SAndroid Build Coastguard Worker         [PARTITION_T_LEFT_SPLIT]   = { BS_32x32, BS_32x64 },
73*c0909341SAndroid Build Coastguard Worker         [PARTITION_T_RIGHT_SPLIT]  = { BS_32x64, BS_32x32 },
74*c0909341SAndroid Build Coastguard Worker         [PARTITION_H4]             = { BS_64x16 },
75*c0909341SAndroid Build Coastguard Worker         [PARTITION_V4]             = { BS_16x64 },
76*c0909341SAndroid Build Coastguard Worker     }, [BL_32X32] = {
77*c0909341SAndroid Build Coastguard Worker         [PARTITION_NONE]           = { BS_32x32 },
78*c0909341SAndroid Build Coastguard Worker         [PARTITION_H]              = { BS_32x16 },
79*c0909341SAndroid Build Coastguard Worker         [PARTITION_V]              = { BS_16x32 },
80*c0909341SAndroid Build Coastguard Worker         [PARTITION_T_TOP_SPLIT]    = { BS_16x16, BS_32x16 },
81*c0909341SAndroid Build Coastguard Worker         [PARTITION_T_BOTTOM_SPLIT] = { BS_32x16, BS_16x16 },
82*c0909341SAndroid Build Coastguard Worker         [PARTITION_T_LEFT_SPLIT]   = { BS_16x16, BS_16x32 },
83*c0909341SAndroid Build Coastguard Worker         [PARTITION_T_RIGHT_SPLIT]  = { BS_16x32, BS_16x16 },
84*c0909341SAndroid Build Coastguard Worker         [PARTITION_H4]             = { BS_32x8  },
85*c0909341SAndroid Build Coastguard Worker         [PARTITION_V4]             = { BS_8x32  },
86*c0909341SAndroid Build Coastguard Worker     }, [BL_16X16] = {
87*c0909341SAndroid Build Coastguard Worker         [PARTITION_NONE]           = { BS_16x16 },
88*c0909341SAndroid Build Coastguard Worker         [PARTITION_H]              = { BS_16x8  },
89*c0909341SAndroid Build Coastguard Worker         [PARTITION_V]              = { BS_8x16  },
90*c0909341SAndroid Build Coastguard Worker         [PARTITION_T_TOP_SPLIT]    = { BS_8x8,   BS_16x8  },
91*c0909341SAndroid Build Coastguard Worker         [PARTITION_T_BOTTOM_SPLIT] = { BS_16x8,  BS_8x8   },
92*c0909341SAndroid Build Coastguard Worker         [PARTITION_T_LEFT_SPLIT]   = { BS_8x8,   BS_8x16  },
93*c0909341SAndroid Build Coastguard Worker         [PARTITION_T_RIGHT_SPLIT]  = { BS_8x16,  BS_8x8   },
94*c0909341SAndroid Build Coastguard Worker         [PARTITION_H4]             = { BS_16x4  },
95*c0909341SAndroid Build Coastguard Worker         [PARTITION_V4]             = { BS_4x16  },
96*c0909341SAndroid Build Coastguard Worker     }, [BL_8X8] = {
97*c0909341SAndroid Build Coastguard Worker         [PARTITION_NONE]           = { BS_8x8   },
98*c0909341SAndroid Build Coastguard Worker         [PARTITION_H]              = { BS_8x4   },
99*c0909341SAndroid Build Coastguard Worker         [PARTITION_V]              = { BS_4x8   },
100*c0909341SAndroid Build Coastguard Worker         [PARTITION_SPLIT]          = { BS_4x4   },
101*c0909341SAndroid Build Coastguard Worker     }
102*c0909341SAndroid Build Coastguard Worker };
103*c0909341SAndroid Build Coastguard Worker 
104*c0909341SAndroid Build Coastguard Worker const uint8_t dav1d_block_dimensions[N_BS_SIZES][4] = {
105*c0909341SAndroid Build Coastguard Worker     [BS_128x128] = { 32, 32, 5, 5 },
106*c0909341SAndroid Build Coastguard Worker     [BS_128x64]  = { 32, 16, 5, 4 },
107*c0909341SAndroid Build Coastguard Worker     [BS_64x128]  = { 16, 32, 4, 5 },
108*c0909341SAndroid Build Coastguard Worker     [BS_64x64]   = { 16, 16, 4, 4 },
109*c0909341SAndroid Build Coastguard Worker     [BS_64x32]   = { 16,  8, 4, 3 },
110*c0909341SAndroid Build Coastguard Worker     [BS_64x16]   = { 16,  4, 4, 2 },
111*c0909341SAndroid Build Coastguard Worker     [BS_32x64]   = {  8, 16, 3, 4 },
112*c0909341SAndroid Build Coastguard Worker     [BS_32x32]   = {  8,  8, 3, 3 },
113*c0909341SAndroid Build Coastguard Worker     [BS_32x16]   = {  8,  4, 3, 2 },
114*c0909341SAndroid Build Coastguard Worker     [BS_32x8]    = {  8,  2, 3, 1 },
115*c0909341SAndroid Build Coastguard Worker     [BS_16x64]   = {  4, 16, 2, 4 },
116*c0909341SAndroid Build Coastguard Worker     [BS_16x32]   = {  4,  8, 2, 3 },
117*c0909341SAndroid Build Coastguard Worker     [BS_16x16]   = {  4,  4, 2, 2 },
118*c0909341SAndroid Build Coastguard Worker     [BS_16x8]    = {  4,  2, 2, 1 },
119*c0909341SAndroid Build Coastguard Worker     [BS_16x4]    = {  4,  1, 2, 0 },
120*c0909341SAndroid Build Coastguard Worker     [BS_8x32]    = {  2,  8, 1, 3 },
121*c0909341SAndroid Build Coastguard Worker     [BS_8x16]    = {  2,  4, 1, 2 },
122*c0909341SAndroid Build Coastguard Worker     [BS_8x8]     = {  2,  2, 1, 1 },
123*c0909341SAndroid Build Coastguard Worker     [BS_8x4]     = {  2,  1, 1, 0 },
124*c0909341SAndroid Build Coastguard Worker     [BS_4x16]    = {  1,  4, 0, 2 },
125*c0909341SAndroid Build Coastguard Worker     [BS_4x8]     = {  1,  2, 0, 1 },
126*c0909341SAndroid Build Coastguard Worker     [BS_4x4]     = {  1,  1, 0, 0 },
127*c0909341SAndroid Build Coastguard Worker };
128*c0909341SAndroid Build Coastguard Worker 
129*c0909341SAndroid Build Coastguard Worker const TxfmInfo dav1d_txfm_dimensions[N_RECT_TX_SIZES] = {
130*c0909341SAndroid Build Coastguard Worker     [ TX_4X4]   = { .w = 1, .h = 1, .lw = 0, .lh = 0,
131*c0909341SAndroid Build Coastguard Worker                     .min = 0, .max = 0, .ctx = 0 },
132*c0909341SAndroid Build Coastguard Worker     [ TX_8X8]   = { .w = 2, .h = 2, .lw = 1, .lh = 1,
133*c0909341SAndroid Build Coastguard Worker                     .min = 1, .max = 1, .sub = TX_4X4, .ctx = 1 },
134*c0909341SAndroid Build Coastguard Worker     [ TX_16X16] = { .w = 4, .h = 4, .lw = 2, .lh = 2,
135*c0909341SAndroid Build Coastguard Worker                     .min = 2, .max = 2, .sub = TX_8X8, .ctx = 2 },
136*c0909341SAndroid Build Coastguard Worker     [ TX_32X32] = { .w = 8, .h = 8, .lw = 3, .lh = 3,
137*c0909341SAndroid Build Coastguard Worker                     .min = 3, .max = 3, .sub = TX_16X16, .ctx = 3 },
138*c0909341SAndroid Build Coastguard Worker     [ TX_64X64] = { .w = 16, .h = 16, .lw = 4, .lh = 4,
139*c0909341SAndroid Build Coastguard Worker                     .min = 4, .max = 4, .sub = TX_32X32, .ctx = 4 },
140*c0909341SAndroid Build Coastguard Worker     [RTX_4X8]   = { .w = 1, .h = 2, .lw = 0, .lh = 1,
141*c0909341SAndroid Build Coastguard Worker                     .min = 0, .max = 1, .sub = TX_4X4, .ctx = 1 },
142*c0909341SAndroid Build Coastguard Worker     [RTX_8X4]   = { .w = 2, .h = 1, .lw = 1, .lh = 0,
143*c0909341SAndroid Build Coastguard Worker                     .min = 0, .max = 1, .sub = TX_4X4, .ctx = 1 },
144*c0909341SAndroid Build Coastguard Worker     [RTX_8X16]  = { .w = 2, .h = 4, .lw = 1, .lh = 2,
145*c0909341SAndroid Build Coastguard Worker                     .min = 1, .max = 2, .sub = TX_8X8, .ctx = 2 },
146*c0909341SAndroid Build Coastguard Worker     [RTX_16X8]  = { .w = 4, .h = 2, .lw = 2, .lh = 1,
147*c0909341SAndroid Build Coastguard Worker                     .min = 1, .max = 2, .sub = TX_8X8, .ctx = 2 },
148*c0909341SAndroid Build Coastguard Worker     [RTX_16X32] = { .w = 4, .h = 8, .lw = 2, .lh = 3,
149*c0909341SAndroid Build Coastguard Worker                     .min = 2, .max = 3, .sub = TX_16X16, .ctx = 3 },
150*c0909341SAndroid Build Coastguard Worker     [RTX_32X16] = { .w = 8, .h = 4, .lw = 3, .lh = 2,
151*c0909341SAndroid Build Coastguard Worker                     .min = 2, .max = 3, .sub = TX_16X16, .ctx = 3 },
152*c0909341SAndroid Build Coastguard Worker     [RTX_32X64] = { .w = 8, .h = 16, .lw = 3, .lh = 4,
153*c0909341SAndroid Build Coastguard Worker                     .min = 3, .max = 4, .sub = TX_32X32, .ctx = 4 },
154*c0909341SAndroid Build Coastguard Worker     [RTX_64X32] = { .w = 16, .h = 8, .lw = 4, .lh = 3,
155*c0909341SAndroid Build Coastguard Worker                     .min = 3, .max = 4, .sub = TX_32X32, .ctx = 4 },
156*c0909341SAndroid Build Coastguard Worker     [RTX_4X16]  = { .w = 1, .h = 4, .lw = 0, .lh = 2,
157*c0909341SAndroid Build Coastguard Worker                     .min = 0, .max = 2, .sub = RTX_4X8, .ctx = 1 },
158*c0909341SAndroid Build Coastguard Worker     [RTX_16X4]  = { .w = 4, .h = 1, .lw = 2, .lh = 0,
159*c0909341SAndroid Build Coastguard Worker                     .min = 0, .max = 2, .sub = RTX_8X4, .ctx = 1 },
160*c0909341SAndroid Build Coastguard Worker     [RTX_8X32]  = { .w = 2, .h = 8, .lw = 1, .lh = 3,
161*c0909341SAndroid Build Coastguard Worker                     .min = 1, .max = 3, .sub = RTX_8X16, .ctx = 2 },
162*c0909341SAndroid Build Coastguard Worker     [RTX_32X8]  = { .w = 8, .h = 2, .lw = 3, .lh = 1,
163*c0909341SAndroid Build Coastguard Worker                     .min = 1, .max = 3, .sub = RTX_16X8, .ctx = 2 },
164*c0909341SAndroid Build Coastguard Worker     [RTX_16X64] = { .w = 4, .h = 16, .lw = 2, .lh = 4,
165*c0909341SAndroid Build Coastguard Worker                     .min = 2, .max = 4, .sub = RTX_16X32, .ctx = 3 },
166*c0909341SAndroid Build Coastguard Worker     [RTX_64X16] = { .w = 16, .h = 4, .lw = 4, .lh = 2,
167*c0909341SAndroid Build Coastguard Worker                     .min = 2, .max = 4, .sub = RTX_32X16, .ctx = 3 },
168*c0909341SAndroid Build Coastguard Worker };
169*c0909341SAndroid Build Coastguard Worker 
170*c0909341SAndroid Build Coastguard Worker const uint8_t /* enum (Rect)TxfmSize */
171*c0909341SAndroid Build Coastguard Worker     dav1d_max_txfm_size_for_bs[N_BS_SIZES][4 /* y, 420, 422, 444 */] =
172*c0909341SAndroid Build Coastguard Worker {
173*c0909341SAndroid Build Coastguard Worker     [BS_128x128] = {  TX_64X64,  TX_32X32,  TX_32X32,  TX_32X32 },
174*c0909341SAndroid Build Coastguard Worker     [BS_128x64]  = {  TX_64X64,  TX_32X32,  TX_32X32,  TX_32X32 },
175*c0909341SAndroid Build Coastguard Worker     [BS_64x128]  = {  TX_64X64,  TX_32X32,       0,    TX_32X32 },
176*c0909341SAndroid Build Coastguard Worker     [BS_64x64]   = {  TX_64X64,  TX_32X32,  TX_32X32,  TX_32X32 },
177*c0909341SAndroid Build Coastguard Worker     [BS_64x32]   = { RTX_64X32, RTX_32X16,  TX_32X32,  TX_32X32 },
178*c0909341SAndroid Build Coastguard Worker     [BS_64x16]   = { RTX_64X16, RTX_32X8,  RTX_32X16, RTX_32X16 },
179*c0909341SAndroid Build Coastguard Worker     [BS_32x64]   = { RTX_32X64, RTX_16X32,       0,    TX_32X32 },
180*c0909341SAndroid Build Coastguard Worker     [BS_32x32]   = {  TX_32X32,  TX_16X16, RTX_16X32,  TX_32X32 },
181*c0909341SAndroid Build Coastguard Worker     [BS_32x16]   = { RTX_32X16, RTX_16X8,   TX_16X16, RTX_32X16 },
182*c0909341SAndroid Build Coastguard Worker     [BS_32x8]    = { RTX_32X8,  RTX_16X4,  RTX_16X8,  RTX_32X8  },
183*c0909341SAndroid Build Coastguard Worker     [BS_16x64]   = { RTX_16X64, RTX_8X32,        0,   RTX_16X32 },
184*c0909341SAndroid Build Coastguard Worker     [BS_16x32]   = { RTX_16X32, RTX_8X16,        0,   RTX_16X32 },
185*c0909341SAndroid Build Coastguard Worker     [BS_16x16]   = {  TX_16X16,  TX_8X8,   RTX_8X16,   TX_16X16 },
186*c0909341SAndroid Build Coastguard Worker     [BS_16x8]    = { RTX_16X8,  RTX_8X4,    TX_8X8,   RTX_16X8  },
187*c0909341SAndroid Build Coastguard Worker     [BS_16x4]    = { RTX_16X4,  RTX_8X4,   RTX_8X4,   RTX_16X4  },
188*c0909341SAndroid Build Coastguard Worker     [BS_8x32]    = { RTX_8X32,  RTX_4X16,       0,    RTX_8X32  },
189*c0909341SAndroid Build Coastguard Worker     [BS_8x16]    = { RTX_8X16,  RTX_4X8,        0,    RTX_8X16  },
190*c0909341SAndroid Build Coastguard Worker     [BS_8x8]     = {  TX_8X8,    TX_4X4,   RTX_4X8,    TX_8X8   },
191*c0909341SAndroid Build Coastguard Worker     [BS_8x4]     = { RTX_8X4,    TX_4X4,    TX_4X4,   RTX_8X4   },
192*c0909341SAndroid Build Coastguard Worker     [BS_4x16]    = { RTX_4X16,  RTX_4X8,        0,    RTX_4X16  },
193*c0909341SAndroid Build Coastguard Worker     [BS_4x8]     = { RTX_4X8,    TX_4X4,        0,    RTX_4X8   },
194*c0909341SAndroid Build Coastguard Worker     [BS_4x4]     = {  TX_4X4,    TX_4X4,    TX_4X4,    TX_4X4   },
195*c0909341SAndroid Build Coastguard Worker };
196*c0909341SAndroid Build Coastguard Worker 
197*c0909341SAndroid Build Coastguard Worker const uint8_t /* enum TxfmType */
198*c0909341SAndroid Build Coastguard Worker     dav1d_txtp_from_uvmode[N_UV_INTRA_PRED_MODES] =
199*c0909341SAndroid Build Coastguard Worker {
200*c0909341SAndroid Build Coastguard Worker     [DC_PRED]              = DCT_DCT,
201*c0909341SAndroid Build Coastguard Worker     [VERT_PRED]            = ADST_DCT,
202*c0909341SAndroid Build Coastguard Worker     [HOR_PRED]             = DCT_ADST,
203*c0909341SAndroid Build Coastguard Worker     [DIAG_DOWN_LEFT_PRED]  = DCT_DCT,
204*c0909341SAndroid Build Coastguard Worker     [DIAG_DOWN_RIGHT_PRED] = ADST_ADST,
205*c0909341SAndroid Build Coastguard Worker     [VERT_RIGHT_PRED]      = ADST_DCT,
206*c0909341SAndroid Build Coastguard Worker     [HOR_DOWN_PRED]        = DCT_ADST,
207*c0909341SAndroid Build Coastguard Worker     [HOR_UP_PRED]          = DCT_ADST,
208*c0909341SAndroid Build Coastguard Worker     [VERT_LEFT_PRED]       = ADST_DCT,
209*c0909341SAndroid Build Coastguard Worker     [SMOOTH_PRED]          = ADST_ADST,
210*c0909341SAndroid Build Coastguard Worker     [SMOOTH_V_PRED]        = ADST_DCT,
211*c0909341SAndroid Build Coastguard Worker     [SMOOTH_H_PRED]        = DCT_ADST,
212*c0909341SAndroid Build Coastguard Worker     [PAETH_PRED]           = ADST_ADST,
213*c0909341SAndroid Build Coastguard Worker };
214*c0909341SAndroid Build Coastguard Worker 
215*c0909341SAndroid Build Coastguard Worker const uint8_t /* enum InterPredMode */
216*c0909341SAndroid Build Coastguard Worker     dav1d_comp_inter_pred_modes[N_COMP_INTER_PRED_MODES][2] =
217*c0909341SAndroid Build Coastguard Worker {
218*c0909341SAndroid Build Coastguard Worker     [NEARESTMV_NEARESTMV] = { NEARESTMV, NEARESTMV },
219*c0909341SAndroid Build Coastguard Worker     [NEARMV_NEARMV]       = { NEARMV,    NEARMV    },
220*c0909341SAndroid Build Coastguard Worker     [NEWMV_NEWMV]         = { NEWMV,     NEWMV     },
221*c0909341SAndroid Build Coastguard Worker     [GLOBALMV_GLOBALMV]   = { GLOBALMV,  GLOBALMV  },
222*c0909341SAndroid Build Coastguard Worker     [NEWMV_NEARESTMV]     = { NEWMV,     NEARESTMV },
223*c0909341SAndroid Build Coastguard Worker     [NEWMV_NEARMV]        = { NEWMV,     NEARMV    },
224*c0909341SAndroid Build Coastguard Worker     [NEARESTMV_NEWMV]     = { NEARESTMV, NEWMV     },
225*c0909341SAndroid Build Coastguard Worker     [NEARMV_NEWMV]        = { NEARMV,    NEWMV     },
226*c0909341SAndroid Build Coastguard Worker };
227*c0909341SAndroid Build Coastguard Worker 
228*c0909341SAndroid Build Coastguard Worker const uint8_t dav1d_partition_type_count[N_BL_LEVELS] = {
229*c0909341SAndroid Build Coastguard Worker     [BL_128X128] = N_PARTITIONS - 3,
230*c0909341SAndroid Build Coastguard Worker     [BL_64X64]   = N_PARTITIONS - 1,
231*c0909341SAndroid Build Coastguard Worker     [BL_32X32]   = N_PARTITIONS - 1,
232*c0909341SAndroid Build Coastguard Worker     [BL_16X16]   = N_PARTITIONS - 1,
233*c0909341SAndroid Build Coastguard Worker     [BL_8X8]     = N_SUB8X8_PARTITIONS - 1,
234*c0909341SAndroid Build Coastguard Worker };
235*c0909341SAndroid Build Coastguard Worker 
236*c0909341SAndroid Build Coastguard Worker const uint8_t /* enum TxfmType */ dav1d_tx_types_per_set[40] = {
237*c0909341SAndroid Build Coastguard Worker     /* Intra2 */
238*c0909341SAndroid Build Coastguard Worker     IDTX, DCT_DCT, ADST_ADST, ADST_DCT, DCT_ADST,
239*c0909341SAndroid Build Coastguard Worker     /* Intra1 */
240*c0909341SAndroid Build Coastguard Worker     IDTX, DCT_DCT, V_DCT, H_DCT, ADST_ADST, ADST_DCT, DCT_ADST,
241*c0909341SAndroid Build Coastguard Worker     /* Inter2 */
242*c0909341SAndroid Build Coastguard Worker     IDTX, V_DCT, H_DCT, DCT_DCT, ADST_DCT, DCT_ADST, FLIPADST_DCT,
243*c0909341SAndroid Build Coastguard Worker     DCT_FLIPADST, ADST_ADST, FLIPADST_FLIPADST, ADST_FLIPADST, FLIPADST_ADST,
244*c0909341SAndroid Build Coastguard Worker     /* Inter1 */
245*c0909341SAndroid Build Coastguard Worker     IDTX, V_DCT, H_DCT, V_ADST, H_ADST, V_FLIPADST, H_FLIPADST,
246*c0909341SAndroid Build Coastguard Worker     DCT_DCT, ADST_DCT, DCT_ADST, FLIPADST_DCT, DCT_FLIPADST,
247*c0909341SAndroid Build Coastguard Worker     ADST_ADST, FLIPADST_FLIPADST, ADST_FLIPADST, FLIPADST_ADST,
248*c0909341SAndroid Build Coastguard Worker };
249*c0909341SAndroid Build Coastguard Worker 
250*c0909341SAndroid Build Coastguard Worker const uint8_t dav1d_ymode_size_context[N_BS_SIZES] = {
251*c0909341SAndroid Build Coastguard Worker     [BS_128x128] = 3,
252*c0909341SAndroid Build Coastguard Worker     [BS_128x64]  = 3,
253*c0909341SAndroid Build Coastguard Worker     [BS_64x128]  = 3,
254*c0909341SAndroid Build Coastguard Worker     [BS_64x64]   = 3,
255*c0909341SAndroid Build Coastguard Worker     [BS_64x32]   = 3,
256*c0909341SAndroid Build Coastguard Worker     [BS_64x16]   = 2,
257*c0909341SAndroid Build Coastguard Worker     [BS_32x64]   = 3,
258*c0909341SAndroid Build Coastguard Worker     [BS_32x32]   = 3,
259*c0909341SAndroid Build Coastguard Worker     [BS_32x16]   = 2,
260*c0909341SAndroid Build Coastguard Worker     [BS_32x8 ]   = 1,
261*c0909341SAndroid Build Coastguard Worker     [BS_16x64]   = 2,
262*c0909341SAndroid Build Coastguard Worker     [BS_16x32]   = 2,
263*c0909341SAndroid Build Coastguard Worker     [BS_16x16]   = 2,
264*c0909341SAndroid Build Coastguard Worker     [BS_16x8 ]   = 1,
265*c0909341SAndroid Build Coastguard Worker     [BS_16x4 ]   = 0,
266*c0909341SAndroid Build Coastguard Worker     [BS_8x32 ]   = 1,
267*c0909341SAndroid Build Coastguard Worker     [BS_8x16 ]   = 1,
268*c0909341SAndroid Build Coastguard Worker     [BS_8x8  ]   = 1,
269*c0909341SAndroid Build Coastguard Worker     [BS_8x4  ]   = 0,
270*c0909341SAndroid Build Coastguard Worker     [BS_4x16 ]   = 0,
271*c0909341SAndroid Build Coastguard Worker     [BS_4x8  ]   = 0,
272*c0909341SAndroid Build Coastguard Worker     [BS_4x4  ]   = 0,
273*c0909341SAndroid Build Coastguard Worker };
274*c0909341SAndroid Build Coastguard Worker 
275*c0909341SAndroid Build Coastguard Worker const uint8_t dav1d_lo_ctx_offsets[3][5][5] = {
276*c0909341SAndroid Build Coastguard Worker     { /* w == h */
277*c0909341SAndroid Build Coastguard Worker         {  0,  1,  6,  6, 21 },
278*c0909341SAndroid Build Coastguard Worker         {  1,  6,  6, 21, 21 },
279*c0909341SAndroid Build Coastguard Worker         {  6,  6, 21, 21, 21 },
280*c0909341SAndroid Build Coastguard Worker         {  6, 21, 21, 21, 21 },
281*c0909341SAndroid Build Coastguard Worker         { 21, 21, 21, 21, 21 },
282*c0909341SAndroid Build Coastguard Worker     }, { /* w > h */
283*c0909341SAndroid Build Coastguard Worker         {  0, 16,  6,  6, 21 },
284*c0909341SAndroid Build Coastguard Worker         { 16, 16,  6, 21, 21 },
285*c0909341SAndroid Build Coastguard Worker         { 16, 16, 21, 21, 21 },
286*c0909341SAndroid Build Coastguard Worker         { 16, 16, 21, 21, 21 },
287*c0909341SAndroid Build Coastguard Worker         { 16, 16, 21, 21, 21 },
288*c0909341SAndroid Build Coastguard Worker     }, { /* w < h */
289*c0909341SAndroid Build Coastguard Worker         {  0, 11, 11, 11, 11 },
290*c0909341SAndroid Build Coastguard Worker         { 11, 11, 11, 11, 11 },
291*c0909341SAndroid Build Coastguard Worker         {  6,  6, 21, 21, 21 },
292*c0909341SAndroid Build Coastguard Worker         {  6, 21, 21, 21, 21 },
293*c0909341SAndroid Build Coastguard Worker         { 21, 21, 21, 21, 21 },
294*c0909341SAndroid Build Coastguard Worker     },
295*c0909341SAndroid Build Coastguard Worker };
296*c0909341SAndroid Build Coastguard Worker 
297*c0909341SAndroid Build Coastguard Worker const uint8_t dav1d_skip_ctx[5][5] = {
298*c0909341SAndroid Build Coastguard Worker     { 1, 2, 2, 2, 3 },
299*c0909341SAndroid Build Coastguard Worker     { 2, 4, 4, 4, 5 },
300*c0909341SAndroid Build Coastguard Worker     { 2, 4, 4, 4, 5 },
301*c0909341SAndroid Build Coastguard Worker     { 2, 4, 4, 4, 5 },
302*c0909341SAndroid Build Coastguard Worker     { 3, 5, 5, 5, 6 },
303*c0909341SAndroid Build Coastguard Worker };
304*c0909341SAndroid Build Coastguard Worker 
305*c0909341SAndroid Build Coastguard Worker const uint8_t /* enum TxClass */ dav1d_tx_type_class[N_TX_TYPES_PLUS_LL] = {
306*c0909341SAndroid Build Coastguard Worker     [DCT_DCT]           = TX_CLASS_2D,
307*c0909341SAndroid Build Coastguard Worker     [ADST_DCT]          = TX_CLASS_2D,
308*c0909341SAndroid Build Coastguard Worker     [DCT_ADST]          = TX_CLASS_2D,
309*c0909341SAndroid Build Coastguard Worker     [ADST_ADST]         = TX_CLASS_2D,
310*c0909341SAndroid Build Coastguard Worker     [FLIPADST_DCT]      = TX_CLASS_2D,
311*c0909341SAndroid Build Coastguard Worker     [DCT_FLIPADST]      = TX_CLASS_2D,
312*c0909341SAndroid Build Coastguard Worker     [FLIPADST_FLIPADST] = TX_CLASS_2D,
313*c0909341SAndroid Build Coastguard Worker     [ADST_FLIPADST]     = TX_CLASS_2D,
314*c0909341SAndroid Build Coastguard Worker     [FLIPADST_ADST]     = TX_CLASS_2D,
315*c0909341SAndroid Build Coastguard Worker     [IDTX]              = TX_CLASS_2D,
316*c0909341SAndroid Build Coastguard Worker     [V_DCT]             = TX_CLASS_V,
317*c0909341SAndroid Build Coastguard Worker     [H_DCT]             = TX_CLASS_H,
318*c0909341SAndroid Build Coastguard Worker     [V_ADST]            = TX_CLASS_V,
319*c0909341SAndroid Build Coastguard Worker     [H_ADST]            = TX_CLASS_H,
320*c0909341SAndroid Build Coastguard Worker     [V_FLIPADST]        = TX_CLASS_V,
321*c0909341SAndroid Build Coastguard Worker     [H_FLIPADST]        = TX_CLASS_H,
322*c0909341SAndroid Build Coastguard Worker     [WHT_WHT]           = TX_CLASS_2D,
323*c0909341SAndroid Build Coastguard Worker };
324*c0909341SAndroid Build Coastguard Worker 
325*c0909341SAndroid Build Coastguard Worker const uint8_t /* enum Filter2d */ dav1d_filter_2d[DAV1D_N_FILTERS][DAV1D_N_FILTERS] = {
326*c0909341SAndroid Build Coastguard Worker     [DAV1D_FILTER_8TAP_REGULAR] = {
327*c0909341SAndroid Build Coastguard Worker         [DAV1D_FILTER_8TAP_REGULAR] = FILTER_2D_8TAP_REGULAR,
328*c0909341SAndroid Build Coastguard Worker         [DAV1D_FILTER_8TAP_SHARP]   = FILTER_2D_8TAP_REGULAR_SHARP,
329*c0909341SAndroid Build Coastguard Worker         [DAV1D_FILTER_8TAP_SMOOTH]  = FILTER_2D_8TAP_REGULAR_SMOOTH,
330*c0909341SAndroid Build Coastguard Worker     }, [DAV1D_FILTER_8TAP_SHARP] = {
331*c0909341SAndroid Build Coastguard Worker         [DAV1D_FILTER_8TAP_REGULAR] = FILTER_2D_8TAP_SHARP_REGULAR,
332*c0909341SAndroid Build Coastguard Worker         [DAV1D_FILTER_8TAP_SHARP]   = FILTER_2D_8TAP_SHARP,
333*c0909341SAndroid Build Coastguard Worker         [DAV1D_FILTER_8TAP_SMOOTH]  = FILTER_2D_8TAP_SHARP_SMOOTH,
334*c0909341SAndroid Build Coastguard Worker     }, [DAV1D_FILTER_8TAP_SMOOTH] = {
335*c0909341SAndroid Build Coastguard Worker         [DAV1D_FILTER_8TAP_REGULAR] = FILTER_2D_8TAP_SMOOTH_REGULAR,
336*c0909341SAndroid Build Coastguard Worker         [DAV1D_FILTER_8TAP_SHARP]   = FILTER_2D_8TAP_SMOOTH_SHARP,
337*c0909341SAndroid Build Coastguard Worker         [DAV1D_FILTER_8TAP_SMOOTH]  = FILTER_2D_8TAP_SMOOTH,
338*c0909341SAndroid Build Coastguard Worker     }, [DAV1D_FILTER_BILINEAR] = {
339*c0909341SAndroid Build Coastguard Worker         [DAV1D_FILTER_BILINEAR]     = FILTER_2D_BILINEAR,
340*c0909341SAndroid Build Coastguard Worker     }
341*c0909341SAndroid Build Coastguard Worker };
342*c0909341SAndroid Build Coastguard Worker 
343*c0909341SAndroid Build Coastguard Worker const uint8_t /* enum Dav1dFilterMode */ dav1d_filter_dir[N_2D_FILTERS][2] = {
344*c0909341SAndroid Build Coastguard Worker     [FILTER_2D_8TAP_REGULAR]        = { DAV1D_FILTER_8TAP_REGULAR, DAV1D_FILTER_8TAP_REGULAR },
345*c0909341SAndroid Build Coastguard Worker     [FILTER_2D_8TAP_REGULAR_SMOOTH] = { DAV1D_FILTER_8TAP_SMOOTH,  DAV1D_FILTER_8TAP_REGULAR },
346*c0909341SAndroid Build Coastguard Worker     [FILTER_2D_8TAP_REGULAR_SHARP]  = { DAV1D_FILTER_8TAP_SHARP,   DAV1D_FILTER_8TAP_REGULAR },
347*c0909341SAndroid Build Coastguard Worker     [FILTER_2D_8TAP_SHARP_REGULAR]  = { DAV1D_FILTER_8TAP_REGULAR, DAV1D_FILTER_8TAP_SHARP   },
348*c0909341SAndroid Build Coastguard Worker     [FILTER_2D_8TAP_SHARP_SMOOTH]   = { DAV1D_FILTER_8TAP_SMOOTH,  DAV1D_FILTER_8TAP_SHARP   },
349*c0909341SAndroid Build Coastguard Worker     [FILTER_2D_8TAP_SHARP]          = { DAV1D_FILTER_8TAP_SHARP,   DAV1D_FILTER_8TAP_SHARP   },
350*c0909341SAndroid Build Coastguard Worker     [FILTER_2D_8TAP_SMOOTH_REGULAR] = { DAV1D_FILTER_8TAP_REGULAR, DAV1D_FILTER_8TAP_SMOOTH  },
351*c0909341SAndroid Build Coastguard Worker     [FILTER_2D_8TAP_SMOOTH]         = { DAV1D_FILTER_8TAP_SMOOTH,  DAV1D_FILTER_8TAP_SMOOTH  },
352*c0909341SAndroid Build Coastguard Worker     [FILTER_2D_8TAP_SMOOTH_SHARP]   = { DAV1D_FILTER_8TAP_SHARP,   DAV1D_FILTER_8TAP_SMOOTH  },
353*c0909341SAndroid Build Coastguard Worker     [FILTER_2D_BILINEAR]            = { DAV1D_FILTER_BILINEAR,     DAV1D_FILTER_BILINEAR     },
354*c0909341SAndroid Build Coastguard Worker };
355*c0909341SAndroid Build Coastguard Worker 
356*c0909341SAndroid Build Coastguard Worker const uint8_t dav1d_filter_mode_to_y_mode[5] = {
357*c0909341SAndroid Build Coastguard Worker     DC_PRED, VERT_PRED, HOR_PRED, HOR_DOWN_PRED, DC_PRED
358*c0909341SAndroid Build Coastguard Worker };
359*c0909341SAndroid Build Coastguard Worker 
360*c0909341SAndroid Build Coastguard Worker const uint8_t dav1d_intra_mode_context[N_INTRA_PRED_MODES] = {
361*c0909341SAndroid Build Coastguard Worker     [DC_PRED]              = 0,
362*c0909341SAndroid Build Coastguard Worker     [VERT_PRED]            = 1,
363*c0909341SAndroid Build Coastguard Worker     [HOR_PRED]             = 2,
364*c0909341SAndroid Build Coastguard Worker     [DIAG_DOWN_LEFT_PRED]  = 3,
365*c0909341SAndroid Build Coastguard Worker     [DIAG_DOWN_RIGHT_PRED] = 4,
366*c0909341SAndroid Build Coastguard Worker     [VERT_RIGHT_PRED]      = 4,
367*c0909341SAndroid Build Coastguard Worker     [HOR_DOWN_PRED]        = 4,
368*c0909341SAndroid Build Coastguard Worker     [HOR_UP_PRED]          = 4,
369*c0909341SAndroid Build Coastguard Worker     [VERT_LEFT_PRED]       = 3,
370*c0909341SAndroid Build Coastguard Worker     [SMOOTH_PRED]          = 0,
371*c0909341SAndroid Build Coastguard Worker     [SMOOTH_V_PRED]        = 1,
372*c0909341SAndroid Build Coastguard Worker     [SMOOTH_H_PRED]        = 2,
373*c0909341SAndroid Build Coastguard Worker     [PAETH_PRED]           = 0,
374*c0909341SAndroid Build Coastguard Worker };
375*c0909341SAndroid Build Coastguard Worker 
376*c0909341SAndroid Build Coastguard Worker const uint8_t dav1d_wedge_ctx_lut[N_BS_SIZES] = {
377*c0909341SAndroid Build Coastguard Worker     [BS_32x32] = 6,
378*c0909341SAndroid Build Coastguard Worker     [BS_32x16] = 5,
379*c0909341SAndroid Build Coastguard Worker     [BS_32x8]  = 8,
380*c0909341SAndroid Build Coastguard Worker     [BS_16x32] = 4,
381*c0909341SAndroid Build Coastguard Worker     [BS_16x16] = 3,
382*c0909341SAndroid Build Coastguard Worker     [BS_16x8]  = 2,
383*c0909341SAndroid Build Coastguard Worker     [BS_8x32]  = 7,
384*c0909341SAndroid Build Coastguard Worker     [BS_8x16]  = 1,
385*c0909341SAndroid Build Coastguard Worker     [BS_8x8]   = 0,
386*c0909341SAndroid Build Coastguard Worker };
387*c0909341SAndroid Build Coastguard Worker 
388*c0909341SAndroid Build Coastguard Worker const Dav1dWarpedMotionParams dav1d_default_wm_params = {
389*c0909341SAndroid Build Coastguard Worker     .type = DAV1D_WM_TYPE_IDENTITY,
390*c0909341SAndroid Build Coastguard Worker     .matrix = {
391*c0909341SAndroid Build Coastguard Worker         0, 0, 1 << 16,
392*c0909341SAndroid Build Coastguard Worker         0, 0, 1 << 16,
393*c0909341SAndroid Build Coastguard Worker     },
394*c0909341SAndroid Build Coastguard Worker     .u.p.alpha = 0,
395*c0909341SAndroid Build Coastguard Worker     .u.p.beta = 0,
396*c0909341SAndroid Build Coastguard Worker     .u.p.gamma = 0,
397*c0909341SAndroid Build Coastguard Worker     .u.p.delta = 0,
398*c0909341SAndroid Build Coastguard Worker };
399*c0909341SAndroid Build Coastguard Worker 
400*c0909341SAndroid Build Coastguard Worker const int8_t dav1d_cdef_directions[2 + 8 + 2 /* dir */][2 /* pass */] = {
401*c0909341SAndroid Build Coastguard Worker     {  1 * 12 + 0,  2 * 12 + 0 }, // 6
402*c0909341SAndroid Build Coastguard Worker     {  1 * 12 + 0,  2 * 12 - 1 }, // 7
403*c0909341SAndroid Build Coastguard Worker     { -1 * 12 + 1, -2 * 12 + 2 }, // 0
404*c0909341SAndroid Build Coastguard Worker     {  0 * 12 + 1, -1 * 12 + 2 }, // 1
405*c0909341SAndroid Build Coastguard Worker     {  0 * 12 + 1,  0 * 12 + 2 }, // 2
406*c0909341SAndroid Build Coastguard Worker     {  0 * 12 + 1,  1 * 12 + 2 }, // 3
407*c0909341SAndroid Build Coastguard Worker     {  1 * 12 + 1,  2 * 12 + 2 }, // 4
408*c0909341SAndroid Build Coastguard Worker     {  1 * 12 + 0,  2 * 12 + 1 }, // 5
409*c0909341SAndroid Build Coastguard Worker     {  1 * 12 + 0,  2 * 12 + 0 }, // 6
410*c0909341SAndroid Build Coastguard Worker     {  1 * 12 + 0,  2 * 12 - 1 }, // 7
411*c0909341SAndroid Build Coastguard Worker     { -1 * 12 + 1, -2 * 12 + 2 }, // 0
412*c0909341SAndroid Build Coastguard Worker     {  0 * 12 + 1, -1 * 12 + 2 }, // 1
413*c0909341SAndroid Build Coastguard Worker };
414*c0909341SAndroid Build Coastguard Worker 
415*c0909341SAndroid Build Coastguard Worker const uint16_t ALIGN(dav1d_sgr_params[16][2], 4) = {
416*c0909341SAndroid Build Coastguard Worker     { 140, 3236 }, { 112, 2158 }, {  93, 1618 }, {  80, 1438 },
417*c0909341SAndroid Build Coastguard Worker     {  70, 1295 }, {  58, 1177 }, {  47, 1079 }, {  37,  996 },
418*c0909341SAndroid Build Coastguard Worker     {  30,  925 }, {  25,  863 }, {   0, 2589 }, {   0, 1618 },
419*c0909341SAndroid Build Coastguard Worker     {   0, 1177 }, {   0,  925 }, {  56,    0 }, {  22,    0 },
420*c0909341SAndroid Build Coastguard Worker };
421*c0909341SAndroid Build Coastguard Worker 
422*c0909341SAndroid Build Coastguard Worker const uint8_t ALIGN(dav1d_sgr_x_by_x[256], 64) = {
423*c0909341SAndroid Build Coastguard Worker     255, 128,  85,  64,  51,  43,  37,  32,  28,  26,  23,  21,  20,  18,  17,
424*c0909341SAndroid Build Coastguard Worker      16,  15,  14,  13,  13,  12,  12,  11,  11,  10,  10,   9,   9,   9,   9,
425*c0909341SAndroid Build Coastguard Worker       8,   8,   8,   8,   7,   7,   7,   7,   7,   6,   6,   6,   6,   6,   6,
426*c0909341SAndroid Build Coastguard Worker       6,   5,   5,   5,   5,   5,   5,   5,   5,   5,   5,   4,   4,   4,   4,
427*c0909341SAndroid Build Coastguard Worker       4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   4,   3,   3,
428*c0909341SAndroid Build Coastguard Worker       3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,
429*c0909341SAndroid Build Coastguard Worker       3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   3,   2,   2,   2,
430*c0909341SAndroid Build Coastguard Worker       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
431*c0909341SAndroid Build Coastguard Worker       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
432*c0909341SAndroid Build Coastguard Worker       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
433*c0909341SAndroid Build Coastguard Worker       2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,   2,
434*c0909341SAndroid Build Coastguard Worker       2,   2,   2,   2,   2,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
435*c0909341SAndroid Build Coastguard Worker       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
436*c0909341SAndroid Build Coastguard Worker       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
437*c0909341SAndroid Build Coastguard Worker       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
438*c0909341SAndroid Build Coastguard Worker       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
439*c0909341SAndroid Build Coastguard Worker       1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,   1,
440*c0909341SAndroid Build Coastguard Worker       0
441*c0909341SAndroid Build Coastguard Worker };
442*c0909341SAndroid Build Coastguard Worker 
443*c0909341SAndroid Build Coastguard Worker const int8_t ALIGN(dav1d_mc_subpel_filters[6][15][8], 8) = {
444*c0909341SAndroid Build Coastguard Worker     [DAV1D_FILTER_8TAP_REGULAR] = {
445*c0909341SAndroid Build Coastguard Worker         {   0,   1,  -3,  63,   4,  -1,   0,   0 },
446*c0909341SAndroid Build Coastguard Worker         {   0,   1,  -5,  61,   9,  -2,   0,   0 },
447*c0909341SAndroid Build Coastguard Worker         {   0,   1,  -6,  58,  14,  -4,   1,   0 },
448*c0909341SAndroid Build Coastguard Worker         {   0,   1,  -7,  55,  19,  -5,   1,   0 },
449*c0909341SAndroid Build Coastguard Worker         {   0,   1,  -7,  51,  24,  -6,   1,   0 },
450*c0909341SAndroid Build Coastguard Worker         {   0,   1,  -8,  47,  29,  -6,   1,   0 },
451*c0909341SAndroid Build Coastguard Worker         {   0,   1,  -7,  42,  33,  -6,   1,   0 },
452*c0909341SAndroid Build Coastguard Worker         {   0,   1,  -7,  38,  38,  -7,   1,   0 },
453*c0909341SAndroid Build Coastguard Worker         {   0,   1,  -6,  33,  42,  -7,   1,   0 },
454*c0909341SAndroid Build Coastguard Worker         {   0,   1,  -6,  29,  47,  -8,   1,   0 },
455*c0909341SAndroid Build Coastguard Worker         {   0,   1,  -6,  24,  51,  -7,   1,   0 },
456*c0909341SAndroid Build Coastguard Worker         {   0,   1,  -5,  19,  55,  -7,   1,   0 },
457*c0909341SAndroid Build Coastguard Worker         {   0,   1,  -4,  14,  58,  -6,   1,   0 },
458*c0909341SAndroid Build Coastguard Worker         {   0,   0,  -2,   9,  61,  -5,   1,   0 },
459*c0909341SAndroid Build Coastguard Worker         {   0,   0,  -1,   4,  63,  -3,   1,   0 }
460*c0909341SAndroid Build Coastguard Worker     }, [DAV1D_FILTER_8TAP_SMOOTH] = {
461*c0909341SAndroid Build Coastguard Worker         {   0,   1,  14,  31,  17,   1,   0,   0 },
462*c0909341SAndroid Build Coastguard Worker         {   0,   0,  13,  31,  18,   2,   0,   0 },
463*c0909341SAndroid Build Coastguard Worker         {   0,   0,  11,  31,  20,   2,   0,   0 },
464*c0909341SAndroid Build Coastguard Worker         {   0,   0,  10,  30,  21,   3,   0,   0 },
465*c0909341SAndroid Build Coastguard Worker         {   0,   0,   9,  29,  22,   4,   0,   0 },
466*c0909341SAndroid Build Coastguard Worker         {   0,   0,   8,  28,  23,   5,   0,   0 },
467*c0909341SAndroid Build Coastguard Worker         {   0,  -1,   8,  27,  24,   6,   0,   0 },
468*c0909341SAndroid Build Coastguard Worker         {   0,  -1,   7,  26,  26,   7,  -1,   0 },
469*c0909341SAndroid Build Coastguard Worker         {   0,   0,   6,  24,  27,   8,  -1,   0 },
470*c0909341SAndroid Build Coastguard Worker         {   0,   0,   5,  23,  28,   8,   0,   0 },
471*c0909341SAndroid Build Coastguard Worker         {   0,   0,   4,  22,  29,   9,   0,   0 },
472*c0909341SAndroid Build Coastguard Worker         {   0,   0,   3,  21,  30,  10,   0,   0 },
473*c0909341SAndroid Build Coastguard Worker         {   0,   0,   2,  20,  31,  11,   0,   0 },
474*c0909341SAndroid Build Coastguard Worker         {   0,   0,   2,  18,  31,  13,   0,   0 },
475*c0909341SAndroid Build Coastguard Worker         {   0,   0,   1,  17,  31,  14,   1,   0 }
476*c0909341SAndroid Build Coastguard Worker     }, [DAV1D_FILTER_8TAP_SHARP] = {
477*c0909341SAndroid Build Coastguard Worker         {  -1,   1,  -3,  63,   4,  -1,   1,   0 },
478*c0909341SAndroid Build Coastguard Worker         {  -1,   3,  -6,  62,   8,  -3,   2,  -1 },
479*c0909341SAndroid Build Coastguard Worker         {  -1,   4,  -9,  60,  13,  -5,   3,  -1 },
480*c0909341SAndroid Build Coastguard Worker         {  -2,   5, -11,  58,  19,  -7,   3,  -1 },
481*c0909341SAndroid Build Coastguard Worker         {  -2,   5, -11,  54,  24,  -9,   4,  -1 },
482*c0909341SAndroid Build Coastguard Worker         {  -2,   5, -12,  50,  30, -10,   4,  -1 },
483*c0909341SAndroid Build Coastguard Worker         {  -2,   5, -12,  45,  35, -11,   5,  -1 },
484*c0909341SAndroid Build Coastguard Worker         {  -2,   6, -12,  40,  40, -12,   6,  -2 },
485*c0909341SAndroid Build Coastguard Worker         {  -1,   5, -11,  35,  45, -12,   5,  -2 },
486*c0909341SAndroid Build Coastguard Worker         {  -1,   4, -10,  30,  50, -12,   5,  -2 },
487*c0909341SAndroid Build Coastguard Worker         {  -1,   4,  -9,  24,  54, -11,   5,  -2 },
488*c0909341SAndroid Build Coastguard Worker         {  -1,   3,  -7,  19,  58, -11,   5,  -2 },
489*c0909341SAndroid Build Coastguard Worker         {  -1,   3,  -5,  13,  60,  -9,   4,  -1 },
490*c0909341SAndroid Build Coastguard Worker         {  -1,   2,  -3,   8,  62,  -6,   3,  -1 },
491*c0909341SAndroid Build Coastguard Worker         {   0,   1,  -1,   4,  63,  -3,   1,  -1 }
492*c0909341SAndroid Build Coastguard Worker     /* width <= 4 */
493*c0909341SAndroid Build Coastguard Worker     }, [3 + DAV1D_FILTER_8TAP_REGULAR] = {
494*c0909341SAndroid Build Coastguard Worker         {   0,   0,  -2,  63,   4,  -1,   0,   0 },
495*c0909341SAndroid Build Coastguard Worker         {   0,   0,  -4,  61,   9,  -2,   0,   0 },
496*c0909341SAndroid Build Coastguard Worker         {   0,   0,  -5,  58,  14,  -3,   0,   0 },
497*c0909341SAndroid Build Coastguard Worker         {   0,   0,  -6,  55,  19,  -4,   0,   0 },
498*c0909341SAndroid Build Coastguard Worker         {   0,   0,  -6,  51,  24,  -5,   0,   0 },
499*c0909341SAndroid Build Coastguard Worker         {   0,   0,  -7,  47,  29,  -5,   0,   0 },
500*c0909341SAndroid Build Coastguard Worker         {   0,   0,  -6,  42,  33,  -5,   0,   0 },
501*c0909341SAndroid Build Coastguard Worker         {   0,   0,  -6,  38,  38,  -6,   0,   0 },
502*c0909341SAndroid Build Coastguard Worker         {   0,   0,  -5,  33,  42,  -6,   0,   0 },
503*c0909341SAndroid Build Coastguard Worker         {   0,   0,  -5,  29,  47,  -7,   0,   0 },
504*c0909341SAndroid Build Coastguard Worker         {   0,   0,  -5,  24,  51,  -6,   0,   0 },
505*c0909341SAndroid Build Coastguard Worker         {   0,   0,  -4,  19,  55,  -6,   0,   0 },
506*c0909341SAndroid Build Coastguard Worker         {   0,   0,  -3,  14,  58,  -5,   0,   0 },
507*c0909341SAndroid Build Coastguard Worker         {   0,   0,  -2,   9,  61,  -4,   0,   0 },
508*c0909341SAndroid Build Coastguard Worker         {   0,   0,  -1,   4,  63,  -2,   0,   0 }
509*c0909341SAndroid Build Coastguard Worker     }, [3 + DAV1D_FILTER_8TAP_SMOOTH] = {
510*c0909341SAndroid Build Coastguard Worker         {   0,   0,  15,  31,  17,   1,   0,   0 },
511*c0909341SAndroid Build Coastguard Worker         {   0,   0,  13,  31,  18,   2,   0,   0 },
512*c0909341SAndroid Build Coastguard Worker         {   0,   0,  11,  31,  20,   2,   0,   0 },
513*c0909341SAndroid Build Coastguard Worker         {   0,   0,  10,  30,  21,   3,   0,   0 },
514*c0909341SAndroid Build Coastguard Worker         {   0,   0,   9,  29,  22,   4,   0,   0 },
515*c0909341SAndroid Build Coastguard Worker         {   0,   0,   8,  28,  23,   5,   0,   0 },
516*c0909341SAndroid Build Coastguard Worker         {   0,   0,   7,  27,  24,   6,   0,   0 },
517*c0909341SAndroid Build Coastguard Worker         {   0,   0,   6,  26,  26,   6,   0,   0 },
518*c0909341SAndroid Build Coastguard Worker         {   0,   0,   6,  24,  27,   7,   0,   0 },
519*c0909341SAndroid Build Coastguard Worker         {   0,   0,   5,  23,  28,   8,   0,   0 },
520*c0909341SAndroid Build Coastguard Worker         {   0,   0,   4,  22,  29,   9,   0,   0 },
521*c0909341SAndroid Build Coastguard Worker         {   0,   0,   3,  21,  30,  10,   0,   0 },
522*c0909341SAndroid Build Coastguard Worker         {   0,   0,   2,  20,  31,  11,   0,   0 },
523*c0909341SAndroid Build Coastguard Worker         {   0,   0,   2,  18,  31,  13,   0,   0 },
524*c0909341SAndroid Build Coastguard Worker         {   0,   0,   1,  17,  31,  15,   0,   0 }
525*c0909341SAndroid Build Coastguard Worker     /* Bilin scaled being very rarely used, add a new table entry
526*c0909341SAndroid Build Coastguard Worker      * and use the put/prep_8tap_scaled code, thus acting as a
527*c0909341SAndroid Build Coastguard Worker      * scaled bilinear filter. */
528*c0909341SAndroid Build Coastguard Worker     }, [5] = {
529*c0909341SAndroid Build Coastguard Worker         {   0,   0,   0, 60,   4,   0,   0,   0 },
530*c0909341SAndroid Build Coastguard Worker         {   0,   0,   0, 56,   8,   0,   0,   0 },
531*c0909341SAndroid Build Coastguard Worker         {   0,   0,   0, 52,  12,   0,   0,   0 },
532*c0909341SAndroid Build Coastguard Worker         {   0,   0,   0, 48,  16,   0,   0,   0 },
533*c0909341SAndroid Build Coastguard Worker         {   0,   0,   0, 44,  20,   0,   0,   0 },
534*c0909341SAndroid Build Coastguard Worker         {   0,   0,   0, 40,  24,   0,   0,   0 },
535*c0909341SAndroid Build Coastguard Worker         {   0,   0,   0, 36,  28,   0,   0,   0 },
536*c0909341SAndroid Build Coastguard Worker         {   0,   0,   0, 32,  32,   0,   0,   0 },
537*c0909341SAndroid Build Coastguard Worker         {   0,   0,   0, 28,  36,   0,   0,   0 },
538*c0909341SAndroid Build Coastguard Worker         {   0,   0,   0, 24,  40,   0,   0,   0 },
539*c0909341SAndroid Build Coastguard Worker         {   0,   0,   0, 20,  44,   0,   0,   0 },
540*c0909341SAndroid Build Coastguard Worker         {   0,   0,   0, 16,  48,   0,   0,   0 },
541*c0909341SAndroid Build Coastguard Worker         {   0,   0,   0, 12,  52,   0,   0,   0 },
542*c0909341SAndroid Build Coastguard Worker         {   0,   0,   0,  8,  56,   0,   0,   0 },
543*c0909341SAndroid Build Coastguard Worker         {   0,   0,   0,  4,  60,   0,   0,   0 }
544*c0909341SAndroid Build Coastguard Worker     }
545*c0909341SAndroid Build Coastguard Worker };
546*c0909341SAndroid Build Coastguard Worker 
547*c0909341SAndroid Build Coastguard Worker const int8_t ALIGN(dav1d_mc_warp_filter[193][8], 8) = {
548*c0909341SAndroid Build Coastguard Worker     // [-1, 0)
549*c0909341SAndroid Build Coastguard Worker     { 0,   0, 127,   1,   0, 0, 0, 0 }, { 0,  -1, 127,   2,   0, 0, 0, 0 },
550*c0909341SAndroid Build Coastguard Worker     { 1,  -3, 127,   4, - 1, 0, 0, 0 }, { 1,  -4, 126,   6,  -2, 1, 0, 0 },
551*c0909341SAndroid Build Coastguard Worker     { 1,  -5, 126,   8, - 3, 1, 0, 0 }, { 1,  -6, 125,  11,  -4, 1, 0, 0 },
552*c0909341SAndroid Build Coastguard Worker     { 1,  -7, 124,  13, - 4, 1, 0, 0 }, { 2,  -8, 123,  15,  -5, 1, 0, 0 },
553*c0909341SAndroid Build Coastguard Worker     { 2,  -9, 122,  18, - 6, 1, 0, 0 }, { 2, -10, 121,  20,  -6, 1, 0, 0 },
554*c0909341SAndroid Build Coastguard Worker     { 2, -11, 120,  22, - 7, 2, 0, 0 }, { 2, -12, 119,  25,  -8, 2, 0, 0 },
555*c0909341SAndroid Build Coastguard Worker     { 3, -13, 117,  27, - 8, 2, 0, 0 }, { 3, -13, 116,  29,  -9, 2, 0, 0 },
556*c0909341SAndroid Build Coastguard Worker     { 3, -14, 114,  32, -10, 3, 0, 0 }, { 3, -15, 113,  35, -10, 2, 0, 0 },
557*c0909341SAndroid Build Coastguard Worker     { 3, -15, 111,  37, -11, 3, 0, 0 }, { 3, -16, 109,  40, -11, 3, 0, 0 },
558*c0909341SAndroid Build Coastguard Worker     { 3, -16, 108,  42, -12, 3, 0, 0 }, { 4, -17, 106,  45, -13, 3, 0, 0 },
559*c0909341SAndroid Build Coastguard Worker     { 4, -17, 104,  47, -13, 3, 0, 0 }, { 4, -17, 102,  50, -14, 3, 0, 0 },
560*c0909341SAndroid Build Coastguard Worker     { 4, -17, 100,  52, -14, 3, 0, 0 }, { 4, -18,  98,  55, -15, 4, 0, 0 },
561*c0909341SAndroid Build Coastguard Worker     { 4, -18,  96,  58, -15, 3, 0, 0 }, { 4, -18,  94,  60, -16, 4, 0, 0 },
562*c0909341SAndroid Build Coastguard Worker     { 4, -18,  91,  63, -16, 4, 0, 0 }, { 4, -18,  89,  65, -16, 4, 0, 0 },
563*c0909341SAndroid Build Coastguard Worker     { 4, -18,  87,  68, -17, 4, 0, 0 }, { 4, -18,  85,  70, -17, 4, 0, 0 },
564*c0909341SAndroid Build Coastguard Worker     { 4, -18,  82,  73, -17, 4, 0, 0 }, { 4, -18,  80,  75, -17, 4, 0, 0 },
565*c0909341SAndroid Build Coastguard Worker     { 4, -18,  78,  78, -18, 4, 0, 0 }, { 4, -17,  75,  80, -18, 4, 0, 0 },
566*c0909341SAndroid Build Coastguard Worker     { 4, -17,  73,  82, -18, 4, 0, 0 }, { 4, -17,  70,  85, -18, 4, 0, 0 },
567*c0909341SAndroid Build Coastguard Worker     { 4, -17,  68,  87, -18, 4, 0, 0 }, { 4, -16,  65,  89, -18, 4, 0, 0 },
568*c0909341SAndroid Build Coastguard Worker     { 4, -16,  63,  91, -18, 4, 0, 0 }, { 4, -16,  60,  94, -18, 4, 0, 0 },
569*c0909341SAndroid Build Coastguard Worker     { 3, -15,  58,  96, -18, 4, 0, 0 }, { 4, -15,  55,  98, -18, 4, 0, 0 },
570*c0909341SAndroid Build Coastguard Worker     { 3, -14,  52, 100, -17, 4, 0, 0 }, { 3, -14,  50, 102, -17, 4, 0, 0 },
571*c0909341SAndroid Build Coastguard Worker     { 3, -13,  47, 104, -17, 4, 0, 0 }, { 3, -13,  45, 106, -17, 4, 0, 0 },
572*c0909341SAndroid Build Coastguard Worker     { 3, -12,  42, 108, -16, 3, 0, 0 }, { 3, -11,  40, 109, -16, 3, 0, 0 },
573*c0909341SAndroid Build Coastguard Worker     { 3, -11,  37, 111, -15, 3, 0, 0 }, { 2, -10,  35, 113, -15, 3, 0, 0 },
574*c0909341SAndroid Build Coastguard Worker     { 3, -10,  32, 114, -14, 3, 0, 0 }, { 2, - 9,  29, 116, -13, 3, 0, 0 },
575*c0909341SAndroid Build Coastguard Worker     { 2,  -8,  27, 117, -13, 3, 0, 0 }, { 2, - 8,  25, 119, -12, 2, 0, 0 },
576*c0909341SAndroid Build Coastguard Worker     { 2,  -7,  22, 120, -11, 2, 0, 0 }, { 1, - 6,  20, 121, -10, 2, 0, 0 },
577*c0909341SAndroid Build Coastguard Worker     { 1,  -6,  18, 122, - 9, 2, 0, 0 }, { 1, - 5,  15, 123, - 8, 2, 0, 0 },
578*c0909341SAndroid Build Coastguard Worker     { 1,  -4,  13, 124, - 7, 1, 0, 0 }, { 1, - 4,  11, 125, - 6, 1, 0, 0 },
579*c0909341SAndroid Build Coastguard Worker     { 1,  -3,   8, 126, - 5, 1, 0, 0 }, { 1, - 2,   6, 126, - 4, 1, 0, 0 },
580*c0909341SAndroid Build Coastguard Worker     { 0,  -1,   4, 127, - 3, 1, 0, 0 }, { 0,   0,   2, 127, - 1, 0, 0, 0 },
581*c0909341SAndroid Build Coastguard Worker     // [0, 1)
582*c0909341SAndroid Build Coastguard Worker     {  0, 0,   0, 127,   1,   0, 0,  0 }, {  0, 0,  -1, 127,   2,   0, 0,  0 },
583*c0909341SAndroid Build Coastguard Worker     {  0, 1,  -3, 127,   4,  -2, 1,  0 }, {  0, 1,  -5, 127,   6,  -2, 1,  0 },
584*c0909341SAndroid Build Coastguard Worker     {  0, 2,  -6, 126,   8,  -3, 1,  0 }, { -1, 2,  -7, 126,  11,  -4, 2, -1 },
585*c0909341SAndroid Build Coastguard Worker     { -1, 3,  -8, 125,  13,  -5, 2, -1 }, { -1, 3, -10, 124,  16,  -6, 3, -1 },
586*c0909341SAndroid Build Coastguard Worker     { -1, 4, -11, 123,  18,  -7, 3, -1 }, { -1, 4, -12, 122,  20,  -7, 3, -1 },
587*c0909341SAndroid Build Coastguard Worker     { -1, 4, -13, 121,  23,  -8, 3, -1 }, { -2, 5, -14, 120,  25,  -9, 4, -1 },
588*c0909341SAndroid Build Coastguard Worker     { -1, 5, -15, 119,  27, -10, 4, -1 }, { -1, 5, -16, 118,  30, -11, 4, -1 },
589*c0909341SAndroid Build Coastguard Worker     { -2, 6, -17, 116,  33, -12, 5, -1 }, { -2, 6, -17, 114,  35, -12, 5, -1 },
590*c0909341SAndroid Build Coastguard Worker     { -2, 6, -18, 113,  38, -13, 5, -1 }, { -2, 7, -19, 111,  41, -14, 6, -2 },
591*c0909341SAndroid Build Coastguard Worker     { -2, 7, -19, 110,  43, -15, 6, -2 }, { -2, 7, -20, 108,  46, -15, 6, -2 },
592*c0909341SAndroid Build Coastguard Worker     { -2, 7, -20, 106,  49, -16, 6, -2 }, { -2, 7, -21, 104,  51, -16, 7, -2 },
593*c0909341SAndroid Build Coastguard Worker     { -2, 7, -21, 102,  54, -17, 7, -2 }, { -2, 8, -21, 100,  56, -18, 7, -2 },
594*c0909341SAndroid Build Coastguard Worker     { -2, 8, -22,  98,  59, -18, 7, -2 }, { -2, 8, -22,  96,  62, -19, 7, -2 },
595*c0909341SAndroid Build Coastguard Worker     { -2, 8, -22,  94,  64, -19, 7, -2 }, { -2, 8, -22,  91,  67, -20, 8, -2 },
596*c0909341SAndroid Build Coastguard Worker     { -2, 8, -22,  89,  69, -20, 8, -2 }, { -2, 8, -22,  87,  72, -21, 8, -2 },
597*c0909341SAndroid Build Coastguard Worker     { -2, 8, -21,  84,  74, -21, 8, -2 }, { -2, 8, -22,  82,  77, -21, 8, -2 },
598*c0909341SAndroid Build Coastguard Worker     { -2, 8, -21,  79,  79, -21, 8, -2 }, { -2, 8, -21,  77,  82, -22, 8, -2 },
599*c0909341SAndroid Build Coastguard Worker     { -2, 8, -21,  74,  84, -21, 8, -2 }, { -2, 8, -21,  72,  87, -22, 8, -2 },
600*c0909341SAndroid Build Coastguard Worker     { -2, 8, -20,  69,  89, -22, 8, -2 }, { -2, 8, -20,  67,  91, -22, 8, -2 },
601*c0909341SAndroid Build Coastguard Worker     { -2, 7, -19,  64,  94, -22, 8, -2 }, { -2, 7, -19,  62,  96, -22, 8, -2 },
602*c0909341SAndroid Build Coastguard Worker     { -2, 7, -18,  59,  98, -22, 8, -2 }, { -2, 7, -18,  56, 100, -21, 8, -2 },
603*c0909341SAndroid Build Coastguard Worker     { -2, 7, -17,  54, 102, -21, 7, -2 }, { -2, 7, -16,  51, 104, -21, 7, -2 },
604*c0909341SAndroid Build Coastguard Worker     { -2, 6, -16,  49, 106, -20, 7, -2 }, { -2, 6, -15,  46, 108, -20, 7, -2 },
605*c0909341SAndroid Build Coastguard Worker     { -2, 6, -15,  43, 110, -19, 7, -2 }, { -2, 6, -14,  41, 111, -19, 7, -2 },
606*c0909341SAndroid Build Coastguard Worker     { -1, 5, -13,  38, 113, -18, 6, -2 }, { -1, 5, -12,  35, 114, -17, 6, -2 },
607*c0909341SAndroid Build Coastguard Worker     { -1, 5, -12,  33, 116, -17, 6, -2 }, { -1, 4, -11,  30, 118, -16, 5, -1 },
608*c0909341SAndroid Build Coastguard Worker     { -1, 4, -10,  27, 119, -15, 5, -1 }, { -1, 4,  -9,  25, 120, -14, 5, -2 },
609*c0909341SAndroid Build Coastguard Worker     { -1, 3,  -8,  23, 121, -13, 4, -1 }, { -1, 3,  -7,  20, 122, -12, 4, -1 },
610*c0909341SAndroid Build Coastguard Worker     { -1, 3,  -7,  18, 123, -11, 4, -1 }, { -1, 3,  -6,  16, 124, -10, 3, -1 },
611*c0909341SAndroid Build Coastguard Worker     { -1, 2,  -5,  13, 125,  -8, 3, -1 }, { -1, 2,  -4,  11, 126,  -7, 2, -1 },
612*c0909341SAndroid Build Coastguard Worker     {  0, 1,  -3,   8, 126,  -6, 2,  0 }, {  0, 1,  -2,   6, 127,  -5, 1,  0 },
613*c0909341SAndroid Build Coastguard Worker     {  0, 1,  -2,   4, 127,  -3, 1,  0 }, {  0, 0,   0,   2, 127,  -1, 0,  0 },
614*c0909341SAndroid Build Coastguard Worker     // [1, 2)
615*c0909341SAndroid Build Coastguard Worker     { 0, 0, 0,   1, 127,   0,   0, 0 }, { 0, 0, 0,  -1, 127,   2,   0, 0 },
616*c0909341SAndroid Build Coastguard Worker     { 0, 0, 1,  -3, 127,   4,  -1, 0 }, { 0, 0, 1,  -4, 126,   6,  -2, 1 },
617*c0909341SAndroid Build Coastguard Worker     { 0, 0, 1,  -5, 126,   8,  -3, 1 }, { 0, 0, 1,  -6, 125,  11,  -4, 1 },
618*c0909341SAndroid Build Coastguard Worker     { 0, 0, 1,  -7, 124,  13,  -4, 1 }, { 0, 0, 2,  -8, 123,  15,  -5, 1 },
619*c0909341SAndroid Build Coastguard Worker     { 0, 0, 2,  -9, 122,  18,  -6, 1 }, { 0, 0, 2, -10, 121,  20,  -6, 1 },
620*c0909341SAndroid Build Coastguard Worker     { 0, 0, 2, -11, 120,  22,  -7, 2 }, { 0, 0, 2, -12, 119,  25,  -8, 2 },
621*c0909341SAndroid Build Coastguard Worker     { 0, 0, 3, -13, 117,  27,  -8, 2 }, { 0, 0, 3, -13, 116,  29,  -9, 2 },
622*c0909341SAndroid Build Coastguard Worker     { 0, 0, 3, -14, 114,  32, -10, 3 }, { 0, 0, 3, -15, 113,  35, -10, 2 },
623*c0909341SAndroid Build Coastguard Worker     { 0, 0, 3, -15, 111,  37, -11, 3 }, { 0, 0, 3, -16, 109,  40, -11, 3 },
624*c0909341SAndroid Build Coastguard Worker     { 0, 0, 3, -16, 108,  42, -12, 3 }, { 0, 0, 4, -17, 106,  45, -13, 3 },
625*c0909341SAndroid Build Coastguard Worker     { 0, 0, 4, -17, 104,  47, -13, 3 }, { 0, 0, 4, -17, 102,  50, -14, 3 },
626*c0909341SAndroid Build Coastguard Worker     { 0, 0, 4, -17, 100,  52, -14, 3 }, { 0, 0, 4, -18,  98,  55, -15, 4 },
627*c0909341SAndroid Build Coastguard Worker     { 0, 0, 4, -18,  96,  58, -15, 3 }, { 0, 0, 4, -18,  94,  60, -16, 4 },
628*c0909341SAndroid Build Coastguard Worker     { 0, 0, 4, -18,  91,  63, -16, 4 }, { 0, 0, 4, -18,  89,  65, -16, 4 },
629*c0909341SAndroid Build Coastguard Worker     { 0, 0, 4, -18,  87,  68, -17, 4 }, { 0, 0, 4, -18,  85,  70, -17, 4 },
630*c0909341SAndroid Build Coastguard Worker     { 0, 0, 4, -18,  82,  73, -17, 4 }, { 0, 0, 4, -18,  80,  75, -17, 4 },
631*c0909341SAndroid Build Coastguard Worker     { 0, 0, 4, -18,  78,  78, -18, 4 }, { 0, 0, 4, -17,  75,  80, -18, 4 },
632*c0909341SAndroid Build Coastguard Worker     { 0, 0, 4, -17,  73,  82, -18, 4 }, { 0, 0, 4, -17,  70,  85, -18, 4 },
633*c0909341SAndroid Build Coastguard Worker     { 0, 0, 4, -17,  68,  87, -18, 4 }, { 0, 0, 4, -16,  65,  89, -18, 4 },
634*c0909341SAndroid Build Coastguard Worker     { 0, 0, 4, -16,  63,  91, -18, 4 }, { 0, 0, 4, -16,  60,  94, -18, 4 },
635*c0909341SAndroid Build Coastguard Worker     { 0, 0, 3, -15,  58,  96, -18, 4 }, { 0, 0, 4, -15,  55,  98, -18, 4 },
636*c0909341SAndroid Build Coastguard Worker     { 0, 0, 3, -14,  52, 100, -17, 4 }, { 0, 0, 3, -14,  50, 102, -17, 4 },
637*c0909341SAndroid Build Coastguard Worker     { 0, 0, 3, -13,  47, 104, -17, 4 }, { 0, 0, 3, -13,  45, 106, -17, 4 },
638*c0909341SAndroid Build Coastguard Worker     { 0, 0, 3, -12,  42, 108, -16, 3 }, { 0, 0, 3, -11,  40, 109, -16, 3 },
639*c0909341SAndroid Build Coastguard Worker     { 0, 0, 3, -11,  37, 111, -15, 3 }, { 0, 0, 2, -10,  35, 113, -15, 3 },
640*c0909341SAndroid Build Coastguard Worker     { 0, 0, 3, -10,  32, 114, -14, 3 }, { 0, 0, 2,  -9,  29, 116, -13, 3 },
641*c0909341SAndroid Build Coastguard Worker     { 0, 0, 2,  -8,  27, 117, -13, 3 }, { 0, 0, 2,  -8,  25, 119, -12, 2 },
642*c0909341SAndroid Build Coastguard Worker     { 0, 0, 2,  -7,  22, 120, -11, 2 }, { 0, 0, 1,  -6,  20, 121, -10, 2 },
643*c0909341SAndroid Build Coastguard Worker     { 0, 0, 1,  -6,  18, 122,  -9, 2 }, { 0, 0, 1,  -5,  15, 123,  -8, 2 },
644*c0909341SAndroid Build Coastguard Worker     { 0, 0, 1,  -4,  13, 124,  -7, 1 }, { 0, 0, 1,  -4,  11, 125,  -6, 1 },
645*c0909341SAndroid Build Coastguard Worker     { 0, 0, 1,  -3,   8, 126,  -5, 1 }, { 0, 0, 1,  -2,   6, 126,  -4, 1 },
646*c0909341SAndroid Build Coastguard Worker     { 0, 0, 0,  -1,   4, 127,  -3, 1 }, { 0, 0, 0,   0,   2, 127,  -1, 0 },
647*c0909341SAndroid Build Coastguard Worker     // dummy (replicate row index 191)
648*c0909341SAndroid Build Coastguard Worker     { 0, 0, 0,   0,   2, 127,  -1, 0 },
649*c0909341SAndroid Build Coastguard Worker };
650*c0909341SAndroid Build Coastguard Worker 
651*c0909341SAndroid Build Coastguard Worker const int8_t ALIGN(dav1d_resize_filter[64][8], 8) = {
652*c0909341SAndroid Build Coastguard Worker     { 0,  0,  0, -128,    0,  0,  0, 0 }, { 0,  0,  1, -128,   -2,  1,  0, 0 },
653*c0909341SAndroid Build Coastguard Worker     { 0, -1,  3, -127,   -4,  2, -1, 0 }, { 0, -1,  4, -127,   -6,  3, -1, 0 },
654*c0909341SAndroid Build Coastguard Worker     { 0, -2,  6, -126,   -8,  3, -1, 0 }, { 0, -2,  7, -125,  -11,  4, -1, 0 },
655*c0909341SAndroid Build Coastguard Worker     { 1, -2,  8, -125,  -13,  5, -2, 0 }, { 1, -3,  9, -124,  -15,  6, -2, 0 },
656*c0909341SAndroid Build Coastguard Worker     { 1, -3, 10, -123,  -18,  6, -2, 1 }, { 1, -3, 11, -122,  -20,  7, -3, 1 },
657*c0909341SAndroid Build Coastguard Worker     { 1, -4, 12, -121,  -22,  8, -3, 1 }, { 1, -4, 13, -120,  -25,  9, -3, 1 },
658*c0909341SAndroid Build Coastguard Worker     { 1, -4, 14, -118,  -28,  9, -3, 1 }, { 1, -4, 15, -117,  -30, 10, -4, 1 },
659*c0909341SAndroid Build Coastguard Worker     { 1, -5, 16, -116,  -32, 11, -4, 1 }, { 1, -5, 16, -114,  -35, 12, -4, 1 },
660*c0909341SAndroid Build Coastguard Worker     { 1, -5, 17, -112,  -38, 12, -4, 1 }, { 1, -5, 18, -111,  -40, 13, -5, 1 },
661*c0909341SAndroid Build Coastguard Worker     { 1, -5, 18, -109,  -43, 14, -5, 1 }, { 1, -6, 19, -107,  -45, 14, -5, 1 },
662*c0909341SAndroid Build Coastguard Worker     { 1, -6, 19, -105,  -48, 15, -5, 1 }, { 1, -6, 19, -103,  -51, 16, -5, 1 },
663*c0909341SAndroid Build Coastguard Worker     { 1, -6, 20, -101,  -53, 16, -6, 1 }, { 1, -6, 20,  -99,  -56, 17, -6, 1 },
664*c0909341SAndroid Build Coastguard Worker     { 1, -6, 20,  -97,  -58, 17, -6, 1 }, { 1, -6, 20,  -95,  -61, 18, -6, 1 },
665*c0909341SAndroid Build Coastguard Worker     { 2, -7, 20,  -93,  -64, 18, -6, 2 }, { 2, -7, 20,  -91,  -66, 19, -6, 1 },
666*c0909341SAndroid Build Coastguard Worker     { 2, -7, 20,  -88,  -69, 19, -6, 1 }, { 2, -7, 20,  -86,  -71, 19, -6, 1 },
667*c0909341SAndroid Build Coastguard Worker     { 2, -7, 20,  -84,  -74, 20, -7, 2 }, { 2, -7, 20,  -81,  -76, 20, -7, 1 },
668*c0909341SAndroid Build Coastguard Worker     { 2, -7, 20,  -79,  -79, 20, -7, 2 }, { 1, -7, 20,  -76,  -81, 20, -7, 2 },
669*c0909341SAndroid Build Coastguard Worker     { 2, -7, 20,  -74,  -84, 20, -7, 2 }, { 1, -6, 19,  -71,  -86, 20, -7, 2 },
670*c0909341SAndroid Build Coastguard Worker     { 1, -6, 19,  -69,  -88, 20, -7, 2 }, { 1, -6, 19,  -66,  -91, 20, -7, 2 },
671*c0909341SAndroid Build Coastguard Worker     { 2, -6, 18,  -64,  -93, 20, -7, 2 }, { 1, -6, 18,  -61,  -95, 20, -6, 1 },
672*c0909341SAndroid Build Coastguard Worker     { 1, -6, 17,  -58,  -97, 20, -6, 1 }, { 1, -6, 17,  -56,  -99, 20, -6, 1 },
673*c0909341SAndroid Build Coastguard Worker     { 1, -6, 16,  -53, -101, 20, -6, 1 }, { 1, -5, 16,  -51, -103, 19, -6, 1 },
674*c0909341SAndroid Build Coastguard Worker     { 1, -5, 15,  -48, -105, 19, -6, 1 }, { 1, -5, 14,  -45, -107, 19, -6, 1 },
675*c0909341SAndroid Build Coastguard Worker     { 1, -5, 14,  -43, -109, 18, -5, 1 }, { 1, -5, 13,  -40, -111, 18, -5, 1 },
676*c0909341SAndroid Build Coastguard Worker     { 1, -4, 12,  -38, -112, 17, -5, 1 }, { 1, -4, 12,  -35, -114, 16, -5, 1 },
677*c0909341SAndroid Build Coastguard Worker     { 1, -4, 11,  -32, -116, 16, -5, 1 }, { 1, -4, 10,  -30, -117, 15, -4, 1 },
678*c0909341SAndroid Build Coastguard Worker     { 1, -3,  9,  -28, -118, 14, -4, 1 }, { 1, -3,  9,  -25, -120, 13, -4, 1 },
679*c0909341SAndroid Build Coastguard Worker     { 1, -3,  8,  -22, -121, 12, -4, 1 }, { 1, -3,  7,  -20, -122, 11, -3, 1 },
680*c0909341SAndroid Build Coastguard Worker     { 1, -2,  6,  -18, -123, 10, -3, 1 }, { 0, -2,  6,  -15, -124,  9, -3, 1 },
681*c0909341SAndroid Build Coastguard Worker     { 0, -2,  5,  -13, -125,  8, -2, 1 }, { 0, -1,  4,  -11, -125,  7, -2, 0 },
682*c0909341SAndroid Build Coastguard Worker     { 0, -1,  3,   -8, -126,  6, -2, 0 }, { 0, -1,  3,   -6, -127,  4, -1, 0 },
683*c0909341SAndroid Build Coastguard Worker     { 0, -1,  2,   -4, -127,  3, -1, 0 }, { 0,  0,  1,   -2, -128,  1,  0, 0 },
684*c0909341SAndroid Build Coastguard Worker };
685*c0909341SAndroid Build Coastguard Worker 
686*c0909341SAndroid Build Coastguard Worker const uint8_t ALIGN(dav1d_sm_weights[128], 16) = {
687*c0909341SAndroid Build Coastguard Worker     // Unused, because we always offset by bs, which is at least 2.
688*c0909341SAndroid Build Coastguard Worker       0,   0,
689*c0909341SAndroid Build Coastguard Worker     // bs = 2
690*c0909341SAndroid Build Coastguard Worker     255, 128,
691*c0909341SAndroid Build Coastguard Worker     // bs = 4
692*c0909341SAndroid Build Coastguard Worker     255, 149,  85,  64,
693*c0909341SAndroid Build Coastguard Worker     // bs = 8
694*c0909341SAndroid Build Coastguard Worker     255, 197, 146, 105,  73,  50,  37,  32,
695*c0909341SAndroid Build Coastguard Worker     // bs = 16
696*c0909341SAndroid Build Coastguard Worker     255, 225, 196, 170, 145, 123, 102,  84,
697*c0909341SAndroid Build Coastguard Worker      68,  54,  43,  33,  26,  20,  17,  16,
698*c0909341SAndroid Build Coastguard Worker     // bs = 32
699*c0909341SAndroid Build Coastguard Worker     255, 240, 225, 210, 196, 182, 169, 157,
700*c0909341SAndroid Build Coastguard Worker     145, 133, 122, 111, 101,  92,  83,  74,
701*c0909341SAndroid Build Coastguard Worker      66,  59,  52,  45,  39,  34,  29,  25,
702*c0909341SAndroid Build Coastguard Worker      21,  17,  14,  12,  10,   9,   8,   8,
703*c0909341SAndroid Build Coastguard Worker     // bs = 64
704*c0909341SAndroid Build Coastguard Worker     255, 248, 240, 233, 225, 218, 210, 203,
705*c0909341SAndroid Build Coastguard Worker     196, 189, 182, 176, 169, 163, 156, 150,
706*c0909341SAndroid Build Coastguard Worker     144, 138, 133, 127, 121, 116, 111, 106,
707*c0909341SAndroid Build Coastguard Worker     101,  96,  91,  86,  82,  77,  73,  69,
708*c0909341SAndroid Build Coastguard Worker      65,  61,  57,  54,  50,  47,  44,  41,
709*c0909341SAndroid Build Coastguard Worker      38,  35,  32,  29,  27,  25,  22,  20,
710*c0909341SAndroid Build Coastguard Worker      18,  16,  15,  13,  12,  10,   9,   8,
711*c0909341SAndroid Build Coastguard Worker       7,   6,   6,   5,   5,   4,   4,   4
712*c0909341SAndroid Build Coastguard Worker };
713*c0909341SAndroid Build Coastguard Worker 
714*c0909341SAndroid Build Coastguard Worker const uint16_t dav1d_dr_intra_derivative[44] = {
715*c0909341SAndroid Build Coastguard Worker     // Values that are 0 will never be used
716*c0909341SAndroid Build Coastguard Worker           0,    // Angles:
717*c0909341SAndroid Build Coastguard Worker     1023, 0,    //  3,  93, 183
718*c0909341SAndroid Build Coastguard Worker      547,       //  6,  96, 186
719*c0909341SAndroid Build Coastguard Worker      372, 0, 0, //  9,  99, 189
720*c0909341SAndroid Build Coastguard Worker      273,       // 14, 104, 194
721*c0909341SAndroid Build Coastguard Worker      215, 0,    // 17, 107, 197
722*c0909341SAndroid Build Coastguard Worker      178,       // 20, 110, 200
723*c0909341SAndroid Build Coastguard Worker      151, 0,    // 23, 113, 203 (113 & 203 are base angles)
724*c0909341SAndroid Build Coastguard Worker      132,       // 26, 116, 206
725*c0909341SAndroid Build Coastguard Worker      116, 0,    // 29, 119, 209
726*c0909341SAndroid Build Coastguard Worker      102, 0,    // 32, 122, 212
727*c0909341SAndroid Build Coastguard Worker       90,       // 36, 126, 216
728*c0909341SAndroid Build Coastguard Worker       80, 0,    // 39, 129, 219
729*c0909341SAndroid Build Coastguard Worker       71,       // 42, 132, 222
730*c0909341SAndroid Build Coastguard Worker       64, 0,    // 45, 135, 225 (45 & 135 are base angles)
731*c0909341SAndroid Build Coastguard Worker       57,       // 48, 138, 228
732*c0909341SAndroid Build Coastguard Worker       51, 0,    // 51, 141, 231
733*c0909341SAndroid Build Coastguard Worker       45, 0,    // 54, 144, 234
734*c0909341SAndroid Build Coastguard Worker       40,       // 58, 148, 238
735*c0909341SAndroid Build Coastguard Worker       35, 0,    // 61, 151, 241
736*c0909341SAndroid Build Coastguard Worker       31,       // 64, 154, 244
737*c0909341SAndroid Build Coastguard Worker       27, 0,    // 67, 157, 247 (67 & 157 are base angles)
738*c0909341SAndroid Build Coastguard Worker       23,       // 70, 160, 250
739*c0909341SAndroid Build Coastguard Worker       19, 0,    // 73, 163, 253
740*c0909341SAndroid Build Coastguard Worker       15, 0,    // 76, 166, 256
741*c0909341SAndroid Build Coastguard Worker       11, 0,    // 81, 171, 261
742*c0909341SAndroid Build Coastguard Worker        7,       // 84, 174, 264
743*c0909341SAndroid Build Coastguard Worker        3        // 87, 177, 267
744*c0909341SAndroid Build Coastguard Worker };
745*c0909341SAndroid Build Coastguard Worker 
746*c0909341SAndroid Build Coastguard Worker #if ARCH_X86
747*c0909341SAndroid Build Coastguard Worker #define F(idx, f0, f1, f2, f3, f4, f5, f6) \
748*c0909341SAndroid Build Coastguard Worker     [2*idx+0]  = f0, [2*idx+1]  = f1,      \
749*c0909341SAndroid Build Coastguard Worker     [2*idx+16] = f2, [2*idx+17] = f3,      \
750*c0909341SAndroid Build Coastguard Worker     [2*idx+32] = f4, [2*idx+33] = f5,      \
751*c0909341SAndroid Build Coastguard Worker     [2*idx+48] = f6
752*c0909341SAndroid Build Coastguard Worker #else
753*c0909341SAndroid Build Coastguard Worker #define F(idx, f0, f1, f2, f3, f4, f5, f6) \
754*c0909341SAndroid Build Coastguard Worker     [1*idx+0]  = f0, [1*idx+8]  = f1,      \
755*c0909341SAndroid Build Coastguard Worker     [1*idx+16] = f2, [1*idx+24] = f3,      \
756*c0909341SAndroid Build Coastguard Worker     [1*idx+32] = f4, [1*idx+40] = f5,      \
757*c0909341SAndroid Build Coastguard Worker     [1*idx+48] = f6
758*c0909341SAndroid Build Coastguard Worker #endif
759*c0909341SAndroid Build Coastguard Worker const int8_t ALIGN(dav1d_filter_intra_taps[5][64], 64) = {
760*c0909341SAndroid Build Coastguard Worker     {
761*c0909341SAndroid Build Coastguard Worker         F( 0,  -6, 10,  0,  0,  0, 12,  0 ),
762*c0909341SAndroid Build Coastguard Worker         F( 1,  -5,  2, 10,  0,  0,  9,  0 ),
763*c0909341SAndroid Build Coastguard Worker         F( 2,  -3,  1,  1, 10,  0,  7,  0 ),
764*c0909341SAndroid Build Coastguard Worker         F( 3,  -3,  1,  1,  2, 10,  5,  0 ),
765*c0909341SAndroid Build Coastguard Worker         F( 4,  -4,  6,  0,  0,  0,  2, 12 ),
766*c0909341SAndroid Build Coastguard Worker         F( 5,  -3,  2,  6,  0,  0,  2,  9 ),
767*c0909341SAndroid Build Coastguard Worker         F( 6,  -3,  2,  2,  6,  0,  2,  7 ),
768*c0909341SAndroid Build Coastguard Worker         F( 7,  -3,  1,  2,  2,  6,  3,  5 ),
769*c0909341SAndroid Build Coastguard Worker     }, {
770*c0909341SAndroid Build Coastguard Worker         F( 0, -10, 16,  0,  0,  0, 10,  0 ),
771*c0909341SAndroid Build Coastguard Worker         F( 1,  -6,  0, 16,  0,  0,  6,  0 ),
772*c0909341SAndroid Build Coastguard Worker         F( 2,  -4,  0,  0, 16,  0,  4,  0 ),
773*c0909341SAndroid Build Coastguard Worker         F( 3,  -2,  0,  0,  0, 16,  2,  0 ),
774*c0909341SAndroid Build Coastguard Worker         F( 4, -10, 16,  0,  0,  0,  0, 10 ),
775*c0909341SAndroid Build Coastguard Worker         F( 5,  -6,  0, 16,  0,  0,  0,  6 ),
776*c0909341SAndroid Build Coastguard Worker         F( 6,  -4,  0,  0, 16,  0,  0,  4 ),
777*c0909341SAndroid Build Coastguard Worker         F( 7,  -2,  0,  0,  0, 16,  0,  2 ),
778*c0909341SAndroid Build Coastguard Worker     }, {
779*c0909341SAndroid Build Coastguard Worker         F( 0,  -8,  8,  0,  0,  0, 16,  0 ),
780*c0909341SAndroid Build Coastguard Worker         F( 1,  -8,  0,  8,  0,  0, 16,  0 ),
781*c0909341SAndroid Build Coastguard Worker         F( 2,  -8,  0,  0,  8,  0, 16,  0 ),
782*c0909341SAndroid Build Coastguard Worker         F( 3,  -8,  0,  0,  0,  8, 16,  0 ),
783*c0909341SAndroid Build Coastguard Worker         F( 4,  -4,  4,  0,  0,  0,  0, 16 ),
784*c0909341SAndroid Build Coastguard Worker         F( 5,  -4,  0,  4,  0,  0,  0, 16 ),
785*c0909341SAndroid Build Coastguard Worker         F( 6,  -4,  0,  0,  4,  0,  0, 16 ),
786*c0909341SAndroid Build Coastguard Worker         F( 7,  -4,  0,  0,  0,  4,  0, 16 ),
787*c0909341SAndroid Build Coastguard Worker     }, {
788*c0909341SAndroid Build Coastguard Worker         F( 0,  -2,  8,  0,  0,  0, 10,  0 ),
789*c0909341SAndroid Build Coastguard Worker         F( 1,  -1,  3,  8,  0,  0,  6,  0 ),
790*c0909341SAndroid Build Coastguard Worker         F( 2,  -1,  2,  3,  8,  0,  4,  0 ),
791*c0909341SAndroid Build Coastguard Worker         F( 3,   0,  1,  2,  3,  8,  2,  0 ),
792*c0909341SAndroid Build Coastguard Worker         F( 4,  -1,  4,  0,  0,  0,  3, 10 ),
793*c0909341SAndroid Build Coastguard Worker         F( 5,  -1,  3,  4,  0,  0,  4,  6 ),
794*c0909341SAndroid Build Coastguard Worker         F( 6,  -1,  2,  3,  4,  0,  4,  4 ),
795*c0909341SAndroid Build Coastguard Worker         F( 7,  -1,  2,  2,  3,  4,  3,  3 ),
796*c0909341SAndroid Build Coastguard Worker     }, {
797*c0909341SAndroid Build Coastguard Worker         F( 0, -12, 14,  0,  0,  0, 14,  0 ),
798*c0909341SAndroid Build Coastguard Worker         F( 1, -10,  0, 14,  0,  0, 12,  0 ),
799*c0909341SAndroid Build Coastguard Worker         F( 2,  -9,  0,  0, 14,  0, 11,  0 ),
800*c0909341SAndroid Build Coastguard Worker         F( 3,  -8,  0,  0,  0, 14, 10,  0 ),
801*c0909341SAndroid Build Coastguard Worker         F( 4, -10, 12,  0,  0,  0,  0, 14 ),
802*c0909341SAndroid Build Coastguard Worker         F( 5,  -9,  1, 12,  0,  0,  0, 12 ),
803*c0909341SAndroid Build Coastguard Worker         F( 6,  -8,  0,  0, 12,  0,  1, 11 ),
804*c0909341SAndroid Build Coastguard Worker         F( 7,  -7,  0,  0,  1, 12,  1,  9 ),
805*c0909341SAndroid Build Coastguard Worker     }
806*c0909341SAndroid Build Coastguard Worker };
807*c0909341SAndroid Build Coastguard Worker 
808*c0909341SAndroid Build Coastguard Worker const uint8_t ALIGN(dav1d_obmc_masks[64], 16) = {
809*c0909341SAndroid Build Coastguard Worker     /* Unused */
810*c0909341SAndroid Build Coastguard Worker      0,  0,
811*c0909341SAndroid Build Coastguard Worker     /* 2 */
812*c0909341SAndroid Build Coastguard Worker     19,  0,
813*c0909341SAndroid Build Coastguard Worker     /* 4 */
814*c0909341SAndroid Build Coastguard Worker     25, 14,  5,  0,
815*c0909341SAndroid Build Coastguard Worker     /* 8 */
816*c0909341SAndroid Build Coastguard Worker     28, 22, 16, 11,  7,  3,  0,  0,
817*c0909341SAndroid Build Coastguard Worker     /* 16 */
818*c0909341SAndroid Build Coastguard Worker     30, 27, 24, 21, 18, 15, 12, 10,  8,  6,  4,  3,  0,  0,  0,  0,
819*c0909341SAndroid Build Coastguard Worker     /* 32 */
820*c0909341SAndroid Build Coastguard Worker     31, 29, 28, 26, 24, 23, 21, 20, 19, 17, 16, 14, 13, 12, 11,  9,
821*c0909341SAndroid Build Coastguard Worker      8,  7,  6,  5,  4,  4,  3,  2,  0,  0,  0,  0,  0,  0,  0,  0,
822*c0909341SAndroid Build Coastguard Worker };
823*c0909341SAndroid Build Coastguard Worker 
824*c0909341SAndroid Build Coastguard Worker // Taken from the spec. Range is [-2048, 2047], mean is 0 and stddev is 512
825*c0909341SAndroid Build Coastguard Worker const int16_t dav1d_gaussian_sequence[2048] = {
826*c0909341SAndroid Build Coastguard Worker     56,    568,   -180,  172,   124,   -84,   172,   -64,   -900,  24,   820,
827*c0909341SAndroid Build Coastguard Worker     224,   1248,  996,   272,   -8,    -916,  -388,  -732,  -104,  -188, 800,
828*c0909341SAndroid Build Coastguard Worker     112,   -652,  -320,  -376,  140,   -252,  492,   -168,  44,    -788, 588,
829*c0909341SAndroid Build Coastguard Worker     -584,  500,   -228,  12,    680,   272,   -476,  972,   -100,  652,  368,
830*c0909341SAndroid Build Coastguard Worker     432,   -196,  -720,  -192,  1000,  -332,  652,   -136,  -552,  -604, -4,
831*c0909341SAndroid Build Coastguard Worker     192,   -220,  -136,  1000,  -52,   372,   -96,   -624,  124,   -24,  396,
832*c0909341SAndroid Build Coastguard Worker     540,   -12,   -104,  640,   464,   244,   -208,  -84,   368,   -528, -740,
833*c0909341SAndroid Build Coastguard Worker     248,   -968,  -848,  608,   376,   -60,   -292,  -40,   -156,  252,  -292,
834*c0909341SAndroid Build Coastguard Worker     248,   224,   -280,  400,   -244,  244,   -60,   76,    -80,   212,  532,
835*c0909341SAndroid Build Coastguard Worker     340,   128,   -36,   824,   -352,  -60,   -264,  -96,   -612,  416,  -704,
836*c0909341SAndroid Build Coastguard Worker     220,   -204,  640,   -160,  1220,  -408,  900,   336,   20,    -336, -96,
837*c0909341SAndroid Build Coastguard Worker     -792,  304,   48,    -28,   -1232, -1172, -448,  104,   -292,  -520, 244,
838*c0909341SAndroid Build Coastguard Worker     60,    -948,  0,     -708,  268,   108,   356,   -548,  488,   -344, -136,
839*c0909341SAndroid Build Coastguard Worker     488,   -196,  -224,  656,   -236,  -1128, 60,    4,     140,   276,  -676,
840*c0909341SAndroid Build Coastguard Worker     -376,  168,   -108,  464,   8,     564,   64,    240,   308,   -300, -400,
841*c0909341SAndroid Build Coastguard Worker     -456,  -136,  56,    120,   -408,  -116,  436,   504,   -232,  328,  844,
842*c0909341SAndroid Build Coastguard Worker     -164,  -84,   784,   -168,  232,   -224,  348,   -376,  128,   568,  96,
843*c0909341SAndroid Build Coastguard Worker     -1244, -288,  276,   848,   832,   -360,  656,   464,   -384,  -332, -356,
844*c0909341SAndroid Build Coastguard Worker     728,   -388,  160,   -192,  468,   296,   224,   140,   -776,  -100, 280,
845*c0909341SAndroid Build Coastguard Worker     4,     196,   44,    -36,   -648,  932,   16,    1428,  28,    528,  808,
846*c0909341SAndroid Build Coastguard Worker     772,   20,    268,   88,    -332,  -284,  124,   -384,  -448,  208,  -228,
847*c0909341SAndroid Build Coastguard Worker     -1044, -328,  660,   380,   -148,  -300,  588,   240,   540,   28,   136,
848*c0909341SAndroid Build Coastguard Worker     -88,   -436,  256,   296,   -1000, 1400,  0,     -48,   1056,  -136, 264,
849*c0909341SAndroid Build Coastguard Worker     -528,  -1108, 632,   -484,  -592,  -344,  796,   124,   -668,  -768, 388,
850*c0909341SAndroid Build Coastguard Worker     1296,  -232,  -188,  -200,  -288,  -4,    308,   100,   -168,  256,  -500,
851*c0909341SAndroid Build Coastguard Worker     204,   -508,  648,   -136,  372,   -272,  -120,  -1004, -552,  -548, -384,
852*c0909341SAndroid Build Coastguard Worker     548,   -296,  428,   -108,  -8,    -912,  -324,  -224,  -88,   -112, -220,
853*c0909341SAndroid Build Coastguard Worker     -100,  996,   -796,  548,   360,   -216,  180,   428,   -200,  -212, 148,
854*c0909341SAndroid Build Coastguard Worker     96,    148,   284,   216,   -412,  -320,  120,   -300,  -384,  -604, -572,
855*c0909341SAndroid Build Coastguard Worker     -332,  -8,    -180,  -176,  696,   116,   -88,   628,   76,    44,   -516,
856*c0909341SAndroid Build Coastguard Worker     240,   -208,  -40,   100,   -592,  344,   -308,  -452,  -228,  20,   916,
857*c0909341SAndroid Build Coastguard Worker     -1752, -136,  -340,  -804,  140,   40,    512,   340,   248,   184,  -492,
858*c0909341SAndroid Build Coastguard Worker     896,   -156,  932,   -628,  328,   -688,  -448,  -616,  -752,  -100, 560,
859*c0909341SAndroid Build Coastguard Worker     -1020, 180,   -800,  -64,   76,    576,   1068,  396,   660,   552,  -108,
860*c0909341SAndroid Build Coastguard Worker     -28,   320,   -628,  312,   -92,   -92,   -472,  268,   16,    560,  516,
861*c0909341SAndroid Build Coastguard Worker     -672,  -52,   492,   -100,  260,   384,   284,   292,   304,   -148, 88,
862*c0909341SAndroid Build Coastguard Worker     -152,  1012,  1064,  -228,  164,   -376,  -684,  592,   -392,  156,  196,
863*c0909341SAndroid Build Coastguard Worker     -524,  -64,   -884,  160,   -176,  636,   648,   404,   -396,  -436, 864,
864*c0909341SAndroid Build Coastguard Worker     424,   -728,  988,   -604,  904,   -592,  296,   -224,  536,   -176, -920,
865*c0909341SAndroid Build Coastguard Worker     436,   -48,   1176,  -884,  416,   -776,  -824,  -884,  524,   -548, -564,
866*c0909341SAndroid Build Coastguard Worker     -68,   -164,  -96,   692,   364,   -692,  -1012, -68,   260,   -480, 876,
867*c0909341SAndroid Build Coastguard Worker     -1116, 452,   -332,  -352,  892,   -1088, 1220,  -676,  12,    -292, 244,
868*c0909341SAndroid Build Coastguard Worker     496,   372,   -32,   280,   200,   112,   -440,  -96,   24,    -644, -184,
869*c0909341SAndroid Build Coastguard Worker     56,    -432,  224,   -980,  272,   -260,  144,   -436,  420,   356,  364,
870*c0909341SAndroid Build Coastguard Worker     -528,  76,    172,   -744,  -368,  404,   -752,  -416,  684,   -688, 72,
871*c0909341SAndroid Build Coastguard Worker     540,   416,   92,    444,   480,   -72,   -1416, 164,   -1172, -68,  24,
872*c0909341SAndroid Build Coastguard Worker     424,   264,   1040,  128,   -912,  -524,  -356,  64,    876,   -12,  4,
873*c0909341SAndroid Build Coastguard Worker     -88,   532,   272,   -524,  320,   276,   -508,  940,   24,    -400, -120,
874*c0909341SAndroid Build Coastguard Worker     756,   60,    236,   -412,  100,   376,   -484,  400,   -100,  -740, -108,
875*c0909341SAndroid Build Coastguard Worker     -260,  328,   -268,  224,   -200,  -416,  184,   -604,  -564,  -20,  296,
876*c0909341SAndroid Build Coastguard Worker     60,    892,   -888,  60,    164,   68,    -760,  216,   -296,  904,  -336,
877*c0909341SAndroid Build Coastguard Worker     -28,   404,   -356,  -568,  -208,  -1480, -512,  296,   328,   -360, -164,
878*c0909341SAndroid Build Coastguard Worker     -1560, -776,  1156,  -428,  164,   -504,  -112,  120,   -216,  -148, -264,
879*c0909341SAndroid Build Coastguard Worker     308,   32,    64,    -72,   72,    116,   176,   -64,   -272,  460,  -536,
880*c0909341SAndroid Build Coastguard Worker     -784,  -280,  348,   108,   -752,  -132,  524,   -540,  -776,  116,  -296,
881*c0909341SAndroid Build Coastguard Worker     -1196, -288,  -560,  1040,  -472,  116,   -848,  -1116, 116,   636,  696,
882*c0909341SAndroid Build Coastguard Worker     284,   -176,  1016,  204,   -864,  -648,  -248,  356,   972,   -584, -204,
883*c0909341SAndroid Build Coastguard Worker     264,   880,   528,   -24,   -184,  116,   448,   -144,  828,   524,  212,
884*c0909341SAndroid Build Coastguard Worker     -212,  52,    12,    200,   268,   -488,  -404,  -880,  824,   -672, -40,
885*c0909341SAndroid Build Coastguard Worker     908,   -248,  500,   716,   -576,  492,   -576,  16,    720,   -108, 384,
886*c0909341SAndroid Build Coastguard Worker     124,   344,   280,   576,   -500,  252,   104,   -308,  196,   -188, -8,
887*c0909341SAndroid Build Coastguard Worker     1268,  296,   1032,  -1196, 436,   316,   372,   -432,  -200,  -660, 704,
888*c0909341SAndroid Build Coastguard Worker     -224,  596,   -132,  268,   32,    -452,  884,   104,   -1008, 424,  -1348,
889*c0909341SAndroid Build Coastguard Worker     -280,  4,     -1168, 368,   476,   696,   300,   -8,    24,    180,  -592,
890*c0909341SAndroid Build Coastguard Worker     -196,  388,   304,   500,   724,   -160,  244,   -84,   272,   -256, -420,
891*c0909341SAndroid Build Coastguard Worker     320,   208,   -144,  -156,  156,   364,   452,   28,    540,   316,  220,
892*c0909341SAndroid Build Coastguard Worker     -644,  -248,  464,   72,    360,   32,    -388,  496,   -680,  -48,  208,
893*c0909341SAndroid Build Coastguard Worker     -116,  -408,  60,    -604,  -392,  548,   -840,  784,   -460,  656,  -544,
894*c0909341SAndroid Build Coastguard Worker     -388,  -264,  908,   -800,  -628,  -612,  -568,  572,   -220,  164,  288,
895*c0909341SAndroid Build Coastguard Worker     -16,   -308,  308,   -112,  -636,  -760,  280,   -668,  432,   364,  240,
896*c0909341SAndroid Build Coastguard Worker     -196,  604,   340,   384,   196,   592,   -44,   -500,  432,   -580, -132,
897*c0909341SAndroid Build Coastguard Worker     636,   -76,   392,   4,     -412,  540,   508,   328,   -356,  -36,  16,
898*c0909341SAndroid Build Coastguard Worker     -220,  -64,   -248,  -60,   24,    -192,  368,   1040,  92,    -24,  -1044,
899*c0909341SAndroid Build Coastguard Worker     -32,   40,    104,   148,   192,   -136,  -520,  56,    -816,  -224, 732,
900*c0909341SAndroid Build Coastguard Worker     392,   356,   212,   -80,   -424,  -1008, -324,  588,   -1496, 576,  460,
901*c0909341SAndroid Build Coastguard Worker     -816,  -848,  56,    -580,  -92,   -1372, -112,  -496,  200,   364,  52,
902*c0909341SAndroid Build Coastguard Worker     -140,  48,    -48,   -60,   84,    72,    40,    132,   -356,  -268, -104,
903*c0909341SAndroid Build Coastguard Worker     -284,  -404,  732,   -520,  164,   -304,  -540,  120,   328,   -76,  -460,
904*c0909341SAndroid Build Coastguard Worker     756,   388,   588,   236,   -436,  -72,   -176,  -404,  -316,  -148, 716,
905*c0909341SAndroid Build Coastguard Worker     -604,  404,   -72,   -88,   -888,  -68,   944,   88,    -220,  -344, 960,
906*c0909341SAndroid Build Coastguard Worker     472,   460,   -232,  704,   120,   832,   -228,  692,   -508,  132,  -476,
907*c0909341SAndroid Build Coastguard Worker     844,   -748,  -364,  -44,   1116,  -1104, -1056, 76,    428,   552,  -692,
908*c0909341SAndroid Build Coastguard Worker     60,    356,   96,    -384,  -188,  -612,  -576,  736,   508,   892,  352,
909*c0909341SAndroid Build Coastguard Worker     -1132, 504,   -24,   -352,  324,   332,   -600,  -312,  292,   508,  -144,
910*c0909341SAndroid Build Coastguard Worker     -8,    484,   48,    284,   -260,  -240,  256,   -100,  -292,  -204, -44,
911*c0909341SAndroid Build Coastguard Worker     472,   -204,  908,   -188,  -1000, -256,  92,    1164,  -392,  564,  356,
912*c0909341SAndroid Build Coastguard Worker     652,   -28,   -884,  256,   484,   -192,  760,   -176,  376,   -524, -452,
913*c0909341SAndroid Build Coastguard Worker     -436,  860,   -736,  212,   124,   504,   -476,  468,   76,    -472, 552,
914*c0909341SAndroid Build Coastguard Worker     -692,  -944,  -620,  740,   -240,  400,   132,   20,    192,   -196, 264,
915*c0909341SAndroid Build Coastguard Worker     -668,  -1012, -60,   296,   -316,  -828,  76,    -156,  284,   -768, -448,
916*c0909341SAndroid Build Coastguard Worker     -832,  148,   248,   652,   616,   1236,  288,   -328,  -400,  -124, 588,
917*c0909341SAndroid Build Coastguard Worker     220,   520,   -696,  1032,  768,   -740,  -92,   -272,  296,   448,  -464,
918*c0909341SAndroid Build Coastguard Worker     412,   -200,  392,   440,   -200,  264,   -152,  -260,  320,   1032, 216,
919*c0909341SAndroid Build Coastguard Worker     320,   -8,    -64,   156,   -1016, 1084,  1172,  536,   484,   -432, 132,
920*c0909341SAndroid Build Coastguard Worker     372,   -52,   -256,  84,    116,   -352,  48,    116,   304,   -384, 412,
921*c0909341SAndroid Build Coastguard Worker     924,   -300,  528,   628,   180,   648,   44,    -980,  -220,  1320, 48,
922*c0909341SAndroid Build Coastguard Worker     332,   748,   524,   -268,  -720,  540,   -276,  564,   -344,  -208, -196,
923*c0909341SAndroid Build Coastguard Worker     436,   896,   88,    -392,  132,   80,    -964,  -288,  568,   56,   -48,
924*c0909341SAndroid Build Coastguard Worker     -456,  888,   8,     552,   -156,  -292,  948,   288,   128,   -716, -292,
925*c0909341SAndroid Build Coastguard Worker     1192,  -152,  876,   352,   -600,  -260,  -812,  -468,  -28,   -120, -32,
926*c0909341SAndroid Build Coastguard Worker     -44,   1284,  496,   192,   464,   312,   -76,   -516,  -380,  -456, -1012,
927*c0909341SAndroid Build Coastguard Worker     -48,   308,   -156,  36,    492,   -156,  -808,  188,   1652,  68,   -120,
928*c0909341SAndroid Build Coastguard Worker     -116,  316,   160,   -140,  352,   808,   -416,  592,   316,   -480, 56,
929*c0909341SAndroid Build Coastguard Worker     528,   -204,  -568,  372,   -232,  752,   -344,  744,   -4,    324,  -416,
930*c0909341SAndroid Build Coastguard Worker     -600,  768,   268,   -248,  -88,   -132,  -420,  -432,  80,    -288, 404,
931*c0909341SAndroid Build Coastguard Worker     -316,  -1216, -588,  520,   -108,  92,    -320,  368,   -480,  -216, -92,
932*c0909341SAndroid Build Coastguard Worker     1688,  -300,  180,   1020,  -176,  820,   -68,   -228,  -260,  436,  -904,
933*c0909341SAndroid Build Coastguard Worker     20,    40,    -508,  440,   -736,  312,   332,   204,   760,   -372, 728,
934*c0909341SAndroid Build Coastguard Worker     96,    -20,   -632,  -520,  -560,  336,   1076,  -64,   -532,  776,  584,
935*c0909341SAndroid Build Coastguard Worker     192,   396,   -728,  -520,  276,   -188,  80,    -52,   -612,  -252, -48,
936*c0909341SAndroid Build Coastguard Worker     648,   212,   -688,  228,   -52,   -260,  428,   -412,  -272,  -404, 180,
937*c0909341SAndroid Build Coastguard Worker     816,   -796,  48,    152,   484,   -88,   -216,  988,   696,   188,  -528,
938*c0909341SAndroid Build Coastguard Worker     648,   -116,  -180,  316,   476,   12,    -564,  96,    476,   -252, -364,
939*c0909341SAndroid Build Coastguard Worker     -376,  -392,  556,   -256,  -576,  260,   -352,  120,   -16,   -136, -260,
940*c0909341SAndroid Build Coastguard Worker     -492,  72,    556,   660,   580,   616,   772,   436,   424,   -32,  -324,
941*c0909341SAndroid Build Coastguard Worker     -1268, 416,   -324,  -80,   920,   160,   228,   724,   32,    -516, 64,
942*c0909341SAndroid Build Coastguard Worker     384,   68,    -128,  136,   240,   248,   -204,  -68,   252,   -932, -120,
943*c0909341SAndroid Build Coastguard Worker     -480,  -628,  -84,   192,   852,   -404,  -288,  -132,  204,   100,  168,
944*c0909341SAndroid Build Coastguard Worker     -68,   -196,  -868,  460,   1080,  380,   -80,   244,   0,     484,  -888,
945*c0909341SAndroid Build Coastguard Worker     64,    184,   352,   600,   460,   164,   604,   -196,  320,   -64,  588,
946*c0909341SAndroid Build Coastguard Worker     -184,  228,   12,    372,   48,    -848,  -344,  224,   208,   -200, 484,
947*c0909341SAndroid Build Coastguard Worker     128,   -20,   272,   -468,  -840,  384,   256,   -720,  -520,  -464, -580,
948*c0909341SAndroid Build Coastguard Worker     112,   -120,  644,   -356,  -208,  -608,  -528,  704,   560,   -424, 392,
949*c0909341SAndroid Build Coastguard Worker     828,   40,    84,    200,   -152,  0,     -144,  584,   280,   -120, 80,
950*c0909341SAndroid Build Coastguard Worker     -556,  -972,  -196,  -472,  724,   80,    168,   -32,   88,    160,  -688,
951*c0909341SAndroid Build Coastguard Worker     0,     160,   356,   372,   -776,  740,   -128,  676,   -248,  -480, 4,
952*c0909341SAndroid Build Coastguard Worker     -364,  96,    544,   232,   -1032, 956,   236,   356,   20,    -40,  300,
953*c0909341SAndroid Build Coastguard Worker     24,    -676,  -596,  132,   1120,  -104,  532,   -1096, 568,   648,  444,
954*c0909341SAndroid Build Coastguard Worker     508,   380,   188,   -376,  -604,  1488,  424,   24,    756,   -220, -192,
955*c0909341SAndroid Build Coastguard Worker     716,   120,   920,   688,   168,   44,    -460,  568,   284,   1144, 1160,
956*c0909341SAndroid Build Coastguard Worker     600,   424,   888,   656,   -356,  -320,  220,   316,   -176,  -724, -188,
957*c0909341SAndroid Build Coastguard Worker     -816,  -628,  -348,  -228,  -380,  1012,  -452,  -660,  736,   928,  404,
958*c0909341SAndroid Build Coastguard Worker     -696,  -72,   -268,  -892,  128,   184,   -344,  -780,  360,   336,  400,
959*c0909341SAndroid Build Coastguard Worker     344,   428,   548,   -112,  136,   -228,  -216,  -820,  -516,  340,  92,
960*c0909341SAndroid Build Coastguard Worker     -136,  116,   -300,  376,   -244,  100,   -316,  -520,  -284,  -12,  824,
961*c0909341SAndroid Build Coastguard Worker     164,   -548,  -180,  -128,  116,   -924,  -828,  268,   -368,  -580, 620,
962*c0909341SAndroid Build Coastguard Worker     192,   160,   0,     -1676, 1068,  424,   -56,   -360,  468,   -156, 720,
963*c0909341SAndroid Build Coastguard Worker     288,   -528,  556,   -364,  548,   -148,  504,   316,   152,   -648, -620,
964*c0909341SAndroid Build Coastguard Worker     -684,  -24,   -376,  -384,  -108,  -920,  -1032, 768,   180,   -264, -508,
965*c0909341SAndroid Build Coastguard Worker     -1268, -260,  -60,   300,   -240,  988,   724,   -376,  -576,  -212, -736,
966*c0909341SAndroid Build Coastguard Worker     556,   192,   1092,  -620,  -880,  376,   -56,   -4,    -216,  -32,  836,
967*c0909341SAndroid Build Coastguard Worker     268,   396,   1332,  864,   -600,  100,   56,    -412,  -92,   356,  180,
968*c0909341SAndroid Build Coastguard Worker     884,   -468,  -436,  292,   -388,  -804,  -704,  -840,  368,   -348, 140,
969*c0909341SAndroid Build Coastguard Worker     -724,  1536,  940,   372,   112,   -372,  436,   -480,  1136,  296,  -32,
970*c0909341SAndroid Build Coastguard Worker     -228,  132,   -48,   -220,  868,   -1016, -60,   -1044, -464,  328,  916,
971*c0909341SAndroid Build Coastguard Worker     244,   12,    -736,  -296,  360,   468,   -376,  -108,  -92,   788,  368,
972*c0909341SAndroid Build Coastguard Worker     -56,   544,   400,   -672,  -420,  728,   16,    320,   44,    -284, -380,
973*c0909341SAndroid Build Coastguard Worker     -796,  488,   132,   204,   -596,  -372,  88,    -152,  -908,  -636, -572,
974*c0909341SAndroid Build Coastguard Worker     -624,  -116,  -692,  -200,  -56,   276,   -88,   484,   -324,  948,  864,
975*c0909341SAndroid Build Coastguard Worker     1000,  -456,  -184,  -276,  292,   -296,  156,   676,   320,   160,  908,
976*c0909341SAndroid Build Coastguard Worker     -84,   -1236, -288,  -116,  260,   -372,  -644,  732,   -756,  -96,  84,
977*c0909341SAndroid Build Coastguard Worker     344,   -520,  348,   -688,  240,   -84,   216,   -1044, -136,  -676, -396,
978*c0909341SAndroid Build Coastguard Worker     -1500, 960,   -40,   176,   168,   1516,  420,   -504,  -344,  -364, -360,
979*c0909341SAndroid Build Coastguard Worker     1216,  -940,  -380,  -212,  252,   -660,  -708,  484,   -444,  -152, 928,
980*c0909341SAndroid Build Coastguard Worker     -120,  1112,  476,   -260,  560,   -148,  -344,  108,   -196,  228,  -288,
981*c0909341SAndroid Build Coastguard Worker     504,   560,   -328,  -88,   288,   -1008, 460,   -228,  468,   -836, -196,
982*c0909341SAndroid Build Coastguard Worker     76,    388,   232,   412,   -1168, -716,  -644,  756,   -172,  -356, -504,
983*c0909341SAndroid Build Coastguard Worker     116,   432,   528,   48,    476,   -168,  -608,  448,   160,   -532, -272,
984*c0909341SAndroid Build Coastguard Worker     28,    -676,  -12,   828,   980,   456,   520,   104,   -104,  256,  -344,
985*c0909341SAndroid Build Coastguard Worker     -4,    -28,   -368,  -52,   -524,  -572,  -556,  -200,  768,   1124, -208,
986*c0909341SAndroid Build Coastguard Worker     -512,  176,   232,   248,   -148,  -888,  604,   -600,  -304,  804,  -156,
987*c0909341SAndroid Build Coastguard Worker     -212,  488,   -192,  -804,  -256,  368,   -360,  -916,  -328,  228,  -240,
988*c0909341SAndroid Build Coastguard Worker     -448,  -472,  856,   -556,  -364,  572,   -12,   -156,  -368,  -340, 432,
989*c0909341SAndroid Build Coastguard Worker     252,   -752,  -152,  288,   268,   -580,  -848,  -592,  108,   -76,  244,
990*c0909341SAndroid Build Coastguard Worker     312,   -716,  592,   -80,   436,   360,   4,     -248,  160,   516,  584,
991*c0909341SAndroid Build Coastguard Worker     732,   44,    -468,  -280,  -292,  -156,  -588,  28,    308,   912,  24,
992*c0909341SAndroid Build Coastguard Worker     124,   156,   180,   -252,  944,   -924,  -772,  -520,  -428,  -624, 300,
993*c0909341SAndroid Build Coastguard Worker     -212,  -1144, 32,    -724,  800,   -1128, -212,  -1288, -848,  180,  -416,
994*c0909341SAndroid Build Coastguard Worker     440,   192,   -576,  -792,  -76,   -1080, 80,    -532,  -352,  -132, 380,
995*c0909341SAndroid Build Coastguard Worker     -820,  148,   1112,  128,   164,   456,   700,   -924,  144,   -668, -384,
996*c0909341SAndroid Build Coastguard Worker     648,   -832,  508,   552,   -52,   -100,  -656,  208,   -568,  748,  -88,
997*c0909341SAndroid Build Coastguard Worker     680,   232,   300,   192,   -408,  -1012, -152,  -252,  -268,  272,  -876,
998*c0909341SAndroid Build Coastguard Worker     -664,  -648,  -332,  -136,  16,    12,    1152,  -28,   332,   -536, 320,
999*c0909341SAndroid Build Coastguard Worker     -672,  -460,  -316,  532,   -260,  228,   -40,   1052,  -816,  180,  88,
1000*c0909341SAndroid Build Coastguard Worker     -496,  -556,  -672,  -368,  428,   92,    356,   404,   -408,  252,  196,
1001*c0909341SAndroid Build Coastguard Worker     -176,  -556,  792,   268,   32,    372,   40,    96,    -332,  328,  120,
1002*c0909341SAndroid Build Coastguard Worker     372,   -900,  -40,   472,   -264,  -592,  952,   128,   656,   112,  664,
1003*c0909341SAndroid Build Coastguard Worker     -232,  420,   4,     -344,  -464,  556,   244,   -416,  -32,   252,  0,
1004*c0909341SAndroid Build Coastguard Worker     -412,  188,   -696,  508,   -476,  324,   -1096, 656,   -312,  560,  264,
1005*c0909341SAndroid Build Coastguard Worker     -136,  304,   160,   -64,   -580,  248,   336,   -720,  560,   -348, -288,
1006*c0909341SAndroid Build Coastguard Worker     -276,  -196,  -500,  852,   -544,  -236,  -1128, -992,  -776,  116,  56,
1007*c0909341SAndroid Build Coastguard Worker     52,    860,   884,   212,   -12,   168,   1020,  512,   -552,  924,  -148,
1008*c0909341SAndroid Build Coastguard Worker     716,   188,   164,   -340,  -520,  -184,  880,   -152,  -680,  -208, -1156,
1009*c0909341SAndroid Build Coastguard Worker     -300,  -528,  -472,  364,   100,   -744,  -1056, -32,   540,   280,  144,
1010*c0909341SAndroid Build Coastguard Worker     -676,  -32,   -232,  -280,  -224,  96,    568,   -76,   172,   148,  148,
1011*c0909341SAndroid Build Coastguard Worker     104,   32,    -296,  -32,   788,   -80,   32,    -16,   280,   288,  944,
1012*c0909341SAndroid Build Coastguard Worker     428,   -484
1013*c0909341SAndroid Build Coastguard Worker };
1014