1*c83a76b0SSuyog Pawar /****************************************************************************** 2*c83a76b0SSuyog Pawar * 3*c83a76b0SSuyog Pawar * Copyright (C) 2018 The Android Open Source Project 4*c83a76b0SSuyog Pawar * 5*c83a76b0SSuyog Pawar * Licensed under the Apache License, Version 2.0 (the "License"); 6*c83a76b0SSuyog Pawar * you may not use this file except in compliance with the License. 7*c83a76b0SSuyog Pawar * You may obtain a copy of the License at: 8*c83a76b0SSuyog Pawar * 9*c83a76b0SSuyog Pawar * http://www.apache.org/licenses/LICENSE-2.0 10*c83a76b0SSuyog Pawar * 11*c83a76b0SSuyog Pawar * Unless required by applicable law or agreed to in writing, software 12*c83a76b0SSuyog Pawar * distributed under the License is distributed on an "AS IS" BASIS, 13*c83a76b0SSuyog Pawar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*c83a76b0SSuyog Pawar * See the License for the specific language governing permissions and 15*c83a76b0SSuyog Pawar * limitations under the License. 16*c83a76b0SSuyog Pawar * 17*c83a76b0SSuyog Pawar ***************************************************************************** 18*c83a76b0SSuyog Pawar * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19*c83a76b0SSuyog Pawar */ 20*c83a76b0SSuyog Pawar /*! 21*c83a76b0SSuyog Pawar ****************************************************************************** 22*c83a76b0SSuyog Pawar * \file hme_globals.h 23*c83a76b0SSuyog Pawar * 24*c83a76b0SSuyog Pawar * \brief 25*c83a76b0SSuyog Pawar * Contains all the global declarations used by HME 26*c83a76b0SSuyog Pawar * 27*c83a76b0SSuyog Pawar * \date 28*c83a76b0SSuyog Pawar * 18/09/2012 29*c83a76b0SSuyog Pawar * 30*c83a76b0SSuyog Pawar * \author 31*c83a76b0SSuyog Pawar * Ittiam 32*c83a76b0SSuyog Pawar * 33*c83a76b0SSuyog Pawar ****************************************************************************** 34*c83a76b0SSuyog Pawar */ 35*c83a76b0SSuyog Pawar 36*c83a76b0SSuyog Pawar #ifndef _HME_GLOBALS_H_ 37*c83a76b0SSuyog Pawar 38*c83a76b0SSuyog Pawar /*****************************************************************************/ 39*c83a76b0SSuyog Pawar /* File Includes */ 40*c83a76b0SSuyog Pawar /*****************************************************************************/ 41*c83a76b0SSuyog Pawar 42*c83a76b0SSuyog Pawar /*****************************************************************************/ 43*c83a76b0SSuyog Pawar /* Globals */ 44*c83a76b0SSuyog Pawar /*****************************************************************************/ 45*c83a76b0SSuyog Pawar 46*c83a76b0SSuyog Pawar /** 47*c83a76b0SSuyog Pawar ****************************************************************************** 48*c83a76b0SSuyog Pawar * @brief Converts an encode order to raster order x coord. Meant for 16x16 49*c83a76b0SSuyog Pawar * CU within 64x64 or within 32x32 50*c83a76b0SSuyog Pawar ****************************************************************************** 51*c83a76b0SSuyog Pawar */ 52*c83a76b0SSuyog Pawar extern U08 gau1_encode_to_raster_x[16]; 53*c83a76b0SSuyog Pawar 54*c83a76b0SSuyog Pawar /** 55*c83a76b0SSuyog Pawar ****************************************************************************** 56*c83a76b0SSuyog Pawar * @brief Converts an encode order to raster order y coord. Meant for 16x16 57*c83a76b0SSuyog Pawar * CU within 64x64 or within 32x32 58*c83a76b0SSuyog Pawar ****************************************************************************** 59*c83a76b0SSuyog Pawar */ 60*c83a76b0SSuyog Pawar extern U08 gau1_encode_to_raster_y[16]; 61*c83a76b0SSuyog Pawar 62*c83a76b0SSuyog Pawar /** 63*c83a76b0SSuyog Pawar ****************************************************************************** 64*c83a76b0SSuyog Pawar * @brief Given a CU id within the bigger CU (0..3), and the partition type 65*c83a76b0SSuyog Pawar * currently within the small CU, we can figure out candidate 66*c83a76b0SSuyog Pawar * partition types for bigger CU. E.g. IF CU id is 0, and is AMP of 67*c83a76b0SSuyog Pawar * nLx2N, candidate partitions for bigger CU are nLx2N and 2Nx2N 68*c83a76b0SSuyog Pawar ****************************************************************************** 69*c83a76b0SSuyog Pawar */ 70*c83a76b0SSuyog Pawar extern PART_TYPE_T ge_part_type_to_merge_part[4][MAX_PART_TYPES][3]; 71*c83a76b0SSuyog Pawar 72*c83a76b0SSuyog Pawar /** 73*c83a76b0SSuyog Pawar ****************************************************************************** 74*c83a76b0SSuyog Pawar * @brief A given partition type has 1,2 or 4 partitions, each corresponding 75*c83a76b0SSuyog Pawar * to a unique partition id PART_ID_T enum type. So, this global converts 76*c83a76b0SSuyog Pawar * partition type to a bitmask of corresponding partition ids. 77*c83a76b0SSuyog Pawar ****************************************************************************** 78*c83a76b0SSuyog Pawar */ 79*c83a76b0SSuyog Pawar extern S32 gai4_part_type_to_part_mask[MAX_PART_TYPES]; 80*c83a76b0SSuyog Pawar 81*c83a76b0SSuyog Pawar /** 82*c83a76b0SSuyog Pawar ****************************************************************************** 83*c83a76b0SSuyog Pawar * @brief Reads out the index of function pointer to a sad_compute function 84*c83a76b0SSuyog Pawar * of blk given a blk size enumeration 85*c83a76b0SSuyog Pawar ****************************************************************************** 86*c83a76b0SSuyog Pawar */ 87*c83a76b0SSuyog Pawar extern U08 gau1_blk_size_to_fp[NUM_BLK_SIZES]; 88*c83a76b0SSuyog Pawar 89*c83a76b0SSuyog Pawar /** 90*c83a76b0SSuyog Pawar ****************************************************************************** 91*c83a76b0SSuyog Pawar * @brief Reads out the width of blk given a blk size enumeration 92*c83a76b0SSuyog Pawar ****************************************************************************** 93*c83a76b0SSuyog Pawar */ 94*c83a76b0SSuyog Pawar extern U08 gau1_blk_size_to_wd[NUM_BLK_SIZES]; 95*c83a76b0SSuyog Pawar 96*c83a76b0SSuyog Pawar extern U08 gau1_blk_size_to_wd_shift[NUM_BLK_SIZES]; 97*c83a76b0SSuyog Pawar 98*c83a76b0SSuyog Pawar /** 99*c83a76b0SSuyog Pawar ****************************************************************************** 100*c83a76b0SSuyog Pawar * @brief Reads out the height of blk given a blk size enumeration 101*c83a76b0SSuyog Pawar ****************************************************************************** 102*c83a76b0SSuyog Pawar */ 103*c83a76b0SSuyog Pawar extern U08 gau1_blk_size_to_ht[NUM_BLK_SIZES]; 104*c83a76b0SSuyog Pawar 105*c83a76b0SSuyog Pawar /** 106*c83a76b0SSuyog Pawar ****************************************************************************** 107*c83a76b0SSuyog Pawar * @brief Given a minimum pt enum in a 3x3 grid, reads out the list of active 108*c83a76b0SSuyog Pawar * search pts in next iteration as a bit-mask, eliminating need to search 109*c83a76b0SSuyog Pawar * pts that have already been searched in this iteration. 110*c83a76b0SSuyog Pawar ****************************************************************************** 111*c83a76b0SSuyog Pawar */ 112*c83a76b0SSuyog Pawar extern S32 gai4_opt_grid_mask[NUM_GRID_PTS]; 113*c83a76b0SSuyog Pawar 114*c83a76b0SSuyog Pawar /** 115*c83a76b0SSuyog Pawar ****************************************************************************** 116*c83a76b0SSuyog Pawar * @brief Given a minimum pt enum in a 3x3 grid, reads out the x offset of 117*c83a76b0SSuyog Pawar * the min pt relative to center assuming step size of 1 118*c83a76b0SSuyog Pawar ****************************************************************************** 119*c83a76b0SSuyog Pawar */ 120*c83a76b0SSuyog Pawar extern S08 gai1_grid_id_to_x[NUM_GRID_PTS]; 121*c83a76b0SSuyog Pawar 122*c83a76b0SSuyog Pawar /** 123*c83a76b0SSuyog Pawar ****************************************************************************** 124*c83a76b0SSuyog Pawar * @brief Given a minimum pt enum in a 3x3 grid, reads out the y offset of 125*c83a76b0SSuyog Pawar * the min pt relative to center assuming step size of 1 126*c83a76b0SSuyog Pawar ****************************************************************************** 127*c83a76b0SSuyog Pawar */ 128*c83a76b0SSuyog Pawar extern S08 gai1_grid_id_to_y[NUM_GRID_PTS]; 129*c83a76b0SSuyog Pawar 130*c83a76b0SSuyog Pawar /** 131*c83a76b0SSuyog Pawar ****************************************************************************** 132*c83a76b0SSuyog Pawar * @brief Lookup of the blk size enum, given a specific partition and cu size 133*c83a76b0SSuyog Pawar ****************************************************************************** 134*c83a76b0SSuyog Pawar */ 135*c83a76b0SSuyog Pawar extern BLK_SIZE_T ge_part_id_to_blk_size[NUM_CU_SIZES][TOT_NUM_PARTS]; 136*c83a76b0SSuyog Pawar 137*c83a76b0SSuyog Pawar /** 138*c83a76b0SSuyog Pawar ****************************************************************************** 139*c83a76b0SSuyog Pawar * @brief For a given partition split, find number of partitions 140*c83a76b0SSuyog Pawar ****************************************************************************** 141*c83a76b0SSuyog Pawar */ 142*c83a76b0SSuyog Pawar extern U08 gau1_num_parts_in_part_type[MAX_PART_TYPES]; 143*c83a76b0SSuyog Pawar 144*c83a76b0SSuyog Pawar /** 145*c83a76b0SSuyog Pawar ****************************************************************************** 146*c83a76b0SSuyog Pawar * @brief For a given partition split, returns the enumerations of specific 147*c83a76b0SSuyog Pawar * partitions in raster order. E.g. for PART_2NxN, part id 0 is 148*c83a76b0SSuyog Pawar * PART_ID_2NxN_T and part id 1 is PART_ID_2NxN_B 149*c83a76b0SSuyog Pawar ****************************************************************************** 150*c83a76b0SSuyog Pawar */ 151*c83a76b0SSuyog Pawar extern PART_ID_T ge_part_type_to_part_id[MAX_PART_TYPES][MAX_NUM_PARTS]; 152*c83a76b0SSuyog Pawar 153*c83a76b0SSuyog Pawar /** 154*c83a76b0SSuyog Pawar ****************************************************************************** 155*c83a76b0SSuyog Pawar * @brief For a given partition id, returs the rectangular position and size 156*c83a76b0SSuyog Pawar * of partition within cu relative ot cu start. 157*c83a76b0SSuyog Pawar ****************************************************************************** 158*c83a76b0SSuyog Pawar */ 159*c83a76b0SSuyog Pawar extern part_attr_t gas_part_attr_in_cu[TOT_NUM_PARTS]; 160*c83a76b0SSuyog Pawar 161*c83a76b0SSuyog Pawar /** 162*c83a76b0SSuyog Pawar ****************************************************************************** 163*c83a76b0SSuyog Pawar * @brief Gives the CU type enumeration given a blk size. 164*c83a76b0SSuyog Pawar ****************************************************************************** 165*c83a76b0SSuyog Pawar */ 166*c83a76b0SSuyog Pawar extern CU_SIZE_T ge_blk_size_to_cu_size[NUM_BLK_SIZES]; 167*c83a76b0SSuyog Pawar 168*c83a76b0SSuyog Pawar /** 169*c83a76b0SSuyog Pawar ****************************************************************************** 170*c83a76b0SSuyog Pawar 171*c83a76b0SSuyog Pawar * @brief Given a minimum pt enum in a diamond grid, reads out the list 172*c83a76b0SSuyog Pawar * of active search pts in next iteration as a bit-mask, eliminating need 173*c83a76b0SSuyog Pawar * to search pts that have already been searched in this iteration. 174*c83a76b0SSuyog Pawar ****************************************************************************** 175*c83a76b0SSuyog Pawar */ 176*c83a76b0SSuyog Pawar extern S32 gai4_opt_grid_mask_diamond[5]; 177*c83a76b0SSuyog Pawar 178*c83a76b0SSuyog Pawar /** 179*c83a76b0SSuyog Pawar ****************************************************************************** 180*c83a76b0SSuyog Pawar * @brief Given a minimum pt enum in a 9 point grid, reads out the list 181*c83a76b0SSuyog Pawar * of active search pts in next iteration as a bit-mask, eliminating need 182*c83a76b0SSuyog Pawar * to search pts that have already been searched in this iteration. 183*c83a76b0SSuyog Pawar ****************************************************************************** 184*c83a76b0SSuyog Pawar */ 185*c83a76b0SSuyog Pawar 186*c83a76b0SSuyog Pawar extern S32 gai4_opt_grid_mask_conventional[9]; 187*c83a76b0SSuyog Pawar 188*c83a76b0SSuyog Pawar /** 189*c83a76b0SSuyog Pawar ****************************************************************************** 190*c83a76b0SSuyog Pawar * @brief Given a raster coord x, y, this aray returns the CU id in encoding 191*c83a76b0SSuyog Pawar * order. Indexed as [y][x] 192*c83a76b0SSuyog Pawar ****************************************************************************** 193*c83a76b0SSuyog Pawar */ 194*c83a76b0SSuyog Pawar extern U08 gau1_cu_id_raster_to_enc[4][4]; 195*c83a76b0SSuyog Pawar /** 196*c83a76b0SSuyog Pawar ****************************************************************************** 197*c83a76b0SSuyog Pawar * @brief Given a CU size, this array returns blk size enum 198*c83a76b0SSuyog Pawar ****************************************************************************** 199*c83a76b0SSuyog Pawar */ 200*c83a76b0SSuyog Pawar extern BLK_SIZE_T ge_cu_size_to_blk_size[NUM_CU_SIZES]; 201*c83a76b0SSuyog Pawar 202*c83a76b0SSuyog Pawar /** 203*c83a76b0SSuyog Pawar ****************************************************************************** 204*c83a76b0SSuyog Pawar * @brief Given a part type, returns whether the part type is vertically 205*c83a76b0SSuyog Pawar * oriented. 206*c83a76b0SSuyog Pawar ****************************************************************************** 207*c83a76b0SSuyog Pawar */ 208*c83a76b0SSuyog Pawar extern U08 gau1_is_vert_part[MAX_PART_TYPES]; 209*c83a76b0SSuyog Pawar 210*c83a76b0SSuyog Pawar /** 211*c83a76b0SSuyog Pawar ****************************************************************************** 212*c83a76b0SSuyog Pawar * @brief Given a partition, returns the number of best results to consider 213*c83a76b0SSuyog Pawar * for full pell refinement. 214*c83a76b0SSuyog Pawar ****************************************************************************** 215*c83a76b0SSuyog Pawar */ 216*c83a76b0SSuyog Pawar extern U08 gau1_num_best_results_PQ[TOT_NUM_PARTS]; 217*c83a76b0SSuyog Pawar extern U08 gau1_num_best_results_HQ[TOT_NUM_PARTS]; 218*c83a76b0SSuyog Pawar extern U08 gau1_num_best_results_MS[TOT_NUM_PARTS]; 219*c83a76b0SSuyog Pawar extern U08 gau1_num_best_results_HS[TOT_NUM_PARTS]; 220*c83a76b0SSuyog Pawar extern U08 gau1_num_best_results_XS[TOT_NUM_PARTS]; 221*c83a76b0SSuyog Pawar extern U08 gau1_num_best_results_XS25[TOT_NUM_PARTS]; 222*c83a76b0SSuyog Pawar 223*c83a76b0SSuyog Pawar /** 224*c83a76b0SSuyog Pawar ****************************************************************************** 225*c83a76b0SSuyog Pawar * @brief gau1_cu_tr_valid[y][x] returns the validity of a top rt candt for 226*c83a76b0SSuyog Pawar * CU with raster id x, y within CTB. Valid for 16x16 CUs and above 227*c83a76b0SSuyog Pawar ****************************************************************************** 228*c83a76b0SSuyog Pawar */ 229*c83a76b0SSuyog Pawar extern U08 gau1_cu_tr_valid[4][4]; 230*c83a76b0SSuyog Pawar /** 231*c83a76b0SSuyog Pawar ****************************************************************************** 232*c83a76b0SSuyog Pawar * @brief gau1_cu_tr_valid[y][x] returns the validity of a bot lt candt for 233*c83a76b0SSuyog Pawar * CU with raster id x, y within CTB. Valid for 16x16 CUs and above 234*c83a76b0SSuyog Pawar ****************************************************************************** 235*c83a76b0SSuyog Pawar */ 236*c83a76b0SSuyog Pawar extern U08 gau1_cu_bl_valid[4][4]; 237*c83a76b0SSuyog Pawar 238*c83a76b0SSuyog Pawar /** 239*c83a76b0SSuyog Pawar ****************************************************************************** 240*c83a76b0SSuyog Pawar * @brief Returns the validity of top rt candt for a given part id, will not 241*c83a76b0SSuyog Pawar * be valid if tr of a part pts to a non causal neighbour like 16x8B 242*c83a76b0SSuyog Pawar ****************************************************************************** 243*c83a76b0SSuyog Pawar */ 244*c83a76b0SSuyog Pawar extern U08 gau1_partid_tr_valid[TOT_NUM_PARTS]; 245*c83a76b0SSuyog Pawar /** 246*c83a76b0SSuyog Pawar ****************************************************************************** 247*c83a76b0SSuyog Pawar * @brief Returns the validity of bottom left cant for given part id, will 248*c83a76b0SSuyog Pawar * not be valid, if bl of a part pts to a non causal neighbour like 8x16R 249*c83a76b0SSuyog Pawar ****************************************************************************** 250*c83a76b0SSuyog Pawar */ 251*c83a76b0SSuyog Pawar extern U08 gau1_partid_bl_valid[TOT_NUM_PARTS]; 252*c83a76b0SSuyog Pawar 253*c83a76b0SSuyog Pawar /** 254*c83a76b0SSuyog Pawar ****************************************************************************** 255*c83a76b0SSuyog Pawar * @brief The number of partition id in the CU, e.g. PART_ID_16x8_B is 2nd 256*c83a76b0SSuyog Pawar ****************************************************************************** 257*c83a76b0SSuyog Pawar */ 258*c83a76b0SSuyog Pawar extern U08 gau1_part_id_to_part_num[TOT_NUM_PARTS]; 259*c83a76b0SSuyog Pawar 260*c83a76b0SSuyog Pawar /** 261*c83a76b0SSuyog Pawar ****************************************************************************** 262*c83a76b0SSuyog Pawar * @brief Returns partition type for a given partition id, e.g. 263*c83a76b0SSuyog Pawar * PART_ID_16x8_B returns PRT_TYPE_16x8 264*c83a76b0SSuyog Pawar ****************************************************************************** 265*c83a76b0SSuyog Pawar */ 266*c83a76b0SSuyog Pawar extern PART_TYPE_T ge_part_id_to_part_type[TOT_NUM_PARTS]; 267*c83a76b0SSuyog Pawar 268*c83a76b0SSuyog Pawar /** 269*c83a76b0SSuyog Pawar ****************************************************************************** 270*c83a76b0SSuyog Pawar * @brief given raster id x, y of 8x8 blk in 64x64 CTB, return the enc order 271*c83a76b0SSuyog Pawar ****************************************************************************** 272*c83a76b0SSuyog Pawar */ 273*c83a76b0SSuyog Pawar extern U08 gau1_8x8_cu_id_raster_to_enc[8][8]; 274*c83a76b0SSuyog Pawar 275*c83a76b0SSuyog Pawar /** 276*c83a76b0SSuyog Pawar ****************************************************************************** 277*c83a76b0SSuyog Pawar * @brief Return the bits for a given partition id which gets added to the 278*c83a76b0SSuyog Pawar * cost. Although the bits are for a given partition type, we add off the 279*c83a76b0SSuyog Pawar * bits per partition while computing mv cost. For example, if the bits for 280*c83a76b0SSuyog Pawar * 2NxN part type is 3, we add 1.5 bits for 2NxN_T and 1.5 for 2NxN_B. 281*c83a76b0SSuyog Pawar * Hence this is stored in Q1 format 282*c83a76b0SSuyog Pawar ****************************************************************************** 283*c83a76b0SSuyog Pawar */ 284*c83a76b0SSuyog Pawar extern U08 gau1_bits_for_part_id_q1[TOT_NUM_PARTS]; 285*c83a76b0SSuyog Pawar 286*c83a76b0SSuyog Pawar /** 287*c83a76b0SSuyog Pawar ****************************************************************************** 288*c83a76b0SSuyog Pawar * @brief Returns 1 if there are qpel points to the top and bottom of the 289*c83a76b0SSuyog Pawar * current point 290*c83a76b0SSuyog Pawar ****************************************************************************** 291*c83a76b0SSuyog Pawar */ 292*c83a76b0SSuyog Pawar extern S32 gai4_2pt_qpel_interpol_possible_vert[4][4]; 293*c83a76b0SSuyog Pawar 294*c83a76b0SSuyog Pawar /** 295*c83a76b0SSuyog Pawar ****************************************************************************** 296*c83a76b0SSuyog Pawar * @brief Returns 1 if there are qpel points to the left and right of the 297*c83a76b0SSuyog Pawar * current point 298*c83a76b0SSuyog Pawar ****************************************************************************** 299*c83a76b0SSuyog Pawar */ 300*c83a76b0SSuyog Pawar extern S32 gai4_2pt_qpel_interpol_possible_horz[4][4]; 301*c83a76b0SSuyog Pawar 302*c83a76b0SSuyog Pawar /** 303*c83a76b0SSuyog Pawar ****************************************************************************** 304*c83a76b0SSuyog Pawar * @brief For a given partition split, num bits to encode the partition type 305*c83a76b0SSuyog Pawar * and split cu,tu bits; assuming one bin equal to one bit for now 306*c83a76b0SSuyog Pawar ****************************************************************************** 307*c83a76b0SSuyog Pawar */ 308*c83a76b0SSuyog Pawar extern U08 gau1_num_bits_for_part_type[MAX_PART_TYPES]; 309*c83a76b0SSuyog Pawar 310*c83a76b0SSuyog Pawar /** 311*c83a76b0SSuyog Pawar ****************************************************************************** 312*c83a76b0SSuyog Pawar * @brief Used exclusively in the Intrinsics version of the function 313*c83a76b0SSuyog Pawar * 'hme_combine_4x4_sads_and_compute_cost_high_speed' instead 314*c83a76b0SSuyog Pawar * of calling get_range() 315*c83a76b0SSuyog Pawar ****************************************************************************** 316*c83a76b0SSuyog Pawar */ 317*c83a76b0SSuyog Pawar extern S16 gi2_mvy_range[MAX_MVY_SUPPORTED_IN_COARSE_LAYER + 1][8]; 318*c83a76b0SSuyog Pawar 319*c83a76b0SSuyog Pawar /** 320*c83a76b0SSuyog Pawar ****************************************************************************** 321*c83a76b0SSuyog Pawar * @brief Used exclusively in the Intrinsics version of the function 322*c83a76b0SSuyog Pawar * 'hme_combine_4x4_sads_and_compute_cost_high_speed' instead 323*c83a76b0SSuyog Pawar * of calling get_range() 324*c83a76b0SSuyog Pawar ****************************************************************************** 325*c83a76b0SSuyog Pawar */ 326*c83a76b0SSuyog Pawar extern S16 gi2_mvx_range[MAX_MVX_SUPPORTED_IN_COARSE_LAYER * 2 + 1][8]; 327*c83a76b0SSuyog Pawar 328*c83a76b0SSuyog Pawar extern S32 gai4_select_qpel_function_vert[4][16]; 329*c83a76b0SSuyog Pawar 330*c83a76b0SSuyog Pawar extern S32 gai4_select_qpel_function_horz[4][16]; 331*c83a76b0SSuyog Pawar 332*c83a76b0SSuyog Pawar extern S32 gai4_partition_area[TOT_NUM_PARTS]; 333*c83a76b0SSuyog Pawar 334*c83a76b0SSuyog Pawar extern const U08 gau1_search_cand_priority_in_l1_and_l2_me[2][NUM_SEARCH_CAND_TYPES]; 335*c83a76b0SSuyog Pawar 336*c83a76b0SSuyog Pawar /* 12 cases are - */ 337*c83a76b0SSuyog Pawar /* case 0 - P picture, num_refs=1, 4x4 in L1ME = 0 */ 338*c83a76b0SSuyog Pawar /* case 1 - P picture, num_refs=1, 4x4 in L1ME = 1 */ 339*c83a76b0SSuyog Pawar /* case 2 - P picture, num_refs=2, 4x4 in L1ME = 0 */ 340*c83a76b0SSuyog Pawar /* case 3 - P picture, num_refs=2, 4x4 in L1ME = 1 */ 341*c83a76b0SSuyog Pawar /* case 4 - P picture, num_refs=3, 4x4 in L1ME = 0 */ 342*c83a76b0SSuyog Pawar /* case 5 - P picture, num_refs=3, 4x4 in L1ME = 1 */ 343*c83a76b0SSuyog Pawar /* case 6 - P picture, num_refs=3, 4x4 in L1ME = 0 */ 344*c83a76b0SSuyog Pawar /* case 7 - P picture, num_refs=3, 4x4 in L1ME = 1 */ 345*c83a76b0SSuyog Pawar /* case 8 - B picture, num_refs=1, 4x4 in L1ME = 0 */ 346*c83a76b0SSuyog Pawar /* case 9 - B picture, num_refs=1, 4x4 in L1ME = 1 */ 347*c83a76b0SSuyog Pawar /* case 10 - B picture, num_refs=2, 4x4 in L1ME = 0 */ 348*c83a76b0SSuyog Pawar /* case 11 - B picture, num_refs=2, 4x4 in L1ME = 1 */ 349*c83a76b0SSuyog Pawar extern const U08 gau1_search_cand_priority_in_l0_me[12][NUM_SEARCH_CAND_TYPES]; 350*c83a76b0SSuyog Pawar 351*c83a76b0SSuyog Pawar extern const SEARCH_CANDIDATE_TYPE_T 352*c83a76b0SSuyog Pawar gae_search_cand_priority_to_search_cand_type_map_in_l0_me[12][NUM_SEARCH_CAND_TYPES]; 353*c83a76b0SSuyog Pawar 354*c83a76b0SSuyog Pawar extern const U08 gau1_max_num_search_cands_in_l0_me[12]; 355*c83a76b0SSuyog Pawar 356*c83a76b0SSuyog Pawar extern const SEARCH_CAND_LOCATIONS_T gae_search_cand_type_to_location_map[NUM_SEARCH_CAND_TYPES]; 357*c83a76b0SSuyog Pawar 358*c83a76b0SSuyog Pawar extern const S08 gai1_search_cand_type_to_result_id_map[NUM_SEARCH_CAND_TYPES]; 359*c83a76b0SSuyog Pawar 360*c83a76b0SSuyog Pawar extern const U08 gau1_search_cand_type_to_spatiality_map[NUM_SEARCH_CAND_TYPES]; 361*c83a76b0SSuyog Pawar 362*c83a76b0SSuyog Pawar extern const S32 gai4_search_cand_location_to_x_offset_map[NUM_SEARCH_CAND_LOCATIONS]; 363*c83a76b0SSuyog Pawar 364*c83a76b0SSuyog Pawar extern const S32 gai4_search_cand_location_to_y_offset_map[NUM_SEARCH_CAND_LOCATIONS]; 365*c83a76b0SSuyog Pawar 366*c83a76b0SSuyog Pawar /** 367*c83a76b0SSuyog Pawar ****************************************************************************** 368*c83a76b0SSuyog Pawar * @brief Used exclusively in the Intrinsics version of the function 369*c83a76b0SSuyog Pawar * 'hme_combine_4x4_sads_and_compute_cost_high_quality' instead 370*c83a76b0SSuyog Pawar * of calling get_range() 371*c83a76b0SSuyog Pawar ****************************************************************************** 372*c83a76b0SSuyog Pawar */ 373*c83a76b0SSuyog Pawar extern S16 gi2_mvx_range_high_quality[MAX_MVX_SUPPORTED_IN_COARSE_LAYER * 2 + 1][8]; 374*c83a76b0SSuyog Pawar 375*c83a76b0SSuyog Pawar extern const S16 gai2_mvx_range_mapping[8193][8]; 376*c83a76b0SSuyog Pawar 377*c83a76b0SSuyog Pawar extern const S16 gai2_mvy_range_mapping[4097][8]; 378*c83a76b0SSuyog Pawar 379*c83a76b0SSuyog Pawar extern const S16 gai2_set_best_cost_max[8][8]; 380*c83a76b0SSuyog Pawar 381*c83a76b0SSuyog Pawar extern const S08 gai1_mv_adjust[8][2]; 382*c83a76b0SSuyog Pawar 383*c83a76b0SSuyog Pawar extern const S08 gai1_mv_offsets_from_center_in_rect_grid[NUM_POINTS_IN_RECTANGULAR_GRID][2]; 384*c83a76b0SSuyog Pawar 385*c83a76b0SSuyog Pawar #endif /* #ifndef _HME_GLOBALS_H_*/ 386