xref: /aosp_15_r20/external/libgav1/src/inter_intra_masks.inc (revision 095378508e87ed692bf8dfeb34008b65b3735891)
1*09537850SAkhilesh Sanikop// Copyright 2019 The libgav1 Authors
2*09537850SAkhilesh Sanikop//
3*09537850SAkhilesh Sanikop// Licensed under the Apache License, Version 2.0 (the "License");
4*09537850SAkhilesh Sanikop// you may not use this file except in compliance with the License.
5*09537850SAkhilesh Sanikop// You may obtain a copy of the License at
6*09537850SAkhilesh Sanikop//
7*09537850SAkhilesh Sanikop//      http://www.apache.org/licenses/LICENSE-2.0
8*09537850SAkhilesh Sanikop//
9*09537850SAkhilesh Sanikop// Unless required by applicable law or agreed to in writing, software
10*09537850SAkhilesh Sanikop// distributed under the License is distributed on an "AS IS" BASIS,
11*09537850SAkhilesh Sanikop// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*09537850SAkhilesh Sanikop// See the License for the specific language governing permissions and
13*09537850SAkhilesh Sanikop// limitations under the License.
14*09537850SAkhilesh Sanikop
15*09537850SAkhilesh Sanikop// This file is just a convenience to separate out all the inter intra masks
16*09537850SAkhilesh Sanikop// from the code where it is used.
17*09537850SAkhilesh Sanikop
18*09537850SAkhilesh Sanikop// The tables in this file are computed based on section 7.11.3.13 in the spec.
19*09537850SAkhilesh Sanikop
20*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskDc[] = {
21*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
22*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
23*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
24*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
25*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
26*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
27*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
28*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
29*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
30*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
31*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
32*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
33*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
34*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
35*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
36*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
37*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
38*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
39*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
40*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
41*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
42*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
43*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
44*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
45*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
46*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
47*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
48*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
49*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
50*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
51*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
52*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
53*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
54*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
55*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
56*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
57*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
58*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
59*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
60*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
61*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
62*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
63*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
64*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
65*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
66*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
67*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
68*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
69*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
70*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
71*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
72*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
73*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32,
74*09537850SAkhilesh Sanikop    32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32};
75*09537850SAkhilesh Sanikop
76*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskVertical4x4[] = {
77*09537850SAkhilesh Sanikop    60, 60, 60, 60, 19, 19, 19, 19, 6, 6, 6, 6, 2, 2, 2, 2};
78*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskVertical4x8[] = {
79*09537850SAkhilesh Sanikop    60, 60, 60, 60, 34, 34, 34, 34, 19, 19, 19, 19, 11, 11, 11, 11,
80*09537850SAkhilesh Sanikop    6,  6,  6,  6,  4,  4,  4,  4,  2,  2,  2,  2,  1,  1,  1,  1};
81*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskVertical8x4[] = {
82*09537850SAkhilesh Sanikop    60, 60, 60, 60, 60, 60, 60, 60, 34, 34, 34, 34, 34, 34, 34, 34,
83*09537850SAkhilesh Sanikop    19, 19, 19, 19, 19, 19, 19, 19, 11, 11, 11, 11, 11, 11, 11, 11};
84*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskVertical8x8[] = {
85*09537850SAkhilesh Sanikop    60, 60, 60, 60, 60, 60, 60, 60, 34, 34, 34, 34, 34, 34, 34, 34,
86*09537850SAkhilesh Sanikop    19, 19, 19, 19, 19, 19, 19, 19, 11, 11, 11, 11, 11, 11, 11, 11,
87*09537850SAkhilesh Sanikop    6,  6,  6,  6,  6,  6,  6,  6,  4,  4,  4,  4,  4,  4,  4,  4,
88*09537850SAkhilesh Sanikop    2,  2,  2,  2,  2,  2,  2,  2,  1,  1,  1,  1,  1,  1,  1,  1};
89*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskVertical8x16[] = {
90*09537850SAkhilesh Sanikop    60, 60, 60, 60, 60, 60, 60, 60, 45, 45, 45, 45, 45, 45, 45, 45, 34, 34, 34,
91*09537850SAkhilesh Sanikop    34, 34, 34, 34, 34, 26, 26, 26, 26, 26, 26, 26, 26, 19, 19, 19, 19, 19, 19,
92*09537850SAkhilesh Sanikop    19, 19, 15, 15, 15, 15, 15, 15, 15, 15, 11, 11, 11, 11, 11, 11, 11, 11, 8,
93*09537850SAkhilesh Sanikop    8,  8,  8,  8,  8,  8,  8,  6,  6,  6,  6,  6,  6,  6,  6,  5,  5,  5,  5,
94*09537850SAkhilesh Sanikop    5,  5,  5,  5,  4,  4,  4,  4,  4,  4,  4,  4,  3,  3,  3,  3,  3,  3,  3,
95*09537850SAkhilesh Sanikop    3,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  1,  1,
96*09537850SAkhilesh Sanikop    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1};
97*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskVertical16x8[] = {
98*09537850SAkhilesh Sanikop    60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 45, 45, 45,
99*09537850SAkhilesh Sanikop    45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 34, 34, 34, 34, 34, 34,
100*09537850SAkhilesh Sanikop    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 26, 26, 26, 26, 26, 26, 26, 26, 26,
101*09537850SAkhilesh Sanikop    26, 26, 26, 26, 26, 26, 26, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
102*09537850SAkhilesh Sanikop    19, 19, 19, 19, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
103*09537850SAkhilesh Sanikop    15, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 8,  8,
104*09537850SAkhilesh Sanikop    8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8};
105*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskVertical16x16[] = {
106*09537850SAkhilesh Sanikop    60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 45, 45, 45,
107*09537850SAkhilesh Sanikop    45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 34, 34, 34, 34, 34, 34,
108*09537850SAkhilesh Sanikop    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 26, 26, 26, 26, 26, 26, 26, 26, 26,
109*09537850SAkhilesh Sanikop    26, 26, 26, 26, 26, 26, 26, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
110*09537850SAkhilesh Sanikop    19, 19, 19, 19, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
111*09537850SAkhilesh Sanikop    15, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 8,  8,
112*09537850SAkhilesh Sanikop    8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  6,  6,  6,  6,  6,
113*09537850SAkhilesh Sanikop    6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  5,  5,  5,  5,  5,  5,  5,  5,
114*09537850SAkhilesh Sanikop    5,  5,  5,  5,  5,  5,  5,  5,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
115*09537850SAkhilesh Sanikop    4,  4,  4,  4,  4,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
116*09537850SAkhilesh Sanikop    3,  3,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
117*09537850SAkhilesh Sanikop    2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  1,  1,  1,  1,
118*09537850SAkhilesh Sanikop    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
119*09537850SAkhilesh Sanikop    1,  1,  1,  1,  1,  1,  1,  1,  1};
120*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskVertical16x32[] = {
121*09537850SAkhilesh Sanikop    60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 52, 52, 52,
122*09537850SAkhilesh Sanikop    52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 45, 45, 45, 45, 45, 45,
123*09537850SAkhilesh Sanikop    45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 39, 39, 39, 39, 39, 39, 39, 39, 39,
124*09537850SAkhilesh Sanikop    39, 39, 39, 39, 39, 39, 39, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
125*09537850SAkhilesh Sanikop    34, 34, 34, 34, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
126*09537850SAkhilesh Sanikop    30, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 22, 22,
127*09537850SAkhilesh Sanikop    22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 19, 19, 19, 19, 19,
128*09537850SAkhilesh Sanikop    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 17, 17, 17, 17, 17, 17, 17, 17,
129*09537850SAkhilesh Sanikop    17, 17, 17, 17, 17, 17, 17, 17, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
130*09537850SAkhilesh Sanikop    15, 15, 15, 15, 15, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
131*09537850SAkhilesh Sanikop    13, 13, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10,
132*09537850SAkhilesh Sanikop    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 8,  8,  8,  8,
133*09537850SAkhilesh Sanikop    8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  7,  7,  7,  7,  7,  7,  7,
134*09537850SAkhilesh Sanikop    7,  7,  7,  7,  7,  7,  7,  7,  7,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
135*09537850SAkhilesh Sanikop    6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
136*09537850SAkhilesh Sanikop    6,  6,  6,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
137*09537850SAkhilesh Sanikop    4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
138*09537850SAkhilesh Sanikop    4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  3,  3,  3,  3,  3,  3,
139*09537850SAkhilesh Sanikop    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
140*09537850SAkhilesh Sanikop    3,  3,  3,  3,  3,  3,  3,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
141*09537850SAkhilesh Sanikop    2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
142*09537850SAkhilesh Sanikop    2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
143*09537850SAkhilesh Sanikop    2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  1,  1,  1,  1,  1,
144*09537850SAkhilesh Sanikop    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
145*09537850SAkhilesh Sanikop    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
146*09537850SAkhilesh Sanikop    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
147*09537850SAkhilesh Sanikop    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1};
148*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskVertical32x16[] = {
149*09537850SAkhilesh Sanikop    60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
150*09537850SAkhilesh Sanikop    60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 52, 52, 52, 52, 52, 52,
151*09537850SAkhilesh Sanikop    52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
152*09537850SAkhilesh Sanikop    52, 52, 52, 52, 52, 52, 52, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
153*09537850SAkhilesh Sanikop    45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
154*09537850SAkhilesh Sanikop    45, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
155*09537850SAkhilesh Sanikop    39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 34, 34, 34, 34, 34,
156*09537850SAkhilesh Sanikop    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
157*09537850SAkhilesh Sanikop    34, 34, 34, 34, 34, 34, 34, 34, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
158*09537850SAkhilesh Sanikop    30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
159*09537850SAkhilesh Sanikop    30, 30, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
160*09537850SAkhilesh Sanikop    26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 22, 22, 22, 22,
161*09537850SAkhilesh Sanikop    22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
162*09537850SAkhilesh Sanikop    22, 22, 22, 22, 22, 22, 22, 22, 22, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
163*09537850SAkhilesh Sanikop    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
164*09537850SAkhilesh Sanikop    19, 19, 19, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
165*09537850SAkhilesh Sanikop    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 15, 15, 15,
166*09537850SAkhilesh Sanikop    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
167*09537850SAkhilesh Sanikop    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 13, 13, 13, 13, 13, 13, 13, 13, 13,
168*09537850SAkhilesh Sanikop    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
169*09537850SAkhilesh Sanikop    13, 13, 13, 13, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
170*09537850SAkhilesh Sanikop    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10,
171*09537850SAkhilesh Sanikop    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
172*09537850SAkhilesh Sanikop    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 8,  8,  8,  8,  8,  8,  8,  8,
173*09537850SAkhilesh Sanikop    8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
174*09537850SAkhilesh Sanikop    8,  8,  8,  8,  8,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
175*09537850SAkhilesh Sanikop    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7};
176*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskVertical32x32[] = {
177*09537850SAkhilesh Sanikop    60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
178*09537850SAkhilesh Sanikop    60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 52, 52, 52, 52, 52, 52,
179*09537850SAkhilesh Sanikop    52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
180*09537850SAkhilesh Sanikop    52, 52, 52, 52, 52, 52, 52, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
181*09537850SAkhilesh Sanikop    45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
182*09537850SAkhilesh Sanikop    45, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
183*09537850SAkhilesh Sanikop    39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 34, 34, 34, 34, 34,
184*09537850SAkhilesh Sanikop    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
185*09537850SAkhilesh Sanikop    34, 34, 34, 34, 34, 34, 34, 34, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
186*09537850SAkhilesh Sanikop    30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
187*09537850SAkhilesh Sanikop    30, 30, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
188*09537850SAkhilesh Sanikop    26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 22, 22, 22, 22,
189*09537850SAkhilesh Sanikop    22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
190*09537850SAkhilesh Sanikop    22, 22, 22, 22, 22, 22, 22, 22, 22, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
191*09537850SAkhilesh Sanikop    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
192*09537850SAkhilesh Sanikop    19, 19, 19, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
193*09537850SAkhilesh Sanikop    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 15, 15, 15,
194*09537850SAkhilesh Sanikop    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
195*09537850SAkhilesh Sanikop    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 13, 13, 13, 13, 13, 13, 13, 13, 13,
196*09537850SAkhilesh Sanikop    13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
197*09537850SAkhilesh Sanikop    13, 13, 13, 13, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
198*09537850SAkhilesh Sanikop    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10, 10,
199*09537850SAkhilesh Sanikop    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10,
200*09537850SAkhilesh Sanikop    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 8,  8,  8,  8,  8,  8,  8,  8,
201*09537850SAkhilesh Sanikop    8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
202*09537850SAkhilesh Sanikop    8,  8,  8,  8,  8,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,
203*09537850SAkhilesh Sanikop    7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  6,
204*09537850SAkhilesh Sanikop    6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
205*09537850SAkhilesh Sanikop    6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
206*09537850SAkhilesh Sanikop    6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
207*09537850SAkhilesh Sanikop    6,  6,  6,  6,  6,  6,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
208*09537850SAkhilesh Sanikop    5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
209*09537850SAkhilesh Sanikop    4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
210*09537850SAkhilesh Sanikop    4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
211*09537850SAkhilesh Sanikop    4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,
212*09537850SAkhilesh Sanikop    4,  4,  4,  4,  4,  4,  4,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
213*09537850SAkhilesh Sanikop    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
214*09537850SAkhilesh Sanikop    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
215*09537850SAkhilesh Sanikop    3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  2,  2,  2,  2,  2,
216*09537850SAkhilesh Sanikop    2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
217*09537850SAkhilesh Sanikop    2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
218*09537850SAkhilesh Sanikop    2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
219*09537850SAkhilesh Sanikop    2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
220*09537850SAkhilesh Sanikop    2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
221*09537850SAkhilesh Sanikop    2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,  2,
222*09537850SAkhilesh Sanikop    2,  2,  2,  2,  2,  2,  2,  2,  2,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
223*09537850SAkhilesh Sanikop    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
224*09537850SAkhilesh Sanikop    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
225*09537850SAkhilesh Sanikop    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
226*09537850SAkhilesh Sanikop    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
227*09537850SAkhilesh Sanikop    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
228*09537850SAkhilesh Sanikop    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
229*09537850SAkhilesh Sanikop    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,
230*09537850SAkhilesh Sanikop    1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1,  1};
231*09537850SAkhilesh Sanikop
232*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskHorizontal4x4[] = {60, 19, 6, 2, 60, 19, 6, 2,
233*09537850SAkhilesh Sanikop                                                    60, 19, 6, 2, 60, 19, 6, 2};
234*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskHorizontal4x8[] = {
235*09537850SAkhilesh Sanikop    60, 34, 19, 11, 60, 34, 19, 11, 60, 34, 19, 11, 60, 34, 19, 11,
236*09537850SAkhilesh Sanikop    60, 34, 19, 11, 60, 34, 19, 11, 60, 34, 19, 11, 60, 34, 19, 11};
237*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskHorizontal8x4[] = {
238*09537850SAkhilesh Sanikop    60, 34, 19, 11, 6, 4, 2, 1, 60, 34, 19, 11, 6, 4, 2, 1,
239*09537850SAkhilesh Sanikop    60, 34, 19, 11, 6, 4, 2, 1, 60, 34, 19, 11, 6, 4, 2, 1};
240*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskHorizontal8x8[] = {
241*09537850SAkhilesh Sanikop    60, 34, 19, 11, 6, 4, 2, 1, 60, 34, 19, 11, 6, 4, 2, 1,
242*09537850SAkhilesh Sanikop    60, 34, 19, 11, 6, 4, 2, 1, 60, 34, 19, 11, 6, 4, 2, 1,
243*09537850SAkhilesh Sanikop    60, 34, 19, 11, 6, 4, 2, 1, 60, 34, 19, 11, 6, 4, 2, 1,
244*09537850SAkhilesh Sanikop    60, 34, 19, 11, 6, 4, 2, 1, 60, 34, 19, 11, 6, 4, 2, 1};
245*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskHorizontal8x16[] = {
246*09537850SAkhilesh Sanikop    60, 45, 34, 26, 19, 15, 11, 8,  60, 45, 34, 26, 19, 15, 11, 8,  60, 45, 34,
247*09537850SAkhilesh Sanikop    26, 19, 15, 11, 8,  60, 45, 34, 26, 19, 15, 11, 8,  60, 45, 34, 26, 19, 15,
248*09537850SAkhilesh Sanikop    11, 8,  60, 45, 34, 26, 19, 15, 11, 8,  60, 45, 34, 26, 19, 15, 11, 8,  60,
249*09537850SAkhilesh Sanikop    45, 34, 26, 19, 15, 11, 8,  60, 45, 34, 26, 19, 15, 11, 8,  60, 45, 34, 26,
250*09537850SAkhilesh Sanikop    19, 15, 11, 8,  60, 45, 34, 26, 19, 15, 11, 8,  60, 45, 34, 26, 19, 15, 11,
251*09537850SAkhilesh Sanikop    8,  60, 45, 34, 26, 19, 15, 11, 8,  60, 45, 34, 26, 19, 15, 11, 8,  60, 45,
252*09537850SAkhilesh Sanikop    34, 26, 19, 15, 11, 8,  60, 45, 34, 26, 19, 15, 11, 8};
253*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskHorizontal16x8[] = {
254*09537850SAkhilesh Sanikop    60, 45, 34, 26, 19, 15, 11, 8,  6,  5,  4,  3,  2,  2,  1,  1,  60, 45, 34,
255*09537850SAkhilesh Sanikop    26, 19, 15, 11, 8,  6,  5,  4,  3,  2,  2,  1,  1,  60, 45, 34, 26, 19, 15,
256*09537850SAkhilesh Sanikop    11, 8,  6,  5,  4,  3,  2,  2,  1,  1,  60, 45, 34, 26, 19, 15, 11, 8,  6,
257*09537850SAkhilesh Sanikop    5,  4,  3,  2,  2,  1,  1,  60, 45, 34, 26, 19, 15, 11, 8,  6,  5,  4,  3,
258*09537850SAkhilesh Sanikop    2,  2,  1,  1,  60, 45, 34, 26, 19, 15, 11, 8,  6,  5,  4,  3,  2,  2,  1,
259*09537850SAkhilesh Sanikop    1,  60, 45, 34, 26, 19, 15, 11, 8,  6,  5,  4,  3,  2,  2,  1,  1,  60, 45,
260*09537850SAkhilesh Sanikop    34, 26, 19, 15, 11, 8,  6,  5,  4,  3,  2,  2,  1,  1};
261*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskHorizontal16x16[] = {
262*09537850SAkhilesh Sanikop    60, 45, 34, 26, 19, 15, 11, 8,  6,  5,  4,  3,  2,  2,  1,  1,  60, 45, 34,
263*09537850SAkhilesh Sanikop    26, 19, 15, 11, 8,  6,  5,  4,  3,  2,  2,  1,  1,  60, 45, 34, 26, 19, 15,
264*09537850SAkhilesh Sanikop    11, 8,  6,  5,  4,  3,  2,  2,  1,  1,  60, 45, 34, 26, 19, 15, 11, 8,  6,
265*09537850SAkhilesh Sanikop    5,  4,  3,  2,  2,  1,  1,  60, 45, 34, 26, 19, 15, 11, 8,  6,  5,  4,  3,
266*09537850SAkhilesh Sanikop    2,  2,  1,  1,  60, 45, 34, 26, 19, 15, 11, 8,  6,  5,  4,  3,  2,  2,  1,
267*09537850SAkhilesh Sanikop    1,  60, 45, 34, 26, 19, 15, 11, 8,  6,  5,  4,  3,  2,  2,  1,  1,  60, 45,
268*09537850SAkhilesh Sanikop    34, 26, 19, 15, 11, 8,  6,  5,  4,  3,  2,  2,  1,  1,  60, 45, 34, 26, 19,
269*09537850SAkhilesh Sanikop    15, 11, 8,  6,  5,  4,  3,  2,  2,  1,  1,  60, 45, 34, 26, 19, 15, 11, 8,
270*09537850SAkhilesh Sanikop    6,  5,  4,  3,  2,  2,  1,  1,  60, 45, 34, 26, 19, 15, 11, 8,  6,  5,  4,
271*09537850SAkhilesh Sanikop    3,  2,  2,  1,  1,  60, 45, 34, 26, 19, 15, 11, 8,  6,  5,  4,  3,  2,  2,
272*09537850SAkhilesh Sanikop    1,  1,  60, 45, 34, 26, 19, 15, 11, 8,  6,  5,  4,  3,  2,  2,  1,  1,  60,
273*09537850SAkhilesh Sanikop    45, 34, 26, 19, 15, 11, 8,  6,  5,  4,  3,  2,  2,  1,  1,  60, 45, 34, 26,
274*09537850SAkhilesh Sanikop    19, 15, 11, 8,  6,  5,  4,  3,  2,  2,  1,  1,  60, 45, 34, 26, 19, 15, 11,
275*09537850SAkhilesh Sanikop    8,  6,  5,  4,  3,  2,  2,  1,  1};
276*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskHorizontal16x32[] = {
277*09537850SAkhilesh Sanikop    60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  60, 52, 45,
278*09537850SAkhilesh Sanikop    39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  60, 52, 45, 39, 34, 30,
279*09537850SAkhilesh Sanikop    26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  60, 52, 45, 39, 34, 30, 26, 22, 19,
280*09537850SAkhilesh Sanikop    17, 15, 13, 11, 10, 8,  7,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13,
281*09537850SAkhilesh Sanikop    11, 10, 8,  7,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,
282*09537850SAkhilesh Sanikop    7,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  60, 52,
283*09537850SAkhilesh Sanikop    45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  60, 52, 45, 39, 34,
284*09537850SAkhilesh Sanikop    30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  60, 52, 45, 39, 34, 30, 26, 22,
285*09537850SAkhilesh Sanikop    19, 17, 15, 13, 11, 10, 8,  7,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15,
286*09537850SAkhilesh Sanikop    13, 11, 10, 8,  7,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10,
287*09537850SAkhilesh Sanikop    8,  7,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  60,
288*09537850SAkhilesh Sanikop    52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  60, 52, 45, 39,
289*09537850SAkhilesh Sanikop    34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  60, 52, 45, 39, 34, 30, 26,
290*09537850SAkhilesh Sanikop    22, 19, 17, 15, 13, 11, 10, 8,  7,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17,
291*09537850SAkhilesh Sanikop    15, 13, 11, 10, 8,  7,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11,
292*09537850SAkhilesh Sanikop    10, 8,  7,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,
293*09537850SAkhilesh Sanikop    60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  60, 52, 45,
294*09537850SAkhilesh Sanikop    39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  60, 52, 45, 39, 34, 30,
295*09537850SAkhilesh Sanikop    26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  60, 52, 45, 39, 34, 30, 26, 22, 19,
296*09537850SAkhilesh Sanikop    17, 15, 13, 11, 10, 8,  7,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13,
297*09537850SAkhilesh Sanikop    11, 10, 8,  7,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,
298*09537850SAkhilesh Sanikop    7,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  60, 52,
299*09537850SAkhilesh Sanikop    45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  60, 52, 45, 39, 34,
300*09537850SAkhilesh Sanikop    30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  60, 52, 45, 39, 34, 30, 26, 22,
301*09537850SAkhilesh Sanikop    19, 17, 15, 13, 11, 10, 8,  7,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15,
302*09537850SAkhilesh Sanikop    13, 11, 10, 8,  7,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10,
303*09537850SAkhilesh Sanikop    8,  7,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7};
304*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskHorizontal32x16[] = {
305*09537850SAkhilesh Sanikop    60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,  5,
306*09537850SAkhilesh Sanikop    4,  4,  3,  3,  2,  2,  2,  2,  1,  1,  1,  1,  1,  60, 52, 45, 39, 34, 30,
307*09537850SAkhilesh Sanikop    26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,  2,  2,
308*09537850SAkhilesh Sanikop    2,  2,  1,  1,  1,  1,  1,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13,
309*09537850SAkhilesh Sanikop    11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,  1,  1,  1,
310*09537850SAkhilesh Sanikop    1,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,
311*09537850SAkhilesh Sanikop    5,  4,  4,  3,  3,  2,  2,  2,  2,  1,  1,  1,  1,  1,  60, 52, 45, 39, 34,
312*09537850SAkhilesh Sanikop    30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,  2,
313*09537850SAkhilesh Sanikop    2,  2,  2,  1,  1,  1,  1,  1,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15,
314*09537850SAkhilesh Sanikop    13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,  1,  1,
315*09537850SAkhilesh Sanikop    1,  1,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,
316*09537850SAkhilesh Sanikop    6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,  1,  1,  1,  1,  60, 52, 45, 39,
317*09537850SAkhilesh Sanikop    34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,
318*09537850SAkhilesh Sanikop    2,  2,  2,  2,  1,  1,  1,  1,  1,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17,
319*09537850SAkhilesh Sanikop    15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,  1,
320*09537850SAkhilesh Sanikop    1,  1,  1,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,
321*09537850SAkhilesh Sanikop    6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,  1,  1,  1,  1,  60, 52, 45,
322*09537850SAkhilesh Sanikop    39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,
323*09537850SAkhilesh Sanikop    3,  2,  2,  2,  2,  1,  1,  1,  1,  1,  60, 52, 45, 39, 34, 30, 26, 22, 19,
324*09537850SAkhilesh Sanikop    17, 15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,
325*09537850SAkhilesh Sanikop    1,  1,  1,  1,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,
326*09537850SAkhilesh Sanikop    7,  6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,  1,  1,  1,  1,  60, 52,
327*09537850SAkhilesh Sanikop    45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,
328*09537850SAkhilesh Sanikop    3,  3,  2,  2,  2,  2,  1,  1,  1,  1,  1,  60, 52, 45, 39, 34, 30, 26, 22,
329*09537850SAkhilesh Sanikop    19, 17, 15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,
330*09537850SAkhilesh Sanikop    1,  1,  1,  1,  1,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10,
331*09537850SAkhilesh Sanikop    8,  7,  6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,  1,  1,  1,  1};
332*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskHorizontal32x32[] = {
333*09537850SAkhilesh Sanikop    60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,  5,
334*09537850SAkhilesh Sanikop    4,  4,  3,  3,  2,  2,  2,  2,  1,  1,  1,  1,  1,  60, 52, 45, 39, 34, 30,
335*09537850SAkhilesh Sanikop    26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,  2,  2,
336*09537850SAkhilesh Sanikop    2,  2,  1,  1,  1,  1,  1,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13,
337*09537850SAkhilesh Sanikop    11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,  1,  1,  1,
338*09537850SAkhilesh Sanikop    1,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,
339*09537850SAkhilesh Sanikop    5,  4,  4,  3,  3,  2,  2,  2,  2,  1,  1,  1,  1,  1,  60, 52, 45, 39, 34,
340*09537850SAkhilesh Sanikop    30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,  2,
341*09537850SAkhilesh Sanikop    2,  2,  2,  1,  1,  1,  1,  1,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15,
342*09537850SAkhilesh Sanikop    13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,  1,  1,
343*09537850SAkhilesh Sanikop    1,  1,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,
344*09537850SAkhilesh Sanikop    6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,  1,  1,  1,  1,  60, 52, 45, 39,
345*09537850SAkhilesh Sanikop    34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,
346*09537850SAkhilesh Sanikop    2,  2,  2,  2,  1,  1,  1,  1,  1,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17,
347*09537850SAkhilesh Sanikop    15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,  1,
348*09537850SAkhilesh Sanikop    1,  1,  1,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,
349*09537850SAkhilesh Sanikop    6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,  1,  1,  1,  1,  60, 52, 45,
350*09537850SAkhilesh Sanikop    39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,
351*09537850SAkhilesh Sanikop    3,  2,  2,  2,  2,  1,  1,  1,  1,  1,  60, 52, 45, 39, 34, 30, 26, 22, 19,
352*09537850SAkhilesh Sanikop    17, 15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,
353*09537850SAkhilesh Sanikop    1,  1,  1,  1,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,
354*09537850SAkhilesh Sanikop    7,  6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,  1,  1,  1,  1,  60, 52,
355*09537850SAkhilesh Sanikop    45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,
356*09537850SAkhilesh Sanikop    3,  3,  2,  2,  2,  2,  1,  1,  1,  1,  1,  60, 52, 45, 39, 34, 30, 26, 22,
357*09537850SAkhilesh Sanikop    19, 17, 15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,
358*09537850SAkhilesh Sanikop    1,  1,  1,  1,  1,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10,
359*09537850SAkhilesh Sanikop    8,  7,  6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,  1,  1,  1,  1,  60,
360*09537850SAkhilesh Sanikop    52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,  5,  4,
361*09537850SAkhilesh Sanikop    4,  3,  3,  2,  2,  2,  2,  1,  1,  1,  1,  1,  60, 52, 45, 39, 34, 30, 26,
362*09537850SAkhilesh Sanikop    22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,  2,  2,  2,
363*09537850SAkhilesh Sanikop    2,  1,  1,  1,  1,  1,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11,
364*09537850SAkhilesh Sanikop    10, 8,  7,  6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,  1,  1,  1,  1,
365*09537850SAkhilesh Sanikop    60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,  5,
366*09537850SAkhilesh Sanikop    4,  4,  3,  3,  2,  2,  2,  2,  1,  1,  1,  1,  1,  60, 52, 45, 39, 34, 30,
367*09537850SAkhilesh Sanikop    26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,  2,  2,
368*09537850SAkhilesh Sanikop    2,  2,  1,  1,  1,  1,  1,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13,
369*09537850SAkhilesh Sanikop    11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,  1,  1,  1,
370*09537850SAkhilesh Sanikop    1,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,
371*09537850SAkhilesh Sanikop    5,  4,  4,  3,  3,  2,  2,  2,  2,  1,  1,  1,  1,  1,  60, 52, 45, 39, 34,
372*09537850SAkhilesh Sanikop    30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,  2,
373*09537850SAkhilesh Sanikop    2,  2,  2,  1,  1,  1,  1,  1,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15,
374*09537850SAkhilesh Sanikop    13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,  1,  1,
375*09537850SAkhilesh Sanikop    1,  1,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,
376*09537850SAkhilesh Sanikop    6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,  1,  1,  1,  1,  60, 52, 45, 39,
377*09537850SAkhilesh Sanikop    34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,
378*09537850SAkhilesh Sanikop    2,  2,  2,  2,  1,  1,  1,  1,  1,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17,
379*09537850SAkhilesh Sanikop    15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,  1,
380*09537850SAkhilesh Sanikop    1,  1,  1,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,
381*09537850SAkhilesh Sanikop    6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,  1,  1,  1,  1,  60, 52, 45,
382*09537850SAkhilesh Sanikop    39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,
383*09537850SAkhilesh Sanikop    3,  2,  2,  2,  2,  1,  1,  1,  1,  1,  60, 52, 45, 39, 34, 30, 26, 22, 19,
384*09537850SAkhilesh Sanikop    17, 15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,
385*09537850SAkhilesh Sanikop    1,  1,  1,  1,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,
386*09537850SAkhilesh Sanikop    7,  6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,  1,  1,  1,  1};
387*09537850SAkhilesh Sanikop
388*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskSmooth4x4[] = {60, 60, 60, 60, 60, 19, 19, 19,
389*09537850SAkhilesh Sanikop                                                60, 19, 6,  6,  60, 19, 6,  2};
390*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskSmooth4x8[] = {
391*09537850SAkhilesh Sanikop    60, 60, 60, 60, 60, 34, 34, 34, 60, 34, 19, 19, 60, 34, 19, 11,
392*09537850SAkhilesh Sanikop    60, 34, 19, 11, 60, 34, 19, 11, 60, 34, 19, 11, 60, 34, 19, 11};
393*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskSmooth8x4[] = {
394*09537850SAkhilesh Sanikop    60, 60, 60, 60, 60, 60, 60, 60, 60, 34, 34, 34, 34, 34, 34, 34,
395*09537850SAkhilesh Sanikop    60, 34, 19, 19, 19, 19, 19, 19, 60, 34, 19, 11, 11, 11, 11, 11};
396*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskSmooth8x8[] = {
397*09537850SAkhilesh Sanikop    60, 60, 60, 60, 60, 60, 60, 60, 60, 34, 34, 34, 34, 34, 34, 34,
398*09537850SAkhilesh Sanikop    60, 34, 19, 19, 19, 19, 19, 19, 60, 34, 19, 11, 11, 11, 11, 11,
399*09537850SAkhilesh Sanikop    60, 34, 19, 11, 6,  6,  6,  6,  60, 34, 19, 11, 6,  4,  4,  4,
400*09537850SAkhilesh Sanikop    60, 34, 19, 11, 6,  4,  2,  2,  60, 34, 19, 11, 6,  4,  2,  1};
401*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskSmooth8x16[] = {
402*09537850SAkhilesh Sanikop    60, 60, 60, 60, 60, 60, 60, 60, 60, 45, 45, 45, 45, 45, 45, 45, 60, 45, 34,
403*09537850SAkhilesh Sanikop    34, 34, 34, 34, 34, 60, 45, 34, 26, 26, 26, 26, 26, 60, 45, 34, 26, 19, 19,
404*09537850SAkhilesh Sanikop    19, 19, 60, 45, 34, 26, 19, 15, 15, 15, 60, 45, 34, 26, 19, 15, 11, 11, 60,
405*09537850SAkhilesh Sanikop    45, 34, 26, 19, 15, 11, 8,  60, 45, 34, 26, 19, 15, 11, 8,  60, 45, 34, 26,
406*09537850SAkhilesh Sanikop    19, 15, 11, 8,  60, 45, 34, 26, 19, 15, 11, 8,  60, 45, 34, 26, 19, 15, 11,
407*09537850SAkhilesh Sanikop    8,  60, 45, 34, 26, 19, 15, 11, 8,  60, 45, 34, 26, 19, 15, 11, 8,  60, 45,
408*09537850SAkhilesh Sanikop    34, 26, 19, 15, 11, 8,  60, 45, 34, 26, 19, 15, 11, 8};
409*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskSmooth16x8[] = {
410*09537850SAkhilesh Sanikop    60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 45, 45,
411*09537850SAkhilesh Sanikop    45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 60, 45, 34, 34, 34, 34,
412*09537850SAkhilesh Sanikop    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 60, 45, 34, 26, 26, 26, 26, 26, 26,
413*09537850SAkhilesh Sanikop    26, 26, 26, 26, 26, 26, 26, 60, 45, 34, 26, 19, 19, 19, 19, 19, 19, 19, 19,
414*09537850SAkhilesh Sanikop    19, 19, 19, 19, 60, 45, 34, 26, 19, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
415*09537850SAkhilesh Sanikop    15, 60, 45, 34, 26, 19, 15, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 60, 45,
416*09537850SAkhilesh Sanikop    34, 26, 19, 15, 11, 8,  8,  8,  8,  8,  8,  8,  8,  8};
417*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskSmooth16x16[] = {
418*09537850SAkhilesh Sanikop    60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 45, 45,
419*09537850SAkhilesh Sanikop    45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 60, 45, 34, 34, 34, 34,
420*09537850SAkhilesh Sanikop    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 60, 45, 34, 26, 26, 26, 26, 26, 26,
421*09537850SAkhilesh Sanikop    26, 26, 26, 26, 26, 26, 26, 60, 45, 34, 26, 19, 19, 19, 19, 19, 19, 19, 19,
422*09537850SAkhilesh Sanikop    19, 19, 19, 19, 60, 45, 34, 26, 19, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
423*09537850SAkhilesh Sanikop    15, 60, 45, 34, 26, 19, 15, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 60, 45,
424*09537850SAkhilesh Sanikop    34, 26, 19, 15, 11, 8,  8,  8,  8,  8,  8,  8,  8,  8,  60, 45, 34, 26, 19,
425*09537850SAkhilesh Sanikop    15, 11, 8,  6,  6,  6,  6,  6,  6,  6,  6,  60, 45, 34, 26, 19, 15, 11, 8,
426*09537850SAkhilesh Sanikop    6,  5,  5,  5,  5,  5,  5,  5,  60, 45, 34, 26, 19, 15, 11, 8,  6,  5,  4,
427*09537850SAkhilesh Sanikop    4,  4,  4,  4,  4,  60, 45, 34, 26, 19, 15, 11, 8,  6,  5,  4,  3,  3,  3,
428*09537850SAkhilesh Sanikop    3,  3,  60, 45, 34, 26, 19, 15, 11, 8,  6,  5,  4,  3,  2,  2,  2,  2,  60,
429*09537850SAkhilesh Sanikop    45, 34, 26, 19, 15, 11, 8,  6,  5,  4,  3,  2,  2,  2,  2,  60, 45, 34, 26,
430*09537850SAkhilesh Sanikop    19, 15, 11, 8,  6,  5,  4,  3,  2,  2,  1,  1,  60, 45, 34, 26, 19, 15, 11,
431*09537850SAkhilesh Sanikop    8,  6,  5,  4,  3,  2,  2,  1,  1};
432*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskSmooth16x32[] = {
433*09537850SAkhilesh Sanikop    60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 52, 52,
434*09537850SAkhilesh Sanikop    52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 60, 52, 45, 45, 45, 45,
435*09537850SAkhilesh Sanikop    45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 60, 52, 45, 39, 39, 39, 39, 39, 39,
436*09537850SAkhilesh Sanikop    39, 39, 39, 39, 39, 39, 39, 60, 52, 45, 39, 34, 34, 34, 34, 34, 34, 34, 34,
437*09537850SAkhilesh Sanikop    34, 34, 34, 34, 60, 52, 45, 39, 34, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
438*09537850SAkhilesh Sanikop    30, 60, 52, 45, 39, 34, 30, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 60, 52,
439*09537850SAkhilesh Sanikop    45, 39, 34, 30, 26, 22, 22, 22, 22, 22, 22, 22, 22, 22, 60, 52, 45, 39, 34,
440*09537850SAkhilesh Sanikop    30, 26, 22, 19, 19, 19, 19, 19, 19, 19, 19, 60, 52, 45, 39, 34, 30, 26, 22,
441*09537850SAkhilesh Sanikop    19, 17, 17, 17, 17, 17, 17, 17, 60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15,
442*09537850SAkhilesh Sanikop    15, 15, 15, 15, 15, 60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 13, 13,
443*09537850SAkhilesh Sanikop    13, 13, 60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 11, 11, 11, 60,
444*09537850SAkhilesh Sanikop    52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 10, 10, 60, 52, 45, 39,
445*09537850SAkhilesh Sanikop    34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  8,  60, 52, 45, 39, 34, 30, 26,
446*09537850SAkhilesh Sanikop    22, 19, 17, 15, 13, 11, 10, 8,  7,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17,
447*09537850SAkhilesh Sanikop    15, 13, 11, 10, 8,  7,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11,
448*09537850SAkhilesh Sanikop    10, 8,  7,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,
449*09537850SAkhilesh Sanikop    60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  60, 52, 45,
450*09537850SAkhilesh Sanikop    39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  60, 52, 45, 39, 34, 30,
451*09537850SAkhilesh Sanikop    26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  60, 52, 45, 39, 34, 30, 26, 22, 19,
452*09537850SAkhilesh Sanikop    17, 15, 13, 11, 10, 8,  7,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13,
453*09537850SAkhilesh Sanikop    11, 10, 8,  7,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,
454*09537850SAkhilesh Sanikop    7,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  60, 52,
455*09537850SAkhilesh Sanikop    45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  60, 52, 45, 39, 34,
456*09537850SAkhilesh Sanikop    30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  60, 52, 45, 39, 34, 30, 26, 22,
457*09537850SAkhilesh Sanikop    19, 17, 15, 13, 11, 10, 8,  7,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15,
458*09537850SAkhilesh Sanikop    13, 11, 10, 8,  7,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10,
459*09537850SAkhilesh Sanikop    8,  7,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7};
460*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskSmooth32x16[] = {
461*09537850SAkhilesh Sanikop    60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
462*09537850SAkhilesh Sanikop    60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 52, 52, 52, 52, 52,
463*09537850SAkhilesh Sanikop    52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
464*09537850SAkhilesh Sanikop    52, 52, 52, 52, 52, 52, 52, 60, 52, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
465*09537850SAkhilesh Sanikop    45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
466*09537850SAkhilesh Sanikop    45, 60, 52, 45, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
467*09537850SAkhilesh Sanikop    39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 60, 52, 45, 39, 34,
468*09537850SAkhilesh Sanikop    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
469*09537850SAkhilesh Sanikop    34, 34, 34, 34, 34, 34, 34, 34, 60, 52, 45, 39, 34, 30, 30, 30, 30, 30, 30,
470*09537850SAkhilesh Sanikop    30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
471*09537850SAkhilesh Sanikop    30, 30, 60, 52, 45, 39, 34, 30, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
472*09537850SAkhilesh Sanikop    26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 60, 52, 45, 39,
473*09537850SAkhilesh Sanikop    34, 30, 26, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
474*09537850SAkhilesh Sanikop    22, 22, 22, 22, 22, 22, 22, 22, 22, 60, 52, 45, 39, 34, 30, 26, 22, 19, 19,
475*09537850SAkhilesh Sanikop    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
476*09537850SAkhilesh Sanikop    19, 19, 19, 60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 17, 17, 17, 17, 17, 17,
477*09537850SAkhilesh Sanikop    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 60, 52, 45,
478*09537850SAkhilesh Sanikop    39, 34, 30, 26, 22, 19, 17, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
479*09537850SAkhilesh Sanikop    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 60, 52, 45, 39, 34, 30, 26, 22, 19,
480*09537850SAkhilesh Sanikop    17, 15, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
481*09537850SAkhilesh Sanikop    13, 13, 13, 13, 60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 11, 11,
482*09537850SAkhilesh Sanikop    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 60, 52,
483*09537850SAkhilesh Sanikop    45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 10, 10, 10, 10, 10, 10, 10,
484*09537850SAkhilesh Sanikop    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 60, 52, 45, 39, 34, 30, 26, 22,
485*09537850SAkhilesh Sanikop    19, 17, 15, 13, 11, 10, 8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
486*09537850SAkhilesh Sanikop    8,  8,  8,  8,  8,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10,
487*09537850SAkhilesh Sanikop    8,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7};
488*09537850SAkhilesh Sanikopconstexpr uint8_t kInterIntraMaskSmooth32x32[] = {
489*09537850SAkhilesh Sanikop    60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60,
490*09537850SAkhilesh Sanikop    60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 52, 52, 52, 52, 52,
491*09537850SAkhilesh Sanikop    52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52,
492*09537850SAkhilesh Sanikop    52, 52, 52, 52, 52, 52, 52, 60, 52, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
493*09537850SAkhilesh Sanikop    45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
494*09537850SAkhilesh Sanikop    45, 60, 52, 45, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39,
495*09537850SAkhilesh Sanikop    39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 60, 52, 45, 39, 34,
496*09537850SAkhilesh Sanikop    34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34,
497*09537850SAkhilesh Sanikop    34, 34, 34, 34, 34, 34, 34, 34, 60, 52, 45, 39, 34, 30, 30, 30, 30, 30, 30,
498*09537850SAkhilesh Sanikop    30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30,
499*09537850SAkhilesh Sanikop    30, 30, 60, 52, 45, 39, 34, 30, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
500*09537850SAkhilesh Sanikop    26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 60, 52, 45, 39,
501*09537850SAkhilesh Sanikop    34, 30, 26, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
502*09537850SAkhilesh Sanikop    22, 22, 22, 22, 22, 22, 22, 22, 22, 60, 52, 45, 39, 34, 30, 26, 22, 19, 19,
503*09537850SAkhilesh Sanikop    19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
504*09537850SAkhilesh Sanikop    19, 19, 19, 60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 17, 17, 17, 17, 17, 17,
505*09537850SAkhilesh Sanikop    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 60, 52, 45,
506*09537850SAkhilesh Sanikop    39, 34, 30, 26, 22, 19, 17, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
507*09537850SAkhilesh Sanikop    15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 60, 52, 45, 39, 34, 30, 26, 22, 19,
508*09537850SAkhilesh Sanikop    17, 15, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
509*09537850SAkhilesh Sanikop    13, 13, 13, 13, 60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 11, 11,
510*09537850SAkhilesh Sanikop    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 60, 52,
511*09537850SAkhilesh Sanikop    45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 10, 10, 10, 10, 10, 10, 10,
512*09537850SAkhilesh Sanikop    10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 60, 52, 45, 39, 34, 30, 26, 22,
513*09537850SAkhilesh Sanikop    19, 17, 15, 13, 11, 10, 8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,  8,
514*09537850SAkhilesh Sanikop    8,  8,  8,  8,  8,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10,
515*09537850SAkhilesh Sanikop    8,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  7,  60,
516*09537850SAkhilesh Sanikop    52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,  6,  6,
517*09537850SAkhilesh Sanikop    6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,  60, 52, 45, 39, 34, 30, 26,
518*09537850SAkhilesh Sanikop    22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,  6,  6,  6,  6,  6,  6,  6,  6,
519*09537850SAkhilesh Sanikop    6,  6,  6,  6,  6,  6,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11,
520*09537850SAkhilesh Sanikop    10, 8,  7,  6,  6,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,  5,
521*09537850SAkhilesh Sanikop    60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,  5,
522*09537850SAkhilesh Sanikop    4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  4,  60, 52, 45, 39, 34, 30,
523*09537850SAkhilesh Sanikop    26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  4,  4,  4,  4,
524*09537850SAkhilesh Sanikop    4,  4,  4,  4,  4,  4,  4,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13,
525*09537850SAkhilesh Sanikop    11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,
526*09537850SAkhilesh Sanikop    3,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,
527*09537850SAkhilesh Sanikop    5,  4,  4,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  3,  60, 52, 45, 39, 34,
528*09537850SAkhilesh Sanikop    30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,  2,
529*09537850SAkhilesh Sanikop    2,  2,  2,  2,  2,  2,  2,  2,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15,
530*09537850SAkhilesh Sanikop    13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  2,  2,  2,
531*09537850SAkhilesh Sanikop    2,  2,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,
532*09537850SAkhilesh Sanikop    6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  2,  2,  2,  2,  2,  60, 52, 45, 39,
533*09537850SAkhilesh Sanikop    34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,
534*09537850SAkhilesh Sanikop    2,  2,  2,  2,  2,  2,  2,  2,  2,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17,
535*09537850SAkhilesh Sanikop    15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,  1,
536*09537850SAkhilesh Sanikop    1,  1,  1,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,
537*09537850SAkhilesh Sanikop    6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,  1,  1,  1,  1,  60, 52, 45,
538*09537850SAkhilesh Sanikop    39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,
539*09537850SAkhilesh Sanikop    3,  2,  2,  2,  2,  1,  1,  1,  1,  1,  60, 52, 45, 39, 34, 30, 26, 22, 19,
540*09537850SAkhilesh Sanikop    17, 15, 13, 11, 10, 8,  7,  6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,
541*09537850SAkhilesh Sanikop    1,  1,  1,  1,  60, 52, 45, 39, 34, 30, 26, 22, 19, 17, 15, 13, 11, 10, 8,
542*09537850SAkhilesh Sanikop    7,  6,  6,  5,  4,  4,  3,  3,  2,  2,  2,  2,  1,  1,  1,  1,  1};
543*09537850SAkhilesh Sanikop
544*09537850SAkhilesh Sanikop// For each 2D array within this array, the indices are mapped as follows: 0, 1,
545*09537850SAkhilesh Sanikop// 2 and 3 in each dimension maps to prediction dimension 4, 8, 16 and 32
546*09537850SAkhilesh Sanikop// respectively. For example, the entry in [1][2] corresponds to a prediction
547*09537850SAkhilesh Sanikop// size of 8x16 (width == 8 and height == 16).
548*09537850SAkhilesh Sanikopconst uint8_t* kInterIntraMasks[kNumInterIntraModes][4][4] = {
549*09537850SAkhilesh Sanikop    // kInterIntraModeDc. This is a special case where all the non-nullptr
550*09537850SAkhilesh Sanikop    // entries point to kInterIntraMaskDc (all entries of the array are 32). The
551*09537850SAkhilesh Sanikop    // width can be set according to the prediction size to achieve the desired
552*09537850SAkhilesh Sanikop    // result.
553*09537850SAkhilesh Sanikop    {{kInterIntraMaskDc, kInterIntraMaskDc, nullptr, nullptr},
554*09537850SAkhilesh Sanikop     {kInterIntraMaskDc, kInterIntraMaskDc, kInterIntraMaskDc, nullptr},
555*09537850SAkhilesh Sanikop     {nullptr, kInterIntraMaskDc, kInterIntraMaskDc, kInterIntraMaskDc},
556*09537850SAkhilesh Sanikop     {nullptr, nullptr, kInterIntraMaskDc, kInterIntraMaskDc}},
557*09537850SAkhilesh Sanikop    // kInterIntraModeVertical
558*09537850SAkhilesh Sanikop    {{kInterIntraMaskVertical4x4, kInterIntraMaskVertical4x8, nullptr, nullptr},
559*09537850SAkhilesh Sanikop     {kInterIntraMaskVertical8x4, kInterIntraMaskVertical8x8,
560*09537850SAkhilesh Sanikop      kInterIntraMaskVertical8x16, nullptr},
561*09537850SAkhilesh Sanikop     {nullptr, kInterIntraMaskVertical16x8, kInterIntraMaskVertical16x16,
562*09537850SAkhilesh Sanikop      kInterIntraMaskVertical16x32},
563*09537850SAkhilesh Sanikop     {nullptr, nullptr, kInterIntraMaskVertical32x16,
564*09537850SAkhilesh Sanikop      kInterIntraMaskVertical32x32}},
565*09537850SAkhilesh Sanikop    // kInterIntraModeHorizontal
566*09537850SAkhilesh Sanikop    {{kInterIntraMaskHorizontal4x4, kInterIntraMaskHorizontal4x8, nullptr,
567*09537850SAkhilesh Sanikop      nullptr},
568*09537850SAkhilesh Sanikop     {kInterIntraMaskHorizontal8x4, kInterIntraMaskHorizontal8x8,
569*09537850SAkhilesh Sanikop      kInterIntraMaskHorizontal8x16, nullptr},
570*09537850SAkhilesh Sanikop     {nullptr, kInterIntraMaskHorizontal16x8, kInterIntraMaskHorizontal16x16,
571*09537850SAkhilesh Sanikop      kInterIntraMaskHorizontal16x32},
572*09537850SAkhilesh Sanikop     {nullptr, nullptr, kInterIntraMaskHorizontal32x16,
573*09537850SAkhilesh Sanikop      kInterIntraMaskHorizontal32x32}},
574*09537850SAkhilesh Sanikop    // kInterIntraModeSmooth
575*09537850SAkhilesh Sanikop    {{kInterIntraMaskSmooth4x4, kInterIntraMaskSmooth4x8, nullptr, nullptr},
576*09537850SAkhilesh Sanikop     {kInterIntraMaskSmooth8x4, kInterIntraMaskSmooth8x8,
577*09537850SAkhilesh Sanikop      kInterIntraMaskSmooth8x16, nullptr},
578*09537850SAkhilesh Sanikop     {nullptr, kInterIntraMaskSmooth16x8, kInterIntraMaskSmooth16x16,
579*09537850SAkhilesh Sanikop      kInterIntraMaskSmooth16x32},
580*09537850SAkhilesh Sanikop     {nullptr, nullptr, kInterIntraMaskSmooth32x16,
581*09537850SAkhilesh Sanikop      kInterIntraMaskSmooth32x32}}};
582