xref: /aosp_15_r20/external/libhevc/encoder/hme_globals.h (revision c83a76b084498d55f252f48b2e3786804cdf24b7)
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