xref: /aosp_15_r20/external/libavc/common/ih264_defs.h (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_defs.h
25*495ae853SAndroid Build Coastguard Worker *
26*495ae853SAndroid Build Coastguard Worker * @brief
27*495ae853SAndroid Build Coastguard Worker *  Definitions used in the codec
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 #ifndef _IH264_DEFS_H_
39*495ae853SAndroid Build Coastguard Worker #define _IH264_DEFS_H_
40*495ae853SAndroid Build Coastguard Worker 
41*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
42*495ae853SAndroid Build Coastguard Worker /* Enums                                                                     */
43*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
44*495ae853SAndroid Build Coastguard Worker 
45*495ae853SAndroid Build Coastguard Worker 
46*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
47*495ae853SAndroid Build Coastguard Worker /* Profile and Levels                                                        */
48*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
49*495ae853SAndroid Build Coastguard Worker 
50*495ae853SAndroid Build Coastguard Worker /**
51*495ae853SAndroid Build Coastguard Worker ******************************************************************************
52*495ae853SAndroid Build Coastguard Worker  *  @enum  PROFILE_IDC
53*495ae853SAndroid Build Coastguard Worker  *  @brief Defines the set of possible profiles
54*495ae853SAndroid Build Coastguard Worker ******************************************************************************
55*495ae853SAndroid Build Coastguard Worker */
56*495ae853SAndroid Build Coastguard Worker enum
57*495ae853SAndroid Build Coastguard Worker {
58*495ae853SAndroid Build Coastguard Worker     IH264_PROFILE_BASELINE = 66,
59*495ae853SAndroid Build Coastguard Worker     IH264_PROFILE_MAIN = 77,
60*495ae853SAndroid Build Coastguard Worker     IH264_PROFILE_EXTENDED = 88,
61*495ae853SAndroid Build Coastguard Worker     IH264_PROFILE_HIGH = 100,
62*495ae853SAndroid Build Coastguard Worker     IH264_PROFILE_HIGH10 = 110,
63*495ae853SAndroid Build Coastguard Worker     IH264_PROFILE_HIGH422 = 122,
64*495ae853SAndroid Build Coastguard Worker     IH264_PROFILE_HIGH444 = 144,
65*495ae853SAndroid Build Coastguard Worker };
66*495ae853SAndroid Build Coastguard Worker 
67*495ae853SAndroid Build Coastguard Worker /**
68*495ae853SAndroid Build Coastguard Worker ******************************************************************************
69*495ae853SAndroid Build Coastguard Worker  *  @enum  LEVEL_IDC
70*495ae853SAndroid Build Coastguard Worker  *  @brief Defines the set of possible levels
71*495ae853SAndroid Build Coastguard Worker ******************************************************************************
72*495ae853SAndroid Build Coastguard Worker */
73*495ae853SAndroid Build Coastguard Worker typedef enum
74*495ae853SAndroid Build Coastguard Worker {
75*495ae853SAndroid Build Coastguard Worker     IH264_LEVEL_10         = 10,
76*495ae853SAndroid Build Coastguard Worker     IH264_LEVEL_1B         = 9,
77*495ae853SAndroid Build Coastguard Worker     IH264_LEVEL_11         = 11,
78*495ae853SAndroid Build Coastguard Worker     IH264_LEVEL_12         = 12,
79*495ae853SAndroid Build Coastguard Worker     IH264_LEVEL_13         = 13,
80*495ae853SAndroid Build Coastguard Worker     IH264_LEVEL_20         = 20,
81*495ae853SAndroid Build Coastguard Worker     IH264_LEVEL_21         = 21,
82*495ae853SAndroid Build Coastguard Worker     IH264_LEVEL_22         = 22,
83*495ae853SAndroid Build Coastguard Worker     IH264_LEVEL_30         = 30,
84*495ae853SAndroid Build Coastguard Worker     IH264_LEVEL_31         = 31,
85*495ae853SAndroid Build Coastguard Worker     IH264_LEVEL_32         = 32,
86*495ae853SAndroid Build Coastguard Worker     IH264_LEVEL_40         = 40,
87*495ae853SAndroid Build Coastguard Worker     IH264_LEVEL_41         = 41,
88*495ae853SAndroid Build Coastguard Worker     IH264_LEVEL_42         = 42,
89*495ae853SAndroid Build Coastguard Worker     IH264_LEVEL_50         = 50,
90*495ae853SAndroid Build Coastguard Worker     IH264_LEVEL_51         = 51,
91*495ae853SAndroid Build Coastguard Worker }IH264_LEVEL_T;
92*495ae853SAndroid Build Coastguard Worker 
93*495ae853SAndroid Build Coastguard Worker 
94*495ae853SAndroid Build Coastguard Worker /**
95*495ae853SAndroid Build Coastguard Worker ******************************************************************************
96*495ae853SAndroid Build Coastguard Worker  *  @enum  PIC TYPES
97*495ae853SAndroid Build Coastguard Worker  *  @brief Defines the set of possible picture type - not signaled in bitstream
98*495ae853SAndroid Build Coastguard Worker ******************************************************************************
99*495ae853SAndroid Build Coastguard Worker */
100*495ae853SAndroid Build Coastguard Worker typedef enum
101*495ae853SAndroid Build Coastguard Worker {
102*495ae853SAndroid Build Coastguard Worker     PIC_NA = 0x7FFFFFFF,
103*495ae853SAndroid Build Coastguard Worker     PIC_IDR = 0,
104*495ae853SAndroid Build Coastguard Worker     PIC_I = 1,
105*495ae853SAndroid Build Coastguard Worker     PIC_P = 2,
106*495ae853SAndroid Build Coastguard Worker     PIC_B = 3,
107*495ae853SAndroid Build Coastguard Worker     PIC_P_NONREF = 4,
108*495ae853SAndroid Build Coastguard Worker     PIC_B_NONREF = 5,
109*495ae853SAndroid Build Coastguard Worker     PIC_MAX,
110*495ae853SAndroid Build Coastguard Worker }PIC_TYPE_T;
111*495ae853SAndroid Build Coastguard Worker 
112*495ae853SAndroid Build Coastguard Worker /**
113*495ae853SAndroid Build Coastguard Worker ******************************************************************************
114*495ae853SAndroid Build Coastguard Worker  *  @enum  FRAME-FIELD types
115*495ae853SAndroid Build Coastguard Worker  *  @brief Defines the set of possible field types.
116*495ae853SAndroid Build Coastguard Worker ******************************************************************************
117*495ae853SAndroid Build Coastguard Worker */
118*495ae853SAndroid Build Coastguard Worker enum
119*495ae853SAndroid Build Coastguard Worker {
120*495ae853SAndroid Build Coastguard Worker     TOP_FIELD,
121*495ae853SAndroid Build Coastguard Worker     BOTTOM_FIELD,
122*495ae853SAndroid Build Coastguard Worker     FRAME,
123*495ae853SAndroid Build Coastguard Worker };
124*495ae853SAndroid Build Coastguard Worker 
125*495ae853SAndroid Build Coastguard Worker /**
126*495ae853SAndroid Build Coastguard Worker ******************************************************************************
127*495ae853SAndroid Build Coastguard Worker  *  @enum  SLICE TYPES
128*495ae853SAndroid Build Coastguard Worker  *  @brief Defines the set of possible SLICE TYPES
129*495ae853SAndroid Build Coastguard Worker ******************************************************************************
130*495ae853SAndroid Build Coastguard Worker */
131*495ae853SAndroid Build Coastguard Worker enum
132*495ae853SAndroid Build Coastguard Worker {
133*495ae853SAndroid Build Coastguard Worker     PSLICE = 0,
134*495ae853SAndroid Build Coastguard Worker     BSLICE = 1,
135*495ae853SAndroid Build Coastguard Worker     ISLICE = 2,
136*495ae853SAndroid Build Coastguard Worker     SPSLICE = 3,
137*495ae853SAndroid Build Coastguard Worker     SISLICE = 4,
138*495ae853SAndroid Build Coastguard Worker     EPSLICE = 5,
139*495ae853SAndroid Build Coastguard Worker     EBSLICE = 6,
140*495ae853SAndroid Build Coastguard Worker     EISLICE = 7,
141*495ae853SAndroid Build Coastguard Worker     MAXSLICE_TYPE,
142*495ae853SAndroid Build Coastguard Worker };
143*495ae853SAndroid Build Coastguard Worker 
144*495ae853SAndroid Build Coastguard Worker /**
145*495ae853SAndroid Build Coastguard Worker ******************************************************************************
146*495ae853SAndroid Build Coastguard Worker  *  @enum  NAL_UNIT_TYPE
147*495ae853SAndroid Build Coastguard Worker  *  @brief Defines the set of possible nal unit types
148*495ae853SAndroid Build Coastguard Worker ******************************************************************************
149*495ae853SAndroid Build Coastguard Worker */
150*495ae853SAndroid Build Coastguard Worker typedef enum NAL_UNIT_TYPE_T
151*495ae853SAndroid Build Coastguard Worker {
152*495ae853SAndroid Build Coastguard Worker     NAL_UNSPEC_0 = 0,
153*495ae853SAndroid Build Coastguard Worker     NAL_SLICE_NON_IDR = 1,
154*495ae853SAndroid Build Coastguard Worker     NAL_SLICE_DPA = 2,
155*495ae853SAndroid Build Coastguard Worker     NAL_SLICE_DPB = 3,
156*495ae853SAndroid Build Coastguard Worker     NAL_SLICE_DPC = 4,
157*495ae853SAndroid Build Coastguard Worker     NAL_SLICE_IDR = 5,
158*495ae853SAndroid Build Coastguard Worker     NAL_SEI = 6,
159*495ae853SAndroid Build Coastguard Worker     NAL_SPS = 7,
160*495ae853SAndroid Build Coastguard Worker     NAL_PPS = 8,
161*495ae853SAndroid Build Coastguard Worker     NAL_AUD = 9,
162*495ae853SAndroid Build Coastguard Worker     NAL_EOSEQ = 10,
163*495ae853SAndroid Build Coastguard Worker     NAL_EOSTR = 11,
164*495ae853SAndroid Build Coastguard Worker     NAL_FILLER = 12,
165*495ae853SAndroid Build Coastguard Worker     NAL_SPSE = 13,
166*495ae853SAndroid Build Coastguard Worker     NAL_PREFIX = 14,
167*495ae853SAndroid Build Coastguard Worker     NAL_SUBSET_SPS = 15,
168*495ae853SAndroid Build Coastguard Worker     NAL_AUX_PIC = 19,
169*495ae853SAndroid Build Coastguard Worker     NAL_CODED_SLICE_EXTENSION = 20,
170*495ae853SAndroid Build Coastguard Worker     NAL_UNSPEC_31 = 24,
171*495ae853SAndroid Build Coastguard Worker } NAL_UNIT_TYPE_T;
172*495ae853SAndroid Build Coastguard Worker 
173*495ae853SAndroid Build Coastguard Worker /**
174*495ae853SAndroid Build Coastguard Worker ******************************************************************************
175*495ae853SAndroid Build Coastguard Worker  *  @enum  CHROMA_FORMAT_IDC
176*495ae853SAndroid Build Coastguard Worker  *  @brief Defines the set of possible chroma formats
177*495ae853SAndroid Build Coastguard Worker  *  Note Chorma format Do not change enum values
178*495ae853SAndroid Build Coastguard Worker ******************************************************************************
179*495ae853SAndroid Build Coastguard Worker */
180*495ae853SAndroid Build Coastguard Worker enum
181*495ae853SAndroid Build Coastguard Worker {
182*495ae853SAndroid Build Coastguard Worker     CHROMA_FMT_IDC_MONOCHROME   = 0,
183*495ae853SAndroid Build Coastguard Worker     CHROMA_FMT_IDC_YUV420       = 1,
184*495ae853SAndroid Build Coastguard Worker     CHROMA_FMT_IDC_YUV422       = 2,
185*495ae853SAndroid Build Coastguard Worker     CHROMA_FMT_IDC_YUV444       = 3,
186*495ae853SAndroid Build Coastguard Worker     CHROMA_FMT_IDC_YUV444_PLANES = 4,
187*495ae853SAndroid Build Coastguard Worker };
188*495ae853SAndroid Build Coastguard Worker 
189*495ae853SAndroid Build Coastguard Worker 
190*495ae853SAndroid Build Coastguard Worker /**
191*495ae853SAndroid Build Coastguard Worker ******************************************************************************
192*495ae853SAndroid Build Coastguard Worker  *  @enum  MBMODES_I16x16
193*495ae853SAndroid Build Coastguard Worker  *  @brief Defines the set of possible intra 16x16 mb modes
194*495ae853SAndroid Build Coastguard Worker ******************************************************************************
195*495ae853SAndroid Build Coastguard Worker */
196*495ae853SAndroid Build Coastguard Worker typedef enum
197*495ae853SAndroid Build Coastguard Worker {
198*495ae853SAndroid Build Coastguard Worker     VERT_I16x16     = 0,
199*495ae853SAndroid Build Coastguard Worker     HORZ_I16x16     = 1,
200*495ae853SAndroid Build Coastguard Worker     DC_I16x16       = 2,
201*495ae853SAndroid Build Coastguard Worker     PLANE_I16x16    = 3,
202*495ae853SAndroid Build Coastguard Worker     MAX_I16x16      = 4,
203*495ae853SAndroid Build Coastguard Worker }MBMODES_I16x16;
204*495ae853SAndroid Build Coastguard Worker 
205*495ae853SAndroid Build Coastguard Worker /**
206*495ae853SAndroid Build Coastguard Worker ******************************************************************************
207*495ae853SAndroid Build Coastguard Worker  *  @enum  MBMODES_I4x4
208*495ae853SAndroid Build Coastguard Worker  *  @brief Defines the set of possible intra 4x4 mb modes
209*495ae853SAndroid Build Coastguard Worker ******************************************************************************
210*495ae853SAndroid Build Coastguard Worker */
211*495ae853SAndroid Build Coastguard Worker typedef enum
212*495ae853SAndroid Build Coastguard Worker {
213*495ae853SAndroid Build Coastguard Worker     VERT_I4x4     = 0,
214*495ae853SAndroid Build Coastguard Worker     HORZ_I4x4     = 1,
215*495ae853SAndroid Build Coastguard Worker     DC_I4x4       = 2,
216*495ae853SAndroid Build Coastguard Worker     DIAG_DL_I4x4  = 3,
217*495ae853SAndroid Build Coastguard Worker     DIAG_DR_I4x4  = 4,
218*495ae853SAndroid Build Coastguard Worker     VERT_R_I4x4   = 5,
219*495ae853SAndroid Build Coastguard Worker     HORZ_D_I4x4   = 6,
220*495ae853SAndroid Build Coastguard Worker     VERT_L_I4x4   = 7,
221*495ae853SAndroid Build Coastguard Worker     HORZ_U_I4x4   = 8,
222*495ae853SAndroid Build Coastguard Worker     MAX_I4x4      = 9,
223*495ae853SAndroid Build Coastguard Worker }MBMODES_I4x4;
224*495ae853SAndroid Build Coastguard Worker 
225*495ae853SAndroid Build Coastguard Worker /**
226*495ae853SAndroid Build Coastguard Worker ******************************************************************************
227*495ae853SAndroid Build Coastguard Worker  *  @enum  MBMODES_I8x8
228*495ae853SAndroid Build Coastguard Worker  *  @brief Defines the set of possible intra 8x8 mb modes
229*495ae853SAndroid Build Coastguard Worker ******************************************************************************
230*495ae853SAndroid Build Coastguard Worker */
231*495ae853SAndroid Build Coastguard Worker typedef enum
232*495ae853SAndroid Build Coastguard Worker {
233*495ae853SAndroid Build Coastguard Worker     VERT_I8x8     = 0,
234*495ae853SAndroid Build Coastguard Worker     HORZ_I8x8     = 1,
235*495ae853SAndroid Build Coastguard Worker     DC_I8x8       = 2,
236*495ae853SAndroid Build Coastguard Worker     DIAG_DL_I8x8  = 3,
237*495ae853SAndroid Build Coastguard Worker     DIAG_DR_I8x8  = 4,
238*495ae853SAndroid Build Coastguard Worker     VERT_R_I8x8   = 5,
239*495ae853SAndroid Build Coastguard Worker     HORZ_D_I8x8   = 6,
240*495ae853SAndroid Build Coastguard Worker     VERT_L_I8x8   = 7,
241*495ae853SAndroid Build Coastguard Worker     HORZ_U_I8x8   = 8,
242*495ae853SAndroid Build Coastguard Worker     MAX_I8x8      = 9,
243*495ae853SAndroid Build Coastguard Worker }MBMODES_I8x8;
244*495ae853SAndroid Build Coastguard Worker 
245*495ae853SAndroid Build Coastguard Worker /**
246*495ae853SAndroid Build Coastguard Worker ******************************************************************************
247*495ae853SAndroid Build Coastguard Worker  *  @enum  MBMODES_CHROMA_I8x8 (Chroma)
248*495ae853SAndroid Build Coastguard Worker  *  @brief Defines the set of possible intra 8x8 mb modes for chroma
249*495ae853SAndroid Build Coastguard Worker ******************************************************************************
250*495ae853SAndroid Build Coastguard Worker */
251*495ae853SAndroid Build Coastguard Worker typedef enum
252*495ae853SAndroid Build Coastguard Worker {
253*495ae853SAndroid Build Coastguard Worker     DC_CH_I8x8     = 0,
254*495ae853SAndroid Build Coastguard Worker     HORZ_CH_I8x8   = 1,
255*495ae853SAndroid Build Coastguard Worker     VERT_CH_I8x8   = 2,
256*495ae853SAndroid Build Coastguard Worker     PLANE_CH_I8x8  = 3,
257*495ae853SAndroid Build Coastguard Worker     MAX_CH_I8x8    = 4,
258*495ae853SAndroid Build Coastguard Worker }MBMODES_CHROMA_I8x8;
259*495ae853SAndroid Build Coastguard Worker 
260*495ae853SAndroid Build Coastguard Worker /**
261*495ae853SAndroid Build Coastguard Worker ******************************************************************************
262*495ae853SAndroid Build Coastguard Worker  *  @enum  MBTYPES
263*495ae853SAndroid Build Coastguard Worker  *  @brief Defines the set of possible macro block types
264*495ae853SAndroid Build Coastguard Worker ******************************************************************************
265*495ae853SAndroid Build Coastguard Worker */
266*495ae853SAndroid Build Coastguard Worker typedef enum
267*495ae853SAndroid Build Coastguard Worker {
268*495ae853SAndroid Build Coastguard Worker     INVALID_MB_TYPE = -1,
269*495ae853SAndroid Build Coastguard Worker     I16x16 = 0,
270*495ae853SAndroid Build Coastguard Worker     I4x4 = 1,
271*495ae853SAndroid Build Coastguard Worker     I8x8 = 2,
272*495ae853SAndroid Build Coastguard Worker     P16x16 = 3,
273*495ae853SAndroid Build Coastguard Worker     P16x8 = 4,
274*495ae853SAndroid Build Coastguard Worker     P8x16 = 5,
275*495ae853SAndroid Build Coastguard Worker     P8x8 = 6,
276*495ae853SAndroid Build Coastguard Worker     PSKIP = 7,
277*495ae853SAndroid Build Coastguard Worker     IPCM = 8,
278*495ae853SAndroid Build Coastguard Worker     B16x16 = 9,
279*495ae853SAndroid Build Coastguard Worker     BSKIP = 10,
280*495ae853SAndroid Build Coastguard Worker     BDIRECT = 11,
281*495ae853SAndroid Build Coastguard Worker     BASE_MODE = 12,
282*495ae853SAndroid Build Coastguard Worker     MAX_MBTYPES,
283*495ae853SAndroid Build Coastguard Worker } MBTYPES_T;
284*495ae853SAndroid Build Coastguard Worker 
285*495ae853SAndroid Build Coastguard Worker /* Pred Modes */
286*495ae853SAndroid Build Coastguard Worker enum
287*495ae853SAndroid Build Coastguard Worker {
288*495ae853SAndroid Build Coastguard Worker     BLOCK_TYPE_INTER_MB = 0,
289*495ae853SAndroid Build Coastguard Worker     BLOCK_TYPE_INTRA_MB = 1,
290*495ae853SAndroid Build Coastguard Worker     BLOCK_TYPE_SKIP_MB = 2
291*495ae853SAndroid Build Coastguard Worker };
292*495ae853SAndroid Build Coastguard Worker 
293*495ae853SAndroid Build Coastguard Worker /* Prediction list */
294*495ae853SAndroid Build Coastguard Worker /* Do not change enum values */
295*495ae853SAndroid Build Coastguard Worker enum
296*495ae853SAndroid Build Coastguard Worker {
297*495ae853SAndroid Build Coastguard Worker     PRED_L0 = 0,
298*495ae853SAndroid Build Coastguard Worker     PRED_L1 = 1,
299*495ae853SAndroid Build Coastguard Worker     PRED_BI = 2
300*495ae853SAndroid Build Coastguard Worker };
301*495ae853SAndroid Build Coastguard Worker 
302*495ae853SAndroid Build Coastguard Worker 
303*495ae853SAndroid Build Coastguard Worker /**
304*495ae853SAndroid Build Coastguard Worker ******************************************************************************
305*495ae853SAndroid Build Coastguard Worker  *  @enum  ENTROPY_BLK_TYPE
306*495ae853SAndroid Build Coastguard Worker  *  @brief Defines the nature of blocks employed in entropy coding
307*495ae853SAndroid Build Coastguard Worker ******************************************************************************
308*495ae853SAndroid Build Coastguard Worker */
309*495ae853SAndroid Build Coastguard Worker typedef enum
310*495ae853SAndroid Build Coastguard Worker {
311*495ae853SAndroid Build Coastguard Worker     ENTROPY_BLK_INVALID = -1,
312*495ae853SAndroid Build Coastguard Worker     CAVLC_LUMA_4x4_DC = 0,
313*495ae853SAndroid Build Coastguard Worker     CAVLC_LUMA_4x4_AC = 1,
314*495ae853SAndroid Build Coastguard Worker     CAVLC_LUMA_4x4 = 2,
315*495ae853SAndroid Build Coastguard Worker     CAVLC_CHROMA_4x4_DC = 3,
316*495ae853SAndroid Build Coastguard Worker     CAVLC_CHROMA_4x4_AC = 4,
317*495ae853SAndroid Build Coastguard Worker } ENTROPY_BLK_TYPE;
318*495ae853SAndroid Build Coastguard Worker 
319*495ae853SAndroid Build Coastguard Worker /**
320*495ae853SAndroid Build Coastguard Worker ******************************************************************************
321*495ae853SAndroid Build Coastguard Worker  *  @enum  ENTROPY_MODE
322*495ae853SAndroid Build Coastguard Worker  *  @brief Entropy coding modes
323*495ae853SAndroid Build Coastguard Worker ******************************************************************************
324*495ae853SAndroid Build Coastguard Worker */
325*495ae853SAndroid Build Coastguard Worker typedef enum
326*495ae853SAndroid Build Coastguard Worker {
327*495ae853SAndroid Build Coastguard Worker     CAVLC = 0,
328*495ae853SAndroid Build Coastguard Worker     CABAC = 1,
329*495ae853SAndroid Build Coastguard Worker } ENTROPY_MODE;
330*495ae853SAndroid Build Coastguard Worker 
331*495ae853SAndroid Build Coastguard Worker /**
332*495ae853SAndroid Build Coastguard Worker ******************************************************************************
333*495ae853SAndroid Build Coastguard Worker  *  @enum  COMPONENT_TYPE
334*495ae853SAndroid Build Coastguard Worker  *  @brief components Y, U & V
335*495ae853SAndroid Build Coastguard Worker ******************************************************************************
336*495ae853SAndroid Build Coastguard Worker */
337*495ae853SAndroid Build Coastguard Worker typedef enum
338*495ae853SAndroid Build Coastguard Worker {
339*495ae853SAndroid Build Coastguard Worker     Y,
340*495ae853SAndroid Build Coastguard Worker     U,
341*495ae853SAndroid Build Coastguard Worker     V,
342*495ae853SAndroid Build Coastguard Worker } COMPONENT_TYPE;
343*495ae853SAndroid Build Coastguard Worker 
344*495ae853SAndroid Build Coastguard Worker 
345*495ae853SAndroid Build Coastguard Worker /**
346*495ae853SAndroid Build Coastguard Worker ******************************************************************************
347*495ae853SAndroid Build Coastguard Worker  *  @enum  MBPART_PREDMODE_T
348*495ae853SAndroid Build Coastguard Worker  *  @brief MbPartps_pred_mode_ctxt Table 7-11 to 7-14
349*495ae853SAndroid Build Coastguard Worker ******************************************************************************
350*495ae853SAndroid Build Coastguard Worker */
351*495ae853SAndroid Build Coastguard Worker typedef enum
352*495ae853SAndroid Build Coastguard Worker {
353*495ae853SAndroid Build Coastguard Worker     MBPART_NA,
354*495ae853SAndroid Build Coastguard Worker     MBPART_I4x4,
355*495ae853SAndroid Build Coastguard Worker     MBPART_I8x8,
356*495ae853SAndroid Build Coastguard Worker     MBPART_I16x16,
357*495ae853SAndroid Build Coastguard Worker     MBPART_L0,
358*495ae853SAndroid Build Coastguard Worker     MBPART_L1,
359*495ae853SAndroid Build Coastguard Worker     MBPART_BI,
360*495ae853SAndroid Build Coastguard Worker     MBPART_DIRECT,
361*495ae853SAndroid Build Coastguard Worker     MBPART_IPCM,
362*495ae853SAndroid Build Coastguard Worker }MBPART_PREDMODE_T;
363*495ae853SAndroid Build Coastguard Worker 
364*495ae853SAndroid Build Coastguard Worker 
365*495ae853SAndroid Build Coastguard Worker typedef enum
366*495ae853SAndroid Build Coastguard Worker {
367*495ae853SAndroid Build Coastguard Worker     I_NxN,
368*495ae853SAndroid Build Coastguard Worker     I_16x16_0_0_0,
369*495ae853SAndroid Build Coastguard Worker     I_16x16_1_0_0,
370*495ae853SAndroid Build Coastguard Worker     I_16x16_2_0_0,
371*495ae853SAndroid Build Coastguard Worker     I_16x16_3_0_0,
372*495ae853SAndroid Build Coastguard Worker     I_16x16_0_1_0,
373*495ae853SAndroid Build Coastguard Worker     I_16x16_1_1_0,
374*495ae853SAndroid Build Coastguard Worker     I_16x16_2_1_0,
375*495ae853SAndroid Build Coastguard Worker     I_16x16_3_1_0,
376*495ae853SAndroid Build Coastguard Worker     I_16x16_0_2_0,
377*495ae853SAndroid Build Coastguard Worker     I_16x16_1_2_0,
378*495ae853SAndroid Build Coastguard Worker     I_16x16_2_2_0,
379*495ae853SAndroid Build Coastguard Worker     I_16x16_3_2_0,
380*495ae853SAndroid Build Coastguard Worker     I_16x16_0_0_1,
381*495ae853SAndroid Build Coastguard Worker     I_16x16_1_0_1,
382*495ae853SAndroid Build Coastguard Worker     I_16x16_2_0_1,
383*495ae853SAndroid Build Coastguard Worker     I_16x16_3_0_1,
384*495ae853SAndroid Build Coastguard Worker     I_16x16_0_1_1,
385*495ae853SAndroid Build Coastguard Worker     I_16x16_1_1_1,
386*495ae853SAndroid Build Coastguard Worker     I_16x16_2_1_1,
387*495ae853SAndroid Build Coastguard Worker     I_16x16_3_1_1,
388*495ae853SAndroid Build Coastguard Worker     I_16x16_0_2_1,
389*495ae853SAndroid Build Coastguard Worker     I_16x16_1_2_1,
390*495ae853SAndroid Build Coastguard Worker     I_16x16_2_2_1,
391*495ae853SAndroid Build Coastguard Worker     I_16x16_3_2_1,
392*495ae853SAndroid Build Coastguard Worker     I_PCM,
393*495ae853SAndroid Build Coastguard Worker }MBTYPE_ISLICE_T;
394*495ae853SAndroid Build Coastguard Worker 
395*495ae853SAndroid Build Coastguard Worker typedef enum
396*495ae853SAndroid Build Coastguard Worker {
397*495ae853SAndroid Build Coastguard Worker     P_L0_16x16,
398*495ae853SAndroid Build Coastguard Worker     P_L0_L0_16x8,
399*495ae853SAndroid Build Coastguard Worker     P_L0_L0_8x16,
400*495ae853SAndroid Build Coastguard Worker     P_8x8,
401*495ae853SAndroid Build Coastguard Worker     P_8x8REF0,
402*495ae853SAndroid Build Coastguard Worker     P_SKIP
403*495ae853SAndroid Build Coastguard Worker }MBTYPE_PSLICE_T;
404*495ae853SAndroid Build Coastguard Worker 
405*495ae853SAndroid Build Coastguard Worker typedef enum
406*495ae853SAndroid Build Coastguard Worker {
407*495ae853SAndroid Build Coastguard Worker     B_DIRECT_16x16,
408*495ae853SAndroid Build Coastguard Worker     B_L0_16x16,
409*495ae853SAndroid Build Coastguard Worker     B_L1_16x16,
410*495ae853SAndroid Build Coastguard Worker     B_BI_16x16,
411*495ae853SAndroid Build Coastguard Worker     B_L0_L0_16x8,
412*495ae853SAndroid Build Coastguard Worker     B_L0_L0_8x16,
413*495ae853SAndroid Build Coastguard Worker     B_L1_L1_16x8,
414*495ae853SAndroid Build Coastguard Worker     B_L1_L1_8x16,
415*495ae853SAndroid Build Coastguard Worker     B_L0_L1_16x8,
416*495ae853SAndroid Build Coastguard Worker     B_L0_L1_8x16,
417*495ae853SAndroid Build Coastguard Worker     B_L1_L0_16x8,
418*495ae853SAndroid Build Coastguard Worker     B_L1_L0_8x16,
419*495ae853SAndroid Build Coastguard Worker     B_L0_BI_16x8,
420*495ae853SAndroid Build Coastguard Worker     B_L0_BI_8x16,
421*495ae853SAndroid Build Coastguard Worker     B_L1_BI_16x8,
422*495ae853SAndroid Build Coastguard Worker     B_L1_BI_8x16,
423*495ae853SAndroid Build Coastguard Worker     B_BI_L0_16x8,
424*495ae853SAndroid Build Coastguard Worker     B_BI_L0_8x16,
425*495ae853SAndroid Build Coastguard Worker     B_BI_L1_16x8,
426*495ae853SAndroid Build Coastguard Worker     B_BI_L1_8x16,
427*495ae853SAndroid Build Coastguard Worker     B_BI_BI_16x8,
428*495ae853SAndroid Build Coastguard Worker     B_BI_BI_8x16,
429*495ae853SAndroid Build Coastguard Worker     B_8x8,
430*495ae853SAndroid Build Coastguard Worker     B_SKIP,
431*495ae853SAndroid Build Coastguard Worker }MBTYPE_BSLICE_T;
432*495ae853SAndroid Build Coastguard Worker 
433*495ae853SAndroid Build Coastguard Worker 
434*495ae853SAndroid Build Coastguard Worker typedef enum
435*495ae853SAndroid Build Coastguard Worker {
436*495ae853SAndroid Build Coastguard Worker     P_L0_8x8,
437*495ae853SAndroid Build Coastguard Worker     P_L0_8x4,
438*495ae853SAndroid Build Coastguard Worker     P_L0_4x8,
439*495ae853SAndroid Build Coastguard Worker     P_L0_4x4,
440*495ae853SAndroid Build Coastguard Worker }SUBMBTYPE_PSLICE_T;
441*495ae853SAndroid Build Coastguard Worker 
442*495ae853SAndroid Build Coastguard Worker typedef enum
443*495ae853SAndroid Build Coastguard Worker {
444*495ae853SAndroid Build Coastguard Worker     B_DIRECT_8x8,
445*495ae853SAndroid Build Coastguard Worker     B_L0_8x8,
446*495ae853SAndroid Build Coastguard Worker     B_L1_8x8,
447*495ae853SAndroid Build Coastguard Worker     B_BI_8x8,
448*495ae853SAndroid Build Coastguard Worker     B_L0_8x4,
449*495ae853SAndroid Build Coastguard Worker     B_L0_4x8,
450*495ae853SAndroid Build Coastguard Worker     B_L1_8x4,
451*495ae853SAndroid Build Coastguard Worker     B_L1_4x8,
452*495ae853SAndroid Build Coastguard Worker     B_BI_8x4,
453*495ae853SAndroid Build Coastguard Worker     B_BI_4x8,
454*495ae853SAndroid Build Coastguard Worker     B_L0_4x4,
455*495ae853SAndroid Build Coastguard Worker     B_L1_4x4,
456*495ae853SAndroid Build Coastguard Worker     B_BI_4x4,
457*495ae853SAndroid Build Coastguard Worker }SUBMBTYPE_BSLICE_T;
458*495ae853SAndroid Build Coastguard Worker 
459*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
460*495ae853SAndroid Build Coastguard Worker /* Constant Macros                                                           */
461*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
462*495ae853SAndroid Build Coastguard Worker 
463*495ae853SAndroid Build Coastguard Worker /**
464*495ae853SAndroid Build Coastguard Worker  * DC Mode pattern for 4 4x4 sub blocks in an MB row
465*495ae853SAndroid Build Coastguard Worker  */
466*495ae853SAndroid Build Coastguard Worker #define DC_I16X16_MB_ROW (DC_I16x16 << 24) | (DC_I16x16 << 16) | \
467*495ae853SAndroid Build Coastguard Worker                          (DC_I16x16 << 8)  | DC_I16x16
468*495ae853SAndroid Build Coastguard Worker 
469*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
470*495ae853SAndroid Build Coastguard Worker /* Reference frame defs                                                      */
471*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
472*495ae853SAndroid Build Coastguard Worker /* Maximum DPB size */
473*495ae853SAndroid Build Coastguard Worker #define MAX_DPB_SIZE 16
474*495ae853SAndroid Build Coastguard Worker 
475*495ae853SAndroid Build Coastguard Worker /* Maximum mmco commands in slice header */
476*495ae853SAndroid Build Coastguard Worker #define MAX_MMCO_COMMANDS 32
477*495ae853SAndroid Build Coastguard Worker 
478*495ae853SAndroid Build Coastguard Worker /* Maximum reference reorder idc */
479*495ae853SAndroid Build Coastguard Worker #define MAX_MODICATION_IDC 32
480*495ae853SAndroid Build Coastguard Worker 
481*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
482*495ae853SAndroid Build Coastguard Worker /* SPS restrictions                                                          */
483*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
484*495ae853SAndroid Build Coastguard Worker 
485*495ae853SAndroid Build Coastguard Worker /* Number of SPS allowed */
486*495ae853SAndroid Build Coastguard Worker /* An extra buffer is allocated to write the parsed data
487*495ae853SAndroid Build Coastguard Worker  * It is copied to the appropriate location later */
488*495ae853SAndroid Build Coastguard Worker #define MAX_SPS_CNT         (32 + 1)
489*495ae853SAndroid Build Coastguard Worker 
490*495ae853SAndroid Build Coastguard Worker /* Maximum long term reference pics */
491*495ae853SAndroid Build Coastguard Worker #define MAX_LTREF_PICS_SPS 16
492*495ae853SAndroid Build Coastguard Worker 
493*495ae853SAndroid Build Coastguard Worker /* Maximum short term reference pics */
494*495ae853SAndroid Build Coastguard Worker #define MAX_STREF_PICS_SPS 64
495*495ae853SAndroid Build Coastguard Worker 
496*495ae853SAndroid Build Coastguard Worker 
497*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
498*495ae853SAndroid Build Coastguard Worker /* PPS restrictions                                                          */
499*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
500*495ae853SAndroid Build Coastguard Worker 
501*495ae853SAndroid Build Coastguard Worker /* Number of PPS allowed  */
502*495ae853SAndroid Build Coastguard Worker /* An extra buffer is allocated to write the parsed data
503*495ae853SAndroid Build Coastguard Worker  * It is copied to the appropriate location later */
504*495ae853SAndroid Build Coastguard Worker #define MAX_PPS_CNT         (256 + 1)
505*495ae853SAndroid Build Coastguard Worker 
506*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
507*495ae853SAndroid Build Coastguard Worker /* Macro definitions for sizes of MB, PU, TU, CU                            */
508*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
509*495ae853SAndroid Build Coastguard Worker #define MB_SIZE             16
510*495ae853SAndroid Build Coastguard Worker #define BLK8x8SIZE          8
511*495ae853SAndroid Build Coastguard Worker #define BLK_SIZE            4
512*495ae853SAndroid Build Coastguard Worker 
513*495ae853SAndroid Build Coastguard Worker 
514*495ae853SAndroid Build Coastguard Worker /* TU Size Range */
515*495ae853SAndroid Build Coastguard Worker #define MAX_TU_SIZE         8
516*495ae853SAndroid Build Coastguard Worker #define MIN_TU_SIZE         4
517*495ae853SAndroid Build Coastguard Worker 
518*495ae853SAndroid Build Coastguard Worker /* Max Transform Size */
519*495ae853SAndroid Build Coastguard Worker #define MAX_TRANS_SIZE      (MAX_TU_SIZE*MAX_TU_SIZE)
520*495ae853SAndroid Build Coastguard Worker 
521*495ae853SAndroid Build Coastguard Worker /* PU Size Range */
522*495ae853SAndroid Build Coastguard Worker #define MAX_PU_SIZE         16
523*495ae853SAndroid Build Coastguard Worker #define MIN_PU_SIZE         4
524*495ae853SAndroid Build Coastguard Worker 
525*495ae853SAndroid Build Coastguard Worker /* Number of max TU in a MB row */
526*495ae853SAndroid Build Coastguard Worker #define MAX_TU_IN_MB_ROW   ((MB_SIZE / MIN_TU_SIZE))
527*495ae853SAndroid Build Coastguard Worker 
528*495ae853SAndroid Build Coastguard Worker #define MIN_TU_IN_MB_ROW ((MB_SIZE / MAX_TU_SIZE))
529*495ae853SAndroid Build Coastguard Worker 
530*495ae853SAndroid Build Coastguard Worker /* Number of max PU in a CTb row */
531*495ae853SAndroid Build Coastguard Worker #define MAX_PU_IN_MB_ROW   ((MB_SIZE / MIN_PU_SIZE))
532*495ae853SAndroid Build Coastguard Worker 
533*495ae853SAndroid Build Coastguard Worker #define MAX_TU_IN_MB_COL MAX_TU_IN_MB_ROW
534*495ae853SAndroid Build Coastguard Worker 
535*495ae853SAndroid Build Coastguard Worker #define MIN_TU_IN_MB_COL MIN_TU_IN_MB_ROW
536*495ae853SAndroid Build Coastguard Worker 
537*495ae853SAndroid Build Coastguard Worker #define MAX_PU_IN_MB_COL MAX_PU_IN_MB_ROW
538*495ae853SAndroid Build Coastguard Worker 
539*495ae853SAndroid Build Coastguard Worker /* Number of max PU in a MB */
540*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
541*495ae853SAndroid Build Coastguard Worker /* Note though for 64 x 64 MB, Max PU in MB is 128, in order to store        */
542*495ae853SAndroid Build Coastguard Worker /*  intra pred info, 256 entries are needed                                  */
543*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
544*495ae853SAndroid Build Coastguard Worker #define MAX_PU_IN_MB       ((MB_SIZE / MIN_PU_SIZE) * \
545*495ae853SAndroid Build Coastguard Worker                              (MB_SIZE / MIN_PU_SIZE))
546*495ae853SAndroid Build Coastguard Worker 
547*495ae853SAndroid Build Coastguard Worker /* Number of max TU in a MB */
548*495ae853SAndroid Build Coastguard Worker #define MAX_TU_IN_MB       ((MB_SIZE / MIN_TU_SIZE) * \
549*495ae853SAndroid Build Coastguard Worker                              (MB_SIZE / MIN_TU_SIZE))
550*495ae853SAndroid Build Coastguard Worker 
551*495ae853SAndroid Build Coastguard Worker #define MIN_TU_IN_MB (MIN_TU_IN_MB_ROW * MIN_TU_IN_MB_COL)
552*495ae853SAndroid Build Coastguard Worker 
553*495ae853SAndroid Build Coastguard Worker #define NUM_4x4_IN_8x8 4
554*495ae853SAndroid Build Coastguard Worker 
555*495ae853SAndroid Build Coastguard Worker #define NUM_COEFFS_IN_MIN_TU (MIN_TU_SIZE * MIN_TU_SIZE)
556*495ae853SAndroid Build Coastguard Worker 
557*495ae853SAndroid Build Coastguard Worker /**
558*495ae853SAndroid Build Coastguard Worker  * Maximum transform depths
559*495ae853SAndroid Build Coastguard Worker  */
560*495ae853SAndroid Build Coastguard Worker #define MAX_TRAFO_DEPTH 5
561*495ae853SAndroid Build Coastguard Worker 
562*495ae853SAndroid Build Coastguard Worker #define MAX_DC_4x4_SUBBLK_LUMA 1
563*495ae853SAndroid Build Coastguard Worker #define MAX_AC_4x4_SUBBLK_LUMA 16
564*495ae853SAndroid Build Coastguard Worker #define MAX_DC_4x4_SUBBLK_CHROMA 2
565*495ae853SAndroid Build Coastguard Worker #define MAX_AC_4x4_SUBBLK_CHROMA 8
566*495ae853SAndroid Build Coastguard Worker 
567*495ae853SAndroid Build Coastguard Worker #define MAX_4x4_SUBBLKS (MAX_DC_4x4_SUBBLK_LUMA + MAX_DC_4x4_SUBBLK_CHROMA +\
568*495ae853SAndroid Build Coastguard Worker                          MAX_AC_4x4_SUBBLK_LUMA + MAX_AC_4x4_SUBBLK_CHROMA)
569*495ae853SAndroid Build Coastguard Worker 
570*495ae853SAndroid Build Coastguard Worker /* Max number of deblocking edges */
571*495ae853SAndroid Build Coastguard Worker #define MAX_VERT_DEBLK_EDGES ((MB_SIZE/8) * (MB_SIZE/4))
572*495ae853SAndroid Build Coastguard Worker #define MAX_HORZ_DEBLK_EDGES ((MB_SIZE/4) * (MB_SIZE/8))
573*495ae853SAndroid Build Coastguard Worker 
574*495ae853SAndroid Build Coastguard Worker /* Qp can not change below 8x8 level */
575*495ae853SAndroid Build Coastguard Worker #define MAX_DEBLK_QP_CNT     ((MB_SIZE/8) * (MB_SIZE/8))
576*495ae853SAndroid Build Coastguard Worker 
577*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
578*495ae853SAndroid Build Coastguard Worker /* Parsing related macros                                                    */
579*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
580*495ae853SAndroid Build Coastguard Worker #define SUBBLK_COEFF_CNT    16
581*495ae853SAndroid Build Coastguard Worker 
582*495ae853SAndroid Build Coastguard Worker /* Quant and Trans defs */
583*495ae853SAndroid Build Coastguard Worker 
584*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
585*495ae853SAndroid Build Coastguard Worker /* Sizes for Transform functions                                             */
586*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
587*495ae853SAndroid Build Coastguard Worker #define TRANS_SIZE_4   4
588*495ae853SAndroid Build Coastguard Worker #define TRANS_SIZE_8   8
589*495ae853SAndroid Build Coastguard Worker #define TRANS_SIZE_16 16
590*495ae853SAndroid Build Coastguard Worker #define TRANS_SIZE_32 32
591*495ae853SAndroid Build Coastguard Worker 
592*495ae853SAndroid Build Coastguard Worker 
593*495ae853SAndroid Build Coastguard Worker #define IT_SHIFT_STAGE_1 7
594*495ae853SAndroid Build Coastguard Worker #define IT_SHIFT_STAGE_2 12
595*495ae853SAndroid Build Coastguard Worker 
596*495ae853SAndroid Build Coastguard Worker /**
597*495ae853SAndroid Build Coastguard Worker  * @breif  Maximum transform dynamic range (excluding sign bit)
598*495ae853SAndroid Build Coastguard Worker  */
599*495ae853SAndroid Build Coastguard Worker #define MAX_TR_DYNAMIC_RANGE  15
600*495ae853SAndroid Build Coastguard Worker 
601*495ae853SAndroid Build Coastguard Worker /**
602*495ae853SAndroid Build Coastguard Worker  * @brief  Q(QP%6) * IQ(QP%6) = 2^20
603*495ae853SAndroid Build Coastguard Worker  */
604*495ae853SAndroid Build Coastguard Worker #define QUANT_IQUANT_SHIFT    20
605*495ae853SAndroid Build Coastguard Worker 
606*495ae853SAndroid Build Coastguard Worker /**
607*495ae853SAndroid Build Coastguard Worker  * @breif Q factor for Qp%6 multiplication
608*495ae853SAndroid Build Coastguard Worker  */
609*495ae853SAndroid Build Coastguard Worker #define QUANT_SHIFT           14
610*495ae853SAndroid Build Coastguard Worker 
611*495ae853SAndroid Build Coastguard Worker /**
612*495ae853SAndroid Build Coastguard Worker  * @breif Q shift factor for flat rescale matrix weights
613*495ae853SAndroid Build Coastguard Worker  */
614*495ae853SAndroid Build Coastguard Worker #define FLAT_RESCALE_MAT_Q_SHIFT    11
615*495ae853SAndroid Build Coastguard Worker 
616*495ae853SAndroid Build Coastguard Worker /**
617*495ae853SAndroid Build Coastguard Worker  * @breif  Scaling matrix is represented in Q15 format
618*495ae853SAndroid Build Coastguard Worker  */
619*495ae853SAndroid Build Coastguard Worker #define SCALING_Q_SHIFT       15
620*495ae853SAndroid Build Coastguard Worker 
621*495ae853SAndroid Build Coastguard Worker /**
622*495ae853SAndroid Build Coastguard Worker  * @brief  rounding factor for quantization represented in Q9 format
623*495ae853SAndroid Build Coastguard Worker  */
624*495ae853SAndroid Build Coastguard Worker #define QUANT_ROUND_FACTOR_Q   9
625*495ae853SAndroid Build Coastguard Worker 
626*495ae853SAndroid Build Coastguard Worker /**
627*495ae853SAndroid Build Coastguard Worker  * @brief  Minimum qp supported in H264 spec
628*495ae853SAndroid Build Coastguard Worker  */
629*495ae853SAndroid Build Coastguard Worker #define MIN_H264_QP 0
630*495ae853SAndroid Build Coastguard Worker 
631*495ae853SAndroid Build Coastguard Worker /**
632*495ae853SAndroid Build Coastguard Worker  * @brief  Maximum qp supported in H264 spec
633*495ae853SAndroid Build Coastguard Worker  */
634*495ae853SAndroid Build Coastguard Worker #define MAX_H264_QP 51
635*495ae853SAndroid Build Coastguard Worker 
636*495ae853SAndroid Build Coastguard Worker /**
637*495ae853SAndroid Build Coastguard Worker  * @brief  Minimum delta scale supported in H264 spec
638*495ae853SAndroid Build Coastguard Worker  */
639*495ae853SAndroid Build Coastguard Worker #define MIN_H264_DELTA_SCALE (-128)
640*495ae853SAndroid Build Coastguard Worker 
641*495ae853SAndroid Build Coastguard Worker /**
642*495ae853SAndroid Build Coastguard Worker  * @brief  Maximum delta scale supported in H264 spec
643*495ae853SAndroid Build Coastguard Worker  */
644*495ae853SAndroid Build Coastguard Worker #define MAX_H264_DELTA_SCALE 127
645*495ae853SAndroid Build Coastguard Worker 
646*495ae853SAndroid Build Coastguard Worker /**
647*495ae853SAndroid Build Coastguard Worker  * @breif  Total number of transform sizes
648*495ae853SAndroid Build Coastguard Worker  * used for sizeID while getting scale matrix
649*495ae853SAndroid Build Coastguard Worker  */
650*495ae853SAndroid Build Coastguard Worker #define NUM_UNIQUE_TRANS_SIZE 4
651*495ae853SAndroid Build Coastguard Worker 
652*495ae853SAndroid Build Coastguard Worker /**
653*495ae853SAndroid Build Coastguard Worker  * @breif  Maximum number of bits in frameNumber signaling
654*495ae853SAndroid Build Coastguard Worker  */
655*495ae853SAndroid Build Coastguard Worker #define MAX_BITS_IN_FRAME_NUM     16
656*495ae853SAndroid Build Coastguard Worker 
657*495ae853SAndroid Build Coastguard Worker /**
658*495ae853SAndroid Build Coastguard Worker  * @breif  Maximum number of bits in POC LSB signaling
659*495ae853SAndroid Build Coastguard Worker  */
660*495ae853SAndroid Build Coastguard Worker #define MAX_BITS_IN_POC_LSB     16
661*495ae853SAndroid Build Coastguard Worker 
662*495ae853SAndroid Build Coastguard Worker 
663*495ae853SAndroid Build Coastguard Worker /**
664*495ae853SAndroid Build Coastguard Worker  * @breif  Maximum PIC Order Count type
665*495ae853SAndroid Build Coastguard Worker  */
666*495ae853SAndroid Build Coastguard Worker #define MAX_PIC_ORDER_COUNT_TYPE    2
667*495ae853SAndroid Build Coastguard Worker 
668*495ae853SAndroid Build Coastguard Worker 
669*495ae853SAndroid Build Coastguard Worker /**
670*495ae853SAndroid Build Coastguard Worker  * @breif  Maximum Weighted bipred idc
671*495ae853SAndroid Build Coastguard Worker  */
672*495ae853SAndroid Build Coastguard Worker #define MAX_WEIGHT_BIPRED_IDC 2
673*495ae853SAndroid Build Coastguard Worker 
674*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
675*495ae853SAndroid Build Coastguard Worker /* Number of scaling matrices for each transform size                        */
676*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
677*495ae853SAndroid Build Coastguard Worker #define SCALE_MAT_CNT_TRANS_SIZE_4    6
678*495ae853SAndroid Build Coastguard Worker #define SCALE_MAT_CNT_TRANS_SIZE_8    6
679*495ae853SAndroid Build Coastguard Worker #define SCALE_MAT_CNT_TRANS_SIZE_16   6
680*495ae853SAndroid Build Coastguard Worker #define SCALE_MAT_CNT_TRANS_SIZE_32   2
681*495ae853SAndroid Build Coastguard Worker 
682*495ae853SAndroid Build Coastguard Worker /* Maximum number of scale matrices for a given transform size */
683*495ae853SAndroid Build Coastguard Worker #define SCALE_MAT_CNT_MAX_PER_TRANS_SIZE 6
684*495ae853SAndroid Build Coastguard Worker 
685*495ae853SAndroid Build Coastguard Worker /* Total number of scale matrices */
686*495ae853SAndroid Build Coastguard Worker #define TOTAL_SCALE_MAT_COUNT   (SCALE_MAT_CNT_TRANS_SIZE_4     + \
687*495ae853SAndroid Build Coastguard Worker                                  SCALE_MAT_CNT_TRANS_SIZE_8     + \
688*495ae853SAndroid Build Coastguard Worker                                  SCALE_MAT_CNT_TRANS_SIZE_16    + \
689*495ae853SAndroid Build Coastguard Worker                                  SCALE_MAT_CNT_TRANS_SIZE_32)
690*495ae853SAndroid Build Coastguard Worker 
691*495ae853SAndroid Build Coastguard Worker 
692*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
693*495ae853SAndroid Build Coastguard Worker /* Intra pred Macros                                                         */
694*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/
695*495ae853SAndroid Build Coastguard Worker /** Planar Intra prediction mode */
696*495ae853SAndroid Build Coastguard Worker #define INTRA_PLANAR             0
697*495ae853SAndroid Build Coastguard Worker 
698*495ae853SAndroid Build Coastguard Worker /** DC Intra prediction mode */
699*495ae853SAndroid Build Coastguard Worker #define INTRA_DC                 1
700*495ae853SAndroid Build Coastguard Worker 
701*495ae853SAndroid Build Coastguard Worker /** Gives angular mode for intra prediction */
702*495ae853SAndroid Build Coastguard Worker #define INTRA_ANGULAR(x) (x)
703*495ae853SAndroid Build Coastguard Worker 
704*495ae853SAndroid Build Coastguard Worker /** Following is used to signal no intra prediction in case of pcm blocks
705*495ae853SAndroid Build Coastguard Worker  */
706*495ae853SAndroid Build Coastguard Worker #define INTRA_PRED_NONE  63
707*495ae853SAndroid Build Coastguard Worker 
708*495ae853SAndroid Build Coastguard Worker 
709*495ae853SAndroid Build Coastguard Worker /** Following is used to signal no intra prediction is needed for first three
710*495ae853SAndroid Build Coastguard Worker  * 4x4 luma blocks in case of 4x4 TU sizes
711*495ae853SAndroid Build Coastguard Worker  * Also used in pcm cases
712*495ae853SAndroid Build Coastguard Worker  */
713*495ae853SAndroid Build Coastguard Worker #define INTRA_PRED_CHROMA_IDX_NONE  7
714*495ae853SAndroid Build Coastguard Worker 
715*495ae853SAndroid Build Coastguard Worker 
716*495ae853SAndroid Build Coastguard Worker /**
717*495ae853SAndroid Build Coastguard Worker ******************************************************************************
718*495ae853SAndroid Build Coastguard Worker  *  @brief  neighbor availability masks
719*495ae853SAndroid Build Coastguard Worker ******************************************************************************
720*495ae853SAndroid Build Coastguard Worker  */
721*495ae853SAndroid Build Coastguard Worker #define LEFT_MB_AVAILABLE_MASK      0x01
722*495ae853SAndroid Build Coastguard Worker #define TOP_LEFT_MB_AVAILABLE_MASK  0x02
723*495ae853SAndroid Build Coastguard Worker #define TOP_MB_AVAILABLE_MASK       0x04
724*495ae853SAndroid Build Coastguard Worker #define TOP_RIGHT_MB_AVAILABLE_MASK 0x08
725*495ae853SAndroid Build Coastguard Worker 
726*495ae853SAndroid Build Coastguard Worker /**
727*495ae853SAndroid Build Coastguard Worker ******************************************************************************
728*495ae853SAndroid Build Coastguard Worker  *  @brief  SEI macros
729*495ae853SAndroid Build Coastguard Worker ******************************************************************************
730*495ae853SAndroid Build Coastguard Worker  */
731*495ae853SAndroid Build Coastguard Worker /*
732*495ae853SAndroid Build Coastguard Worker  * @brief  specifies the number of colour primary components of the mastering display
733*495ae853SAndroid Build Coastguard Worker  */
734*495ae853SAndroid Build Coastguard Worker #define NUM_SEI_MDCV_PRIMARIES      3
735*495ae853SAndroid Build Coastguard Worker 
736*495ae853SAndroid Build Coastguard Worker /*
737*495ae853SAndroid Build Coastguard Worker  * @brief  specifies the number of colour primary components of the nominal content colour volume
738*495ae853SAndroid Build Coastguard Worker  */
739*495ae853SAndroid Build Coastguard Worker #define NUM_SEI_CCV_PRIMARIES       3
740*495ae853SAndroid Build Coastguard Worker 
741*495ae853SAndroid Build Coastguard Worker #define DISPLAY_PRIMARIES_X_UPPER_LIMIT                37000
742*495ae853SAndroid Build Coastguard Worker #define DISPLAY_PRIMARIES_X_LOWER_LIMIT                5
743*495ae853SAndroid Build Coastguard Worker #define DISPLAY_PRIMARIES_X_DIVISION_FACTOR            5
744*495ae853SAndroid Build Coastguard Worker 
745*495ae853SAndroid Build Coastguard Worker #define DISPLAY_PRIMARIES_Y_UPPER_LIMIT                42000
746*495ae853SAndroid Build Coastguard Worker #define DISPLAY_PRIMARIES_Y_LOWER_LIMIT                5
747*495ae853SAndroid Build Coastguard Worker #define DISPLAY_PRIMARIES_Y_DIVISION_FACTOR            5
748*495ae853SAndroid Build Coastguard Worker 
749*495ae853SAndroid Build Coastguard Worker #define WHITE_POINT_X_UPPER_LIMIT                      37000
750*495ae853SAndroid Build Coastguard Worker #define WHITE_POINT_X_LOWER_LIMIT                      5
751*495ae853SAndroid Build Coastguard Worker #define WHITE_POINT_X_DIVISION_FACTOR                  5
752*495ae853SAndroid Build Coastguard Worker 
753*495ae853SAndroid Build Coastguard Worker #define WHITE_POINT_Y_UPPER_LIMIT                      42000
754*495ae853SAndroid Build Coastguard Worker #define WHITE_POINT_Y_LOWER_LIMIT                      5
755*495ae853SAndroid Build Coastguard Worker #define WHITE_POINT_Y_DIVISION_FACTOR                  5
756*495ae853SAndroid Build Coastguard Worker 
757*495ae853SAndroid Build Coastguard Worker #define MAX_DISPLAY_MASTERING_LUMINANCE_UPPER_LIMIT        100000000
758*495ae853SAndroid Build Coastguard Worker #define MAX_DISPLAY_MASTERING_LUMINANCE_LOWER_LIMIT        50000
759*495ae853SAndroid Build Coastguard Worker #define MAX_DISPLAY_MASTERING_LUMINANCE_DIVISION_FACTOR    10000
760*495ae853SAndroid Build Coastguard Worker 
761*495ae853SAndroid Build Coastguard Worker #define MIN_DISPLAY_MASTERING_LUMINANCE_UPPER_LIMIT        50000
762*495ae853SAndroid Build Coastguard Worker #define MIN_DISPLAY_MASTERING_LUMINANCE_LOWER_LIMIT        1
763*495ae853SAndroid Build Coastguard Worker 
764*495ae853SAndroid Build Coastguard Worker #define AMBIENT_LIGHT_X_UPPER_LIMIT        50000
765*495ae853SAndroid Build Coastguard Worker #define AMBIENT_LIGHT_Y_UPPER_LIMIT        50000
766*495ae853SAndroid Build Coastguard Worker 
767*495ae853SAndroid Build Coastguard Worker #define CCV_PRIMARIES_X_UPPER_LIMIT        5000000
768*495ae853SAndroid Build Coastguard Worker #define CCV_PRIMARIES_X_LOWER_LIMIT        -5000000
769*495ae853SAndroid Build Coastguard Worker #define CCV_PRIMARIES_Y_UPPER_LIMIT        5000000
770*495ae853SAndroid Build Coastguard Worker #define CCV_PRIMARIES_Y_LOWER_LIMIT        -5000000
771*495ae853SAndroid Build Coastguard Worker 
772*495ae853SAndroid Build Coastguard Worker #define RSD_MAX 255
773*495ae853SAndroid Build Coastguard Worker #define RSD_MIN -255
774*495ae853SAndroid Build Coastguard Worker #define CLIP_RSD(x) CLIP3(RSD_MIN, RSD_MAX, (x))
775*495ae853SAndroid Build Coastguard Worker 
776*495ae853SAndroid Build Coastguard Worker #define SII_MAX_SUB_LAYERS 8
777*495ae853SAndroid Build Coastguard Worker #define SII_SUB_LAYER_IDX 0
778*495ae853SAndroid Build Coastguard Worker #define SHUTTER_INTERVAL_INFO_PRESENT_FLAG 1
779*495ae853SAndroid Build Coastguard Worker #define SII_TIME_SCALE 24000000
780*495ae853SAndroid Build Coastguard Worker #define FIXED_SHUTTER_INTERVAL_WITHIN_CVS_FLAG 0
781*495ae853SAndroid Build Coastguard Worker #define SII_NUM_UNITS_IN_SHUTTER_INTERVAL 480000
782*495ae853SAndroid Build Coastguard Worker #define SII_MAX_SUB_LAYERS_MINUS1 (SII_MAX_SUB_LAYERS - 1)
783*495ae853SAndroid Build Coastguard Worker #define SUB_LAYER_NUM_UNITS_IN_SHUTTER_INTERVAL_HFR 480000
784*495ae853SAndroid Build Coastguard Worker #define SUB_LAYER_NUM_UNITS_IN_SHUTTER_INTERVAL_SFR 240000
785*495ae853SAndroid Build Coastguard Worker 
786*495ae853SAndroid Build Coastguard Worker /*
787*495ae853SAndroid Build Coastguard Worker  * @brief Below macros related to film grain characteristics SEI
788*495ae853SAndroid Build Coastguard Worker  */
789*495ae853SAndroid Build Coastguard Worker #define SEI_FGC_NUM_COLOUR_COMPONENTS 3
790*495ae853SAndroid Build Coastguard Worker #define SEI_FGC_MAX_NUM_MODEL_VALUES 6
791*495ae853SAndroid Build Coastguard Worker #define SEI_FGC_MAX_NUM_INTENSITY_INTERVALS 256
792*495ae853SAndroid Build Coastguard Worker 
793*495ae853SAndroid Build Coastguard Worker #endif /* _IH264_DEFS_H_ */
794