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