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 24*495ae853SAndroid Build Coastguard Worker * ih264_common_tables.c 25*495ae853SAndroid Build Coastguard Worker * 26*495ae853SAndroid Build Coastguard Worker * @brief 27*495ae853SAndroid Build Coastguard Worker * Contains common global tables 28*495ae853SAndroid Build Coastguard Worker * 29*495ae853SAndroid Build Coastguard Worker * @author 30*495ae853SAndroid Build Coastguard Worker * ittiam 31*495ae853SAndroid Build Coastguard Worker * 32*495ae853SAndroid Build Coastguard Worker * @remarks 33*495ae853SAndroid Build Coastguard Worker * none 34*495ae853SAndroid Build Coastguard Worker * 35*495ae853SAndroid Build Coastguard Worker ******************************************************************************* 36*495ae853SAndroid Build Coastguard Worker */ 37*495ae853SAndroid Build Coastguard Worker 38*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 39*495ae853SAndroid Build Coastguard Worker /* File Includes */ 40*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 41*495ae853SAndroid Build Coastguard Worker 42*495ae853SAndroid Build Coastguard Worker /* User Include Files */ 43*495ae853SAndroid Build Coastguard Worker #include "ih264_typedefs.h" 44*495ae853SAndroid Build Coastguard Worker #include "ih264_macros.h" 45*495ae853SAndroid Build Coastguard Worker #include "ih264_defs.h" 46*495ae853SAndroid Build Coastguard Worker #include "ih264_structs.h" 47*495ae853SAndroid Build Coastguard Worker #include "ih264_common_tables.h" 48*495ae853SAndroid Build Coastguard Worker 49*495ae853SAndroid Build Coastguard Worker 50*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 51*495ae853SAndroid Build Coastguard Worker /* Global definitions */ 52*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 53*495ae853SAndroid Build Coastguard Worker 54*495ae853SAndroid Build Coastguard Worker /** 55*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 56*495ae853SAndroid Build Coastguard Worker * @brief while encoding, basing on the input configuration parameters, the 57*495ae853SAndroid Build Coastguard Worker * the level of the bitstream is computed basing on the table below. 58*495ae853SAndroid Build Coastguard Worker * input : table_idx 59*495ae853SAndroid Build Coastguard Worker * output : level_idc or cpb size 60*495ae853SAndroid Build Coastguard Worker * @remarks Table A-1 - level table limits 61*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 62*495ae853SAndroid Build Coastguard Worker */ 63*495ae853SAndroid Build Coastguard Worker const level_tables_t gas_ih264_lvl_tbl[16] = 64*495ae853SAndroid Build Coastguard Worker { 65*495ae853SAndroid Build Coastguard Worker { IH264_LEVEL_10, 1485, 99, 297, 64, 175, 64 }, 66*495ae853SAndroid Build Coastguard Worker { IH264_LEVEL_1B, 1485, 99, 297, 128, 350, 64 }, 67*495ae853SAndroid Build Coastguard Worker { IH264_LEVEL_11, 3000, 396, 675, 192, 500, 128 }, 68*495ae853SAndroid Build Coastguard Worker { IH264_LEVEL_12, 6000, 396, 1782, 384, 1000, 128 }, 69*495ae853SAndroid Build Coastguard Worker { IH264_LEVEL_13, 11880, 396, 1782, 768, 2000, 128 }, 70*495ae853SAndroid Build Coastguard Worker { IH264_LEVEL_20, 11880, 396, 1782, 2000, 2000, 128 }, 71*495ae853SAndroid Build Coastguard Worker { IH264_LEVEL_21, 19800, 792, 3564, 4000, 4000, 256 }, 72*495ae853SAndroid Build Coastguard Worker { IH264_LEVEL_22, 20250, 1620, 6075, 4000, 4000, 256 }, 73*495ae853SAndroid Build Coastguard Worker { IH264_LEVEL_30, 40500, 1620, 6075, 10000, 10000, 256 }, 74*495ae853SAndroid Build Coastguard Worker { IH264_LEVEL_31, 108000, 3600, 13500, 14000, 14000, 512 }, 75*495ae853SAndroid Build Coastguard Worker { IH264_LEVEL_32, 216000, 5120, 15360, 20000, 20000, 512 }, 76*495ae853SAndroid Build Coastguard Worker { IH264_LEVEL_40, 245760, 8192, 24576, 20000, 25000, 512 }, 77*495ae853SAndroid Build Coastguard Worker { IH264_LEVEL_41, 245760, 8192, 24576, 50000, 62500, 512 }, 78*495ae853SAndroid Build Coastguard Worker { IH264_LEVEL_42, 522240, 8704, 26112, 50000, 62500, 512 }, 79*495ae853SAndroid Build Coastguard Worker { IH264_LEVEL_50, 589824, 22080, 82800, 135000, 135000, 512 }, 80*495ae853SAndroid Build Coastguard Worker { IH264_LEVEL_51, 983040, 36864, 138240, 240000, 240000, 512 }, 81*495ae853SAndroid Build Coastguard Worker }; 82*495ae853SAndroid Build Coastguard Worker 83*495ae853SAndroid Build Coastguard Worker /* Array containing supported levels */ 84*495ae853SAndroid Build Coastguard Worker const WORD32 gai4_ih264_levels[] = 85*495ae853SAndroid Build Coastguard Worker { 86*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_10, 87*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_11, 88*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_12, 89*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_13, 90*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_20, 91*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_21, 92*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_22, 93*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_30, 94*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_31, 95*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_32, 96*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_40, 97*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_41, 98*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_42, 99*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_50, 100*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_51, 101*495ae853SAndroid Build Coastguard Worker }; 102*495ae853SAndroid Build Coastguard Worker 103*495ae853SAndroid Build Coastguard Worker /* Array giving size of max luma samples in a picture for a given level */ 104*495ae853SAndroid Build Coastguard Worker const WORD32 gai4_ih264_max_luma_pic_size[] = 105*495ae853SAndroid Build Coastguard Worker { 106*495ae853SAndroid Build Coastguard Worker /* Level 1 */ 107*495ae853SAndroid Build Coastguard Worker 25344, 108*495ae853SAndroid Build Coastguard Worker /* Level 1.1 */ 109*495ae853SAndroid Build Coastguard Worker 101376, 110*495ae853SAndroid Build Coastguard Worker /* Level 1.2 */ 111*495ae853SAndroid Build Coastguard Worker 101376, 112*495ae853SAndroid Build Coastguard Worker /* Level 1.3 */ 113*495ae853SAndroid Build Coastguard Worker 101376, 114*495ae853SAndroid Build Coastguard Worker /* Level 2 */ 115*495ae853SAndroid Build Coastguard Worker 101376, 116*495ae853SAndroid Build Coastguard Worker /* Level 2.1 */ 117*495ae853SAndroid Build Coastguard Worker 202752, 118*495ae853SAndroid Build Coastguard Worker /* Level 2.2 */ 119*495ae853SAndroid Build Coastguard Worker 414720, 120*495ae853SAndroid Build Coastguard Worker /* Level 3 */ 121*495ae853SAndroid Build Coastguard Worker 414720, 122*495ae853SAndroid Build Coastguard Worker /* Level 3.1 */ 123*495ae853SAndroid Build Coastguard Worker 921600, 124*495ae853SAndroid Build Coastguard Worker /* Level 3.2 */ 125*495ae853SAndroid Build Coastguard Worker 1310720, 126*495ae853SAndroid Build Coastguard Worker /* Level 4 */ 127*495ae853SAndroid Build Coastguard Worker 2097152, 128*495ae853SAndroid Build Coastguard Worker /* Level 4.1 */ 129*495ae853SAndroid Build Coastguard Worker 2097152, 130*495ae853SAndroid Build Coastguard Worker /* Level 4.2 */ 131*495ae853SAndroid Build Coastguard Worker 2228224, 132*495ae853SAndroid Build Coastguard Worker /* Level 5 */ 133*495ae853SAndroid Build Coastguard Worker 5652480, 134*495ae853SAndroid Build Coastguard Worker /* Level 5.1 */ 135*495ae853SAndroid Build Coastguard Worker 9437184 136*495ae853SAndroid Build Coastguard Worker }; 137*495ae853SAndroid Build Coastguard Worker 138*495ae853SAndroid Build Coastguard Worker /* Max width and height allowed for a given level */ 139*495ae853SAndroid Build Coastguard Worker /* This is derived as SQRT(8 * gai4_ih264_max_luma_pic_size[]) */ 140*495ae853SAndroid Build Coastguard Worker const WORD32 gai4_ih264_max_wd_ht[] = 141*495ae853SAndroid Build Coastguard Worker { 142*495ae853SAndroid Build Coastguard Worker /* Level 1 */ 143*495ae853SAndroid Build Coastguard Worker 451, 144*495ae853SAndroid Build Coastguard Worker /* Level 1.1 */ 145*495ae853SAndroid Build Coastguard Worker 901, 146*495ae853SAndroid Build Coastguard Worker /* Level 1.2 */ 147*495ae853SAndroid Build Coastguard Worker 901, 148*495ae853SAndroid Build Coastguard Worker /* Level 1.3 */ 149*495ae853SAndroid Build Coastguard Worker 901, 150*495ae853SAndroid Build Coastguard Worker /* Level 2 */ 151*495ae853SAndroid Build Coastguard Worker 901, 152*495ae853SAndroid Build Coastguard Worker /* Level 2.1 */ 153*495ae853SAndroid Build Coastguard Worker 1274, 154*495ae853SAndroid Build Coastguard Worker /* Level 2.2 */ 155*495ae853SAndroid Build Coastguard Worker 1822, 156*495ae853SAndroid Build Coastguard Worker /* Level 3 */ 157*495ae853SAndroid Build Coastguard Worker 1822, 158*495ae853SAndroid Build Coastguard Worker /* Level 3.1 */ 159*495ae853SAndroid Build Coastguard Worker 2716, 160*495ae853SAndroid Build Coastguard Worker /* Level 3.2 */ 161*495ae853SAndroid Build Coastguard Worker 3239, 162*495ae853SAndroid Build Coastguard Worker /* Level 4 */ 163*495ae853SAndroid Build Coastguard Worker 4096, 164*495ae853SAndroid Build Coastguard Worker /* Level 4.1 */ 165*495ae853SAndroid Build Coastguard Worker 4096, 166*495ae853SAndroid Build Coastguard Worker /* Level 4.2 */ 167*495ae853SAndroid Build Coastguard Worker 4223, 168*495ae853SAndroid Build Coastguard Worker /* Level 5 */ 169*495ae853SAndroid Build Coastguard Worker 6725, 170*495ae853SAndroid Build Coastguard Worker /* Level 5.1 */ 171*495ae853SAndroid Build Coastguard Worker 8689 172*495ae853SAndroid Build Coastguard Worker }; 173*495ae853SAndroid Build Coastguard Worker 174*495ae853SAndroid Build Coastguard Worker /* Min width and height allowed for a given level */ 175*495ae853SAndroid Build Coastguard Worker /* This is derived as gai4_ih264_max_luma_pic_size[]/gai4_ih264_max_wd_ht[] */ 176*495ae853SAndroid Build Coastguard Worker const WORD32 gai4_ih264_min_wd_ht[] = 177*495ae853SAndroid Build Coastguard Worker { 178*495ae853SAndroid Build Coastguard Worker /* Level 1 */ 179*495ae853SAndroid Build Coastguard Worker 57, 180*495ae853SAndroid Build Coastguard Worker /* Level 1.1 */ 181*495ae853SAndroid Build Coastguard Worker 113, 182*495ae853SAndroid Build Coastguard Worker /* Level 1.2 */ 183*495ae853SAndroid Build Coastguard Worker 113, 184*495ae853SAndroid Build Coastguard Worker /* Level 1.3 */ 185*495ae853SAndroid Build Coastguard Worker 113, 186*495ae853SAndroid Build Coastguard Worker /* Level 2 */ 187*495ae853SAndroid Build Coastguard Worker 113, 188*495ae853SAndroid Build Coastguard Worker /* Level 2.1 */ 189*495ae853SAndroid Build Coastguard Worker 160, 190*495ae853SAndroid Build Coastguard Worker /* Level 2.2 */ 191*495ae853SAndroid Build Coastguard Worker 228, 192*495ae853SAndroid Build Coastguard Worker /* Level 3 */ 193*495ae853SAndroid Build Coastguard Worker 228, 194*495ae853SAndroid Build Coastguard Worker /* Level 3.1 */ 195*495ae853SAndroid Build Coastguard Worker 340, 196*495ae853SAndroid Build Coastguard Worker /* Level 3.2 */ 197*495ae853SAndroid Build Coastguard Worker 405, 198*495ae853SAndroid Build Coastguard Worker /* Level 4 */ 199*495ae853SAndroid Build Coastguard Worker 512, 200*495ae853SAndroid Build Coastguard Worker /* Level 4.1 */ 201*495ae853SAndroid Build Coastguard Worker 512, 202*495ae853SAndroid Build Coastguard Worker /* Level 4.2 */ 203*495ae853SAndroid Build Coastguard Worker 528, 204*495ae853SAndroid Build Coastguard Worker /* Level 5 */ 205*495ae853SAndroid Build Coastguard Worker 841, 206*495ae853SAndroid Build Coastguard Worker /* Level 5.1 */ 207*495ae853SAndroid Build Coastguard Worker 1087 208*495ae853SAndroid Build Coastguard Worker 209*495ae853SAndroid Build Coastguard Worker }; 210*495ae853SAndroid Build Coastguard Worker 211*495ae853SAndroid Build Coastguard Worker /* Table 7-11 Macroblock types for I slices */ 212*495ae853SAndroid Build Coastguard Worker intra_mbtype_info_t gas_ih264_i_mbtype_info[] = 213*495ae853SAndroid Build Coastguard Worker { 214*495ae853SAndroid Build Coastguard Worker /* For first entry, if transform_size_8x8_flag is 1, mode will be MBPART_I8x8 */ 215*495ae853SAndroid Build Coastguard Worker /* This has to be taken care while accessing the table */ 216*495ae853SAndroid Build Coastguard Worker {0, MBPART_I4x4, VERT_I16x16, 0, 0}, 217*495ae853SAndroid Build Coastguard Worker {0, MBPART_I16x16, VERT_I16x16, 0, 0}, 218*495ae853SAndroid Build Coastguard Worker {0, MBPART_I16x16, HORZ_I16x16, 0, 0}, 219*495ae853SAndroid Build Coastguard Worker {0, MBPART_I16x16, DC_I16x16, 0, 0}, 220*495ae853SAndroid Build Coastguard Worker {0, MBPART_I16x16, PLANE_I16x16, 0, 0}, 221*495ae853SAndroid Build Coastguard Worker {0, MBPART_I16x16, VERT_I16x16, 1, 0}, 222*495ae853SAndroid Build Coastguard Worker {0, MBPART_I16x16, HORZ_I16x16, 1, 0}, 223*495ae853SAndroid Build Coastguard Worker {0, MBPART_I16x16, DC_I16x16, 1, 0}, 224*495ae853SAndroid Build Coastguard Worker {0, MBPART_I16x16, PLANE_I16x16, 1, 0}, 225*495ae853SAndroid Build Coastguard Worker {0, MBPART_I16x16, VERT_I16x16, 2, 0}, 226*495ae853SAndroid Build Coastguard Worker {0, MBPART_I16x16, HORZ_I16x16, 2, 0}, 227*495ae853SAndroid Build Coastguard Worker {0, MBPART_I16x16, DC_I16x16, 2, 0}, 228*495ae853SAndroid Build Coastguard Worker {0, MBPART_I16x16, PLANE_I16x16, 2, 0}, 229*495ae853SAndroid Build Coastguard Worker {0, MBPART_I16x16, VERT_I16x16, 0, 15}, 230*495ae853SAndroid Build Coastguard Worker {0, MBPART_I16x16, HORZ_I16x16, 0, 15}, 231*495ae853SAndroid Build Coastguard Worker {0, MBPART_I16x16, DC_I16x16, 0, 15}, 232*495ae853SAndroid Build Coastguard Worker {0, MBPART_I16x16, PLANE_I16x16, 0, 15}, 233*495ae853SAndroid Build Coastguard Worker {0, MBPART_I16x16, VERT_I16x16, 1, 15}, 234*495ae853SAndroid Build Coastguard Worker {0, MBPART_I16x16, HORZ_I16x16, 1, 15}, 235*495ae853SAndroid Build Coastguard Worker {0, MBPART_I16x16, DC_I16x16, 1, 15}, 236*495ae853SAndroid Build Coastguard Worker {0, MBPART_I16x16, PLANE_I16x16, 1, 15}, 237*495ae853SAndroid Build Coastguard Worker {0, MBPART_I16x16, VERT_I16x16, 2, 15}, 238*495ae853SAndroid Build Coastguard Worker {0, MBPART_I16x16, HORZ_I16x16, 2, 15}, 239*495ae853SAndroid Build Coastguard Worker {0, MBPART_I16x16, DC_I16x16, 2, 15}, 240*495ae853SAndroid Build Coastguard Worker {0, MBPART_I16x16, PLANE_I16x16, 2, 15}, 241*495ae853SAndroid Build Coastguard Worker {0, MBPART_IPCM, VERT_I16x16, 0, 0} 242*495ae853SAndroid Build Coastguard Worker }; 243*495ae853SAndroid Build Coastguard Worker 244*495ae853SAndroid Build Coastguard Worker /* Table 7-13 Macroblock types for P slices */ 245*495ae853SAndroid Build Coastguard Worker inter_mbtype_info_t gas_ih264_p_mbtype_info[] = 246*495ae853SAndroid Build Coastguard Worker { 247*495ae853SAndroid Build Coastguard Worker {1, MBPART_L0, MBPART_NA, 16, 16}, 248*495ae853SAndroid Build Coastguard Worker {2, MBPART_L0, MBPART_L0, 16, 8}, 249*495ae853SAndroid Build Coastguard Worker {2, MBPART_L0, MBPART_L0, 8, 16}, 250*495ae853SAndroid Build Coastguard Worker {4, MBPART_NA, MBPART_NA, 8, 8}, 251*495ae853SAndroid Build Coastguard Worker {4, MBPART_NA, MBPART_NA, 8, 8}, 252*495ae853SAndroid Build Coastguard Worker }; 253*495ae853SAndroid Build Coastguard Worker 254*495ae853SAndroid Build Coastguard Worker /* Table 7-14 Macroblock types for B slices */ 255*495ae853SAndroid Build Coastguard Worker inter_mbtype_info_t gas_ih264_b_mbtype_info[] = 256*495ae853SAndroid Build Coastguard Worker { 257*495ae853SAndroid Build Coastguard Worker {0, MBPART_DIRECT, MBPART_NA, 8, 8, }, 258*495ae853SAndroid Build Coastguard Worker {1, MBPART_L0, MBPART_NA, 16, 16, }, 259*495ae853SAndroid Build Coastguard Worker {1, MBPART_L1, MBPART_NA, 16, 16, }, 260*495ae853SAndroid Build Coastguard Worker {1, MBPART_BI, MBPART_NA, 16, 16, }, 261*495ae853SAndroid Build Coastguard Worker {2, MBPART_L0, MBPART_L0, 16, 8, }, 262*495ae853SAndroid Build Coastguard Worker {2, MBPART_L0, MBPART_L0, 8, 16, }, 263*495ae853SAndroid Build Coastguard Worker {2, MBPART_L1, MBPART_L1, 16, 8, }, 264*495ae853SAndroid Build Coastguard Worker {2, MBPART_L1, MBPART_L1, 8, 16, }, 265*495ae853SAndroid Build Coastguard Worker {2, MBPART_L0, MBPART_L1, 16, 8, }, 266*495ae853SAndroid Build Coastguard Worker {2, MBPART_L0, MBPART_L1, 8, 16, }, 267*495ae853SAndroid Build Coastguard Worker {2, MBPART_L1, MBPART_L0, 16, 8, }, 268*495ae853SAndroid Build Coastguard Worker {2, MBPART_L1, MBPART_L0, 8, 16, }, 269*495ae853SAndroid Build Coastguard Worker {2, MBPART_L0, MBPART_BI, 16, 8, }, 270*495ae853SAndroid Build Coastguard Worker {2, MBPART_L0, MBPART_BI, 8, 16, }, 271*495ae853SAndroid Build Coastguard Worker {2, MBPART_L1, MBPART_BI, 16, 8, }, 272*495ae853SAndroid Build Coastguard Worker {2, MBPART_L1, MBPART_BI, 8, 16, }, 273*495ae853SAndroid Build Coastguard Worker {2, MBPART_BI, MBPART_L0, 16, 8, }, 274*495ae853SAndroid Build Coastguard Worker {2, MBPART_BI, MBPART_L0, 8, 16, }, 275*495ae853SAndroid Build Coastguard Worker {2, MBPART_BI, MBPART_L1, 16, 8, }, 276*495ae853SAndroid Build Coastguard Worker {2, MBPART_BI, MBPART_L1, 8, 16, }, 277*495ae853SAndroid Build Coastguard Worker {2, MBPART_BI, MBPART_BI, 16, 8, }, 278*495ae853SAndroid Build Coastguard Worker {2, MBPART_BI, MBPART_BI, 8, 16, }, 279*495ae853SAndroid Build Coastguard Worker {4, MBPART_NA, MBPART_NA, 8, 8, }, 280*495ae853SAndroid Build Coastguard Worker }; 281*495ae853SAndroid Build Coastguard Worker 282*495ae853SAndroid Build Coastguard Worker /* Table 7-17 - Sub-macroblock types in P macroblocks */ 283*495ae853SAndroid Build Coastguard Worker submbtype_info_t gas_ih264_p_submbtype_info[] = 284*495ae853SAndroid Build Coastguard Worker { 285*495ae853SAndroid Build Coastguard Worker {1, MBPART_L0, 8, 8}, 286*495ae853SAndroid Build Coastguard Worker {2, MBPART_L0, 8, 4}, 287*495ae853SAndroid Build Coastguard Worker {2, MBPART_L0, 4, 8}, 288*495ae853SAndroid Build Coastguard Worker {4, MBPART_L0, 4, 4}, 289*495ae853SAndroid Build Coastguard Worker }; 290*495ae853SAndroid Build Coastguard Worker 291*495ae853SAndroid Build Coastguard Worker /* Table 7-18 - Sub-macroblock types in B macroblocks */ 292*495ae853SAndroid Build Coastguard Worker submbtype_info_t gas_ih264_b_submbtype_info[] = 293*495ae853SAndroid Build Coastguard Worker { 294*495ae853SAndroid Build Coastguard Worker {4, MBPART_DIRECT, 4, 4}, 295*495ae853SAndroid Build Coastguard Worker {1, MBPART_L0, 8, 8}, 296*495ae853SAndroid Build Coastguard Worker {1, MBPART_L1, 8, 8}, 297*495ae853SAndroid Build Coastguard Worker {1, MBPART_BI, 8, 8}, 298*495ae853SAndroid Build Coastguard Worker {2, MBPART_L0, 8, 4}, 299*495ae853SAndroid Build Coastguard Worker {2, MBPART_L0, 4, 8}, 300*495ae853SAndroid Build Coastguard Worker {2, MBPART_L1, 8, 4}, 301*495ae853SAndroid Build Coastguard Worker {2, MBPART_L1, 4, 8}, 302*495ae853SAndroid Build Coastguard Worker {2, MBPART_BI, 8, 4}, 303*495ae853SAndroid Build Coastguard Worker {2, MBPART_BI, 4, 8}, 304*495ae853SAndroid Build Coastguard Worker {4, MBPART_L0, 4, 4}, 305*495ae853SAndroid Build Coastguard Worker {4, MBPART_L1, 4, 4}, 306*495ae853SAndroid Build Coastguard Worker {4, MBPART_BI, 4, 4}, 307*495ae853SAndroid Build Coastguard Worker }; 308*495ae853SAndroid Build Coastguard Worker 309*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264_inv_scan_prog4x4[] = 310*495ae853SAndroid Build Coastguard Worker { 311*495ae853SAndroid Build Coastguard Worker 0, 1, 4, 8, 312*495ae853SAndroid Build Coastguard Worker 5, 2, 3, 6, 313*495ae853SAndroid Build Coastguard Worker 9, 12, 13, 10, 314*495ae853SAndroid Build Coastguard Worker 7, 11, 14, 15 315*495ae853SAndroid Build Coastguard Worker }; 316*495ae853SAndroid Build Coastguard Worker 317*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264_inv_scan_int4x4[] = 318*495ae853SAndroid Build Coastguard Worker { 319*495ae853SAndroid Build Coastguard Worker 0, 4, 1, 8, 320*495ae853SAndroid Build Coastguard Worker 12, 5, 9, 13, 321*495ae853SAndroid Build Coastguard Worker 2, 6, 10, 14, 322*495ae853SAndroid Build Coastguard Worker 3, 7, 11, 15 323*495ae853SAndroid Build Coastguard Worker }; 324*495ae853SAndroid Build Coastguard Worker 325*495ae853SAndroid Build Coastguard Worker /* Inverse scan tables for individual 4x4 blocks of 8x8 transform coeffs of CAVLC */ 326*495ae853SAndroid Build Coastguard Worker /* progressive */ 327*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264_inv_scan_prog8x8_cavlc[64] = 328*495ae853SAndroid Build Coastguard Worker { 329*495ae853SAndroid Build Coastguard Worker 0, 9, 17, 18, 12, 40, 27, 7, 330*495ae853SAndroid Build Coastguard Worker 35, 57, 29, 30, 58, 38, 53, 47, 331*495ae853SAndroid Build Coastguard Worker 1, 2, 24, 11, 19, 48, 20, 14, 332*495ae853SAndroid Build Coastguard Worker 42, 50, 22, 37, 59, 31, 60, 55, 333*495ae853SAndroid Build Coastguard Worker 8, 3, 32, 4, 26, 41, 13, 21, 334*495ae853SAndroid Build Coastguard Worker 49, 43, 15, 44, 52, 39, 61, 62, 335*495ae853SAndroid Build Coastguard Worker 16, 10, 25, 5, 33, 34, 6, 28, 336*495ae853SAndroid Build Coastguard Worker 56, 36, 23, 51, 45, 46, 54, 63 337*495ae853SAndroid Build Coastguard Worker }; 338*495ae853SAndroid Build Coastguard Worker /* interlace */ 339*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264_inv_scan_int8x8_cavlc[64] = 340*495ae853SAndroid Build Coastguard Worker { 341*495ae853SAndroid Build Coastguard Worker 0, 9, 2, 56, 18, 26, 34, 27, 342*495ae853SAndroid Build Coastguard Worker 35, 28, 36, 29, 45, 7, 54, 39, 343*495ae853SAndroid Build Coastguard Worker 8, 24, 25, 33, 41, 11, 42, 12, 344*495ae853SAndroid Build Coastguard Worker 43, 13, 44, 14, 53, 15, 62, 47, 345*495ae853SAndroid Build Coastguard Worker 16, 32, 40, 10, 49, 4, 50, 5, 346*495ae853SAndroid Build Coastguard Worker 51, 6, 52, 22, 61, 38, 23, 55, 347*495ae853SAndroid Build Coastguard Worker 1, 17, 48, 3, 57, 19, 58, 20, 348*495ae853SAndroid Build Coastguard Worker 59, 21, 60, 37, 30, 46, 31, 63 349*495ae853SAndroid Build Coastguard Worker }; 350*495ae853SAndroid Build Coastguard Worker 351*495ae853SAndroid Build Coastguard Worker /*Inverse scan tables for individual 8x8 blocks of 8x8 transform coeffs of CABAC */ 352*495ae853SAndroid Build Coastguard Worker /* progressive */ 353*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264_inv_scan_prog8x8_cabac[64] = 354*495ae853SAndroid Build Coastguard Worker { 355*495ae853SAndroid Build Coastguard Worker 0, 1, 8, 16, 9, 2, 3, 10, 356*495ae853SAndroid Build Coastguard Worker 17, 24, 32, 25, 18, 11, 4, 5, 357*495ae853SAndroid Build Coastguard Worker 12, 19, 26, 33, 40, 48, 41, 34, 358*495ae853SAndroid Build Coastguard Worker 27, 20, 13, 6, 7, 14, 21, 28, 359*495ae853SAndroid Build Coastguard Worker 35, 42, 49, 56, 57, 50, 43, 36, 360*495ae853SAndroid Build Coastguard Worker 29, 22, 15, 23, 30, 37, 44, 51, 361*495ae853SAndroid Build Coastguard Worker 58, 59, 52, 45, 38, 31, 39, 46, 362*495ae853SAndroid Build Coastguard Worker 53, 60, 61, 54, 47, 55, 62, 63 363*495ae853SAndroid Build Coastguard Worker }; 364*495ae853SAndroid Build Coastguard Worker /* interlace */ 365*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264_inv_scan_int8x8_cabac[64] = 366*495ae853SAndroid Build Coastguard Worker { 367*495ae853SAndroid Build Coastguard Worker 0, 8, 16, 1, 9, 24, 32, 17, 368*495ae853SAndroid Build Coastguard Worker 2, 25, 40, 48, 56, 33, 10, 3, 369*495ae853SAndroid Build Coastguard Worker 18, 41, 49, 57, 26, 11, 4, 19, 370*495ae853SAndroid Build Coastguard Worker 34, 42, 50, 58, 27, 12, 5, 20, 371*495ae853SAndroid Build Coastguard Worker 35, 43, 51, 59, 28, 13, 6, 21, 372*495ae853SAndroid Build Coastguard Worker 36, 44, 52, 60, 29, 14, 22, 37, 373*495ae853SAndroid Build Coastguard Worker 45, 53, 61, 30, 7, 15, 38, 46, 374*495ae853SAndroid Build Coastguard Worker 54, 62, 23, 31, 39, 47, 55, 63 375*495ae853SAndroid Build Coastguard Worker }; 376*495ae853SAndroid Build Coastguard Worker 377*495ae853SAndroid Build Coastguard Worker const UWORD8 *const gpau1_ih264_inv_scan8x8[] = 378*495ae853SAndroid Build Coastguard Worker { 379*495ae853SAndroid Build Coastguard Worker gau1_ih264_inv_scan_prog8x8_cavlc, 380*495ae853SAndroid Build Coastguard Worker gau1_ih264_inv_scan_int8x8_cavlc, 381*495ae853SAndroid Build Coastguard Worker gau1_ih264_inv_scan_prog8x8_cabac, 382*495ae853SAndroid Build Coastguard Worker gau1_ih264_inv_scan_int8x8_cabac 383*495ae853SAndroid Build Coastguard Worker }; 384*495ae853SAndroid Build Coastguard Worker 385*495ae853SAndroid Build Coastguard Worker const UWORD8 *const gpau1_ih264_inv_scan4x4[] = 386*495ae853SAndroid Build Coastguard Worker { 387*495ae853SAndroid Build Coastguard Worker gau1_ih264_inv_scan_prog4x4, 388*495ae853SAndroid Build Coastguard Worker gau1_ih264_inv_scan_int4x4, 389*495ae853SAndroid Build Coastguard Worker }; 390*495ae853SAndroid Build Coastguard Worker 391*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264_8x8_subblk_idx[] = 392*495ae853SAndroid Build Coastguard Worker { 393*495ae853SAndroid Build Coastguard Worker 0, 1, 4, 5, 394*495ae853SAndroid Build Coastguard Worker 2, 3, 6, 7, 395*495ae853SAndroid Build Coastguard Worker 8, 9, 12, 13, 396*495ae853SAndroid Build Coastguard Worker 10, 11, 14, 15 397*495ae853SAndroid Build Coastguard Worker }; 398*495ae853SAndroid Build Coastguard Worker 399*495ae853SAndroid Build Coastguard Worker /* Table 8-15 Chroma QP offset table */ 400*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264_chroma_qp[] = 401*495ae853SAndroid Build Coastguard Worker { 402*495ae853SAndroid Build Coastguard Worker 0, 1, 2, 3, 4, 5, 6, 7, 403*495ae853SAndroid Build Coastguard Worker 8, 9, 10, 11, 12, 13, 14, 15, 404*495ae853SAndroid Build Coastguard Worker 16, 17, 18, 19, 20, 21, 22, 23, 405*495ae853SAndroid Build Coastguard Worker 24, 25, 26, 27, 28, 29, 29, 30, 406*495ae853SAndroid Build Coastguard Worker 31, 32, 32, 33, 34, 34, 35, 35, 407*495ae853SAndroid Build Coastguard Worker 36, 36, 37, 37, 37, 38, 38, 38, 408*495ae853SAndroid Build Coastguard Worker 39, 39, 39, 39 409*495ae853SAndroid Build Coastguard Worker }; 410*495ae853SAndroid Build Coastguard Worker 411*495ae853SAndroid Build Coastguard Worker /** 412*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 413*495ae853SAndroid Build Coastguard Worker * @brief look up table to compute neigbour availability of 4x4 blocks 414*495ae853SAndroid Build Coastguard Worker * input : subblk idx, mb neighbor availability 415*495ae853SAndroid Build Coastguard Worker * output : sub blk neighbor availability 416*495ae853SAndroid Build Coastguard Worker * @remarks 417*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 418*495ae853SAndroid Build Coastguard Worker */ 419*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264_4x4_ngbr_avbl[16][16] = 420*495ae853SAndroid Build Coastguard Worker { 421*495ae853SAndroid Build Coastguard Worker { 0x0, 0x1, 0xc, 0x7, 0x1, 0x1, 0xf, 0x7, 0xc, 0xf, 0xc, 0x7, 0xf, 0x7, 0xf, 0x7 }, 422*495ae853SAndroid Build Coastguard Worker { 0x1, 0x1, 0xf, 0x7, 0x1, 0x1, 0xf, 0x7, 0xf, 0xf, 0xf, 0x7, 0xf, 0x7, 0xf, 0x7 }, 423*495ae853SAndroid Build Coastguard Worker { 0x2, 0x1, 0xc, 0x7, 0x1, 0x1, 0xf, 0x7, 0xc, 0xf, 0xc, 0x7, 0xf, 0x7, 0xf, 0x7 }, 424*495ae853SAndroid Build Coastguard Worker { 0x3, 0x1, 0xf, 0x7, 0x1, 0x1, 0xf, 0x7, 0xf, 0xf, 0xf, 0x7, 0xf, 0x7, 0xf, 0x7 }, 425*495ae853SAndroid Build Coastguard Worker 426*495ae853SAndroid Build Coastguard Worker { 0xc, 0xf, 0xc, 0x7, 0xf, 0x7, 0xf, 0x7, 0xc, 0xf, 0xc, 0x7, 0xf, 0x7, 0xf, 0x7 }, 427*495ae853SAndroid Build Coastguard Worker { 0xd, 0xf, 0xf, 0x7, 0xf, 0x7, 0xf, 0x7, 0xf, 0xf, 0xf, 0x7, 0xf, 0x7, 0xf, 0x7 }, 428*495ae853SAndroid Build Coastguard Worker { 0xe, 0xf, 0xc, 0x7, 0xf, 0x7, 0xf, 0x7, 0xc, 0xf, 0xc, 0x7, 0xf, 0x7, 0xf, 0x7 }, 429*495ae853SAndroid Build Coastguard Worker { 0xf, 0xf, 0xf, 0x7, 0xf, 0x7, 0xf, 0x7, 0xf, 0xf, 0xf, 0x7, 0xf, 0x7, 0xf, 0x7 }, 430*495ae853SAndroid Build Coastguard Worker 431*495ae853SAndroid Build Coastguard Worker { 0x0, 0x1, 0xc, 0x7, 0x1, 0x9, 0xf, 0x7, 0xc, 0xf, 0xc, 0x7, 0xf, 0x7, 0xf, 0x7 }, 432*495ae853SAndroid Build Coastguard Worker { 0x1, 0x1, 0xf, 0x7, 0x1, 0x9, 0xf, 0x7, 0xf, 0xf, 0xf, 0x7, 0xf, 0x7, 0xf, 0x7 }, 433*495ae853SAndroid Build Coastguard Worker { 0x2, 0x1, 0xc, 0x7, 0x1, 0x9, 0xf, 0x7, 0xc, 0xf, 0xc, 0x7, 0xf, 0x7, 0xf, 0x7 }, 434*495ae853SAndroid Build Coastguard Worker { 0x3, 0x1, 0xf, 0x7, 0x1, 0x9, 0xf, 0x7, 0xf, 0xf, 0xf, 0x7, 0xf, 0x7, 0xf, 0x7 }, 435*495ae853SAndroid Build Coastguard Worker 436*495ae853SAndroid Build Coastguard Worker { 0xc, 0xf, 0xc, 0x7, 0xf, 0xf, 0xf, 0x7, 0xc, 0xf, 0xc, 0x7, 0xf, 0x7, 0xf, 0x7 }, 437*495ae853SAndroid Build Coastguard Worker { 0xd, 0xf, 0xf, 0x7, 0xf, 0xf, 0xf, 0x7, 0xf, 0xf, 0xf, 0x7, 0xf, 0x7, 0xf, 0x7 }, 438*495ae853SAndroid Build Coastguard Worker { 0xe, 0xf, 0xc, 0x7, 0xf, 0xf, 0xf, 0x7, 0xc, 0xf, 0xc, 0x7, 0xf, 0x7, 0xf, 0x7 }, 439*495ae853SAndroid Build Coastguard Worker { 0xf, 0xf, 0xf, 0x7, 0xf, 0xf, 0xf, 0x7, 0xf, 0xf, 0xf, 0x7, 0xf, 0x7, 0xf, 0x7 }, 440*495ae853SAndroid Build Coastguard Worker }; 441*495ae853SAndroid Build Coastguard Worker 442*495ae853SAndroid Build Coastguard Worker 443*495ae853SAndroid Build Coastguard Worker /** 444*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 445*495ae853SAndroid Build Coastguard Worker * @brief look up table to compute neigbour availability of 8x8 blocks 446*495ae853SAndroid Build Coastguard Worker * input : subblk idx, mb neighbor availability 447*495ae853SAndroid Build Coastguard Worker * output : sub blk neighbor availability 448*495ae853SAndroid Build Coastguard Worker * @remarks 449*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 450*495ae853SAndroid Build Coastguard Worker */ 451*495ae853SAndroid Build Coastguard Worker const UWORD8 gau1_ih264_8x8_ngbr_avbl[16][4] = 452*495ae853SAndroid Build Coastguard Worker { 453*495ae853SAndroid Build Coastguard Worker { 0x0, 0x1, 0xc, 0x7 }, 454*495ae853SAndroid Build Coastguard Worker { 0x1, 0x1, 0xf, 0x7 }, 455*495ae853SAndroid Build Coastguard Worker { 0x2, 0x1, 0xc, 0x7 }, 456*495ae853SAndroid Build Coastguard Worker { 0x3, 0x1, 0xf, 0x7 }, 457*495ae853SAndroid Build Coastguard Worker 458*495ae853SAndroid Build Coastguard Worker { 0xc, 0x7, 0xc, 0x7 }, 459*495ae853SAndroid Build Coastguard Worker { 0xd, 0x7, 0xf, 0x7 }, 460*495ae853SAndroid Build Coastguard Worker { 0xe, 0x7, 0xc, 0x7 }, 461*495ae853SAndroid Build Coastguard Worker { 0xf, 0x7, 0xf, 0x7 }, 462*495ae853SAndroid Build Coastguard Worker 463*495ae853SAndroid Build Coastguard Worker { 0x0, 0x9, 0xc, 0x7 }, 464*495ae853SAndroid Build Coastguard Worker { 0x1, 0x9, 0xf, 0x7 }, 465*495ae853SAndroid Build Coastguard Worker { 0x2, 0x9, 0xc, 0x7 }, 466*495ae853SAndroid Build Coastguard Worker { 0x3, 0x9, 0xf, 0x7 }, 467*495ae853SAndroid Build Coastguard Worker 468*495ae853SAndroid Build Coastguard Worker { 0xc, 0xf, 0xc, 0x7 }, 469*495ae853SAndroid Build Coastguard Worker { 0xd, 0xf, 0xf, 0x7 }, 470*495ae853SAndroid Build Coastguard Worker { 0xe, 0xf, 0xc, 0x7 }, 471*495ae853SAndroid Build Coastguard Worker { 0xf, 0xf, 0xf, 0x7 }, 472*495ae853SAndroid Build Coastguard Worker }; 473*495ae853SAndroid Build Coastguard Worker 474*495ae853SAndroid Build Coastguard Worker /* Table 7-3 Default intra 4x4 scaling list */ 475*495ae853SAndroid Build Coastguard Worker const UWORD16 gau2_ih264_default_intra4x4_scaling_list[] = 476*495ae853SAndroid Build Coastguard Worker { 477*495ae853SAndroid Build Coastguard Worker 6, 13, 13, 20, 478*495ae853SAndroid Build Coastguard Worker 20, 20, 28, 28, 479*495ae853SAndroid Build Coastguard Worker 28, 28, 32, 32, 480*495ae853SAndroid Build Coastguard Worker 32, 37, 37, 42 481*495ae853SAndroid Build Coastguard Worker }; 482*495ae853SAndroid Build Coastguard Worker 483*495ae853SAndroid Build Coastguard Worker /* Table 7-3 Default inter 4x4 scaling list */ 484*495ae853SAndroid Build Coastguard Worker const UWORD16 gau2_ih264_default_inter4x4_scaling_list[] = 485*495ae853SAndroid Build Coastguard Worker { 486*495ae853SAndroid Build Coastguard Worker 10, 14, 14, 20, 487*495ae853SAndroid Build Coastguard Worker 20, 20, 24, 24, 488*495ae853SAndroid Build Coastguard Worker 24, 24, 27, 27, 489*495ae853SAndroid Build Coastguard Worker 27, 30, 30, 34 490*495ae853SAndroid Build Coastguard Worker }; 491*495ae853SAndroid Build Coastguard Worker 492*495ae853SAndroid Build Coastguard Worker /* Inverse scanned output of gau2_ih264_default_intra4x4_scaling_list */ 493*495ae853SAndroid Build Coastguard Worker const UWORD16 gau2_ih264_default_intra4x4_weight_scale[] = 494*495ae853SAndroid Build Coastguard Worker { 495*495ae853SAndroid Build Coastguard Worker 6, 13, 20, 28, 496*495ae853SAndroid Build Coastguard Worker 13, 20, 28, 32, 497*495ae853SAndroid Build Coastguard Worker 20, 28, 32, 37, 498*495ae853SAndroid Build Coastguard Worker 28, 32, 37, 42 499*495ae853SAndroid Build Coastguard Worker }; 500*495ae853SAndroid Build Coastguard Worker 501*495ae853SAndroid Build Coastguard Worker /* Inverse scanned output of gau2_ih264_default_inter4x4_scaling_list */ 502*495ae853SAndroid Build Coastguard Worker const UWORD16 gau2_ih264_default_inter4x4_weight_scale[] = 503*495ae853SAndroid Build Coastguard Worker { 504*495ae853SAndroid Build Coastguard Worker 10, 14, 20, 24, 505*495ae853SAndroid Build Coastguard Worker 14, 20, 24, 27, 506*495ae853SAndroid Build Coastguard Worker 20, 24, 27, 30, 507*495ae853SAndroid Build Coastguard Worker 24, 27, 30, 34 508*495ae853SAndroid Build Coastguard Worker }; 509*495ae853SAndroid Build Coastguard Worker 510*495ae853SAndroid Build Coastguard Worker /* Table 7-4 Default intra 8x8 scaling list */ 511*495ae853SAndroid Build Coastguard Worker const UWORD16 gau2_ih264_default_intra8x8_scaling_list[] = 512*495ae853SAndroid Build Coastguard Worker { 513*495ae853SAndroid Build Coastguard Worker 6, 10, 10, 13, 11, 13, 16, 16, 514*495ae853SAndroid Build Coastguard Worker 16, 16, 18, 18, 18, 18, 18, 23, 515*495ae853SAndroid Build Coastguard Worker 23, 23, 23, 23, 23, 25, 25, 25, 516*495ae853SAndroid Build Coastguard Worker 25, 25, 25, 25, 27, 27, 27, 27, 517*495ae853SAndroid Build Coastguard Worker 27, 27, 27, 27, 29, 29, 29, 29, 518*495ae853SAndroid Build Coastguard Worker 29, 29, 29, 31, 31, 31, 31, 31, 519*495ae853SAndroid Build Coastguard Worker 31, 33, 33, 33, 33, 33, 36, 36, 520*495ae853SAndroid Build Coastguard Worker 36, 36, 38, 38, 38, 40, 40, 42 521*495ae853SAndroid Build Coastguard Worker }; 522*495ae853SAndroid Build Coastguard Worker 523*495ae853SAndroid Build Coastguard Worker /* Table 7-4 Default inter 8x8 scaling list */ 524*495ae853SAndroid Build Coastguard Worker const UWORD16 gau2_ih264_default_inter8x8_scaling_list[] = 525*495ae853SAndroid Build Coastguard Worker { 526*495ae853SAndroid Build Coastguard Worker 9, 13, 13, 15, 13, 15, 17, 17, 527*495ae853SAndroid Build Coastguard Worker 17, 17, 19, 19, 19, 19, 19, 21, 528*495ae853SAndroid Build Coastguard Worker 21, 21, 21, 21, 21, 22, 22, 22, 529*495ae853SAndroid Build Coastguard Worker 22, 22, 22, 22, 24, 24, 24, 24, 530*495ae853SAndroid Build Coastguard Worker 24, 24, 24, 24, 25, 25, 25, 25, 531*495ae853SAndroid Build Coastguard Worker 25, 25, 25, 27, 27, 27, 27, 27, 532*495ae853SAndroid Build Coastguard Worker 27, 28, 28, 28, 28, 28, 30, 30, 533*495ae853SAndroid Build Coastguard Worker 30, 30, 32, 32, 32, 33, 33, 35 534*495ae853SAndroid Build Coastguard Worker }; 535*495ae853SAndroid Build Coastguard Worker 536*495ae853SAndroid Build Coastguard Worker /* Inverse scanned output of gau2_ih264_default_intra8x8_scaling_list */ 537*495ae853SAndroid Build Coastguard Worker const UWORD16 gau2_ih264_default_intra8x8_weight_scale[] = 538*495ae853SAndroid Build Coastguard Worker { 539*495ae853SAndroid Build Coastguard Worker 6, 10, 13, 16, 18, 23, 25, 27, 540*495ae853SAndroid Build Coastguard Worker 10, 11, 16, 18, 23, 25, 27, 29, 541*495ae853SAndroid Build Coastguard Worker 13, 16, 18, 23, 25, 27, 29, 31, 542*495ae853SAndroid Build Coastguard Worker 16, 18, 23, 25, 27, 29, 31, 33, 543*495ae853SAndroid Build Coastguard Worker 18, 23, 25, 27, 29, 31, 33, 36, 544*495ae853SAndroid Build Coastguard Worker 23, 25, 27, 29, 31, 33, 36, 38, 545*495ae853SAndroid Build Coastguard Worker 25, 27, 29, 31, 33, 36, 38, 40, 546*495ae853SAndroid Build Coastguard Worker 27, 29, 31, 33, 36, 38, 40, 42 547*495ae853SAndroid Build Coastguard Worker }; 548*495ae853SAndroid Build Coastguard Worker 549*495ae853SAndroid Build Coastguard Worker /* Inverse scanned output of gau2_ih264_default_inter8x8_scaling_list */ 550*495ae853SAndroid Build Coastguard Worker const UWORD16 gau2_ih264_default_inter8x8_weight_scale[] = 551*495ae853SAndroid Build Coastguard Worker { 552*495ae853SAndroid Build Coastguard Worker 9, 13, 15, 17, 19, 21, 22, 24, 553*495ae853SAndroid Build Coastguard Worker 13, 13, 17, 19, 21, 22, 24, 25, 554*495ae853SAndroid Build Coastguard Worker 15, 17, 19, 21, 22, 24, 25, 27, 555*495ae853SAndroid Build Coastguard Worker 17, 19, 21, 22, 24, 25, 27, 28, 556*495ae853SAndroid Build Coastguard Worker 19, 21, 22, 24, 25, 27, 28, 30, 557*495ae853SAndroid Build Coastguard Worker 21, 22, 24, 25, 27, 28, 30, 32, 558*495ae853SAndroid Build Coastguard Worker 22, 24, 25, 27, 28, 30, 32, 33, 559*495ae853SAndroid Build Coastguard Worker 24, 25, 27, 28, 30, 32, 33, 35 560*495ae853SAndroid Build Coastguard Worker }; 561*495ae853SAndroid Build Coastguard Worker /* Eq 7-8 Flat scaling matrix for 4x4 */ 562*495ae853SAndroid Build Coastguard Worker const UWORD16 gau2_ih264_flat_4x4_weight_scale[] = 563*495ae853SAndroid Build Coastguard Worker { 564*495ae853SAndroid Build Coastguard Worker 16, 16, 16, 16, 565*495ae853SAndroid Build Coastguard Worker 16, 16, 16, 16, 566*495ae853SAndroid Build Coastguard Worker 16, 16, 16, 16, 567*495ae853SAndroid Build Coastguard Worker 16, 16, 16, 16 568*495ae853SAndroid Build Coastguard Worker }; 569*495ae853SAndroid Build Coastguard Worker 570*495ae853SAndroid Build Coastguard Worker /* Eq 7-9 Flat scaling matrix for 8x8 */ 571*495ae853SAndroid Build Coastguard Worker const UWORD16 gau2_ih264_flat_8x8_weight_scale[] = 572*495ae853SAndroid Build Coastguard Worker { 573*495ae853SAndroid Build Coastguard Worker 16, 16, 16, 16, 16, 16, 16, 16, 574*495ae853SAndroid Build Coastguard Worker 16, 16, 16, 16, 16, 16, 16, 16, 575*495ae853SAndroid Build Coastguard Worker 16, 16, 16, 16, 16, 16, 16, 16, 576*495ae853SAndroid Build Coastguard Worker 16, 16, 16, 16, 16, 16, 16, 16, 577*495ae853SAndroid Build Coastguard Worker 16, 16, 16, 16, 16, 16, 16, 16, 578*495ae853SAndroid Build Coastguard Worker 16, 16, 16, 16, 16, 16, 16, 16, 579*495ae853SAndroid Build Coastguard Worker 16, 16, 16, 16, 16, 16, 16, 16, 580*495ae853SAndroid Build Coastguard Worker 16, 16, 16, 16, 16, 16, 16, 16 581*495ae853SAndroid Build Coastguard Worker }; 582*495ae853SAndroid Build Coastguard Worker 583*495ae853SAndroid Build Coastguard Worker /** 584*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 585*495ae853SAndroid Build Coastguard Worker * @brief Scale Table for inverse quantizing 4x4 subblock. To inverse quantize 586*495ae853SAndroid Build Coastguard Worker * a given 4x4 quantized block, the coefficient at index location (i,j) is scaled 587*495ae853SAndroid Build Coastguard Worker * by one of the constants in this table and right shift the result by abs (4 - 588*495ae853SAndroid Build Coastguard Worker * floor(qp/6)), here qp is the quantization parameter used to quantize the mb. 589*495ae853SAndroid Build Coastguard Worker * 590*495ae853SAndroid Build Coastguard Worker * input : 16 * qp%6, index location (i,j) 591*495ae853SAndroid Build Coastguard Worker * output : scale constant. 592*495ae853SAndroid Build Coastguard Worker * 593*495ae853SAndroid Build Coastguard Worker * @remarks 16 constants for each index position of the subblock and 6 for each 594*495ae853SAndroid Build Coastguard Worker * qp%6 in the range 0-5 inclusive. 595*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 596*495ae853SAndroid Build Coastguard Worker */ 597*495ae853SAndroid Build Coastguard Worker const UWORD16 gau2_ih264_iquant_scale_matrix_4x4[96] = 598*495ae853SAndroid Build Coastguard Worker { 599*495ae853SAndroid Build Coastguard Worker 10, 13, 10, 13, 600*495ae853SAndroid Build Coastguard Worker 13, 16, 13, 16, 601*495ae853SAndroid Build Coastguard Worker 10, 13, 10, 13, 602*495ae853SAndroid Build Coastguard Worker 13, 16, 13, 16, 603*495ae853SAndroid Build Coastguard Worker 604*495ae853SAndroid Build Coastguard Worker 11, 14, 11, 14, 605*495ae853SAndroid Build Coastguard Worker 14, 18, 14, 18, 606*495ae853SAndroid Build Coastguard Worker 11, 14, 11, 14, 607*495ae853SAndroid Build Coastguard Worker 14, 18, 14, 18, 608*495ae853SAndroid Build Coastguard Worker 609*495ae853SAndroid Build Coastguard Worker 13, 16, 13, 16, 610*495ae853SAndroid Build Coastguard Worker 16, 20, 16, 20, 611*495ae853SAndroid Build Coastguard Worker 13, 16, 13, 16, 612*495ae853SAndroid Build Coastguard Worker 16, 20, 16, 20, 613*495ae853SAndroid Build Coastguard Worker 614*495ae853SAndroid Build Coastguard Worker 14, 18, 14, 18, 615*495ae853SAndroid Build Coastguard Worker 18, 23, 18, 23, 616*495ae853SAndroid Build Coastguard Worker 14, 18, 14, 18, 617*495ae853SAndroid Build Coastguard Worker 18, 23, 18, 23, 618*495ae853SAndroid Build Coastguard Worker 619*495ae853SAndroid Build Coastguard Worker 16, 20, 16, 20, 620*495ae853SAndroid Build Coastguard Worker 20, 25, 20, 25, 621*495ae853SAndroid Build Coastguard Worker 16, 20, 16, 20, 622*495ae853SAndroid Build Coastguard Worker 20, 25, 20, 25, 623*495ae853SAndroid Build Coastguard Worker 624*495ae853SAndroid Build Coastguard Worker 18, 23, 18, 23, 625*495ae853SAndroid Build Coastguard Worker 23, 29, 23, 29, 626*495ae853SAndroid Build Coastguard Worker 18, 23, 18, 23, 627*495ae853SAndroid Build Coastguard Worker 23, 29, 23, 29, 628*495ae853SAndroid Build Coastguard Worker 629*495ae853SAndroid Build Coastguard Worker }; 630*495ae853SAndroid Build Coastguard Worker 631*495ae853SAndroid Build Coastguard Worker /** 632*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 633*495ae853SAndroid Build Coastguard Worker * @brief Scale Table for inverse quantizing 8x8 subblock. To inverse quantize 634*495ae853SAndroid Build Coastguard Worker * a given 8x8 quantized block, the coefficient at index location (i,j) is scaled 635*495ae853SAndroid Build Coastguard Worker * by one of the constants in this table and right shift the result by abs (4 - 636*495ae853SAndroid Build Coastguard Worker * floor(qp/6)), here qp is the quantization parameter used to quantize the mb. 637*495ae853SAndroid Build Coastguard Worker * 638*495ae853SAndroid Build Coastguard Worker * input : qp%6, index location (i,j) 639*495ae853SAndroid Build Coastguard Worker * output : scale constant. 640*495ae853SAndroid Build Coastguard Worker * 641*495ae853SAndroid Build Coastguard Worker * @remarks 64 constants for each index position of the subblock and 6 for each 642*495ae853SAndroid Build Coastguard Worker * qp%6 in the range 0-5 inclusive. 643*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 644*495ae853SAndroid Build Coastguard Worker */ 645*495ae853SAndroid Build Coastguard Worker const UWORD16 gau2_ih264_iquant_scale_matrix_8x8 [384] = 646*495ae853SAndroid Build Coastguard Worker { 647*495ae853SAndroid Build Coastguard Worker 20, 19, 25, 19, 20, 19, 25, 19, 648*495ae853SAndroid Build Coastguard Worker 19, 18, 24, 18, 19, 18, 24, 18, 649*495ae853SAndroid Build Coastguard Worker 25, 24, 32, 24, 25, 24, 32, 24, 650*495ae853SAndroid Build Coastguard Worker 19, 18, 24, 18, 19, 18, 24, 18, 651*495ae853SAndroid Build Coastguard Worker 20, 19, 25, 19, 20, 19, 25, 19, 652*495ae853SAndroid Build Coastguard Worker 19, 18, 24, 18, 19, 18, 24, 18, 653*495ae853SAndroid Build Coastguard Worker 25, 24, 32, 24, 25, 24, 32, 24, 654*495ae853SAndroid Build Coastguard Worker 19, 18, 24, 18, 19, 18, 24, 18, 655*495ae853SAndroid Build Coastguard Worker 656*495ae853SAndroid Build Coastguard Worker 22, 21, 28, 21, 22, 21, 28, 21, 657*495ae853SAndroid Build Coastguard Worker 21, 19, 26, 19, 21, 19, 26, 19, 658*495ae853SAndroid Build Coastguard Worker 28, 26, 35, 26, 28, 26, 35, 26, 659*495ae853SAndroid Build Coastguard Worker 21, 19, 26, 19, 21, 19, 26, 19, 660*495ae853SAndroid Build Coastguard Worker 22, 21, 28, 21, 22, 21, 28, 21, 661*495ae853SAndroid Build Coastguard Worker 21, 19, 26, 19, 21, 19, 26, 19, 662*495ae853SAndroid Build Coastguard Worker 28, 26, 35, 26, 28, 26, 35, 26, 663*495ae853SAndroid Build Coastguard Worker 21, 19, 26, 19, 21, 19, 26, 19, 664*495ae853SAndroid Build Coastguard Worker 665*495ae853SAndroid Build Coastguard Worker 26, 24, 33, 24, 26, 24, 33, 24, 666*495ae853SAndroid Build Coastguard Worker 24, 23, 31, 23, 24, 23, 31, 23, 667*495ae853SAndroid Build Coastguard Worker 33, 31, 42, 31, 33, 31, 42, 31, 668*495ae853SAndroid Build Coastguard Worker 24, 23, 31, 23, 24, 23, 31, 23, 669*495ae853SAndroid Build Coastguard Worker 26, 24, 33, 24, 26, 24, 33, 24, 670*495ae853SAndroid Build Coastguard Worker 24, 23, 31, 23, 24, 23, 31, 23, 671*495ae853SAndroid Build Coastguard Worker 33, 31, 42, 31, 33, 31, 42, 31, 672*495ae853SAndroid Build Coastguard Worker 24, 23, 31, 23, 24, 23, 31, 23, 673*495ae853SAndroid Build Coastguard Worker 674*495ae853SAndroid Build Coastguard Worker 28, 26, 35, 26, 28, 26, 35, 26, 675*495ae853SAndroid Build Coastguard Worker 26, 25, 33, 25, 26, 25, 33, 25, 676*495ae853SAndroid Build Coastguard Worker 35, 33, 45, 33, 35, 33, 45, 33, 677*495ae853SAndroid Build Coastguard Worker 26, 25, 33, 25, 26, 25, 33, 25, 678*495ae853SAndroid Build Coastguard Worker 28, 26, 35, 26, 28, 26, 35, 26, 679*495ae853SAndroid Build Coastguard Worker 26, 25, 33, 25, 26, 25, 33, 25, 680*495ae853SAndroid Build Coastguard Worker 35, 33, 45, 33, 35, 33, 45, 33, 681*495ae853SAndroid Build Coastguard Worker 26, 25, 33, 25, 26, 25, 33, 25, 682*495ae853SAndroid Build Coastguard Worker 683*495ae853SAndroid Build Coastguard Worker 32, 30, 40, 30, 32, 30, 40, 30, 684*495ae853SAndroid Build Coastguard Worker 30, 28, 38, 28, 30, 28, 38, 28, 685*495ae853SAndroid Build Coastguard Worker 40, 38, 51, 38, 40, 38, 51, 38, 686*495ae853SAndroid Build Coastguard Worker 30, 28, 38, 28, 30, 28, 38, 28, 687*495ae853SAndroid Build Coastguard Worker 32, 30, 40, 30, 32, 30, 40, 30, 688*495ae853SAndroid Build Coastguard Worker 30, 28, 38, 28, 30, 28, 38, 28, 689*495ae853SAndroid Build Coastguard Worker 40, 38, 51, 38, 40, 38, 51, 38, 690*495ae853SAndroid Build Coastguard Worker 30, 28, 38, 28, 30, 28, 38, 28, 691*495ae853SAndroid Build Coastguard Worker 692*495ae853SAndroid Build Coastguard Worker 36, 34, 46, 34, 36, 34, 46, 34, 693*495ae853SAndroid Build Coastguard Worker 34, 32, 43, 32, 34, 32, 43, 32, 694*495ae853SAndroid Build Coastguard Worker 46, 43, 58, 43, 46, 43, 58, 43, 695*495ae853SAndroid Build Coastguard Worker 34, 32, 43, 32, 34, 32, 43, 32, 696*495ae853SAndroid Build Coastguard Worker 36, 34, 46, 34, 36, 34, 46, 34, 697*495ae853SAndroid Build Coastguard Worker 34, 32, 43, 32, 34, 32, 43, 32, 698*495ae853SAndroid Build Coastguard Worker 46, 43, 58, 43, 46, 43, 58, 43, 699*495ae853SAndroid Build Coastguard Worker 34, 32, 43, 32, 34, 32, 43, 32, 700*495ae853SAndroid Build Coastguard Worker 701*495ae853SAndroid Build Coastguard Worker }; 702