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