xref: /aosp_15_r20/external/libavc/decoder/ih264d_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 #ifndef _IH264D_DEFS_H_
21*495ae853SAndroid Build Coastguard Worker #define _IH264D_DEFS_H_
22*495ae853SAndroid Build Coastguard Worker 
23*495ae853SAndroid Build Coastguard Worker /**
24*495ae853SAndroid Build Coastguard Worker  ************************************************************************
25*495ae853SAndroid Build Coastguard Worker  * \file ih264d_defs.h
26*495ae853SAndroid Build Coastguard Worker  *
27*495ae853SAndroid Build Coastguard Worker  * \brief
28*495ae853SAndroid Build Coastguard Worker  *    Type definitions used in the code
29*495ae853SAndroid Build Coastguard Worker  *
30*495ae853SAndroid Build Coastguard Worker  * \date
31*495ae853SAndroid Build Coastguard Worker  *    19/11/2002
32*495ae853SAndroid Build Coastguard Worker  *
33*495ae853SAndroid Build Coastguard Worker  * \author  Sriram Sethuraman
34*495ae853SAndroid Build Coastguard Worker  *
35*495ae853SAndroid Build Coastguard Worker  ************************************************************************
36*495ae853SAndroid Build Coastguard Worker  */
37*495ae853SAndroid Build Coastguard Worker #include <stdint.h>
38*495ae853SAndroid Build Coastguard Worker 
39*495ae853SAndroid Build Coastguard Worker #define H264_MAX_FRAME_WIDTH                4080
40*495ae853SAndroid Build Coastguard Worker #define H264_MAX_FRAME_HEIGHT               4080
41*495ae853SAndroid Build Coastguard Worker #define H264_MAX_FRAME_SIZE                 (4096 * 2048)
42*495ae853SAndroid Build Coastguard Worker 
43*495ae853SAndroid Build Coastguard Worker #define H264_MIN_FRAME_WIDTH                16
44*495ae853SAndroid Build Coastguard Worker #define H264_MIN_FRAME_HEIGHT               16
45*495ae853SAndroid Build Coastguard Worker 
46*495ae853SAndroid Build Coastguard Worker #define FMT_CONV_NUM_ROWS       16
47*495ae853SAndroid Build Coastguard Worker 
48*495ae853SAndroid Build Coastguard Worker /** Decoder currently has an additional latency of 2 pictures when
49*495ae853SAndroid Build Coastguard Worker   * returning output for display
50*495ae853SAndroid Build Coastguard Worker   */
51*495ae853SAndroid Build Coastguard Worker #define DISPLAY_LATENCY         2
52*495ae853SAndroid Build Coastguard Worker 
53*495ae853SAndroid Build Coastguard Worker /** Bit manipulation macros */
54*495ae853SAndroid Build Coastguard Worker #define CHECKBIT(a,i) ((a) &  (1 << i))
55*495ae853SAndroid Build Coastguard Worker #define CLEARBIT(a,i) ((a) &= ~(1 << i))
56*495ae853SAndroid Build Coastguard Worker 
57*495ae853SAndroid Build Coastguard Worker /** Macro to check if a number lies in the valid integer range */
58*495ae853SAndroid Build Coastguard Worker #define IS_OUT_OF_RANGE_S32(a) (((a) < INT32_MIN) || ((a) > INT32_MAX))
59*495ae853SAndroid Build Coastguard Worker 
60*495ae853SAndroid Build Coastguard Worker /** Macro to convert a integer to a boolean value */
61*495ae853SAndroid Build Coastguard Worker #define BOOLEAN(x) (!!(x))
62*495ae853SAndroid Build Coastguard Worker 
63*495ae853SAndroid Build Coastguard Worker /** Arithmetic operations */
64*495ae853SAndroid Build Coastguard Worker #define MOD(x,y) ((x)%(y))
65*495ae853SAndroid Build Coastguard Worker #define DIV(x,y) ((x)/(y))
66*495ae853SAndroid Build Coastguard Worker #define MUL(x,y) ((x)*(y))
67*495ae853SAndroid Build Coastguard Worker #define SIGN_POW2_DIV(x, y) (((x) < 0) ? (-((-(x)) >> (y))) : ((x) >> (y)))
68*495ae853SAndroid Build Coastguard Worker 
69*495ae853SAndroid Build Coastguard Worker #define MB_ENABLE_FILTERING           0x00
70*495ae853SAndroid Build Coastguard Worker #define MB_DISABLE_FILTERING          0x01
71*495ae853SAndroid Build Coastguard Worker #define MB_DISABLE_TOP_EDGE           0x02
72*495ae853SAndroid Build Coastguard Worker #define MB_DISABLE_LEFT_EDGE          0x04
73*495ae853SAndroid Build Coastguard Worker 
74*495ae853SAndroid Build Coastguard Worker /** Maximum number of reference pics */
75*495ae853SAndroid Build Coastguard Worker #define MAX_REF_BUFS    32
76*495ae853SAndroid Build Coastguard Worker #define MAX_DISP_BUFS_NEW 64
77*495ae853SAndroid Build Coastguard Worker #define MAX_FRAMES              16
78*495ae853SAndroid Build Coastguard Worker 
79*495ae853SAndroid Build Coastguard Worker #define INVALID_FRAME_NUM       0x0fffffff
80*495ae853SAndroid Build Coastguard Worker #define GAP_FRAME_NUM           0x1fffffff
81*495ae853SAndroid Build Coastguard Worker 
82*495ae853SAndroid Build Coastguard Worker /** macros for reference picture lists, refIdx to POC mapping */
83*495ae853SAndroid Build Coastguard Worker // 1 extra entry into reference picture lists for refIdx = -1.
84*495ae853SAndroid Build Coastguard Worker // this entry is always 0. this saves conditional checks in
85*495ae853SAndroid Build Coastguard Worker // FillBs modules.
86*495ae853SAndroid Build Coastguard Worker #define POC_LIST_L0_TO_L1_DIFF  (( 2*MAX_FRAMES) + 1)
87*495ae853SAndroid Build Coastguard Worker #define POC_LIST_L0_TO_L1_DIFF_1  ((MAX_FRAMES) + 1)
88*495ae853SAndroid Build Coastguard Worker 
89*495ae853SAndroid Build Coastguard Worker #define FRM_LIST_L0             0                                               //0
90*495ae853SAndroid Build Coastguard Worker #define FRM_LIST_L1             1 * POC_LIST_L0_TO_L1_DIFF//FRM_LIST_L0 + POC_LIST_L0_TO_L1_DIFF        //0+33                  //(1 * POC_LIST_L0_TO_L1_DIFF)
91*495ae853SAndroid Build Coastguard Worker #define TOP_LIST_FLD_L0         2 * POC_LIST_L0_TO_L1_DIFF//FRM_LIST_L1 + POC_LIST_L0_TO_L1_DIFF        //0+33+33                   //(2 * POC_LIST_L0_TO_L1_DIFF)
92*495ae853SAndroid Build Coastguard Worker #define TOP_LIST_FLD_L1         3 * POC_LIST_L0_TO_L1_DIFF//TOP_LIST_FLD_L0 + POC_LIST_L0_TO_L1_DIFF_1  //0+33+33+17                //(3 * POC_LIST_L0_TO_L1_DIFF)
93*495ae853SAndroid Build Coastguard Worker #define BOT_LIST_FLD_L0         4 * POC_LIST_L0_TO_L1_DIFF//TOP_LIST_FLD_L1 + POC_LIST_L0_TO_L1_DIFF_1  //0+33+33+17+17
94*495ae853SAndroid Build Coastguard Worker #define BOT_LIST_FLD_L1         5 * POC_LIST_L0_TO_L1_DIFF//BOT_LIST_FLD_L0 + POC_LIST_L0_TO_L1_DIFF_1  //0+33+33+17+17+17
95*495ae853SAndroid Build Coastguard Worker #define TOTAL_LIST_ENTRIES      6 * POC_LIST_L0_TO_L1_DIFF//BOT_LIST_FLD_L1 + POC_LIST_L0_TO_L1_DIFF_1  //0+33+33+17+17+17+17
96*495ae853SAndroid Build Coastguard Worker #define PAD_MV_BANK_ROW             64
97*495ae853SAndroid Build Coastguard Worker #define OFFSET_MV_BANK_ROW          ((PAD_MV_BANK_ROW)>>1)
98*495ae853SAndroid Build Coastguard Worker #define PAD_PUC_CURNNZ              32
99*495ae853SAndroid Build Coastguard Worker #define OFFSET_PUC_CURNNZ           (PAD_PUC_CURNNZ)
100*495ae853SAndroid Build Coastguard Worker #define PAD_MAP_IDX_POC             (1)
101*495ae853SAndroid Build Coastguard Worker #define OFFSET_MAP_IDX_POC          (1)
102*495ae853SAndroid Build Coastguard Worker 
103*495ae853SAndroid Build Coastguard Worker #define OFFSET_MAP_IDX_POC          (1)
104*495ae853SAndroid Build Coastguard Worker 
105*495ae853SAndroid Build Coastguard Worker #define NAL_REF_IDC(nal_first_byte)       ((nal_first_byte >> 5) & 0x3)
106*495ae853SAndroid Build Coastguard Worker #define NAL_FORBIDDEN_BIT(nal_first_byte) (nal_first_byte>>7)
107*495ae853SAndroid Build Coastguard Worker #define NAL_UNIT_TYPE(nal_first_byte)     (nal_first_byte & 0x1F)
108*495ae853SAndroid Build Coastguard Worker 
109*495ae853SAndroid Build Coastguard Worker #define INT_PIC_TYPE_I        (0x00)
110*495ae853SAndroid Build Coastguard Worker 
111*495ae853SAndroid Build Coastguard Worker #define YIELD_CNT_THRESHOLD  8
112*495ae853SAndroid Build Coastguard Worker 
113*495ae853SAndroid Build Coastguard Worker 
114*495ae853SAndroid Build Coastguard Worker #define OK        0
115*495ae853SAndroid Build Coastguard Worker #define END       1
116*495ae853SAndroid Build Coastguard Worker #define NOT_OK    -1
117*495ae853SAndroid Build Coastguard Worker 
118*495ae853SAndroid Build Coastguard Worker /* For 420SP */
119*495ae853SAndroid Build Coastguard Worker #define YUV420SP_FACTOR 2
120*495ae853SAndroid Build Coastguard Worker 
121*495ae853SAndroid Build Coastguard Worker /*To prevent buffer overflow access; in case the size of nal unit is
122*495ae853SAndroid Build Coastguard Worker  *  greater than the allocated buffer size*/
123*495ae853SAndroid Build Coastguard Worker #define EXTRA_BS_OFFSET 16*16*2
124*495ae853SAndroid Build Coastguard Worker 
125*495ae853SAndroid Build Coastguard Worker #define DECODED_SPS_MASK 1
126*495ae853SAndroid Build Coastguard Worker #define DECODED_PPS_MASK 2
127*495ae853SAndroid Build Coastguard Worker 
128*495ae853SAndroid Build Coastguard Worker /**
129*495ae853SAndroid Build Coastguard Worker  ***************************************************************************
130*495ae853SAndroid Build Coastguard Worker  * Enum to hold various mem records being request
131*495ae853SAndroid Build Coastguard Worker  ****************************************************************************
132*495ae853SAndroid Build Coastguard Worker  */
133*495ae853SAndroid Build Coastguard Worker enum
134*495ae853SAndroid Build Coastguard Worker {
135*495ae853SAndroid Build Coastguard Worker     /**
136*495ae853SAndroid Build Coastguard Worker      * Codec Object at API level
137*495ae853SAndroid Build Coastguard Worker      */
138*495ae853SAndroid Build Coastguard Worker     MEM_REC_IV_OBJ,
139*495ae853SAndroid Build Coastguard Worker 
140*495ae853SAndroid Build Coastguard Worker     /**
141*495ae853SAndroid Build Coastguard Worker      * Codec context
142*495ae853SAndroid Build Coastguard Worker      */
143*495ae853SAndroid Build Coastguard Worker     MEM_REC_CODEC,
144*495ae853SAndroid Build Coastguard Worker 
145*495ae853SAndroid Build Coastguard Worker     /**
146*495ae853SAndroid Build Coastguard Worker      * Bitstream buffer which holds emulation prevention removed bytes
147*495ae853SAndroid Build Coastguard Worker      */
148*495ae853SAndroid Build Coastguard Worker     MEM_REC_BITSBUF,
149*495ae853SAndroid Build Coastguard Worker 
150*495ae853SAndroid Build Coastguard Worker     /**
151*495ae853SAndroid Build Coastguard Worker      * Buffer to hold  coeff data
152*495ae853SAndroid Build Coastguard Worker      */
153*495ae853SAndroid Build Coastguard Worker     MEM_REC_COEFF_DATA,
154*495ae853SAndroid Build Coastguard Worker 
155*495ae853SAndroid Build Coastguard Worker     /**
156*495ae853SAndroid Build Coastguard Worker      * Motion vector bank
157*495ae853SAndroid Build Coastguard Worker      */
158*495ae853SAndroid Build Coastguard Worker     MEM_REC_MVBANK,
159*495ae853SAndroid Build Coastguard Worker 
160*495ae853SAndroid Build Coastguard Worker     /**
161*495ae853SAndroid Build Coastguard Worker      * Holds mem records passed to the codec.
162*495ae853SAndroid Build Coastguard Worker      */
163*495ae853SAndroid Build Coastguard Worker     MEM_REC_BACKUP,
164*495ae853SAndroid Build Coastguard Worker 
165*495ae853SAndroid Build Coastguard Worker     /**
166*495ae853SAndroid Build Coastguard Worker      * Holds SPS
167*495ae853SAndroid Build Coastguard Worker      */
168*495ae853SAndroid Build Coastguard Worker     MEM_REC_SPS,
169*495ae853SAndroid Build Coastguard Worker 
170*495ae853SAndroid Build Coastguard Worker     /**
171*495ae853SAndroid Build Coastguard Worker      * Holds PPS
172*495ae853SAndroid Build Coastguard Worker      */
173*495ae853SAndroid Build Coastguard Worker     MEM_REC_PPS,
174*495ae853SAndroid Build Coastguard Worker 
175*495ae853SAndroid Build Coastguard Worker     /**
176*495ae853SAndroid Build Coastguard Worker      * Holds Slice Headers
177*495ae853SAndroid Build Coastguard Worker      */
178*495ae853SAndroid Build Coastguard Worker     MEM_REC_SLICE_HDR,
179*495ae853SAndroid Build Coastguard Worker 
180*495ae853SAndroid Build Coastguard Worker     /**
181*495ae853SAndroid Build Coastguard Worker      * Holds thread handles
182*495ae853SAndroid Build Coastguard Worker      */
183*495ae853SAndroid Build Coastguard Worker     MEM_REC_THREAD_HANDLE,
184*495ae853SAndroid Build Coastguard Worker 
185*495ae853SAndroid Build Coastguard Worker     /**
186*495ae853SAndroid Build Coastguard Worker      * Contains i4_status map indicating parse i4_status per MB basis
187*495ae853SAndroid Build Coastguard Worker      */
188*495ae853SAndroid Build Coastguard Worker     MEM_REC_PARSE_MAP,
189*495ae853SAndroid Build Coastguard Worker 
190*495ae853SAndroid Build Coastguard Worker     /**
191*495ae853SAndroid Build Coastguard Worker      * Contains i4_status map indicating processing i4_status per MB basis
192*495ae853SAndroid Build Coastguard Worker      */
193*495ae853SAndroid Build Coastguard Worker     MEM_REC_PROC_MAP,
194*495ae853SAndroid Build Coastguard Worker 
195*495ae853SAndroid Build Coastguard Worker     /**
196*495ae853SAndroid Build Coastguard Worker      * Contains slice number info for each MB
197*495ae853SAndroid Build Coastguard Worker      */
198*495ae853SAndroid Build Coastguard Worker 
199*495ae853SAndroid Build Coastguard Worker     MEM_REC_SLICE_NUM_MAP,
200*495ae853SAndroid Build Coastguard Worker 
201*495ae853SAndroid Build Coastguard Worker     /**
202*495ae853SAndroid Build Coastguard Worker      * Holds dpb manager context
203*495ae853SAndroid Build Coastguard Worker      */
204*495ae853SAndroid Build Coastguard Worker     MEM_REC_DPB_MGR,
205*495ae853SAndroid Build Coastguard Worker 
206*495ae853SAndroid Build Coastguard Worker     /**
207*495ae853SAndroid Build Coastguard Worker      * Holds neighbors' info
208*495ae853SAndroid Build Coastguard Worker      */
209*495ae853SAndroid Build Coastguard Worker     MEM_REC_NEIGHBOR_INFO,
210*495ae853SAndroid Build Coastguard Worker 
211*495ae853SAndroid Build Coastguard Worker     /**
212*495ae853SAndroid Build Coastguard Worker      * Holds neighbors' info
213*495ae853SAndroid Build Coastguard Worker      */
214*495ae853SAndroid Build Coastguard Worker     MEM_REC_PRED_INFO,
215*495ae853SAndroid Build Coastguard Worker 
216*495ae853SAndroid Build Coastguard Worker 
217*495ae853SAndroid Build Coastguard Worker     /**
218*495ae853SAndroid Build Coastguard Worker      * Holds inter pred inforamation on packed format info
219*495ae853SAndroid Build Coastguard Worker      */
220*495ae853SAndroid Build Coastguard Worker     MEM_REC_PRED_INFO_PKD,
221*495ae853SAndroid Build Coastguard Worker     /**
222*495ae853SAndroid Build Coastguard Worker      * Holds neighbors' info
223*495ae853SAndroid Build Coastguard Worker      */
224*495ae853SAndroid Build Coastguard Worker     MEM_REC_MB_INFO,
225*495ae853SAndroid Build Coastguard Worker 
226*495ae853SAndroid Build Coastguard Worker     /**
227*495ae853SAndroid Build Coastguard Worker      * Holds deblock Mb info structure frame level)
228*495ae853SAndroid Build Coastguard Worker      */
229*495ae853SAndroid Build Coastguard Worker     MEM_REC_DEBLK_MB_INFO,
230*495ae853SAndroid Build Coastguard Worker 
231*495ae853SAndroid Build Coastguard Worker     /**
232*495ae853SAndroid Build Coastguard Worker      * Holds  reference picture buffers in non-shared mode
233*495ae853SAndroid Build Coastguard Worker      */
234*495ae853SAndroid Build Coastguard Worker     MEM_REC_REF_PIC,
235*495ae853SAndroid Build Coastguard Worker 
236*495ae853SAndroid Build Coastguard Worker     /**
237*495ae853SAndroid Build Coastguard Worker      * Holds  some misc intermediate_buffers
238*495ae853SAndroid Build Coastguard Worker      */
239*495ae853SAndroid Build Coastguard Worker     MEM_REC_EXTRA_MEM,
240*495ae853SAndroid Build Coastguard Worker 
241*495ae853SAndroid Build Coastguard Worker     /**
242*495ae853SAndroid Build Coastguard Worker      * Holds  some misc intermediate_buffers
243*495ae853SAndroid Build Coastguard Worker      */
244*495ae853SAndroid Build Coastguard Worker     MEM_REC_INTERNAL_SCRATCH,
245*495ae853SAndroid Build Coastguard Worker 
246*495ae853SAndroid Build Coastguard Worker     /**
247*495ae853SAndroid Build Coastguard Worker      * Holds  some misc intermediate_buffers
248*495ae853SAndroid Build Coastguard Worker      */
249*495ae853SAndroid Build Coastguard Worker     MEM_REC_INTERNAL_PERSIST,
250*495ae853SAndroid Build Coastguard Worker 
251*495ae853SAndroid Build Coastguard Worker     /* holds structures related to picture buffer manager*/
252*495ae853SAndroid Build Coastguard Worker     MEM_REC_PIC_BUF_MGR,
253*495ae853SAndroid Build Coastguard Worker 
254*495ae853SAndroid Build Coastguard Worker     /*holds structure related to MV buffer manager*/
255*495ae853SAndroid Build Coastguard Worker     MEM_REC_MV_BUF_MGR,
256*495ae853SAndroid Build Coastguard Worker 
257*495ae853SAndroid Build Coastguard Worker     /**
258*495ae853SAndroid Build Coastguard Worker      * Place holder to compute number of memory records.
259*495ae853SAndroid Build Coastguard Worker      */
260*495ae853SAndroid Build Coastguard Worker     MEM_REC_CNT
261*495ae853SAndroid Build Coastguard Worker /* Do not add anything below */
262*495ae853SAndroid Build Coastguard Worker };
263*495ae853SAndroid Build Coastguard Worker 
264*495ae853SAndroid Build Coastguard Worker #ifdef DEBLOCK_THREAD
265*495ae853SAndroid Build Coastguard Worker #define H264_MUTEX_LOCK(lock) ithread_mutex_lock(lock)
266*495ae853SAndroid Build Coastguard Worker #define H264_MUTEX_UNLOCK(lock) ithread_mutex_unlock(lock)
267*495ae853SAndroid Build Coastguard Worker #else //DEBLOCK_THREAD
268*495ae853SAndroid Build Coastguard Worker #define H264_MUTEX_LOCK(lock)
269*495ae853SAndroid Build Coastguard Worker #define H264_MUTEX_UNLOCK(lock)
270*495ae853SAndroid Build Coastguard Worker 
271*495ae853SAndroid Build Coastguard Worker #define DEBUG_THREADS_PRINTF(...)
272*495ae853SAndroid Build Coastguard Worker #define DEBUG_PERF_PRINTF(...)
273*495ae853SAndroid Build Coastguard Worker 
274*495ae853SAndroid Build Coastguard Worker /** Profile Types*/
275*495ae853SAndroid Build Coastguard Worker #define BASE_PROFILE_IDC    66
276*495ae853SAndroid Build Coastguard Worker #define MAIN_PROFILE_IDC    77
277*495ae853SAndroid Build Coastguard Worker #define EXTENDED_PROFILE_IDC    88
278*495ae853SAndroid Build Coastguard Worker #define HIGH_PROFILE_IDC   100
279*495ae853SAndroid Build Coastguard Worker 
280*495ae853SAndroid Build Coastguard Worker 
281*495ae853SAndroid Build Coastguard Worker #define MB_SIZE             16
282*495ae853SAndroid Build Coastguard Worker #define BLK8x8SIZE           8
283*495ae853SAndroid Build Coastguard Worker #define BLK_SIZE             4
284*495ae853SAndroid Build Coastguard Worker #define NUM_BLKS_PER_MB     24
285*495ae853SAndroid Build Coastguard Worker #define NUM_LUM_BLKS_PER_MB 16
286*495ae853SAndroid Build Coastguard Worker #define LUM_BLK              0
287*495ae853SAndroid Build Coastguard Worker #define CHROM_BLK            1
288*495ae853SAndroid Build Coastguard Worker #define NUM_PELS_IN_MB      64
289*495ae853SAndroid Build Coastguard Worker 
290*495ae853SAndroid Build Coastguard Worker /* Level Types */
291*495ae853SAndroid Build Coastguard Worker #define H264_LEVEL_1_0     10
292*495ae853SAndroid Build Coastguard Worker #define H264_LEVEL_1_1     11
293*495ae853SAndroid Build Coastguard Worker #define H264_LEVEL_1_2     12
294*495ae853SAndroid Build Coastguard Worker #define H264_LEVEL_1_3     13
295*495ae853SAndroid Build Coastguard Worker #define H264_LEVEL_2_0     20
296*495ae853SAndroid Build Coastguard Worker #define H264_LEVEL_2_1     21
297*495ae853SAndroid Build Coastguard Worker #define H264_LEVEL_2_2     22
298*495ae853SAndroid Build Coastguard Worker #define H264_LEVEL_3_0     30
299*495ae853SAndroid Build Coastguard Worker #define H264_LEVEL_3_1     31
300*495ae853SAndroid Build Coastguard Worker #define H264_LEVEL_3_2     32
301*495ae853SAndroid Build Coastguard Worker #define H264_LEVEL_4_0     40
302*495ae853SAndroid Build Coastguard Worker #define H264_LEVEL_4_1     41
303*495ae853SAndroid Build Coastguard Worker #define H264_LEVEL_4_2     42
304*495ae853SAndroid Build Coastguard Worker #define H264_LEVEL_5_0     50
305*495ae853SAndroid Build Coastguard Worker #define H264_LEVEL_5_1     51
306*495ae853SAndroid Build Coastguard Worker 
307*495ae853SAndroid Build Coastguard Worker #define MAX_MBS_LEVEL_51 36864
308*495ae853SAndroid Build Coastguard Worker #define MAX_MBS_LEVEL_50 22080
309*495ae853SAndroid Build Coastguard Worker #define MAX_MBS_LEVEL_42 8704
310*495ae853SAndroid Build Coastguard Worker #define MAX_MBS_LEVEL_41 8192
311*495ae853SAndroid Build Coastguard Worker #define MAX_MBS_LEVEL_40 8192
312*495ae853SAndroid Build Coastguard Worker #define MAX_MBS_LEVEL_32 5120
313*495ae853SAndroid Build Coastguard Worker #define MAX_MBS_LEVEL_31 3600
314*495ae853SAndroid Build Coastguard Worker #define MAX_MBS_LEVEL_30 1620
315*495ae853SAndroid Build Coastguard Worker #define MAX_MBS_LEVEL_22 1620
316*495ae853SAndroid Build Coastguard Worker #define MAX_MBS_LEVEL_21 792
317*495ae853SAndroid Build Coastguard Worker #define MAX_MBS_LEVEL_20 396
318*495ae853SAndroid Build Coastguard Worker #define MAX_MBS_LEVEL_13 396
319*495ae853SAndroid Build Coastguard Worker #define MAX_MBS_LEVEL_12 396
320*495ae853SAndroid Build Coastguard Worker #define MAX_MBS_LEVEL_11 396
321*495ae853SAndroid Build Coastguard Worker #define MAX_MBS_LEVEL_10 99
322*495ae853SAndroid Build Coastguard Worker 
323*495ae853SAndroid Build Coastguard Worker /** NAL Types */
324*495ae853SAndroid Build Coastguard Worker #define SLICE_NAL                       1
325*495ae853SAndroid Build Coastguard Worker #define SLICE_DATA_PARTITION_A_NAL      2
326*495ae853SAndroid Build Coastguard Worker #define SLICE_DATA_PARTITION_B_NAL      3
327*495ae853SAndroid Build Coastguard Worker #define SLICE_DATA_PARTITION_C_NAL      4
328*495ae853SAndroid Build Coastguard Worker #define IDR_SLICE_NAL                   5
329*495ae853SAndroid Build Coastguard Worker #define SEI_NAL                         6
330*495ae853SAndroid Build Coastguard Worker #define SEQ_PARAM_NAL                   7
331*495ae853SAndroid Build Coastguard Worker #define PIC_PARAM_NAL                   8
332*495ae853SAndroid Build Coastguard Worker #define ACCESS_UNIT_DELIMITER_RBSP      9
333*495ae853SAndroid Build Coastguard Worker #define END_OF_SEQ_RBSP                 10
334*495ae853SAndroid Build Coastguard Worker #define END_OF_STREAM_RBSP              11
335*495ae853SAndroid Build Coastguard Worker #define FILLER_DATA_NAL                 12
336*495ae853SAndroid Build Coastguard Worker 
337*495ae853SAndroid Build Coastguard Worker /** Entropy coding modes */
338*495ae853SAndroid Build Coastguard Worker #define CAVLC  0
339*495ae853SAndroid Build Coastguard Worker #define CABAC  1
340*495ae853SAndroid Build Coastguard Worker 
341*495ae853SAndroid Build Coastguard Worker /** Picture Types */
342*495ae853SAndroid Build Coastguard Worker #define I_PIC       0
343*495ae853SAndroid Build Coastguard Worker #define IP_PIC      1
344*495ae853SAndroid Build Coastguard Worker #define IPB_PIC     2
345*495ae853SAndroid Build Coastguard Worker #define SI_PIC      3
346*495ae853SAndroid Build Coastguard Worker #define SIP_PIC     4
347*495ae853SAndroid Build Coastguard Worker #define ISI_PIC     5
348*495ae853SAndroid Build Coastguard Worker #define ISI_PSP_PIC 6
349*495ae853SAndroid Build Coastguard Worker #define ALL_PIC     7
350*495ae853SAndroid Build Coastguard Worker 
351*495ae853SAndroid Build Coastguard Worker /* Frame or field picture type */
352*495ae853SAndroid Build Coastguard Worker #define FRM_PIC         0x00
353*495ae853SAndroid Build Coastguard Worker #define TOP_FLD         0x01
354*495ae853SAndroid Build Coastguard Worker #define BOT_FLD         0x02
355*495ae853SAndroid Build Coastguard Worker #define COMP_FLD_PAIR   0x03 /* TOP_FLD | BOT_FLD */
356*495ae853SAndroid Build Coastguard Worker #define AFRM_PIC        0x04
357*495ae853SAndroid Build Coastguard Worker #define TOP_REF         0x08
358*495ae853SAndroid Build Coastguard Worker #define BOT_REF         0x10
359*495ae853SAndroid Build Coastguard Worker #define PIC_MASK        0x03
360*495ae853SAndroid Build Coastguard Worker #define NON_EXISTING    0xff
361*495ae853SAndroid Build Coastguard Worker 
362*495ae853SAndroid Build Coastguard Worker /* field picture type for display */
363*495ae853SAndroid Build Coastguard Worker #define DISP_TOP_FLD    0x00
364*495ae853SAndroid Build Coastguard Worker #define DISP_BOT_FLD    0x01
365*495ae853SAndroid Build Coastguard Worker 
366*495ae853SAndroid Build Coastguard Worker /** Slice Types */
367*495ae853SAndroid Build Coastguard Worker #define NA_SLICE -1
368*495ae853SAndroid Build Coastguard Worker #define P_SLICE  0
369*495ae853SAndroid Build Coastguard Worker #define B_SLICE  1
370*495ae853SAndroid Build Coastguard Worker #define I_SLICE  2
371*495ae853SAndroid Build Coastguard Worker #define SP_SLICE 3
372*495ae853SAndroid Build Coastguard Worker #define SI_SLICE 4
373*495ae853SAndroid Build Coastguard Worker 
374*495ae853SAndroid Build Coastguard Worker /* Definition for picture skip */
375*495ae853SAndroid Build Coastguard Worker #define SKIP_NONE  (0x0)
376*495ae853SAndroid Build Coastguard Worker #define I_SLC_BIT  (0x1)
377*495ae853SAndroid Build Coastguard Worker #define P_SLC_BIT  (0x2)
378*495ae853SAndroid Build Coastguard Worker #define B_SLC_BIT  (0x4)
379*495ae853SAndroid Build Coastguard Worker 
380*495ae853SAndroid Build Coastguard Worker /** Macros used for Deblocking */
381*495ae853SAndroid Build Coastguard Worker #define D_INTER_MB        0
382*495ae853SAndroid Build Coastguard Worker #define D_INTRA_MB        1
383*495ae853SAndroid Build Coastguard Worker #define D_PRED_NON_16x16  2
384*495ae853SAndroid Build Coastguard Worker #define D_B_SLICE         4
385*495ae853SAndroid Build Coastguard Worker #define D_B_SUBMB         6 //D_B_SLICE | D_PRED_NON_16x16 | D_INTER_MB
386*495ae853SAndroid Build Coastguard Worker #define D_FLD_MB          0x80
387*495ae853SAndroid Build Coastguard Worker 
388*495ae853SAndroid Build Coastguard Worker /** Macros for Cabac checks */
389*495ae853SAndroid Build Coastguard Worker /** MbType */
390*495ae853SAndroid Build Coastguard Worker /** |x|x|I_PCM|SKIP|
391*495ae853SAndroid Build Coastguard Worker  |S|Inter/Intra|P/B|NON-BD16x16/BD16x16,I16x16/I4x4| */
392*495ae853SAndroid Build Coastguard Worker #define CAB_INTRA         0x00 /* 0000 00xx */
393*495ae853SAndroid Build Coastguard Worker #define CAB_INTER         0x04 /* 0000 01xx */
394*495ae853SAndroid Build Coastguard Worker #define CAB_I4x4          0x00 /* 0000 00x0 */
395*495ae853SAndroid Build Coastguard Worker #define CAB_I16x16        0x01 /* 0000 00x1 */
396*495ae853SAndroid Build Coastguard Worker #define CAB_BD16x16       0x04 /* 0000 0100 */
397*495ae853SAndroid Build Coastguard Worker #define CAB_NON_BD16x16   0x05 /* 0000 0101 */
398*495ae853SAndroid Build Coastguard Worker #define CAB_P             0x07 /* 0000 0111 */
399*495ae853SAndroid Build Coastguard Worker #define CAB_SI4x4         0x08 /* 0000 10x0 */
400*495ae853SAndroid Build Coastguard Worker #define CAB_SI16x16       0x09 /* 0000 10x1 */
401*495ae853SAndroid Build Coastguard Worker #define CAB_SKIP_MASK     0x10 /* 0001 0000 */
402*495ae853SAndroid Build Coastguard Worker #define CAB_SKIP          0x10 /* 0001 0000 */
403*495ae853SAndroid Build Coastguard Worker #define CAB_P_SKIP        0x16 /* 0001 x11x */
404*495ae853SAndroid Build Coastguard Worker #define CAB_B_SKIP        0x14 /* 0001 x100 */
405*495ae853SAndroid Build Coastguard Worker #define CAB_BD16x16_MASK  0x07 /* 0000 0111 */
406*495ae853SAndroid Build Coastguard Worker #define CAB_INTRA_MASK    0x04 /* 0000 0100 */
407*495ae853SAndroid Build Coastguard Worker #define CAB_I_PCM         0x20 /* 001x xxxx */
408*495ae853SAndroid Build Coastguard Worker 
409*495ae853SAndroid Build Coastguard Worker /**< Binarization types for CABAC */
410*495ae853SAndroid Build Coastguard Worker /* |x|x|x|x|MSB_FIRST_FLC|FLC|TUNARY|UNARY| */
411*495ae853SAndroid Build Coastguard Worker #define UNARY           1
412*495ae853SAndroid Build Coastguard Worker #define TUNARY          2
413*495ae853SAndroid Build Coastguard Worker #define FLC             4
414*495ae853SAndroid Build Coastguard Worker #define MSB_FIRST_FLC   12
415*495ae853SAndroid Build Coastguard Worker 
416*495ae853SAndroid Build Coastguard Worker /** Macroblock Types */
417*495ae853SAndroid Build Coastguard Worker #define I_4x4_MB    0
418*495ae853SAndroid Build Coastguard Worker #define I_16x16_MB  1
419*495ae853SAndroid Build Coastguard Worker #define P_MB        2
420*495ae853SAndroid Build Coastguard Worker #define B_MB        3
421*495ae853SAndroid Build Coastguard Worker #define SI_MB       4
422*495ae853SAndroid Build Coastguard Worker #define SP_MB       5
423*495ae853SAndroid Build Coastguard Worker #define I_PCM_MB    6
424*495ae853SAndroid Build Coastguard Worker 
425*495ae853SAndroid Build Coastguard Worker #define SI4x4_MB 0xFF
426*495ae853SAndroid Build Coastguard Worker 
427*495ae853SAndroid Build Coastguard Worker /** Intra luma 16x16 and chroma 8x8 prediction modes */
428*495ae853SAndroid Build Coastguard Worker #define NUM_INTRA_PRED_MODES  4
429*495ae853SAndroid Build Coastguard Worker #define VERT    0
430*495ae853SAndroid Build Coastguard Worker #define HORIZ   1
431*495ae853SAndroid Build Coastguard Worker #define DC      2
432*495ae853SAndroid Build Coastguard Worker #define PLANE   3
433*495ae853SAndroid Build Coastguard Worker #define NOT_VALID -1
434*495ae853SAndroid Build Coastguard Worker #define DC_DC_DC_DC   0x02020202 /*packed 4 bytes used in Decode Intra Mb*/
435*495ae853SAndroid Build Coastguard Worker 
436*495ae853SAndroid Build Coastguard Worker /** Intra luma 4x4 prediction modes */
437*495ae853SAndroid Build Coastguard Worker #define NUM_INTRA4x4_PRED_MODES 9
438*495ae853SAndroid Build Coastguard Worker 
439*495ae853SAndroid Build Coastguard Worker /** VERT, HORIZ, DC are applicable to 4x4 as well */
440*495ae853SAndroid Build Coastguard Worker /** D - Down; U - Up; L - Left; R - Right */
441*495ae853SAndroid Build Coastguard Worker #define DIAG_DL   3
442*495ae853SAndroid Build Coastguard Worker #define DIAG_DR   4
443*495ae853SAndroid Build Coastguard Worker #define VERT_R    5
444*495ae853SAndroid Build Coastguard Worker #define HORIZ_D   6
445*495ae853SAndroid Build Coastguard Worker #define VERT_L    7
446*495ae853SAndroid Build Coastguard Worker #define HORIZ_U   8
447*495ae853SAndroid Build Coastguard Worker 
448*495ae853SAndroid Build Coastguard Worker /** P_MB prediction modes */
449*495ae853SAndroid Build Coastguard Worker #define NUM_INTER_MB_PRED_MODES 5
450*495ae853SAndroid Build Coastguard Worker #define PRED_16x16  0
451*495ae853SAndroid Build Coastguard Worker #define PRED_16x8   1
452*495ae853SAndroid Build Coastguard Worker #define PRED_8x16   2
453*495ae853SAndroid Build Coastguard Worker #define PRED_8x8    3
454*495ae853SAndroid Build Coastguard Worker #define PRED_8x8R0  4
455*495ae853SAndroid Build Coastguard Worker #define MAGIC_16x16 5
456*495ae853SAndroid Build Coastguard Worker #define MB_SKIP     255
457*495ae853SAndroid Build Coastguard Worker 
458*495ae853SAndroid Build Coastguard Worker /* P_MB submb modes */
459*495ae853SAndroid Build Coastguard Worker #define P_L0_8x8    0
460*495ae853SAndroid Build Coastguard Worker #define P_L0_8x4    1
461*495ae853SAndroid Build Coastguard Worker #define P_L0_4x8    2
462*495ae853SAndroid Build Coastguard Worker #define P_L0_4x4    3
463*495ae853SAndroid Build Coastguard Worker 
464*495ae853SAndroid Build Coastguard Worker /* B_MB submb modes */
465*495ae853SAndroid Build Coastguard Worker #define B_DIRECT_8x8    0
466*495ae853SAndroid Build Coastguard Worker #define B_L0_8x8        1
467*495ae853SAndroid Build Coastguard Worker #define B_L1_8x8        2
468*495ae853SAndroid Build Coastguard Worker #define B_BI_8x8        3
469*495ae853SAndroid Build Coastguard Worker #define B_L0_8x4        4
470*495ae853SAndroid Build Coastguard Worker #define B_L0_4x8        5
471*495ae853SAndroid Build Coastguard Worker #define B_L1_8x4        6
472*495ae853SAndroid Build Coastguard Worker #define B_L1_4x8        7
473*495ae853SAndroid Build Coastguard Worker #define B_BI_8x4        8
474*495ae853SAndroid Build Coastguard Worker #define B_BI_4x8        9
475*495ae853SAndroid Build Coastguard Worker #define B_L0_4x4        10
476*495ae853SAndroid Build Coastguard Worker #define B_L1_4x4        11
477*495ae853SAndroid Build Coastguard Worker #define B_BI_4x4        12
478*495ae853SAndroid Build Coastguard Worker 
479*495ae853SAndroid Build Coastguard Worker /** B_MB prediction modes */
480*495ae853SAndroid Build Coastguard Worker #define B_8x8    22
481*495ae853SAndroid Build Coastguard Worker #define PRED_INVALID  -1
482*495ae853SAndroid Build Coastguard Worker #define B_DIRECT  0
483*495ae853SAndroid Build Coastguard Worker #define PRED_L0   1
484*495ae853SAndroid Build Coastguard Worker #define PRED_L1   2
485*495ae853SAndroid Build Coastguard Worker #define BI_PRED   3
486*495ae853SAndroid Build Coastguard Worker #define B_DIRECT_BI_PRED  23
487*495ae853SAndroid Build Coastguard Worker #define B_DIRECT_PRED_L0  24
488*495ae853SAndroid Build Coastguard Worker #define B_DIRECT_PRED_L1  25
489*495ae853SAndroid Build Coastguard Worker #define B_DIRECT_SPATIAL  26
490*495ae853SAndroid Build Coastguard Worker 
491*495ae853SAndroid Build Coastguard Worker #define B_DIRECT8x8_BI_PRED  13
492*495ae853SAndroid Build Coastguard Worker #define B_DIRECT8x8_PRED_L0  14
493*495ae853SAndroid Build Coastguard Worker #define B_DIRECT8x8_PRED_L1  15
494*495ae853SAndroid Build Coastguard Worker 
495*495ae853SAndroid Build Coastguard Worker #define ONE_TO_ONE  0
496*495ae853SAndroid Build Coastguard Worker #define FRM_TO_FLD  1
497*495ae853SAndroid Build Coastguard Worker #define FLD_TO_FRM  2
498*495ae853SAndroid Build Coastguard Worker 
499*495ae853SAndroid Build Coastguard Worker /** Inter Sub MB Pred modes */
500*495ae853SAndroid Build Coastguard Worker #define NUM_INTER_SUBMB_PRED_MODES 4
501*495ae853SAndroid Build Coastguard Worker #define SUBMB_8x8    0
502*495ae853SAndroid Build Coastguard Worker #define SUBMB_8x4    1
503*495ae853SAndroid Build Coastguard Worker #define SUBMB_4x8    2
504*495ae853SAndroid Build Coastguard Worker #define SUBMB_4x4    3
505*495ae853SAndroid Build Coastguard Worker 
506*495ae853SAndroid Build Coastguard Worker /** Coded Block Pattern - Chroma */
507*495ae853SAndroid Build Coastguard Worker #define CBPC_ALLZERO    0
508*495ae853SAndroid Build Coastguard Worker #define CBPC_ACZERO     1
509*495ae853SAndroid Build Coastguard Worker #define CBPC_NONZERO    2
510*495ae853SAndroid Build Coastguard Worker 
511*495ae853SAndroid Build Coastguard Worker /** Index for accessing the left MB in the MV predictor array */
512*495ae853SAndroid Build Coastguard Worker #define LEFT  0
513*495ae853SAndroid Build Coastguard Worker /** Index for accessing the top MB in the MV predictor array */
514*495ae853SAndroid Build Coastguard Worker #define TOP   1
515*495ae853SAndroid Build Coastguard Worker /** Index for accessing the top right MB in the MV predictor array */
516*495ae853SAndroid Build Coastguard Worker #define TOP_R 2
517*495ae853SAndroid Build Coastguard Worker /** Index for accessing the top Left MB in the MV predictor array */
518*495ae853SAndroid Build Coastguard Worker #define TOP_L 3
519*495ae853SAndroid Build Coastguard Worker 
520*495ae853SAndroid Build Coastguard Worker /** Maximum number of Sequence Parameter sets */
521*495ae853SAndroid Build Coastguard Worker #define MAX_NUM_SEQ_PARAMS 32
522*495ae853SAndroid Build Coastguard Worker 
523*495ae853SAndroid Build Coastguard Worker /** Maximum number of Picture Parameter sets */
524*495ae853SAndroid Build Coastguard Worker #define MAX_NUM_PIC_PARAMS 256
525*495ae853SAndroid Build Coastguard Worker 
526*495ae853SAndroid Build Coastguard Worker #define MASK_ERR_SEQ_SET_ID   (0xFFFFFFE0)
527*495ae853SAndroid Build Coastguard Worker #define MASK_ERR_PIC_SET_ID   (0xFFFFFF00)
528*495ae853SAndroid Build Coastguard Worker 
529*495ae853SAndroid Build Coastguard Worker #define MAX_PIC_ORDER_CNT_TYPE    2
530*495ae853SAndroid Build Coastguard Worker 
531*495ae853SAndroid Build Coastguard Worker #define MAX_BITS_IN_FRAME_NUM     16
532*495ae853SAndroid Build Coastguard Worker #define MAX_BITS_IN_POC_LSB       16
533*495ae853SAndroid Build Coastguard Worker 
534*495ae853SAndroid Build Coastguard Worker #define H264_MAX_REF_PICS         16
535*495ae853SAndroid Build Coastguard Worker #define H264_MAX_REF_IDX          32
536*495ae853SAndroid Build Coastguard Worker #define MAX_WEIGHT_BIPRED_IDC     2
537*495ae853SAndroid Build Coastguard Worker #define MAX_CABAC_INIT_IDC        2
538*495ae853SAndroid Build Coastguard Worker 
539*495ae853SAndroid Build Coastguard Worker #define H264_DEFAULT_NUM_CORES 1
540*495ae853SAndroid Build Coastguard Worker #define DEFAULT_SEPARATE_PARSE (H264_DEFAULT_NUM_CORES == 2)? 1 :0
541*495ae853SAndroid Build Coastguard Worker 
542*495ae853SAndroid Build Coastguard Worker /** Maximum number of Slice groups */
543*495ae853SAndroid Build Coastguard Worker #define MAX_NUM_SLICE_GROUPS 8
544*495ae853SAndroid Build Coastguard Worker #define MAX_NUM_REF_FRAMES_OFFSET 255
545*495ae853SAndroid Build Coastguard Worker 
546*495ae853SAndroid Build Coastguard Worker /** Deblocking modes for a slice */
547*495ae853SAndroid Build Coastguard Worker #define SLICE_BOUNDARY_DBLK_DISABLED  2
548*495ae853SAndroid Build Coastguard Worker #define DBLK_DISABLED                 1
549*495ae853SAndroid Build Coastguard Worker #define DBLK_ENABLED                  0
550*495ae853SAndroid Build Coastguard Worker #define MIN_DBLK_FIL_OFF              -12
551*495ae853SAndroid Build Coastguard Worker #define MAX_DBLK_FIL_OFF              12
552*495ae853SAndroid Build Coastguard Worker 
553*495ae853SAndroid Build Coastguard Worker /** Width of the predictor buffers used for MC */
554*495ae853SAndroid Build Coastguard Worker #define MB_SIZE             16
555*495ae853SAndroid Build Coastguard Worker #define BLK8x8SIZE          8
556*495ae853SAndroid Build Coastguard Worker #define BLK_SIZE             4
557*495ae853SAndroid Build Coastguard Worker #define NUM_BLKS_PER_MB     24
558*495ae853SAndroid Build Coastguard Worker #define NUM_LUM_BLKS_PER_MB 16
559*495ae853SAndroid Build Coastguard Worker 
560*495ae853SAndroid Build Coastguard Worker #define SUB_BLK_WIDTH                 4
561*495ae853SAndroid Build Coastguard Worker #define SUB_SUB_BLK_SIZE              4 /* 2x2 pixel i4_size */
562*495ae853SAndroid Build Coastguard Worker #define SUB_BLK_SIZE                  ((SUB_BLK_WIDTH) * (SUB_BLK_WIDTH))
563*495ae853SAndroid Build Coastguard Worker #define MB_LUM_SIZE                   256
564*495ae853SAndroid Build Coastguard Worker #define MB_CHROM_SIZE                 64
565*495ae853SAndroid Build Coastguard Worker 
566*495ae853SAndroid Build Coastguard Worker /**< Width to pad the luminance frame buff    */
567*495ae853SAndroid Build Coastguard Worker /**< Height to pad the luminance frame buff   */
568*495ae853SAndroid Build Coastguard Worker /**< Width to pad the chrominance frame buff  */
569*495ae853SAndroid Build Coastguard Worker /**< Height to pad the chrominance frame buff */
570*495ae853SAndroid Build Coastguard Worker 
571*495ae853SAndroid Build Coastguard Worker #define PAD_LEN_Y_H                   32
572*495ae853SAndroid Build Coastguard Worker #define PAD_LEN_Y_V                   20
573*495ae853SAndroid Build Coastguard Worker #define PAD_LEN_UV_H                  16
574*495ae853SAndroid Build Coastguard Worker #define PAD_LEN_UV_V                  8
575*495ae853SAndroid Build Coastguard Worker 
576*495ae853SAndroid Build Coastguard Worker #define PAD_MV_BANK_ROW             64
577*495ae853SAndroid Build Coastguard Worker 
578*495ae853SAndroid Build Coastguard Worker /**< Maimum u4_ofst by which the Mvs could point outside the frame buffers
579*495ae853SAndroid Build Coastguard Worker  horizontally in the left and vertically in the top direction */
580*495ae853SAndroid Build Coastguard Worker #define MAX_OFFSET_OUTSIDE_X_FRM      -20
581*495ae853SAndroid Build Coastguard Worker #define MAX_OFFSET_OUTSIDE_Y_FRM      -20
582*495ae853SAndroid Build Coastguard Worker #define MAX_OFFSET_OUTSIDE_UV_FRM     -8
583*495ae853SAndroid Build Coastguard Worker 
584*495ae853SAndroid Build Coastguard Worker /** UVLC parsing macros */
585*495ae853SAndroid Build Coastguard Worker #define   UEV     1
586*495ae853SAndroid Build Coastguard Worker #define   SEV     2
587*495ae853SAndroid Build Coastguard Worker #define   TEV     3
588*495ae853SAndroid Build Coastguard Worker 
589*495ae853SAndroid Build Coastguard Worker /** Defines for Boolean values */
590*495ae853SAndroid Build Coastguard Worker #ifndef TRUE
591*495ae853SAndroid Build Coastguard Worker #define TRUE    1
592*495ae853SAndroid Build Coastguard Worker #define FALSE   0
593*495ae853SAndroid Build Coastguard Worker #endif
594*495ae853SAndroid Build Coastguard Worker 
595*495ae853SAndroid Build Coastguard Worker #define UNUSED_FOR_REF 0
596*495ae853SAndroid Build Coastguard Worker #define IS_SHORT_TERM  1
597*495ae853SAndroid Build Coastguard Worker #define IS_LONG_TERM   2
598*495ae853SAndroid Build Coastguard Worker 
599*495ae853SAndroid Build Coastguard Worker /** Defines for which field gets displayed first */
600*495ae853SAndroid Build Coastguard Worker #define MAX_FRAMES              16
601*495ae853SAndroid Build Coastguard Worker #define INVALID_FRAME_NUM       0x0fffffff
602*495ae853SAndroid Build Coastguard Worker #define DO_NOT_DISP             254
603*495ae853SAndroid Build Coastguard Worker #define DISP_FLD_FIRST_UNDEF  0
604*495ae853SAndroid Build Coastguard Worker #define DISP_TOP_FLD_FIRST   1
605*495ae853SAndroid Build Coastguard Worker #define DISP_BOT_FLD_FIRST   2
606*495ae853SAndroid Build Coastguard Worker 
607*495ae853SAndroid Build Coastguard Worker /** Misc error resilience requirements*/
608*495ae853SAndroid Build Coastguard Worker #define MAX_LOG2_WEIGHT_DENOM       7
609*495ae853SAndroid Build Coastguard Worker #define PRED_WEIGHT_MIN             (-128)
610*495ae853SAndroid Build Coastguard Worker #define PRED_WEIGHT_MAX             127
611*495ae853SAndroid Build Coastguard Worker #define MAX_REDUNDANT_PIC_CNT       127
612*495ae853SAndroid Build Coastguard Worker 
613*495ae853SAndroid Build Coastguard Worker 
614*495ae853SAndroid Build Coastguard Worker 
615*495ae853SAndroid Build Coastguard Worker #endif //DEBLOCK_THREAD
616*495ae853SAndroid Build Coastguard Worker 
617*495ae853SAndroid Build Coastguard Worker #define NUM_COEFFS_IN_4x4BLK 16
618*495ae853SAndroid Build Coastguard Worker #define CABAC_BITS_TO_READ 23
619*495ae853SAndroid Build Coastguard Worker 
620*495ae853SAndroid Build Coastguard Worker #define DISPLAY_PRIMARIES_X_UPPER_LIMIT                37000
621*495ae853SAndroid Build Coastguard Worker #define DISPLAY_PRIMARIES_X_LOWER_LIMIT                5
622*495ae853SAndroid Build Coastguard Worker #define DISPLAY_PRIMARIES_X_DIVISION_FACTOR            5
623*495ae853SAndroid Build Coastguard Worker 
624*495ae853SAndroid Build Coastguard Worker #define DISPLAY_PRIMARIES_Y_UPPER_LIMIT                42000
625*495ae853SAndroid Build Coastguard Worker #define DISPLAY_PRIMARIES_Y_LOWER_LIMIT                5
626*495ae853SAndroid Build Coastguard Worker #define DISPLAY_PRIMARIES_Y_DIVISION_FACTOR            5
627*495ae853SAndroid Build Coastguard Worker 
628*495ae853SAndroid Build Coastguard Worker #define WHITE_POINT_X_UPPER_LIMIT                      37000
629*495ae853SAndroid Build Coastguard Worker #define WHITE_POINT_X_LOWER_LIMIT                      5
630*495ae853SAndroid Build Coastguard Worker #define WHITE_POINT_X_DIVISION_FACTOR                  5
631*495ae853SAndroid Build Coastguard Worker 
632*495ae853SAndroid Build Coastguard Worker #define WHITE_POINT_Y_UPPER_LIMIT                      42000
633*495ae853SAndroid Build Coastguard Worker #define WHITE_POINT_Y_LOWER_LIMIT                      5
634*495ae853SAndroid Build Coastguard Worker #define WHITE_POINT_Y_DIVISION_FACTOR                  5
635*495ae853SAndroid Build Coastguard Worker 
636*495ae853SAndroid Build Coastguard Worker #define MAX_DISPLAY_MASTERING_LUMINANCE_UPPER_LIMIT        100000000
637*495ae853SAndroid Build Coastguard Worker #define MAX_DISPLAY_MASTERING_LUMINANCE_LOWER_LIMIT        50000
638*495ae853SAndroid Build Coastguard Worker #define MAX_DISPLAY_MASTERING_LUMINANCE_DIVISION_FACTOR    10000
639*495ae853SAndroid Build Coastguard Worker 
640*495ae853SAndroid Build Coastguard Worker #define MIN_DISPLAY_MASTERING_LUMINANCE_UPPER_LIMIT        50000
641*495ae853SAndroid Build Coastguard Worker #define MIN_DISPLAY_MASTERING_LUMINANCE_LOWER_LIMIT        1
642*495ae853SAndroid Build Coastguard Worker 
643*495ae853SAndroid Build Coastguard Worker #define AMBIENT_LIGHT_X_UPPER_LIMIT        50000
644*495ae853SAndroid Build Coastguard Worker #define AMBIENT_LIGHT_Y_UPPER_LIMIT        50000
645*495ae853SAndroid Build Coastguard Worker 
646*495ae853SAndroid Build Coastguard Worker #define CCV_PRIMARIES_X_UPPER_LIMIT        5000000
647*495ae853SAndroid Build Coastguard Worker #define CCV_PRIMARIES_X_LOWER_LIMIT        -5000000
648*495ae853SAndroid Build Coastguard Worker #define CCV_PRIMARIES_Y_UPPER_LIMIT        5000000
649*495ae853SAndroid Build Coastguard Worker #define CCV_PRIMARIES_Y_LOWER_LIMIT        -5000000
650*495ae853SAndroid Build Coastguard Worker 
651*495ae853SAndroid Build Coastguard Worker 
652*495ae853SAndroid Build Coastguard Worker #define MEMSET_16BYTES(pu4_start,value)                         \
653*495ae853SAndroid Build Coastguard Worker {                                                               \
654*495ae853SAndroid Build Coastguard Worker     memset(pu4_start,value,16);                                 \
655*495ae853SAndroid Build Coastguard Worker }
656*495ae853SAndroid Build Coastguard Worker 
657*495ae853SAndroid Build Coastguard Worker #define MEMCPY_16BYTES(dst,src)                                 \
658*495ae853SAndroid Build Coastguard Worker {                                                               \
659*495ae853SAndroid Build Coastguard Worker     memcpy(dst,src,16);                                         \
660*495ae853SAndroid Build Coastguard Worker }
661*495ae853SAndroid Build Coastguard Worker 
662*495ae853SAndroid Build Coastguard Worker 
663*495ae853SAndroid Build Coastguard Worker #endif /*_IH264D_DEFS_H_*/
664