1*495ae853SAndroid Build Coastguard Worker /****************************************************************************** 2*495ae853SAndroid Build Coastguard Worker * 3*495ae853SAndroid Build Coastguard Worker * Copyright (C) 2015 The Android Open Source Project 4*495ae853SAndroid Build Coastguard Worker * 5*495ae853SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 6*495ae853SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 7*495ae853SAndroid Build Coastguard Worker * You may obtain a copy of the License at: 8*495ae853SAndroid Build Coastguard Worker * 9*495ae853SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 10*495ae853SAndroid Build Coastguard Worker * 11*495ae853SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 12*495ae853SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 13*495ae853SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*495ae853SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 15*495ae853SAndroid Build Coastguard Worker * limitations under the License. 16*495ae853SAndroid Build Coastguard Worker * 17*495ae853SAndroid Build Coastguard Worker ***************************************************************************** 18*495ae853SAndroid Build Coastguard Worker * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19*495ae853SAndroid Build Coastguard Worker */ 20*495ae853SAndroid Build Coastguard Worker 21*495ae853SAndroid Build Coastguard Worker /** 22*495ae853SAndroid Build Coastguard Worker ************************************************************************** 23*495ae853SAndroid Build Coastguard Worker * \file ih264d_tables.c 24*495ae853SAndroid Build Coastguard Worker * 25*495ae853SAndroid Build Coastguard Worker * \brief 26*495ae853SAndroid Build Coastguard Worker * Defination of all tables used by h264 decoder 27*495ae853SAndroid Build Coastguard Worker * 28*495ae853SAndroid Build Coastguard Worker * \date 29*495ae853SAndroid Build Coastguard Worker * 17/09/2004 30*495ae853SAndroid Build Coastguard Worker * 31*495ae853SAndroid Build Coastguard Worker * \author MA 32*495ae853SAndroid Build Coastguard Worker ************************************************************************** 33*495ae853SAndroid Build Coastguard Worker */ 34*495ae853SAndroid Build Coastguard Worker #include "ih264_typedefs.h" 35*495ae853SAndroid Build Coastguard Worker #include "ih264_macros.h" 36*495ae853SAndroid Build Coastguard Worker #include "ih264_platform_macros.h" 37*495ae853SAndroid Build Coastguard Worker #include "ih264d_defs.h" 38*495ae853SAndroid Build Coastguard Worker #include "ih264d_tables.h" 39*495ae853SAndroid Build Coastguard Worker 40*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_qp_scale_cr[] = 41*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 42*495ae853SAndroid Build Coastguard Worker 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 43*495ae853SAndroid Build Coastguard Worker 29, 30, 31, 32, 32, 33, 34, 34, 35, 35, 36, 36, 37, 37, 37, 38, 38, 38, 44*495ae853SAndroid Build Coastguard Worker 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39 }; 45*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_alpha_table[] = 46*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47*495ae853SAndroid Build Coastguard Worker 0, 0, 0, 4, 4, 5, 6, 7, 8, 9, 10, 12, 13, 15, 17, 20, 22, 25, 28, 32, 36, 48*495ae853SAndroid Build Coastguard Worker 40, 45, 50, 56, 63, 71, 80, 90, 101, 113, 127, 144, 162, 182, 203, 226, 49*495ae853SAndroid Build Coastguard Worker 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255 }; 50*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_beta_table[] = 51*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52*495ae853SAndroid Build Coastguard Worker 0, 0, 0, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 53*495ae853SAndroid Build Coastguard Worker 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 18, 18, 18, 54*495ae853SAndroid Build Coastguard Worker 18, 18, 18, 18, 18, 18, 18, 18, 18 }; 55*495ae853SAndroid Build Coastguard Worker 56*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_clip_table[][4] = 57*495ae853SAndroid Build Coastguard Worker { 58*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 59*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 60*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 61*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 62*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 63*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 64*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 65*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 66*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 67*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 68*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 69*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 70*495ae853SAndroid Build Coastguard Worker 71*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 72*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 73*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 74*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 75*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 76*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 77*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 78*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 79*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 80*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 81*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 82*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 83*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 84*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 85*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 86*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 87*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0 }, 88*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 1 }, 89*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 1 }, 90*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 1 }, 91*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 1 }, 92*495ae853SAndroid Build Coastguard Worker { 0, 0, 1, 1 }, 93*495ae853SAndroid Build Coastguard Worker { 0, 0, 1, 1 }, 94*495ae853SAndroid Build Coastguard Worker { 0, 1, 1, 1 }, 95*495ae853SAndroid Build Coastguard Worker { 0, 1, 1, 1 }, 96*495ae853SAndroid Build Coastguard Worker { 0, 1, 1, 1 }, 97*495ae853SAndroid Build Coastguard Worker { 0, 1, 1, 1 }, 98*495ae853SAndroid Build Coastguard Worker { 0, 1, 1, 2 }, 99*495ae853SAndroid Build Coastguard Worker { 0, 1, 1, 2 }, 100*495ae853SAndroid Build Coastguard Worker { 0, 1, 1, 2 }, 101*495ae853SAndroid Build Coastguard Worker { 0, 1, 1, 2 }, 102*495ae853SAndroid Build Coastguard Worker { 0, 1, 2, 3 }, 103*495ae853SAndroid Build Coastguard Worker { 0, 1, 2, 3 }, 104*495ae853SAndroid Build Coastguard Worker { 0, 2, 2, 3 }, 105*495ae853SAndroid Build Coastguard Worker { 0, 2, 2, 4 }, 106*495ae853SAndroid Build Coastguard Worker { 0, 2, 3, 4 }, 107*495ae853SAndroid Build Coastguard Worker { 0, 2, 3, 4 }, 108*495ae853SAndroid Build Coastguard Worker { 0, 3, 3, 5 }, 109*495ae853SAndroid Build Coastguard Worker { 0, 3, 4, 6 }, 110*495ae853SAndroid Build Coastguard Worker { 0, 3, 4, 6 }, 111*495ae853SAndroid Build Coastguard Worker { 0, 4, 5, 7 }, 112*495ae853SAndroid Build Coastguard Worker { 0, 4, 5, 8 }, 113*495ae853SAndroid Build Coastguard Worker { 0, 4, 6, 9 }, 114*495ae853SAndroid Build Coastguard Worker { 0, 5, 7, 10 }, 115*495ae853SAndroid Build Coastguard Worker { 0, 6, 8, 11 }, 116*495ae853SAndroid Build Coastguard Worker { 0, 6, 8, 13 }, 117*495ae853SAndroid Build Coastguard Worker { 0, 7, 10, 14 }, 118*495ae853SAndroid Build Coastguard Worker { 0, 8, 11, 16 }, 119*495ae853SAndroid Build Coastguard Worker { 0, 9, 12, 18 }, 120*495ae853SAndroid Build Coastguard Worker { 0, 10, 13, 20 }, 121*495ae853SAndroid Build Coastguard Worker { 0, 11, 15, 23 }, 122*495ae853SAndroid Build Coastguard Worker { 0, 13, 17, 25 }, 123*495ae853SAndroid Build Coastguard Worker 124*495ae853SAndroid Build Coastguard Worker { 0, 13, 17, 25 }, 125*495ae853SAndroid Build Coastguard Worker { 0, 13, 17, 25 }, 126*495ae853SAndroid Build Coastguard Worker { 0, 13, 17, 25 }, 127*495ae853SAndroid Build Coastguard Worker { 0, 13, 17, 25 }, 128*495ae853SAndroid Build Coastguard Worker { 0, 13, 17, 25 }, 129*495ae853SAndroid Build Coastguard Worker { 0, 13, 17, 25 }, 130*495ae853SAndroid Build Coastguard Worker { 0, 13, 17, 25 }, 131*495ae853SAndroid Build Coastguard Worker { 0, 13, 17, 25 }, 132*495ae853SAndroid Build Coastguard Worker { 0, 13, 17, 25 }, 133*495ae853SAndroid Build Coastguard Worker { 0, 13, 17, 25 }, 134*495ae853SAndroid Build Coastguard Worker { 0, 13, 17, 25 }, 135*495ae853SAndroid Build Coastguard Worker { 0, 13, 17, 25 }, 136*495ae853SAndroid Build Coastguard Worker { 0, 13, 17, 25 }, 137*495ae853SAndroid Build Coastguard Worker { 0, 13, 17, 25 }, 138*495ae853SAndroid Build Coastguard Worker { 0, 13, 17, 25 }, 139*495ae853SAndroid Build Coastguard Worker { 0, 13, 17, 25 }, 140*495ae853SAndroid Build Coastguard Worker { 0, 13, 17, 25 }, 141*495ae853SAndroid Build Coastguard Worker { 0, 13, 17, 25 }, 142*495ae853SAndroid Build Coastguard Worker { 0, 13, 17, 25 }, 143*495ae853SAndroid Build Coastguard Worker { 0, 13, 17, 25 }, 144*495ae853SAndroid Build Coastguard Worker { 0, 13, 17, 25 }, 145*495ae853SAndroid Build Coastguard Worker { 0, 13, 17, 25 }, 146*495ae853SAndroid Build Coastguard Worker { 0, 13, 17, 25 }, 147*495ae853SAndroid Build Coastguard Worker { 0, 13, 17, 25 } 148*495ae853SAndroid Build Coastguard Worker 149*495ae853SAndroid Build Coastguard Worker }; 150*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_clip_table_deblock[] = 151*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 152*495ae853SAndroid Build Coastguard Worker 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 153*495ae853SAndroid Build Coastguard Worker 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 154*495ae853SAndroid Build Coastguard Worker 48, 49, 50, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51 }; 155*495ae853SAndroid Build Coastguard Worker 156*495ae853SAndroid Build Coastguard Worker /****************DEBLOCKING TABLES ENDS*******************/ 157*495ae853SAndroid Build Coastguard Worker 158*495ae853SAndroid Build Coastguard Worker /*************************************************************/ 159*495ae853SAndroid Build Coastguard Worker /* BS CALCULATION TABLES */ 160*495ae853SAndroid Build Coastguard Worker /*************************************************************/ 161*495ae853SAndroid Build Coastguard Worker UWORD32 const gau4_ih264d_packed_bs2[32] = 162*495ae853SAndroid Build Coastguard Worker { 163*495ae853SAndroid Build Coastguard Worker /*************************************************************/ 164*495ae853SAndroid Build Coastguard Worker /* BS TABLES FOR NORMAL EDGES */ 165*495ae853SAndroid Build Coastguard Worker /*************************************************************/ 166*495ae853SAndroid Build Coastguard Worker 0x00000000, 167*495ae853SAndroid Build Coastguard Worker 0x02000000, 0x00020000, 0x02020000, 0x00000200, 0x02000200, 0x00020200, 168*495ae853SAndroid Build Coastguard Worker 0x02020200, 0x00000002, 0x02000002, 0x00020002, 0x02020002, 0x00000202, 169*495ae853SAndroid Build Coastguard Worker 0x02000202, 0x00020202, 0x02020202, 170*495ae853SAndroid Build Coastguard Worker 171*495ae853SAndroid Build Coastguard Worker /*************************************************************/ 172*495ae853SAndroid Build Coastguard Worker /* BS TABLES FOR XTRA LEFT MB EDGES IN MBAFF CASE */ 173*495ae853SAndroid Build Coastguard Worker /*************************************************************/ 174*495ae853SAndroid Build Coastguard Worker 0x01010101, 175*495ae853SAndroid Build Coastguard Worker 0x02010101, 0x01020101, 0x02020101, 0x01010201, 0x02010201, 0x01020201, 176*495ae853SAndroid Build Coastguard Worker 0x02020201, 0x01010102, 0x02010102, 0x01020102, 0x02020102, 0x01010202, 177*495ae853SAndroid Build Coastguard Worker 0x02010202, 0x01020202, 0x02020202, }; 178*495ae853SAndroid Build Coastguard Worker 179*495ae853SAndroid Build Coastguard Worker UWORD16 const gau2_ih264d_4x4_v2h_reorder[16] = 180*495ae853SAndroid Build Coastguard Worker { 0x0000, 0x0001, 0x0010, 0x0011, 0x0100, 0x0101, 0x0110, 0x0111, 0x1000, 181*495ae853SAndroid Build Coastguard Worker 0x1001, 0x1010, 0x1011, 0x1100, 0x1101, 0x1110, 0x1111 }; 182*495ae853SAndroid Build Coastguard Worker 183*495ae853SAndroid Build Coastguard Worker /****************SCALING TABLES STARTS *****************/ 184*495ae853SAndroid Build Coastguard Worker const WORD16 gai2_ih264d_default_intra4x4[16] = 185*495ae853SAndroid Build Coastguard Worker { 6, 13, 13, 20, 20, 20, 28, 28, 28, 28, 32, 32, 32, 37, 37, 42 }; 186*495ae853SAndroid Build Coastguard Worker 187*495ae853SAndroid Build Coastguard Worker const WORD16 gai2_ih264d_default_inter4x4[16] = 188*495ae853SAndroid Build Coastguard Worker { 10, 14, 14, 20, 20, 20, 24, 24, 24, 24, 27, 27, 27, 30, 30, 34 }; 189*495ae853SAndroid Build Coastguard Worker 190*495ae853SAndroid Build Coastguard Worker const WORD16 gai2_ih264d_default_intra8x8[64] = 191*495ae853SAndroid Build Coastguard Worker { 6, 10, 10, 13, 11, 13, 16, 16, 16, 16, 18, 18, 18, 18, 18, 23, 23, 23, 23, 192*495ae853SAndroid Build Coastguard Worker 23, 23, 25, 25, 25, 25, 25, 25, 25, 27, 27, 27, 27, 27, 27, 27, 27, 29, 193*495ae853SAndroid Build Coastguard Worker 29, 29, 29, 29, 29, 29, 31, 31, 31, 31, 31, 31, 33, 33, 33, 33, 33, 36, 194*495ae853SAndroid Build Coastguard Worker 36, 36, 36, 38, 38, 38, 40, 40, 42 }; 195*495ae853SAndroid Build Coastguard Worker 196*495ae853SAndroid Build Coastguard Worker const WORD16 gai2_ih264d_default_inter8x8[64] = 197*495ae853SAndroid Build Coastguard Worker { 9, 13, 13, 15, 13, 15, 17, 17, 17, 17, 19, 19, 19, 19, 19, 21, 21, 21, 21, 198*495ae853SAndroid Build Coastguard Worker 21, 21, 22, 22, 22, 22, 22, 22, 22, 24, 24, 24, 24, 24, 24, 24, 24, 25, 199*495ae853SAndroid Build Coastguard Worker 25, 25, 25, 25, 25, 25, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 30, 200*495ae853SAndroid Build Coastguard Worker 30, 30, 30, 32, 32, 32, 33, 33, 35 }; 201*495ae853SAndroid Build Coastguard Worker 202*495ae853SAndroid Build Coastguard Worker const WORD16 gai2_ih264d_flat_4x4[16] = 203*495ae853SAndroid Build Coastguard Worker { 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16 }; 204*495ae853SAndroid Build Coastguard Worker 205*495ae853SAndroid Build Coastguard Worker const WORD16 gai2_ih264d_flat_8x8[64] = 206*495ae853SAndroid Build Coastguard Worker { 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 207*495ae853SAndroid Build Coastguard Worker 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 208*495ae853SAndroid Build Coastguard Worker 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 209*495ae853SAndroid Build Coastguard Worker 16, 16, 16, 16, 16, 16, 16, 16, 16, 16 }; 210*495ae853SAndroid Build Coastguard Worker 211*495ae853SAndroid Build Coastguard Worker /****************SCALING TABLES ENDS *****************/ 212*495ae853SAndroid Build Coastguard Worker 213*495ae853SAndroid Build Coastguard Worker /*Inverse scan tables for individual 4x4 blocks of 8x8 transform coeffs of CAVLC */ 214*495ae853SAndroid Build Coastguard Worker 215*495ae853SAndroid Build Coastguard Worker /* progressive */ 216*495ae853SAndroid Build Coastguard Worker 217*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_inv_scan_prog8x8_cavlc[4][16] = 218*495ae853SAndroid Build Coastguard Worker { 219*495ae853SAndroid Build Coastguard Worker { 0, 9, 17, 18, 12, 40, 27, 7, 35, 57, 29, 30, 58, 38, 53, 47 }, /* for First subblock */ 220*495ae853SAndroid Build Coastguard Worker { 1, 2, 24, 11, 19, 48, 20, 14, 42, 50, 22, 37, 59, 31, 60, 55 }, /* for second subblock */ 221*495ae853SAndroid Build Coastguard Worker { 8, 3, 32, 4, 26, 41, 13, 21, 49, 43, 15, 44, 52, 39, 61, 62 }, /* for third subblock */ 222*495ae853SAndroid Build Coastguard Worker { 16, 10, 25, 5, 33, 34, 6, 28, 56, 36, 23, 51, 45, 46, 54, 63 } /* for fourth subblock */ 223*495ae853SAndroid Build Coastguard Worker }; 224*495ae853SAndroid Build Coastguard Worker 225*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_inv_scan_int8x8_cavlc[4][16] = 226*495ae853SAndroid Build Coastguard Worker { 227*495ae853SAndroid Build Coastguard Worker { 0, 9, 2, 56, 18, 26, 34, 27, 35, 28, 36, 29, 45, 7, 54, 39 }, /* for First subblock */ 228*495ae853SAndroid Build Coastguard Worker { 8, 24, 25, 33, 41, 11, 42, 12, 43, 13, 44, 14, 53, 15, 62, 47 }, /* for second subblock */ 229*495ae853SAndroid Build Coastguard Worker { 16, 32, 40, 10, 49, 4, 50, 5, 51, 6, 52, 22, 61, 38, 23, 55 }, /* for third subblock */ 230*495ae853SAndroid Build Coastguard Worker { 1, 17, 48, 3, 57, 19, 58, 20, 59, 21, 60, 37, 30, 46, 31, 63 } /* for fourth subblock */ 231*495ae853SAndroid Build Coastguard Worker }; 232*495ae853SAndroid Build Coastguard Worker 233*495ae853SAndroid Build Coastguard Worker /*Inverse scan tables for individual 8x8 blocks of 8x8 transform coeffs of CABAC */ 234*495ae853SAndroid Build Coastguard Worker /* progressive */ 235*495ae853SAndroid Build Coastguard Worker 236*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_inv_scan_prog8x8_cabac[64] = 237*495ae853SAndroid Build Coastguard Worker { 0, 1, 8, 16, 9, 2, 3, 10, 17, 24, 32, 25, 18, 11, 4, 5, 12, 19, 26, 33, 238*495ae853SAndroid Build Coastguard Worker 40, 48, 41, 34, 27, 20, 13, 6, 7, 14, 21, 28, 35, 42, 49, 56, 57, 50, 43, 239*495ae853SAndroid Build Coastguard Worker 36, 29, 22, 15, 23, 30, 37, 44, 51, 58, 59, 52, 45, 38, 31, 39, 46, 53, 240*495ae853SAndroid Build Coastguard Worker 60, 61, 54, 47, 55, 62, 63 }; 241*495ae853SAndroid Build Coastguard Worker 242*495ae853SAndroid Build Coastguard Worker /* interlace */ 243*495ae853SAndroid Build Coastguard Worker 244*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_inv_scan_int8x8_cabac[64] = 245*495ae853SAndroid Build Coastguard Worker { 0, 8, 16, 1, 9, 24, 32, 17, 2, 25, 40, 48, 56, 33, 10, 3, 18, 41, 49, 57, 246*495ae853SAndroid Build Coastguard Worker 26, 11, 4, 19, 34, 42, 50, 58, 27, 12, 5, 20, 35, 43, 51, 59, 28, 13, 6, 247*495ae853SAndroid Build Coastguard Worker 21, 36, 44, 52, 60, 29, 14, 22, 37, 45, 53, 61, 30, 7, 15, 38, 46, 54, 62, 248*495ae853SAndroid Build Coastguard Worker 23, 31, 39, 47, 55, 63 }; 249*495ae853SAndroid Build Coastguard Worker 250*495ae853SAndroid Build Coastguard Worker /****************PARSING TABLES *******************/ 251*495ae853SAndroid Build Coastguard Worker UWORD8 const gau1_ih264d_subblk_offset[16] = 252*495ae853SAndroid Build Coastguard Worker { 8, 9, 12, 13, 10, 11, 14, 15, 16, 17, 20, 21, 18, 19, 22, 23 }; 253*495ae853SAndroid Build Coastguard Worker 254*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_cbp_tab[6] = 255*495ae853SAndroid Build Coastguard Worker { 0, 16, 32, 15, 31, 47 }; 256*495ae853SAndroid Build Coastguard Worker 257*495ae853SAndroid Build Coastguard Worker /** gives CBP value from codeword number, both for intra and inter */ 258*495ae853SAndroid Build Coastguard Worker 259*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_cbp_table[48][2] = 260*495ae853SAndroid Build Coastguard Worker { 261*495ae853SAndroid Build Coastguard Worker { 47, 0 }, 262*495ae853SAndroid Build Coastguard Worker { 31, 16 }, 263*495ae853SAndroid Build Coastguard Worker { 15, 1 }, 264*495ae853SAndroid Build Coastguard Worker { 0, 2 }, 265*495ae853SAndroid Build Coastguard Worker { 23, 4 }, 266*495ae853SAndroid Build Coastguard Worker { 27, 8 }, 267*495ae853SAndroid Build Coastguard Worker { 29, 32 }, 268*495ae853SAndroid Build Coastguard Worker { 30, 3 }, 269*495ae853SAndroid Build Coastguard Worker { 7, 5 }, 270*495ae853SAndroid Build Coastguard Worker { 11, 10 }, 271*495ae853SAndroid Build Coastguard Worker { 13, 12 }, 272*495ae853SAndroid Build Coastguard Worker { 14, 15 }, 273*495ae853SAndroid Build Coastguard Worker { 39, 47 }, 274*495ae853SAndroid Build Coastguard Worker { 43, 7 }, 275*495ae853SAndroid Build Coastguard Worker { 45, 11 }, 276*495ae853SAndroid Build Coastguard Worker { 46, 13 }, 277*495ae853SAndroid Build Coastguard Worker { 16, 14 }, 278*495ae853SAndroid Build Coastguard Worker { 3, 6 }, 279*495ae853SAndroid Build Coastguard Worker { 5, 9 }, 280*495ae853SAndroid Build Coastguard Worker { 10, 31 }, 281*495ae853SAndroid Build Coastguard Worker { 12, 35 }, 282*495ae853SAndroid Build Coastguard Worker { 19, 37 }, 283*495ae853SAndroid Build Coastguard Worker { 21, 42 }, 284*495ae853SAndroid Build Coastguard Worker { 26, 44 }, 285*495ae853SAndroid Build Coastguard Worker { 28, 33 }, 286*495ae853SAndroid Build Coastguard Worker { 35, 34 }, 287*495ae853SAndroid Build Coastguard Worker { 37, 36 }, 288*495ae853SAndroid Build Coastguard Worker { 42, 40 }, 289*495ae853SAndroid Build Coastguard Worker { 44, 39 }, 290*495ae853SAndroid Build Coastguard Worker { 1, 43 }, 291*495ae853SAndroid Build Coastguard Worker { 2, 45 }, 292*495ae853SAndroid Build Coastguard Worker { 4, 46 }, 293*495ae853SAndroid Build Coastguard Worker { 8, 17 }, 294*495ae853SAndroid Build Coastguard Worker { 17, 18 }, 295*495ae853SAndroid Build Coastguard Worker { 18, 20 }, 296*495ae853SAndroid Build Coastguard Worker { 20, 24 }, 297*495ae853SAndroid Build Coastguard Worker { 24, 19 }, 298*495ae853SAndroid Build Coastguard Worker { 6, 21 }, 299*495ae853SAndroid Build Coastguard Worker { 9, 26 }, 300*495ae853SAndroid Build Coastguard Worker { 22, 28 }, 301*495ae853SAndroid Build Coastguard Worker { 25, 23 }, 302*495ae853SAndroid Build Coastguard Worker { 32, 27 }, 303*495ae853SAndroid Build Coastguard Worker { 33, 29 }, 304*495ae853SAndroid Build Coastguard Worker { 34, 30 }, 305*495ae853SAndroid Build Coastguard Worker { 36, 22 }, 306*495ae853SAndroid Build Coastguard Worker { 40, 25 }, 307*495ae853SAndroid Build Coastguard Worker { 38, 38 }, 308*495ae853SAndroid Build Coastguard Worker { 41, 41 }, }; 309*495ae853SAndroid Build Coastguard Worker /****************PARSING TABLES ENDS *******************/ 310*495ae853SAndroid Build Coastguard Worker 311*495ae853SAndroid Build Coastguard Worker /****************DECODE SLICE TABLES STARTS *******************/ 312*495ae853SAndroid Build Coastguard Worker /*Definition of Tables needed by functions of this file */ 313*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_inv_scan[16] = 314*495ae853SAndroid Build Coastguard Worker { 0, 1, 4, 8, 5, 2, 3, 6, 9, 12, 13, 10, 7, 11, 14, 15 }; 315*495ae853SAndroid Build Coastguard Worker 316*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_inv_scan_fld[16] = 317*495ae853SAndroid Build Coastguard Worker { 0, 4, 1, 8, 12, 5, 9, 13, 2, 6, 10, 14, 3, 7, 11, 15 }; 318*495ae853SAndroid Build Coastguard Worker 319*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_dequant_matrix[6][16] = 320*495ae853SAndroid Build Coastguard Worker { 321*495ae853SAndroid Build Coastguard Worker { 10, 13, 10, 13, 13, 16, 13, 16, 10, 13, 10 ,13, 13, 16, 13, 16}, 322*495ae853SAndroid Build Coastguard Worker { 11, 14, 11, 14, 14, 18, 14, 18, 11, 14, 11 ,14, 14, 18, 14, 18}, 323*495ae853SAndroid Build Coastguard Worker { 13, 16, 13, 16, 16, 20, 16, 20, 13, 16, 13 ,16, 16, 20, 16, 20}, 324*495ae853SAndroid Build Coastguard Worker { 14, 18, 14, 18, 18, 23, 18, 23, 14, 18, 14, 18, 18, 23, 18, 23}, 325*495ae853SAndroid Build Coastguard Worker { 16, 20, 16, 20, 20, 25, 20, 25, 16, 20, 16, 20, 20, 25, 20, 25}, 326*495ae853SAndroid Build Coastguard Worker { 18, 23, 18, 23, 23, 29, 23, 29, 18, 23, 18, 23, 23, 29, 23, 29} 327*495ae853SAndroid Build Coastguard Worker }; 328*495ae853SAndroid Build Coastguard Worker 329*495ae853SAndroid Build Coastguard Worker const UWORD16 gau2_ih264_iquant_scale_4x4[6][16] = 330*495ae853SAndroid Build Coastguard Worker { 331*495ae853SAndroid Build Coastguard Worker { 10, 13, 10, 13, 13, 16, 13, 16, 10, 13, 10, 13, 13, 16, 13, 16 }, 332*495ae853SAndroid Build Coastguard Worker { 11, 14, 11, 14, 14, 18, 14, 18, 11, 14, 11, 14, 14, 18, 14, 18 }, 333*495ae853SAndroid Build Coastguard Worker { 13, 16, 13, 16, 16, 20, 16, 20, 13, 16, 13, 16, 16, 20, 16, 20 }, 334*495ae853SAndroid Build Coastguard Worker { 14, 18, 14, 18, 18, 23, 18, 23, 14, 18, 14, 18, 18, 23, 18, 23 }, 335*495ae853SAndroid Build Coastguard Worker { 16, 20, 16, 20, 20, 25, 20, 25, 16, 20, 16, 20, 20, 25, 20, 25 }, 336*495ae853SAndroid Build Coastguard Worker { 18, 23, 18, 23, 23, 29, 23, 29, 18, 23, 18, 23, 23, 29, 23, 29 } }; 337*495ae853SAndroid Build Coastguard Worker 338*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_dequant8x8_zigzag_cavlc[4][6][16] = 339*495ae853SAndroid Build Coastguard Worker { 340*495ae853SAndroid Build Coastguard Worker { 341*495ae853SAndroid Build Coastguard Worker { 20, 18, 24, 32, 19, 19, 18, 19, 19, 18, 18, 24, 342*495ae853SAndroid Build Coastguard Worker 24, 25, 24, 18 }, /* for First subblock */ 343*495ae853SAndroid Build Coastguard Worker { 22, 19, 26, 35, 21, 21, 19, 21, 21, 19, 19, 26, 344*495ae853SAndroid Build Coastguard Worker 26, 28, 26, 19 }, 345*495ae853SAndroid Build Coastguard Worker { 26, 23, 31, 42, 24, 24, 23, 24, 24, 23, 23, 31, 346*495ae853SAndroid Build Coastguard Worker 31, 33, 31, 23 }, 347*495ae853SAndroid Build Coastguard Worker { 28, 25, 33, 45, 26, 26, 25, 26, 26, 25, 25, 33, 348*495ae853SAndroid Build Coastguard Worker 33, 35, 33, 25 }, 349*495ae853SAndroid Build Coastguard Worker { 32, 28, 38, 51, 30, 30, 28, 30, 30, 28, 28, 38, 350*495ae853SAndroid Build Coastguard Worker 38, 40, 38, 28 }, 351*495ae853SAndroid Build Coastguard Worker { 36, 32, 43, 58, 34, 34, 32, 34, 34, 32, 32, 43, 352*495ae853SAndroid Build Coastguard Worker 43, 46, 43, 32 } }, 353*495ae853SAndroid Build Coastguard Worker { 354*495ae853SAndroid Build Coastguard Worker { 19, 25, 19, 18, 24, 25, 25, 24, 24, 32, 32, 19, 355*495ae853SAndroid Build Coastguard Worker 18, 18, 19, 24 }, /* for second subblock */ 356*495ae853SAndroid Build Coastguard Worker { 21, 28, 21, 19, 26, 28, 28, 26, 26, 35, 35, 357*495ae853SAndroid Build Coastguard Worker 21, 19, 19, 21, 26 }, 358*495ae853SAndroid Build Coastguard Worker { 24, 33, 24, 23, 31, 33, 33, 31, 31, 42, 42, 359*495ae853SAndroid Build Coastguard Worker 24, 23, 23, 24, 31 }, 360*495ae853SAndroid Build Coastguard Worker { 26, 35, 26, 25, 33, 35, 35, 33, 33, 45, 45, 361*495ae853SAndroid Build Coastguard Worker 26, 25, 25, 26, 33 }, 362*495ae853SAndroid Build Coastguard Worker { 30, 40, 30, 28, 38, 40, 40, 38, 38, 51, 51, 363*495ae853SAndroid Build Coastguard Worker 30, 28, 28, 30, 38 }, 364*495ae853SAndroid Build Coastguard Worker { 34, 46, 34, 32, 43, 46, 46, 43, 43, 58, 58, 365*495ae853SAndroid Build Coastguard Worker 34, 32, 32, 34, 43 } }, 366*495ae853SAndroid Build Coastguard Worker { 367*495ae853SAndroid Build Coastguard Worker { 19, 19, 20, 20, 24, 18, 18, 24, 24, 18, 18, 19, 368*495ae853SAndroid Build Coastguard Worker 25, 19, 18, 24 }, /* for third subblock */ 369*495ae853SAndroid Build Coastguard Worker { 21, 21, 22, 22, 26, 19, 19, 26, 26, 19, 19, 370*495ae853SAndroid Build Coastguard Worker 21, 28, 21, 19, 26 }, 371*495ae853SAndroid Build Coastguard Worker { 24, 24, 26, 26, 31, 23, 23, 31, 31, 23, 23, 372*495ae853SAndroid Build Coastguard Worker 24, 33, 24, 23, 31 }, 373*495ae853SAndroid Build Coastguard Worker { 26, 26, 28, 28, 33, 25, 25, 33, 33, 25, 25, 374*495ae853SAndroid Build Coastguard Worker 26, 35, 26, 25, 33 }, 375*495ae853SAndroid Build Coastguard Worker { 30, 30, 32, 32, 38, 28, 28, 38, 38, 28, 28, 376*495ae853SAndroid Build Coastguard Worker 30, 40, 30, 28, 38 }, 377*495ae853SAndroid Build Coastguard Worker { 34, 34, 36, 36, 43, 32, 32, 43, 43, 32, 32, 378*495ae853SAndroid Build Coastguard Worker 34, 46, 34, 32, 43 } }, 379*495ae853SAndroid Build Coastguard Worker { 380*495ae853SAndroid Build Coastguard Worker { 25, 24, 18, 19, 19, 25, 25, 19, 19, 20, 24, 24, 381*495ae853SAndroid Build Coastguard Worker 18, 24, 32, 18 }, /* for fourth subblock */ 382*495ae853SAndroid Build Coastguard Worker { 28, 26, 19, 21, 21, 28, 28, 21, 21, 22, 26, 383*495ae853SAndroid Build Coastguard Worker 26, 19, 26, 35, 19 }, 384*495ae853SAndroid Build Coastguard Worker { 33, 31, 23, 24, 24, 33, 33, 24, 24, 26, 31, 385*495ae853SAndroid Build Coastguard Worker 31, 23, 31, 42, 23 }, 386*495ae853SAndroid Build Coastguard Worker { 35, 33, 25, 26, 26, 35, 35, 26, 26, 28, 33, 387*495ae853SAndroid Build Coastguard Worker 33, 25, 33, 45, 25 }, 388*495ae853SAndroid Build Coastguard Worker { 40, 38, 28, 30, 30, 40, 40, 30, 30, 32, 38, 389*495ae853SAndroid Build Coastguard Worker 38, 28, 38, 51, 28 }, 390*495ae853SAndroid Build Coastguard Worker { 46, 43, 32, 34, 34, 46, 46, 34, 34, 36, 43, 391*495ae853SAndroid Build Coastguard Worker 43, 32, 43, 58, 32 } } 392*495ae853SAndroid Build Coastguard Worker 393*495ae853SAndroid Build Coastguard Worker }; 394*495ae853SAndroid Build Coastguard Worker 395*495ae853SAndroid Build Coastguard Worker const UWORD16 gau1_ih264d_dequant8x8_cavlc[6][64] = 396*495ae853SAndroid Build Coastguard Worker { 397*495ae853SAndroid Build Coastguard Worker { 20, 19, 25, 19, 20, 19, 25, 19, 19, 18, 24, 18, 19, 398*495ae853SAndroid Build Coastguard Worker 18, 24, 18, 25, 24, 32, 24, 25, 24, 32, 24, 19, 18, 399*495ae853SAndroid Build Coastguard Worker 24, 18, 19, 18, 24, 18, 20, 19, 25, 19, 20, 19, 25, 400*495ae853SAndroid Build Coastguard Worker 19, 19, 18, 24, 18, 19, 18, 24, 18, 25, 24, 32, 24, 401*495ae853SAndroid Build Coastguard Worker 25, 24, 32, 24, 19, 18, 24, 18, 19, 18, 24, 18 }, 402*495ae853SAndroid Build Coastguard Worker { 22, 21, 28, 21, 22, 21, 28, 21, 21, 19, 26, 19, 21, 403*495ae853SAndroid Build Coastguard Worker 19, 26, 19, 28, 26, 35, 26, 28, 26, 35, 26, 21, 19, 404*495ae853SAndroid Build Coastguard Worker 26, 19, 21, 19, 26, 19, 22, 21, 28, 21, 22, 21, 28, 405*495ae853SAndroid Build Coastguard Worker 21, 21, 19, 26, 19, 21, 19, 26, 19, 28, 26, 35, 26, 406*495ae853SAndroid Build Coastguard Worker 28, 26, 35, 26, 21, 19, 26, 19, 21, 19, 26, 19 }, 407*495ae853SAndroid Build Coastguard Worker { 26, 24, 33, 24, 26, 24, 33, 24, 24, 23, 31, 23, 24, 408*495ae853SAndroid Build Coastguard Worker 23, 31, 23, 33, 31, 42, 31, 33, 31, 42, 31, 24, 23, 409*495ae853SAndroid Build Coastguard Worker 31, 23, 24, 23, 31, 23, 26, 24, 33, 24, 26, 24, 33, 410*495ae853SAndroid Build Coastguard Worker 24, 24, 23, 31, 23, 24, 23, 31, 23, 33, 31, 42, 31, 411*495ae853SAndroid Build Coastguard Worker 33, 31, 42, 31, 24, 23, 31, 23, 24, 23, 31, 23 }, 412*495ae853SAndroid Build Coastguard Worker { 28, 26, 35, 26, 28, 26, 35, 26, 26, 25, 33, 25, 26, 413*495ae853SAndroid Build Coastguard Worker 25, 33, 25, 35, 33, 45, 33, 35, 33, 45, 33, 26, 25, 414*495ae853SAndroid Build Coastguard Worker 33, 25, 26, 25, 33, 25, 28, 26, 35, 26, 28, 26, 35, 415*495ae853SAndroid Build Coastguard Worker 26, 26, 25, 33, 25, 26, 25, 33, 25, 35, 33, 45, 33, 416*495ae853SAndroid Build Coastguard Worker 35, 33, 45, 33, 26, 25, 33, 25, 26, 25, 33, 25 }, 417*495ae853SAndroid Build Coastguard Worker { 32, 30, 40, 30, 32, 30, 40, 30, 30, 28, 38, 28, 30, 418*495ae853SAndroid Build Coastguard Worker 28, 38, 28, 40, 38, 51, 38, 40, 38, 51, 38, 30, 28, 419*495ae853SAndroid Build Coastguard Worker 38, 28, 30, 28, 38, 28, 32, 30, 40, 30, 32, 30, 40, 420*495ae853SAndroid Build Coastguard Worker 30, 30, 28, 38, 28, 30, 28, 38, 28, 40, 38, 51, 38, 421*495ae853SAndroid Build Coastguard Worker 40, 38, 51, 38, 30, 28, 38, 28, 30, 28, 38, 28 }, 422*495ae853SAndroid Build Coastguard Worker { 36, 34, 46, 34, 36, 34, 46, 34, 34, 32, 43, 32, 34, 423*495ae853SAndroid Build Coastguard Worker 32, 43, 32, 46, 43, 58, 43, 46, 43, 58, 43, 34, 32, 424*495ae853SAndroid Build Coastguard Worker 43, 32, 34, 32, 43, 32, 36, 34, 46, 34, 36, 34, 46, 425*495ae853SAndroid Build Coastguard Worker 34, 34, 32, 43, 32, 34, 32, 43, 32, 46, 43, 58, 43, 426*495ae853SAndroid Build Coastguard Worker 46, 43, 58, 43, 34, 32, 43, 32, 34, 32, 43, 32 }, }; 427*495ae853SAndroid Build Coastguard Worker 428*495ae853SAndroid Build Coastguard Worker /****************DECODE SLICE TABLES ENDS *******************/ 429*495ae853SAndroid Build Coastguard Worker 430*495ae853SAndroid Build Coastguard Worker /****************MOTION VECTOR DECODING TABLES STARTS *******************/ 431*495ae853SAndroid Build Coastguard Worker 432*495ae853SAndroid Build Coastguard Worker /** 433*495ae853SAndroid Build Coastguard Worker ************************************************************************** 434*495ae853SAndroid Build Coastguard Worker * \brief This array is used to evaluate the condition when only one of 435*495ae853SAndroid Build Coastguard Worker * predictor subMbs has a reference frame equal to that of E subMb. 436*495ae853SAndroid Build Coastguard Worker ************************************************************************** 437*495ae853SAndroid Build Coastguard Worker */ 438*495ae853SAndroid Build Coastguard Worker 439*495ae853SAndroid Build Coastguard Worker const WORD8 gau1_ih264d_mv_pred_condition[] = 440*495ae853SAndroid Build Coastguard Worker { -1, 0, 1, -1, 2, -1, -1, -1 }; 441*495ae853SAndroid Build Coastguard Worker 442*495ae853SAndroid Build Coastguard Worker /** Number of subMbs for the 8x8 prediction mode */ 443*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_num_submb_part[] = 444*495ae853SAndroid Build Coastguard Worker { 1, 2, 2, 4 }; 445*495ae853SAndroid Build Coastguard Worker 446*495ae853SAndroid Build Coastguard Worker /** Width of the 8x8 prediction mode in terms of subMbs */ 447*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_submb_partw[] = 448*495ae853SAndroid Build Coastguard Worker { 2, 2, 1, 1 }; 449*495ae853SAndroid Build Coastguard Worker 450*495ae853SAndroid Build Coastguard Worker /** Height of the 8x8 prediction mode in terms of subMbs */ 451*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_submb_parth[] = 452*495ae853SAndroid Build Coastguard Worker { 2, 1, 2, 1 }; 453*495ae853SAndroid Build Coastguard Worker 454*495ae853SAndroid Build Coastguard Worker /** Number of MB partitions for the MB prediction mode */ 455*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_num_mb_part[] = 456*495ae853SAndroid Build Coastguard Worker { 1, 2, 2, 4 }; 457*495ae853SAndroid Build Coastguard Worker 458*495ae853SAndroid Build Coastguard Worker /** Width of the MB partition in terms of subMbs */ 459*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_mb_partw[] = 460*495ae853SAndroid Build Coastguard Worker { 4, 4, 2, 2, 2 }; 461*495ae853SAndroid Build Coastguard Worker 462*495ae853SAndroid Build Coastguard Worker /** Height of the MB partition in terms of subMbs */ 463*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_mb_parth[] = 464*495ae853SAndroid Build Coastguard Worker { 4, 2, 4, 2, 2 }; 465*495ae853SAndroid Build Coastguard Worker 466*495ae853SAndroid Build Coastguard Worker /** MB partition information is packed into a UWORD32 {0,number,width,height} */ 467*495ae853SAndroid Build Coastguard Worker const UWORD32 gau4_ih264d_submb_part[] = 468*495ae853SAndroid Build Coastguard Worker { 0x00010202, 0x00020201, 0x00020102, 0x00040101 }; 469*495ae853SAndroid Build Coastguard Worker 470*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_submb_indx_mod[] = 471*495ae853SAndroid Build Coastguard Worker { 0, 0, /* 16x16 */ 472*495ae853SAndroid Build Coastguard Worker 0, 8, /* 16x8 */ 473*495ae853SAndroid Build Coastguard Worker 0, 2, /* 8x16 */ 474*495ae853SAndroid Build Coastguard Worker 0, 0, /* 8x8 */ 475*495ae853SAndroid Build Coastguard Worker 0, 4, /* 8x4 */ 476*495ae853SAndroid Build Coastguard Worker 0, 1, /* 4x8 */ 477*495ae853SAndroid Build Coastguard Worker 0, 1, 3, 1 /* 4x4 */ 478*495ae853SAndroid Build Coastguard Worker }; 479*495ae853SAndroid Build Coastguard Worker 480*495ae853SAndroid Build Coastguard Worker /** This table is used to assign CBPs to Inter MBs. */ 481*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_cbp_inter[] = 482*495ae853SAndroid Build Coastguard Worker { 0, 16, 1, 2, 4, 8, 32, 3, 5, 10, 12, 15, 47, 7, 11, 13, 14, 6, 9, 31, 35, 483*495ae853SAndroid Build Coastguard Worker 37, 42, 44, 33, 34, 36, 40, 39, 43, 45, 46, 17, 18, 20, 24, 19, 21, 26, 484*495ae853SAndroid Build Coastguard Worker 28, 23, 27, 29, 30, 22, 25, 38, 41 }; 485*495ae853SAndroid Build Coastguard Worker 486*495ae853SAndroid Build Coastguard Worker /** Motion comp modes for P followed by B, 487*495ae853SAndroid Build Coastguard Worker 0 to 4 : P Mbs 488*495ae853SAndroid Build Coastguard Worker 5 to 27 : B Mbs 489*495ae853SAndroid Build Coastguard Worker 28 to 30 : DIRECT */ 490*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_mb_mc_mode[] = 491*495ae853SAndroid Build Coastguard Worker { 492*495ae853SAndroid Build Coastguard Worker PRED_16x16, 493*495ae853SAndroid Build Coastguard Worker PRED_16x8, PRED_8x16, PRED_8x8, PRED_8x8R0, 494*495ae853SAndroid Build Coastguard Worker PRED_16x16, 495*495ae853SAndroid Build Coastguard Worker PRED_16x16, PRED_16x16, PRED_16x16, PRED_16x8, PRED_8x16, 496*495ae853SAndroid Build Coastguard Worker PRED_16x8, 497*495ae853SAndroid Build Coastguard Worker PRED_8x16, PRED_16x8, PRED_8x16, PRED_16x8, PRED_8x16, 498*495ae853SAndroid Build Coastguard Worker PRED_16x8, 499*495ae853SAndroid Build Coastguard Worker PRED_8x16, PRED_16x8, PRED_8x16, PRED_16x8, PRED_8x16, 500*495ae853SAndroid Build Coastguard Worker PRED_16x8, 501*495ae853SAndroid Build Coastguard Worker PRED_8x16, PRED_16x8, PRED_8x16, PRED_8x8, 502*495ae853SAndroid Build Coastguard Worker /* Self defined modes for B_SKIP and DIRECT16x16 */ 503*495ae853SAndroid Build Coastguard Worker PRED_8x8, 504*495ae853SAndroid Build Coastguard Worker PRED_8x8, PRED_8x8 }; 505*495ae853SAndroid Build Coastguard Worker 506*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_submb_mc_mode[] = 507*495ae853SAndroid Build Coastguard Worker { SUBMB_8x8, SUBMB_8x4, SUBMB_4x8, SUBMB_4x4, 508*495ae853SAndroid Build Coastguard Worker SUBMB_8x8, 509*495ae853SAndroid Build Coastguard Worker SUBMB_8x8, SUBMB_8x8, SUBMB_8x8, SUBMB_8x4, SUBMB_4x8, 510*495ae853SAndroid Build Coastguard Worker SUBMB_8x4, 511*495ae853SAndroid Build Coastguard Worker SUBMB_4x8, SUBMB_8x4, SUBMB_4x8, SUBMB_4x4, SUBMB_4x4, SUBMB_4x4, 512*495ae853SAndroid Build Coastguard Worker /* Self defined modes B DIRECT8x8 */ 513*495ae853SAndroid Build Coastguard Worker SUBMB_4x4, 514*495ae853SAndroid Build Coastguard Worker SUBMB_4x4, SUBMB_4x4 }; 515*495ae853SAndroid Build Coastguard Worker 516*495ae853SAndroid Build Coastguard Worker /** Sub MB pred modes for B slice */ 517*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_submb_pred_modes[] = 518*495ae853SAndroid Build Coastguard Worker { 519*495ae853SAndroid Build Coastguard Worker PRED_L0, 520*495ae853SAndroid Build Coastguard Worker PRED_L0, PRED_L0, PRED_L0, 521*495ae853SAndroid Build Coastguard Worker B_DIRECT, 522*495ae853SAndroid Build Coastguard Worker PRED_L0, PRED_L1, BI_PRED, PRED_L0, PRED_L0, PRED_L1, 523*495ae853SAndroid Build Coastguard Worker PRED_L1, 524*495ae853SAndroid Build Coastguard Worker BI_PRED, BI_PRED, PRED_L0, PRED_L1, BI_PRED, 525*495ae853SAndroid Build Coastguard Worker /* Self defined modes for B DIRECT8x8 */ 526*495ae853SAndroid Build Coastguard Worker BI_PRED, 527*495ae853SAndroid Build Coastguard Worker PRED_L0, PRED_L1, }; 528*495ae853SAndroid Build Coastguard Worker 529*495ae853SAndroid Build Coastguard Worker /** MB pred modes for P and B slice */ 530*495ae853SAndroid Build Coastguard Worker const WORD8 gau1_ih264d_mb_pred_modes[2][32] = 531*495ae853SAndroid Build Coastguard Worker { 532*495ae853SAndroid Build Coastguard Worker { PRED_L0, PRED_L0, PRED_L0, PRED_INVALID, PRED_INVALID, 533*495ae853SAndroid Build Coastguard Worker B_DIRECT, 534*495ae853SAndroid Build Coastguard Worker PRED_L0, PRED_L1, BI_PRED, PRED_L0, PRED_L0, PRED_L1, PRED_L1, 535*495ae853SAndroid Build Coastguard Worker PRED_L0, 536*495ae853SAndroid Build Coastguard Worker PRED_L0, PRED_L1, PRED_L1, PRED_L0, PRED_L0, PRED_L1, PRED_L1, 537*495ae853SAndroid Build Coastguard Worker BI_PRED, 538*495ae853SAndroid Build Coastguard Worker BI_PRED, BI_PRED, BI_PRED, BI_PRED, BI_PRED, PRED_INVALID, 539*495ae853SAndroid Build Coastguard Worker /* Self defined modes for B_SKIP and DIRECT16x16 */ 540*495ae853SAndroid Build Coastguard Worker BI_PRED, 541*495ae853SAndroid Build Coastguard Worker PRED_L0, PRED_L1, }, 542*495ae853SAndroid Build Coastguard Worker { PRED_INVALID, PRED_L0, PRED_L0, PRED_INVALID, PRED_INVALID, 543*495ae853SAndroid Build Coastguard Worker PRED_INVALID, 544*495ae853SAndroid Build Coastguard Worker PRED_INVALID, PRED_INVALID, PRED_INVALID, PRED_L0, PRED_L0, 545*495ae853SAndroid Build Coastguard Worker PRED_L1, 546*495ae853SAndroid Build Coastguard Worker PRED_L1, PRED_L1, PRED_L1, PRED_L0, PRED_L0, BI_PRED, BI_PRED, 547*495ae853SAndroid Build Coastguard Worker BI_PRED, 548*495ae853SAndroid Build Coastguard Worker BI_PRED, PRED_L0, PRED_L0, PRED_L1, PRED_L1, BI_PRED, BI_PRED, 549*495ae853SAndroid Build Coastguard Worker PRED_INVALID, 550*495ae853SAndroid Build Coastguard Worker /* Self defined modes for B_SKIP and DIRECT16x16 */ 551*495ae853SAndroid Build Coastguard Worker PRED_INVALID, 552*495ae853SAndroid Build Coastguard Worker PRED_INVALID, PRED_INVALID } }; 553*495ae853SAndroid Build Coastguard Worker 554*495ae853SAndroid Build Coastguard Worker /****************MOTION VECTOR DECODING TABLES ENDS *******************/ 555*495ae853SAndroid Build Coastguard Worker 556*495ae853SAndroid Build Coastguard Worker /****************CAVLC DECODING TABLES STARTS *******************/ 557*495ae853SAndroid Build Coastguard Worker 558*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 559*495ae853SAndroid Build Coastguard Worker /* 6 Bit table look for total zeros (totalcoeff = 2to10) as in Table 9.7 */ 560*495ae853SAndroid Build Coastguard Worker /* of H264 standard. In each table entry, lower 4 bits represent total zeros */ 561*495ae853SAndroid Build Coastguard Worker /* decoded while upper 4 bit represent the bits to be flushed from ps_bitstrm */ 562*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 563*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_table_total_zero_2to10[9][64] = 564*495ae853SAndroid Build Coastguard Worker { 565*495ae853SAndroid Build Coastguard Worker /* For total coeff = 2 */ 566*495ae853SAndroid Build Coastguard Worker { 0x6E, 0x6D, 0x6C, 0x6B, 0x5A, 0x5A, 0x59, 0x59, 0x48, 0x48, 0x48, 567*495ae853SAndroid Build Coastguard Worker 0x48, 0x47, 0x47, 0x47, 0x47, 0x46, 0x46, 0x46, 0x46, 0x45, 0x45, 568*495ae853SAndroid Build Coastguard Worker 0x45, 0x45, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x33, 569*495ae853SAndroid Build Coastguard Worker 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x32, 0x32, 0x32, 0x32, 570*495ae853SAndroid Build Coastguard Worker 0x32, 0x32, 0x32, 0x32, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 571*495ae853SAndroid Build Coastguard Worker 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, }, 572*495ae853SAndroid Build Coastguard Worker 573*495ae853SAndroid Build Coastguard Worker /* For total coeff = 3 */ 574*495ae853SAndroid Build Coastguard Worker { 0x6D, 0x6B, 0x5C, 0x5C, 0x5A, 0x5A, 0x59, 0x59, 0x48, 0x48, 0x48, 575*495ae853SAndroid Build Coastguard Worker 0x48, 0x45, 0x45, 0x45, 0x45, 0x44, 0x44, 0x44, 0x44, 0x40, 0x40, 576*495ae853SAndroid Build Coastguard Worker 0x40, 0x40, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x36, 577*495ae853SAndroid Build Coastguard Worker 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x33, 0x33, 0x33, 0x33, 578*495ae853SAndroid Build Coastguard Worker 0x33, 0x33, 0x33, 0x33, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 579*495ae853SAndroid Build Coastguard Worker 0x32, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, }, 580*495ae853SAndroid Build Coastguard Worker 581*495ae853SAndroid Build Coastguard Worker /* For total coeff = 4 */ 582*495ae853SAndroid Build Coastguard Worker { 0x5C, 0x5C, 0x5B, 0x5B, 0x5A, 0x5A, 0x50, 0x50, 0x49, 0x49, 0x49, 583*495ae853SAndroid Build Coastguard Worker 0x49, 0x47, 0x47, 0x47, 0x47, 0x43, 0x43, 0x43, 0x43, 0x42, 0x42, 584*495ae853SAndroid Build Coastguard Worker 0x42, 0x42, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x36, 585*495ae853SAndroid Build Coastguard Worker 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x35, 0x35, 0x35, 0x35, 586*495ae853SAndroid Build Coastguard Worker 0x35, 0x35, 0x35, 0x35, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 587*495ae853SAndroid Build Coastguard Worker 0x34, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, }, 588*495ae853SAndroid Build Coastguard Worker 589*495ae853SAndroid Build Coastguard Worker /* For total coeff = 5 */ 590*495ae853SAndroid Build Coastguard Worker { 0x5B, 0x5B, 0x59, 0x59, 0x4A, 0x4A, 0x4A, 0x4A, 0x48, 0x48, 0x48, 591*495ae853SAndroid Build Coastguard Worker 0x48, 0x42, 0x42, 0x42, 0x42, 0x41, 0x41, 0x41, 0x41, 0x40, 0x40, 592*495ae853SAndroid Build Coastguard Worker 0x40, 0x40, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 0x36, 593*495ae853SAndroid Build Coastguard Worker 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x35, 0x35, 0x35, 0x35, 594*495ae853SAndroid Build Coastguard Worker 0x35, 0x35, 0x35, 0x35, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 595*495ae853SAndroid Build Coastguard Worker 0x34, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, }, 596*495ae853SAndroid Build Coastguard Worker 597*495ae853SAndroid Build Coastguard Worker /* For total coeff = 6 */ 598*495ae853SAndroid Build Coastguard Worker { 0x6A, 0x60, 0x51, 0x51, 0x48, 0x48, 0x48, 0x48, 0x39, 0x39, 0x39, 599*495ae853SAndroid Build Coastguard Worker 0x39, 0x39, 0x39, 0x39, 0x39, 0x37, 0x37, 0x37, 0x37, 0x37, 0x37, 600*495ae853SAndroid Build Coastguard Worker 0x37, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 0x35, 601*495ae853SAndroid Build Coastguard Worker 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x35, 0x34, 0x34, 0x34, 0x34, 602*495ae853SAndroid Build Coastguard Worker 0x34, 0x34, 0x34, 0x34, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 603*495ae853SAndroid Build Coastguard Worker 0x33, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, 0x32, }, 604*495ae853SAndroid Build Coastguard Worker 605*495ae853SAndroid Build Coastguard Worker /* For total coeff = 7 */ 606*495ae853SAndroid Build Coastguard Worker { 0x69, 0x60, 0x51, 0x51, 0x47, 0x47, 0x47, 0x47, 0x38, 0x38, 0x38, 607*495ae853SAndroid Build Coastguard Worker 0x38, 0x38, 0x38, 0x38, 0x38, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 608*495ae853SAndroid Build Coastguard Worker 0x36, 0x36, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x34, 0x33, 609*495ae853SAndroid Build Coastguard Worker 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x32, 0x32, 0x32, 0x32, 610*495ae853SAndroid Build Coastguard Worker 0x32, 0x32, 0x32, 0x32, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 611*495ae853SAndroid Build Coastguard Worker 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, }, 612*495ae853SAndroid Build Coastguard Worker 613*495ae853SAndroid Build Coastguard Worker /* For total coeff = 8 */ 614*495ae853SAndroid Build Coastguard Worker { 0x68, 0x60, 0x52, 0x52, 0x41, 0x41, 0x41, 0x41, 0x37, 0x37, 0x37, 615*495ae853SAndroid Build Coastguard Worker 0x37, 0x37, 0x37, 0x37, 0x37, 0x36, 0x36, 0x36, 0x36, 0x36, 0x36, 616*495ae853SAndroid Build Coastguard Worker 0x36, 0x36, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0x25, 617*495ae853SAndroid Build Coastguard Worker 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 618*495ae853SAndroid Build Coastguard Worker 0x25, 0x25, 0x25, 0x25, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 619*495ae853SAndroid Build Coastguard Worker 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, }, 620*495ae853SAndroid Build Coastguard Worker 621*495ae853SAndroid Build Coastguard Worker /* For total coeff = 9 */ 622*495ae853SAndroid Build Coastguard Worker { 0x61, 0x60, 0x57, 0x57, 0x42, 0x42, 0x42, 0x42, 0x35, 0x35, 0x35, 623*495ae853SAndroid Build Coastguard Worker 0x35, 0x35, 0x35, 0x35, 0x35, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 624*495ae853SAndroid Build Coastguard Worker 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x24, 625*495ae853SAndroid Build Coastguard Worker 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 626*495ae853SAndroid Build Coastguard Worker 0x24, 0x24, 0x24, 0x24, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 627*495ae853SAndroid Build Coastguard Worker 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, }, 628*495ae853SAndroid Build Coastguard Worker 629*495ae853SAndroid Build Coastguard Worker /* For total coeff = 10 */ 630*495ae853SAndroid Build Coastguard Worker { 0x51, 0x51, 0x50, 0x50, 0x46, 0x46, 0x46, 0x46, 0x32, 0x32, 0x32, 631*495ae853SAndroid Build Coastguard Worker 0x32, 0x32, 0x32, 0x32, 0x32, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 632*495ae853SAndroid Build Coastguard Worker 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x25, 0x24, 633*495ae853SAndroid Build Coastguard Worker 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 0x24, 634*495ae853SAndroid Build Coastguard Worker 0x24, 0x24, 0x24, 0x24, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 635*495ae853SAndroid Build Coastguard Worker 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, 0x23, } 636*495ae853SAndroid Build Coastguard Worker 637*495ae853SAndroid Build Coastguard Worker }; 638*495ae853SAndroid Build Coastguard Worker 639*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 640*495ae853SAndroid Build Coastguard Worker /* 4 Bit table look for total zeros (totalcoeff = 11to15) as in Table 9.7 */ 641*495ae853SAndroid Build Coastguard Worker /* of H264 standard. In each table entry, lower 4 bits represent total zeros */ 642*495ae853SAndroid Build Coastguard Worker /* decoded while upper 4 bit represent the bits to be flushed from ps_bitstrm */ 643*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 644*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_table_total_zero_11to15[5][16] = 645*495ae853SAndroid Build Coastguard Worker { 646*495ae853SAndroid Build Coastguard Worker /* For total coeff = 11 */ 647*495ae853SAndroid Build Coastguard Worker { 0x40, 0x41, 0x32, 0x32, 0x33, 0x33, 0x35, 0x35, 0x14, 0x14, 0x14, 648*495ae853SAndroid Build Coastguard Worker 0x14, 0x14, 0x14, 0x14, 0x14, }, 649*495ae853SAndroid Build Coastguard Worker 650*495ae853SAndroid Build Coastguard Worker /* For total coeff = 12 */ 651*495ae853SAndroid Build Coastguard Worker { 0x40, 0x41, 0x34, 0x34, 0x22, 0x22, 0x22, 0x22, 0x13, 0x13, 0x13, 652*495ae853SAndroid Build Coastguard Worker 0x13, 0x13, 0x13, 0x13, 0x13, }, 653*495ae853SAndroid Build Coastguard Worker 654*495ae853SAndroid Build Coastguard Worker /* For total coeff = 13 */ 655*495ae853SAndroid Build Coastguard Worker { 0x30, 0x30, 0x31, 0x31, 0x23, 0x23, 0x23, 0x23, 0x12, 0x12, 0x12, 656*495ae853SAndroid Build Coastguard Worker 0x12, 0x12, 0x12, 0x12, 0x12, }, 657*495ae853SAndroid Build Coastguard Worker 658*495ae853SAndroid Build Coastguard Worker /* For total coeff = 14 */ 659*495ae853SAndroid Build Coastguard Worker { 0x20, 0x20, 0x20, 0x20, 0x21, 0x21, 0x21, 0x21, 0x12, 0x12, 0x12, 660*495ae853SAndroid Build Coastguard Worker 0x12, 0x12, 0x12, 0x12, 0x12, }, 661*495ae853SAndroid Build Coastguard Worker 662*495ae853SAndroid Build Coastguard Worker /* For total coeff = 15 */ 663*495ae853SAndroid Build Coastguard Worker { 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x11, 0x11, 0x11, 664*495ae853SAndroid Build Coastguard Worker 0x11, 0x11, 0x11, 0x11, 0x11, }, }; 665*495ae853SAndroid Build Coastguard Worker 666*495ae853SAndroid Build Coastguard Worker /** Tables used to read "Run Before", Below tables are packed to reduce lookups */ 667*495ae853SAndroid Build Coastguard Worker /** (Base addess of Gx << 2) + (Max code length for that Gx) */ 668*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_table_run_before[64] = 669*495ae853SAndroid Build Coastguard Worker { 0, 0, 0, 0, 0, 0, 0, 0, 5, 5, 5, 5, 1, 1, 1, 1, 10, 10, 6, 6, 1, 1, 1, 1, 670*495ae853SAndroid Build Coastguard Worker 14, 14, 10, 10, 6, 6, 2, 2, 19, 15, 10, 10, 6, 6, 2, 2, 23, 19, 15, 11, 6, 671*495ae853SAndroid Build Coastguard Worker 6, 2, 2, 7, 11, 19, 15, 27, 23, 2, 2, 27, 27, 23, 19, 15, 11, 7, 3 }; 672*495ae853SAndroid Build Coastguard Worker 673*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 674*495ae853SAndroid Build Coastguard Worker /* Lookup table for CAVLC 4x4 total_coeff,trailing_ones as pers Table 9-5 */ 675*495ae853SAndroid Build Coastguard Worker /* in the standard. Starting form lsb first 2 bits=flushbits, next 2bits= */ 676*495ae853SAndroid Build Coastguard Worker /* trailing ones, next 5 bits=total_coeff. Total bits used = 9 out of 16 */ 677*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 678*495ae853SAndroid Build Coastguard Worker const UWORD16 gau2_ih264d_code_gx[304] = 679*495ae853SAndroid Build Coastguard Worker { 680*495ae853SAndroid Build Coastguard Worker /* Lookup for 0 <= nC < 2 */ 681*495ae853SAndroid Build Coastguard Worker 0x0000, 682*495ae853SAndroid Build Coastguard Worker 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0014, 0x0014, 683*495ae853SAndroid Build Coastguard Worker 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0014, 0x0028, 0x0028, 0x0028, 684*495ae853SAndroid Build Coastguard Worker 0x0028, 0x0028, 0x0028, 0x0028, 0x0028, 0x0026, 0x0026, 0x0012, 0x0012, 685*495ae853SAndroid Build Coastguard Worker 0x003D, 0x003D, 0x003D, 0x003D, 0x005E, 0x005E, 0x003A, 0x003A, 0x004D, 686*495ae853SAndroid Build Coastguard Worker 0x004D, 0x004D, 0x004D, 0x006E, 0x006E, 0x004A, 0x004A, 0x0036, 0x0036, 687*495ae853SAndroid Build Coastguard Worker 0x0022, 0x0022, 0x007E, 0x007E, 0x005A, 0x005A, 0x0046, 0x0046, 0x0032, 688*495ae853SAndroid Build Coastguard Worker 0x0032, 0x008E, 0x008E, 0x006A, 0x006A, 0x0056, 0x0056, 0x0042, 0x0042, 689*495ae853SAndroid Build Coastguard Worker 0x009E, 0x009E, 0x007A, 0x007A, 0x0066, 0x0066, 0x0052, 0x0052, 0x0083, 690*495ae853SAndroid Build Coastguard Worker 0x009B, 0x0087, 0x0073, 0x00AF, 0x008B, 0x0077, 0x0063, 0x00CF, 0x00BB, 691*495ae853SAndroid Build Coastguard Worker 0x00A7, 0x00A3, 0x00BF, 0x00AB, 0x0097, 0x0093, 0x00EF, 0x00DB, 0x00C7, 692*495ae853SAndroid Build Coastguard Worker 0x00C3, 0x00DF, 0x00CB, 0x00B7, 0x00B3, 0x010F, 0x00FB, 0x00F7, 0x00E3, 693*495ae853SAndroid Build Coastguard Worker 0x00FF, 0x00EB, 0x00E7, 0x00D3, 0x0102, 0x0102, 0x010A, 0x010A, 0x0106, 694*495ae853SAndroid Build Coastguard Worker 0x0106, 0x00F2, 0x00F2, 0x00D4, 0x00D4, 0x00D4, 0x00D4, 0x00D4, 0x00D4, 695*495ae853SAndroid Build Coastguard Worker 0x00D4, 0x00D4, 696*495ae853SAndroid Build Coastguard Worker 697*495ae853SAndroid Build Coastguard Worker /* Lookup for 2 <= nC < 4 */ 698*495ae853SAndroid Build Coastguard Worker 0x0015, 699*495ae853SAndroid Build Coastguard Worker 0x0015, 0x0015, 0x0015, 0x0001, 0x0001, 0x0001, 0x0001, 0x004E, 0x004E, 700*495ae853SAndroid Build Coastguard Worker 0x003E, 0x003E, 0x0029, 0x0029, 0x0029, 0x0029, 0x006F, 0x003B, 0x0037, 701*495ae853SAndroid Build Coastguard Worker 0x0013, 0x005E, 0x005E, 0x0026, 0x0026, 0x007E, 0x007E, 0x004A, 0x004A, 702*495ae853SAndroid Build Coastguard Worker 0x0046, 0x0046, 0x0022, 0x0022, 0x008E, 0x008E, 0x005A, 0x005A, 0x0056, 703*495ae853SAndroid Build Coastguard Worker 0x0056, 0x0032, 0x0032, 0x0052, 0x0052, 0x006A, 0x006A, 0x0066, 0x0066, 704*495ae853SAndroid Build Coastguard Worker 0x0042, 0x0042, 0x009E, 0x009E, 0x007A, 0x007A, 0x0076, 0x0076, 0x0062, 705*495ae853SAndroid Build Coastguard Worker 0x0062, 0x00BF, 0x009B, 0x0097, 0x0083, 0x00AF, 0x008B, 0x0087, 0x0073, 706*495ae853SAndroid Build Coastguard Worker 0x00B3, 0x00BB, 0x00B7, 0x00A3, 0x00CF, 0x00AB, 0x00A7, 0x0093, 0x00EF, 707*495ae853SAndroid Build Coastguard Worker 0x00DB, 0x00D7, 0x00D3, 0x00DF, 0x00CB, 0x00C7, 0x00C3, 0x00F7, 0x00F3, 708*495ae853SAndroid Build Coastguard Worker 0x00FB, 0x00E7, 0x00EA, 0x00EA, 0x00E2, 0x00E2, 0x010E, 0x010E, 0x010A, 709*495ae853SAndroid Build Coastguard Worker 0x010A, 0x0106, 0x0106, 0x0102, 0x0102, 0x00FC, 0x00FC, 0x00FC, 0x00FC, 710*495ae853SAndroid Build Coastguard Worker 0x00FC, 0x00FC, 0x00FC, 0x00FC, 711*495ae853SAndroid Build Coastguard Worker 712*495ae853SAndroid Build Coastguard Worker /* Lookup for 4 <= nC < 8 */ 713*495ae853SAndroid Build Coastguard Worker 0x007F, 714*495ae853SAndroid Build Coastguard Worker 0x006F, 0x005F, 0x004F, 0x003F, 0x002B, 0x0017, 0x0003, 0x0057, 0x005B, 715*495ae853SAndroid Build Coastguard Worker 0x0047, 0x004B, 0x0037, 0x008F, 0x003B, 0x0027, 0x0033, 0x007B, 0x0077, 716*495ae853SAndroid Build Coastguard Worker 0x0023, 0x009F, 0x006B, 0x0067, 0x0013, 0x0073, 0x0063, 0x009B, 0x0053, 717*495ae853SAndroid Build Coastguard Worker 0x00AF, 0x008B, 0x0087, 0x0043, 0x00CF, 0x00BB, 0x00A7, 0x0093, 0x00BF, 718*495ae853SAndroid Build Coastguard Worker 0x00AB, 0x0097, 0x0083, 0x00C3, 0x00DB, 0x00C7, 0x00B3, 0x00DF, 0x00CB, 719*495ae853SAndroid Build Coastguard Worker 0x00B7, 0x00A3, 0x00F7, 0x00E3, 0x00EF, 0x00EB, 0x00E7, 0x00D3, 0x00D6, 720*495ae853SAndroid Build Coastguard Worker 0x00D6, 0x0106, 0x0106, 0x00F2, 0x00F2, 0x00FE, 0x00FE, 0x00FA, 0x00FA, 721*495ae853SAndroid Build Coastguard Worker 0x010D, 0x010D, 0x010D, 0x010D, 0x0109, 0x0109, 0x0109, 0x0109, 0x0100, 722*495ae853SAndroid Build Coastguard Worker 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100 }; 723*495ae853SAndroid Build Coastguard Worker 724*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 725*495ae853SAndroid Build Coastguard Worker /* Lookup table for CAVLC ChromaDC total_coeff,trailing_ones parsing as per */ 726*495ae853SAndroid Build Coastguard Worker /* Table 9-5 in the standard. Starting from msb, First 4bits=total_coeff, */ 727*495ae853SAndroid Build Coastguard Worker /* next 2bits=trailing_ones and last 2bits=flushbits-1 */ 728*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 729*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_cav_chromdc_vld[256] = 730*495ae853SAndroid Build Coastguard Worker { 0x9E, 0x9E, 0x97, 0x8F, 0x76, 0x76, 0x6E, 0x6E, 0x85, 0x85, 0x85, 0x85, 731*495ae853SAndroid Build Coastguard Worker 0x65, 0x65, 0x65, 0x65, 0x45, 0x45, 0x45, 0x45, 0x7D, 0x7D, 0x7D, 0x7D, 732*495ae853SAndroid Build Coastguard Worker 0x4D, 0x4D, 0x4D, 0x4D, 0x25, 0x25, 0x25, 0x25, 733*495ae853SAndroid Build Coastguard Worker 734*495ae853SAndroid Build Coastguard Worker 0x52, 735*495ae853SAndroid Build Coastguard Worker 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 736*495ae853SAndroid Build Coastguard Worker 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 737*495ae853SAndroid Build Coastguard Worker 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 0x52, 738*495ae853SAndroid Build Coastguard Worker 739*495ae853SAndroid Build Coastguard Worker 0x01, 740*495ae853SAndroid Build Coastguard Worker 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 741*495ae853SAndroid Build Coastguard Worker 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 742*495ae853SAndroid Build Coastguard Worker 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 743*495ae853SAndroid Build Coastguard Worker 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 744*495ae853SAndroid Build Coastguard Worker 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 745*495ae853SAndroid Build Coastguard Worker 0x01, 0x01, 0x01, 746*495ae853SAndroid Build Coastguard Worker 747*495ae853SAndroid Build Coastguard Worker 0x28, 748*495ae853SAndroid Build Coastguard Worker 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 749*495ae853SAndroid Build Coastguard Worker 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 750*495ae853SAndroid Build Coastguard Worker 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 751*495ae853SAndroid Build Coastguard Worker 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 752*495ae853SAndroid Build Coastguard Worker 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 753*495ae853SAndroid Build Coastguard Worker 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 754*495ae853SAndroid Build Coastguard Worker 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 755*495ae853SAndroid Build Coastguard Worker 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 756*495ae853SAndroid Build Coastguard Worker 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 757*495ae853SAndroid Build Coastguard Worker 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 758*495ae853SAndroid Build Coastguard Worker 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, }; 759*495ae853SAndroid Build Coastguard Worker 760*495ae853SAndroid Build Coastguard Worker const UWORD16 gau2_ih264d_offset_num_vlc_tab[9] = 761*495ae853SAndroid Build Coastguard Worker { 0, 0, 120, 120, 224, 224, 224, 224, 224 }; 762*495ae853SAndroid Build Coastguard Worker 763*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 764*495ae853SAndroid Build Coastguard Worker /* Function pointer u4_ofst table lookup for parsing 4x4 residual blocks in */ 765*495ae853SAndroid Build Coastguard Worker /* CAVLC. The u4_ofst is dependent on total coeffs coded */ 766*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 767*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_total_coeff_fn_ptr_offset[16] = 768*495ae853SAndroid Build Coastguard Worker { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2 }; 769*495ae853SAndroid Build Coastguard Worker 770*495ae853SAndroid Build Coastguard Worker /****************************************************************************/ 771*495ae853SAndroid Build Coastguard Worker /* gai2_ih264d_trailing_one_level lookup tables based on trailing one bits */ 772*495ae853SAndroid Build Coastguard Worker /* All zeroes are u2_dummy in the table are u2_dummy to keep 3 uniform elements */ 773*495ae853SAndroid Build Coastguard Worker /****************************************************************************/ 774*495ae853SAndroid Build Coastguard Worker const WORD16 gai2_ih264d_trailing_one_level[14][3] = 775*495ae853SAndroid Build Coastguard Worker { 776*495ae853SAndroid Build Coastguard Worker /* All zeroes are u2_dummy */ 777*495ae853SAndroid Build Coastguard Worker /**********************************************************************/ 778*495ae853SAndroid Build Coastguard Worker /* Levels for trailing ones = 1, bits read can be 0 or 1 */ 779*495ae853SAndroid Build Coastguard Worker /**********************************************************************/ 780*495ae853SAndroid Build Coastguard Worker { 1, 0, 0 }, /* 0 */ 781*495ae853SAndroid Build Coastguard Worker { -1, 0, 0 }, /* 1 */ 782*495ae853SAndroid Build Coastguard Worker 783*495ae853SAndroid Build Coastguard Worker /**********************************************************************/ 784*495ae853SAndroid Build Coastguard Worker /* Levels for trailing ones = 2, bits read can be 00, 01, 10 ,11 */ 785*495ae853SAndroid Build Coastguard Worker /**********************************************************************/ 786*495ae853SAndroid Build Coastguard Worker { 1, 1, 0 }, /* 00 */ 787*495ae853SAndroid Build Coastguard Worker { 1, -1, 0 }, /* 01 */ 788*495ae853SAndroid Build Coastguard Worker { -1, 1, 0 }, /* 10 */ 789*495ae853SAndroid Build Coastguard Worker { -1, -1, 0 }, /* 11 */ 790*495ae853SAndroid Build Coastguard Worker 791*495ae853SAndroid Build Coastguard Worker /**********************************************************************/ 792*495ae853SAndroid Build Coastguard Worker /* Levels for trailing ones = 3, bits read can be 000 - 111 */ 793*495ae853SAndroid Build Coastguard Worker /**********************************************************************/ 794*495ae853SAndroid Build Coastguard Worker { 1, 1, 1 }, /* 000 */ 795*495ae853SAndroid Build Coastguard Worker { 1, 1, -1 }, /* 001 */ 796*495ae853SAndroid Build Coastguard Worker { 1, -1, 1 }, /* 010 */ 797*495ae853SAndroid Build Coastguard Worker { 1, -1, -1 }, /* 011 */ 798*495ae853SAndroid Build Coastguard Worker { -1, 1, 1 }, /* 100 */ 799*495ae853SAndroid Build Coastguard Worker { -1, 1, -1 }, /* 101 */ 800*495ae853SAndroid Build Coastguard Worker { -1, -1, 1 }, /* 110 */ 801*495ae853SAndroid Build Coastguard Worker { -1, -1, -1 }, /* 111 */ 802*495ae853SAndroid Build Coastguard Worker }; 803*495ae853SAndroid Build Coastguard Worker /****************CAVLC DECODING TABLES ENDS *******************/ 804*495ae853SAndroid Build Coastguard Worker 805*495ae853SAndroid Build Coastguard Worker /****************************************************************************/ 806*495ae853SAndroid Build Coastguard Worker /* These are the codes used for error detection in intra pred4x4 modes */ 807*495ae853SAndroid Build Coastguard Worker /****************************************************************************/ 808*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_intra_pred_err_code[9] = 809*495ae853SAndroid Build Coastguard Worker { 2, 1, 0, 2, 3, 3, 3, 2, 1 }; 810*495ae853SAndroid Build Coastguard Worker 811*495ae853SAndroid Build Coastguard Worker /* Number of users for top field , bottom field, which field needs to be */ 812*495ae853SAndroid Build Coastguard Worker /* displayed first */ 813*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_sei_fld_usage[9][3] = 814*495ae853SAndroid Build Coastguard Worker { 815*495ae853SAndroid Build Coastguard Worker { 1, 1, DISP_FLD_FIRST_UNDEF }, 816*495ae853SAndroid Build Coastguard Worker { 1, 0, DISP_TOP_FLD_FIRST }, 817*495ae853SAndroid Build Coastguard Worker { 0, 1, DISP_BOT_FLD_FIRST }, 818*495ae853SAndroid Build Coastguard Worker { 1, 1, DISP_TOP_FLD_FIRST }, 819*495ae853SAndroid Build Coastguard Worker { 1, 1, DISP_BOT_FLD_FIRST }, 820*495ae853SAndroid Build Coastguard Worker { 2, 1, DISP_TOP_FLD_FIRST }, 821*495ae853SAndroid Build Coastguard Worker { 1, 2, DISP_BOT_FLD_FIRST }, 822*495ae853SAndroid Build Coastguard Worker { 2, 2, DISP_FLD_FIRST_UNDEF }, 823*495ae853SAndroid Build Coastguard Worker { 3, 3, DISP_FLD_FIRST_UNDEF } }; 824*495ae853SAndroid Build Coastguard Worker 825*495ae853SAndroid Build Coastguard Worker /*****************************************************************/ 826*495ae853SAndroid Build Coastguard Worker /* Context increment for significant coefficient(CABAC) */ 827*495ae853SAndroid Build Coastguard Worker /* Requires only 63 elements. But the last element with value -1 */ 828*495ae853SAndroid Build Coastguard Worker /* is kept to make it 64 */ 829*495ae853SAndroid Build Coastguard Worker /*****************************************************************/ 830*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_sigcoeff_context_inc_frame[64] = 831*495ae853SAndroid Build Coastguard Worker { 0, 1, 2, 3, 4, 5, 5, 4, 4, 3, 3, 4, 4, 4, 5, 5, 4, 4, 4, 4, 3, 3, 6, 7, 7, 832*495ae853SAndroid Build Coastguard Worker 7, 8, 9, 10, 9, 8, 7, 7, 6, 11, 12, 13, 11, 6, 7, 8, 9, 14, 10, 9, 8, 6, 833*495ae853SAndroid Build Coastguard Worker 11, 12, 13, 11, 6, 9, 14, 10, 9, 11, 12, 13, 11, 14, 10, 12, -1 }; 834*495ae853SAndroid Build Coastguard Worker 835*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_sigcoeff_context_inc_field[64] = 836*495ae853SAndroid Build Coastguard Worker { 0, 1, 1, 2, 2, 3, 3, 4, 5, 6, 7, 7, 7, 8, 4, 5, 6, 9, 10, 10, 8, 11, 12, 837*495ae853SAndroid Build Coastguard Worker 11, 9, 9, 10, 10, 8, 11, 12, 11, 9, 9, 10, 10, 8, 11, 12, 11, 9, 9, 10, 838*495ae853SAndroid Build Coastguard Worker 10, 8, 13, 13, 9, 9, 10, 10, 8, 13, 13, 9, 9, 10, 10, 14, 14, 14, 14, 14, 839*495ae853SAndroid Build Coastguard Worker -1 }; 840*495ae853SAndroid Build Coastguard Worker 841*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_lastcoeff_context_inc[64] = 842*495ae853SAndroid Build Coastguard Worker { 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 843*495ae853SAndroid Build Coastguard Worker 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 844*495ae853SAndroid Build Coastguard Worker 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, -1 }; 845*495ae853SAndroid Build Coastguard Worker 846*495ae853SAndroid Build Coastguard Worker /*! 847*495ae853SAndroid Build Coastguard Worker ************************************************************************** 848*495ae853SAndroid Build Coastguard Worker * \brief gau1_ih264d_top_left_mb_part_indx_mod 849*495ae853SAndroid Build Coastguard Worker * 850*495ae853SAndroid Build Coastguard Worker * SubBlk number of the top left subBlk in each of the MB partition 851*495ae853SAndroid Build Coastguard Worker * (16x16, 16x8, 8x16, 8x8) 852*495ae853SAndroid Build Coastguard Worker ************************************************************************** 853*495ae853SAndroid Build Coastguard Worker */ 854*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_top_left_mb_part_indx_mod[] = 855*495ae853SAndroid Build Coastguard Worker { 0, 0 /* Junk */, /* 16x16 */ 856*495ae853SAndroid Build Coastguard Worker 0, 8, /* 16x8 */ 857*495ae853SAndroid Build Coastguard Worker 0, 2, /* 8x16 */ 858*495ae853SAndroid Build Coastguard Worker 0, 2, 8, 10 /* 8x8 */, 859*495ae853SAndroid Build Coastguard Worker 0 /* One extra entry is read at the end of loop, but not used */ 860*495ae853SAndroid Build Coastguard Worker }; 861*495ae853SAndroid Build Coastguard Worker 862*495ae853SAndroid Build Coastguard Worker /*! 863*495ae853SAndroid Build Coastguard Worker ************************************************************************** 864*495ae853SAndroid Build Coastguard Worker * \brief gau1_ih264d_submb_indx_mod_sp_drct 865*495ae853SAndroid Build Coastguard Worker * 866*495ae853SAndroid Build Coastguard Worker * Contains increments to the subBlk num in a given subMb partition. 867*495ae853SAndroid Build Coastguard Worker ************************************************************************** 868*495ae853SAndroid Build Coastguard Worker */ 869*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264d_submb_indx_mod_sp_drct[] = 870*495ae853SAndroid Build Coastguard Worker { 0, 0 /* Junk */, /* 8x8 */ 871*495ae853SAndroid Build Coastguard Worker 0, 4, /* 8x4 */ 872*495ae853SAndroid Build Coastguard Worker 0, 1, /* 4x8 */ 873*495ae853SAndroid Build Coastguard Worker 0, 1, 3, 1 /* 4x4 */ 874*495ae853SAndroid Build Coastguard Worker }; 875