18d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/****************************************************************************** 28d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 38d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Copyright (C) 2015 The Android Open Source Project 48d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 58d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Licensed under the Apache License, Version 2.0 (the "License"); 68d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * you may not use this file except in compliance with the License. 78d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * You may obtain a copy of the License at: 88d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 98d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * http://www.apache.org/licenses/LICENSE-2.0 108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Unless required by applicable law or agreed to in writing, software 128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * distributed under the License is distributed on an "AS IS" BASIS, 138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * See the License for the specific language governing permissions and 158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * limitations under the License. 168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ***************************************************************************** 188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/ 208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#ifndef _IH264D_DEFS_H_ 218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define _IH264D_DEFS_H_ 228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ************************************************************************ 258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \file ih264d_defs.h 268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \brief 288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Type definitions used in the code 298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \date 318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 19/11/2002 328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * \author Sriram Sethuraman 348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * 358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ************************************************************************ 368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_MAX_FRAME_WIDTH 3840 388ef4c3f6142028732a155cbfc1febd6ef5da72fdMarco Nelissen#define H264_MAX_FRAME_HEIGHT 2176 398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_MIN_FRAME_WIDTH 16 418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_MIN_FRAME_HEIGHT 16 428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 438ef4c3f6142028732a155cbfc1febd6ef5da72fdMarco Nelissen#define FMT_CONV_NUM_ROWS 16 448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Bit manipulation macros */ 468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CHECKBIT(a,i) ((a) & (1 << i)) 478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CLEARBIT(a,i) ((a) &= ~(1 << i)) 488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Macro to convert a integer to a boolean value */ 508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define BOOLEAN(x) (!!(x)) 518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Arithmetic operations */ 538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MOD(x,y) ((x)%(y)) 548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DIV(x,y) ((x)/(y)) 558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MUL(x,y) ((x)*(y)) 568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SIGN_POW2_DIV(x, y) (((x) < 0) ? (-((-(x)) >> (y))) : ((x) >> (y))) 578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MB_ENABLE_FILTERING 0x00 598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MB_DISABLE_FILTERING 0x01 608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MB_DISABLE_TOP_EDGE 0x02 618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MB_DISABLE_LEFT_EDGE 0x04 628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Maximum number of reference pics */ 648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_REF_BUFS 32 658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_DISP_BUFS_NEW 64 668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_FRAMES 16 678ef4c3f6142028732a155cbfc1febd6ef5da72fdMarco Nelissen 688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define INVALID_FRAME_NUM 0x0fffffff 698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define GAP_FRAME_NUM 0x1fffffff 708ef4c3f6142028732a155cbfc1febd6ef5da72fdMarco Nelissen 718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** macros for reference picture lists, refIdx to POC mapping */ 728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S// 1 extra entry into reference picture lists for refIdx = -1. 738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S// this entry is always 0. this saves conditional checks in 748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S// FillBs modules. 758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define POC_LIST_L0_TO_L1_DIFF (( 2*MAX_FRAMES) + 1) 768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define POC_LIST_L0_TO_L1_DIFF_1 ((MAX_FRAMES) + 1) 778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define FRM_LIST_L0 0 //0 798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#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) 808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#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) 818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#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) 828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#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 838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#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 848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#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 858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PAD_MV_BANK_ROW 64 868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define OFFSET_MV_BANK_ROW ((PAD_MV_BANK_ROW)>>1) 878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PAD_PUC_CURNNZ 32 888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define OFFSET_PUC_CURNNZ (PAD_PUC_CURNNZ) 898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PAD_MAP_IDX_POC (1) 908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define OFFSET_MAP_IDX_POC (1) 918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define OFFSET_MAP_IDX_POC (1) 938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NAL_REF_IDC(nal_first_byte) ((nal_first_byte >> 5) & 0x3) 958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NAL_FORBIDDEN_BIT(nal_first_byte) (nal_first_byte>>7) 968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NAL_UNIT_TYPE(nal_first_byte) (nal_first_byte & 0x1F) 978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define INT_PIC_TYPE_I (0x00) 998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define YIELD_CNT_THRESHOLD 8 1018ef4c3f6142028732a155cbfc1febd6ef5da72fdMarco Nelissen 1028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define OK 0 1048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define END 1 1058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NOT_OK -1 1068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* For 420SP */ 1088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define YUV420SP_FACTOR 2 1098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 1128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *************************************************************************** 1138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Enum to hold various mem records being request 1148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S **************************************************************************** 1158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Senum 1178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 1188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 1198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Codec Object at API level 1208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_IV_OBJ, 1228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 1248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Codec context 1258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_CODEC, 1278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 1298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Bitstream buffer which holds emulation prevention removed bytes 1308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_BITSBUF, 1328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 1348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Buffer to hold coeff data 1358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_COEFF_DATA, 1378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 1398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Motion vector bank 1408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_MVBANK, 1428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 1448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds mem records passed to the codec. 1458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_BACKUP, 1478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 1498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds SPS 1508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_SPS, 1528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 1548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds PPS 1558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_PPS, 1578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 1598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds Slice Headers 1608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_SLICE_HDR, 1628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 1648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds thread handles 1658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_THREAD_HANDLE, 1678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 1698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Contains i4_status map indicating parse i4_status per MB basis 1708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_PARSE_MAP, 1728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 1748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Contains i4_status map indicating processing i4_status per MB basis 1758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_PROC_MAP, 1778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 1798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Contains slice number info for each MB 1808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_SLICE_NUM_MAP, 1838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 1858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds dpb manager context 1868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_DPB_MGR, 1888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 1908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds neighbors' info 1918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_NEIGHBOR_INFO, 1938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 1958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds neighbors' info 1968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_PRED_INFO, 1988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 2018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds inter pred inforamation on packed format info 2028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 2038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_PRED_INFO_PKD, 2048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 2058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds neighbors' info 2068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 2078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_MB_INFO, 2088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 2108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds deblock Mb info structure frame level) 2118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 2128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_DEBLK_MB_INFO, 2138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 2158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds reference picture buffers in non-shared mode 2168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 2178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_REF_PIC, 2188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 2208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds some misc intermediate_buffers 2218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 2228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_EXTRA_MEM, 2238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 2258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds some misc intermediate_buffers 2268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 2278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_INTERNAL_SCRATCH, 2288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 2308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds some misc intermediate_buffers 2318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 2328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_INTERNAL_PERSIST, 2338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* holds structures related to picture buffer manager*/ 2358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_PIC_BUF_MGR, 2368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /*holds structure related to MV buffer manager*/ 2388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_MV_BUF_MGR, 2398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 2418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Place holder to compute number of memory records. 2428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 2438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_CNT 2448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Do not add anything below */ 2458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}; 2468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#ifdef DEBLOCK_THREAD 2488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_MUTEX_LOCK(lock) ithread_mutex_lock(lock) 2498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_MUTEX_UNLOCK(lock) ithread_mutex_unlock(lock) 2508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#else //DEBLOCK_THREAD 2518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_MUTEX_LOCK(lock) 2528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_MUTEX_UNLOCK(lock) 2538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEBUG_THREADS_PRINTF(...) 2558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEBUG_PERF_PRINTF(...) 2568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Profile Types*/ 2588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define BASE_PROFILE_IDC 66 2598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAIN_PROFILE_IDC 77 2608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define HIGH_PROFILE_IDC 100 2618ef4c3f6142028732a155cbfc1febd6ef5da72fdMarco Nelissen 2628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MB_SIZE 16 2648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define BLK8x8SIZE 8 2658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define BLK_SIZE 4 2668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NUM_BLKS_PER_MB 24 2678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NUM_LUM_BLKS_PER_MB 16 2688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define LUM_BLK 0 2698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CHROM_BLK 1 2708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NUM_PELS_IN_MB 64 2718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Level Types */ 2738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_1_0 10 2748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_1_1 11 2758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_1_2 12 2768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_1_3 13 2778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_2_0 20 2788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_2_1 21 2798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_2_2 22 2808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_3_0 30 2818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_3_1 31 2828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_3_2 32 2838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_4_0 40 2848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_4_1 41 2858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_4_2 42 2868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_5_0 50 2878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_LEVEL_5_1 51 2888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_51 36864 2908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_50 22080 2918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_42 8704 2928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_41 8192 2938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_40 8192 2948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_32 5120 2958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_31 3600 2968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_30 1620 2978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_22 1620 2988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_21 792 2998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_20 396 3008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_13 396 3018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_12 396 3028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_11 396 3038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_MBS_LEVEL_10 99 3048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* 3078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S | Legend: 3088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S | LVL Level*10 3098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S | MPR Macroblk processing rate 3108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S | MMF Max Mbs/Frm 3118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S | MDK Max DbpSize (in kB) 3128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S | MDB max DbpSize (in bytes) 3138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S | MFS FrmSizeYUV (in bytes) 3148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S | MDP Max DBPics 3158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S | MDC Ceiling DBPics 3168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S | FPS Frame/Second 3178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S | 3188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S | LVL MPR MMF MDK MDB MFS MDP MDC FPS 3198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S | 10 1485 99 148.5 152064 38016 4.00 4.00 15.00 3208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S | 11 3000 396 337.5 345600 152064 2.27 3.00 7.58 3218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S | 12 6000 396 891 912384 152064 6.00 6.00 15.15 3228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S | 13 11880 396 891 912384 152064 6.00 6.00 30.00 3238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S | 20 11880 396 891 912384 152064 6.00 6.00 30.00 3248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S | 21 19800 792 1782 1824768 304128 6.00 6.00 25.00 3258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S | 22 20250 1620 3037.5 3110400 622080 5.00 5.00 12.50 3268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S | 30 40500 1620 3037.5 3110400 622080 5.00 5.00 25.00 3278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 3288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_REF_LEVEL_1_0 4 3298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_REF_LEVEL_1_1 3 3308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_REF_LEVEL_1_2 6 3318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_REF_LEVEL_1_3 6 3328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_REF_LEVEL_2_0 6 3338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_REF_LEVEL_2_1 6 3348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_REF_LEVEL_2_2 5 3358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_REF_LEVEL_3_0 5 3368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_MAX_REF_PICS 16 3378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MIN_LEVEL_SUPPORTED 10 3398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_LEVEL_SUPPORTED 64 3408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** NAL Types */ 3428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SLICE_NAL 1 3438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SLICE_DATA_PARTITION_A_NAL 2 3448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SLICE_DATA_PARTITION_B_NAL 3 3458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SLICE_DATA_PARTITION_C_NAL 4 3468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define IDR_SLICE_NAL 5 3478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SEI_NAL 6 3488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SEQ_PARAM_NAL 7 3498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PIC_PARAM_NAL 8 3508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define ACCESS_UNIT_DELIMITER_RBSP 9 3518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define END_OF_SEQ_RBSP 10 3528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define END_OF_STREAM_RBSP 11 3538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define FILLER_DATA_NAL 12 3548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Entropy coding modes */ 3568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAVLC 0 3578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CABAC 1 3588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Picture Types */ 3608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define I_PIC 0 3618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define IP_PIC 1 3628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define IPB_PIC 2 3638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SI_PIC 3 3648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SIP_PIC 4 3658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define ISI_PIC 5 3668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define ISI_PSP_PIC 6 3678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define ALL_PIC 7 3688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Frame or field picture type */ 3708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define FRM_PIC 0x00 3718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define TOP_FLD 0x01 3728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define BOT_FLD 0x02 3738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define COMP_FLD_PAIR 0x03 /* TOP_FLD | BOT_FLD */ 3748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define AFRM_PIC 0x04 3758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define TOP_REF 0x08 3768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define BOT_REF 0x10 3778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PIC_MASK 0x03 3788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NON_EXISTING 0xff 3798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* field picture type for display */ 3818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DISP_TOP_FLD 0x00 3828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DISP_BOT_FLD 0x01 3838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Slice Types */ 3858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define P_SLICE 0 3868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_SLICE 1 3878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define I_SLICE 2 3888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SP_SLICE 3 3898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SI_SLICE 4 3908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Definition for picture skip */ 3928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SKIP_NONE (0x0) 3938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define I_SLC_BIT (0x1) 3948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define P_SLC_BIT (0x2) 3958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_SLC_BIT (0x4) 3968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Macros used for Deblocking */ 3988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define D_INTER_MB 0 3998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define D_INTRA_MB 1 4008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define D_PRED_NON_16x16 2 4018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define D_B_SLICE 4 4028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define D_B_SUBMB 6 //D_B_SLICE | D_PRED_NON_16x16 | D_INTER_MB 4038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define D_FLD_MB 0x80 4048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Macros for Cabac checks */ 4068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** MbType */ 4078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** |x|x|I_PCM|SKIP| 4088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S |S|Inter/Intra|P/B|NON-BD16x16/BD16x16,I16x16/I4x4| */ 4098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_INTRA 0x00 /* 0000 00xx */ 4108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_INTER 0x04 /* 0000 01xx */ 4118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_I4x4 0x00 /* 0000 00x0 */ 4128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_I16x16 0x01 /* 0000 00x1 */ 4138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_BD16x16 0x04 /* 0000 0100 */ 4148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_NON_BD16x16 0x05 /* 0000 0101 */ 4158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_P 0x07 /* 0000 0111 */ 4168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_SI4x4 0x08 /* 0000 10x0 */ 4178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_SI16x16 0x09 /* 0000 10x1 */ 4188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_SKIP_MASK 0x10 /* 0001 0000 */ 4198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_SKIP 0x10 /* 0001 0000 */ 4208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_P_SKIP 0x16 /* 0001 x11x */ 4218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_B_SKIP 0x14 /* 0001 x100 */ 4228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_BD16x16_MASK 0x07 /* 0000 0111 */ 4238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_INTRA_MASK 0x04 /* 0000 0100 */ 4248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CAB_I_PCM 0x20 /* 001x xxxx */ 4258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**< Binarization types for CABAC */ 4278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* |x|x|x|x|MSB_FIRST_FLC|FLC|TUNARY|UNARY| */ 4288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define UNARY 1 4298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define TUNARY 2 4308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define FLC 4 4318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MSB_FIRST_FLC 12 4328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Macroblock Types */ 4348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define I_4x4_MB 0 4358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define I_16x16_MB 1 4368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define P_MB 2 4378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_MB 3 4388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SI_MB 4 4398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SP_MB 5 4408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define I_PCM_MB 6 4418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SI4x4_MB 0xFF 4438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Intra luma 16x16 and chroma 8x8 prediction modes */ 4458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NUM_INTRA_PRED_MODES 4 4468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define VERT 0 4478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define HORIZ 1 4488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DC 2 4498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PLANE 3 4508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NOT_VALID -1 4518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DC_DC_DC_DC 0x02020202 /*packed 4 bytes used in Decode Intra Mb*/ 4528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Intra luma 4x4 prediction modes */ 4548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NUM_INTRA4x4_PRED_MODES 9 4558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** VERT, HORIZ, DC are applicable to 4x4 as well */ 4578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** D - Down; U - Up; L - Left; R - Right */ 4588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DIAG_DL 3 4598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DIAG_DR 4 4608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define VERT_R 5 4618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define HORIZ_D 6 4628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define VERT_L 7 4638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define HORIZ_U 8 4648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** P_MB prediction modes */ 4668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NUM_INTER_MB_PRED_MODES 5 4678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PRED_16x16 0 4688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PRED_16x8 1 4698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PRED_8x16 2 4708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PRED_8x8 3 4718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PRED_8x8R0 4 4728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAGIC_16x16 5 4738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MB_SKIP 255 4748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* P_MB submb modes */ 4768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define P_L0_8x8 0 4778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define P_L0_8x4 1 4788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define P_L0_4x8 2 4798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define P_L0_4x4 3 4808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* B_MB submb modes */ 4828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_DIRECT_8x8 0 4838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_L0_8x8 1 4848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_L1_8x8 2 4858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_BI_8x8 3 4868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_L0_8x4 4 4878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_L0_4x8 5 4888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_L1_8x4 6 4898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_L1_4x8 7 4908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_BI_8x4 8 4918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_BI_4x8 9 4928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_L0_4x4 10 4938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_L1_4x4 11 4948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_BI_4x4 12 4958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** B_MB prediction modes */ 4978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_8x8 22 4988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PRED_INVALID -1 4998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_DIRECT 0 5008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PRED_L0 1 5018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PRED_L1 2 5028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define BI_PRED 3 5038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_DIRECT_BI_PRED 23 5048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_DIRECT_PRED_L0 24 5058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_DIRECT_PRED_L1 25 5068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_DIRECT_SPATIAL 26 5078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_DIRECT8x8_BI_PRED 13 5098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_DIRECT8x8_PRED_L0 14 5108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define B_DIRECT8x8_PRED_L1 15 5118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define ONE_TO_ONE 0 5138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define FRM_TO_FLD 1 5148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define FLD_TO_FRM 2 5158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Inter Sub MB Pred modes */ 5178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NUM_INTER_SUBMB_PRED_MODES 4 5188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SUBMB_8x8 0 5198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SUBMB_8x4 1 5208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SUBMB_4x8 2 5218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SUBMB_4x4 3 5228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Coded Block Pattern - Chroma */ 5248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CBPC_ALLZERO 0 5258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CBPC_ACZERO 1 5268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CBPC_NONZERO 2 5278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Index for accessing the left MB in the MV predictor array */ 5298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define LEFT 0 5308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Index for accessing the top MB in the MV predictor array */ 5318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define TOP 1 5328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Index for accessing the top right MB in the MV predictor array */ 5338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define TOP_R 2 5348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Index for accessing the top Left MB in the MV predictor array */ 5358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define TOP_L 3 5368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Maximum number of Sequence Parameter sets */ 5388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_NUM_SEQ_PARAMS 32 5398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Maximum number of Picture Parameter sets */ 5418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_NUM_PIC_PARAMS 256 5428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MASK_ERR_SEQ_SET_ID (0xFFFFFFE0) 5448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MASK_ERR_PIC_SET_ID (0xFFFFFF00) 5458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_PIC_ORDER_CNT_TYPE 2 5478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_BITS_IN_FRAME_NUM 16 5498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_BITS_IN_POC_LSB 16 5508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_MAX_REF_PICS 16 5528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_MAX_REF_IDX 32 5538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_WEIGHT_BIPRED_IDC 2 5548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_CABAC_INIT_IDC 2 5558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_DEFAULT_NUM_CORES 1 5578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_SEPARATE_PARSE (H264_DEFAULT_NUM_CORES == 2)? 1 :0 5588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Maximum number of Slice groups */ 5608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_NUM_SLICE_GROUPS 8 5618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_NUM_REF_FRAMES_OFFSET 255 5628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Deblocking modes for a slice */ 5648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SLICE_BOUNDARY_DBLK_DISABLED 2 5658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DBLK_DISABLED 1 5668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DBLK_ENABLED 0 5678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MIN_DBLK_FIL_OFF -12 5688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_DBLK_FIL_OFF 12 5698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Width of the predictor buffers used for MC */ 5718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MB_SIZE 16 5728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define BLK8x8SIZE 8 5738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define BLK_SIZE 4 5748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NUM_BLKS_PER_MB 24 5758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NUM_LUM_BLKS_PER_MB 16 5768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SUB_BLK_WIDTH 4 5788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SUB_SUB_BLK_SIZE 4 /* 2x2 pixel i4_size */ 5798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SUB_BLK_SIZE ((SUB_BLK_WIDTH) * (SUB_BLK_WIDTH)) 5808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MB_LUM_SIZE 256 5818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MB_CHROM_SIZE 64 5828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**< Width to pad the luminance frame buff */ 5848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**< Height to pad the luminance frame buff */ 5858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**< Width to pad the chrominance frame buff */ 5868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**< Height to pad the chrominance frame buff */ 5878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PAD_LEN_Y_H 32 5898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PAD_LEN_Y_V 20 5908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PAD_LEN_UV_H 16 5918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PAD_LEN_UV_V 8 5928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PAD_MV_BANK_ROW 64 5948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/**< Maimum u4_ofst by which the Mvs could point outside the frame buffers 5968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S horizontally in the left and vertically in the top direction */ 5978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_OFFSET_OUTSIDE_X_FRM -20 5988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_OFFSET_OUTSIDE_Y_FRM -20 5998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_OFFSET_OUTSIDE_UV_FRM -8 6008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** UVLC parsing macros */ 6028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define UEV 1 6038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SEV 2 6048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define TEV 3 6058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Defines for Boolean values */ 6078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#ifndef TRUE 6088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define TRUE 1 6098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define FALSE 0 6108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#endif 6118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define UNUSED_FOR_REF 0 6138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define IS_SHORT_TERM 1 6148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define IS_LONG_TERM 2 6158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Defines for which field gets displayed first */ 6178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_FRAMES 16 6188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define INVALID_FRAME_NUM 0x0fffffff 6198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DO_NOT_DISP 254 6208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DISP_FLD_FIRST_UNDEF 0 6218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DISP_TOP_FLD_FIRST 1 6228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DISP_BOT_FLD_FIRST 2 6238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Misc error resilience requirements*/ 6258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MASK_LOG2_WEIGHT_DENOM 0xFFFFFFF8 6268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MASK_PRED_WEIGHT_OFFSET 0xFFFFFF00 6278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_REDUNDANT_PIC_CNT 127 6288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#endif //DEBLOCK_THREAD 6328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NUM_COEFFS_IN_4x4BLK 16 6348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MEMSET_16BYTES(pu4_start,value) \ 6378ef4c3f6142028732a155cbfc1febd6ef5da72fdMarco Nelissen{ \ 6388ef4c3f6142028732a155cbfc1febd6ef5da72fdMarco Nelissen memset(pu4_start,value,16); \ 6398ef4c3f6142028732a155cbfc1febd6ef5da72fdMarco Nelissen} 6408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MEMCPY_16BYTES(dst,src) \ 6428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ \ 6438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S memcpy(dst,src,16); \ 6448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 6458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 6478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#endif /*_IH264D_DEFS_H_*/ 648