xref: /aosp_15_r20/external/libavc/common/ih264_common_tables.c (revision 495ae853bb871d1e5a258cb02c2cc13cde8ddb9a)
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