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/** 218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************* 228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @file 238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* ih264e_defs.h 248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @brief 268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* Definitions used in the encoder 278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @author 298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* ittiam 308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* @remarks 328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* None 338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S* 348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S******************************************************************************* 358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/ 368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#ifndef IH264E_DEFS_H_ 388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define IH264E_DEFS_H_ 398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 41134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K#define PARSE_COEFF_DATA_BLOCK_4x4(pv_mb_coeff_data, ps_mb_coeff_data, u4_nnz, u4_sig_coeff_map, pi2_res_block) \ 42134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K{ \ 43134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K ps_mb_coeff_data = pv_mb_coeff_data; \ 44134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K u4_nnz = ps_mb_coeff_data->i4_sig_map_nnz & 0xff; \ 45134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K if (u4_nnz) \ 46134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K { \ 47134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K u4_sig_coeff_map = ps_mb_coeff_data->i4_sig_map_nnz >> 16; \ 48134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K pi2_res_block = ps_mb_coeff_data->ai2_residue; \ 49134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K pv_mb_coeff_data = ps_mb_coeff_data->ai2_residue + ALIGN2(u4_nnz); \ 50134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K } \ 51134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K else \ 52134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K { \ 53134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K pv_mb_coeff_data = ps_mb_coeff_data->ai2_residue; \ 54134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K } \ 55134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K} 56134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K 578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Width and height restrictions */ 598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Minimum width supported by codec 628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MIN_WD 16 648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Maximum width supported by codec 678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_WD 1920 708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Minimum height supported by codec 738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MIN_HT 16 758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Maximum height supported by codec 788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_HT 1920 818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Padding sizes */ 848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Padding used for top of the frame 878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PAD_TOP 32 898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Padding used for bottom of the frame 928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PAD_BOT 32 948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Padding used at left of the frame 978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PAD_LEFT 32 998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 1018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Padding used at right of the frame 1028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PAD_RIGHT 32 1048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 1058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Padding for width 1068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PAD_WD (PAD_LEFT + PAD_RIGHT) 1088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 1098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Padding for height 1108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define PAD_HT (PAD_TOP + PAD_BOT) 1128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* 1148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * buffer width and height for half pel buffers 1158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define HP_BUFF_WD 24 1178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define HP_BUFF_HT 18 1188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 1208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Number of frame restrictions */ 1218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 1228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 123134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K * Maximum number of reference pictures 124134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K */ 125134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K#define MAX_REF_PIC_CNT 2 126134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K 127134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K/** 128134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K * Minimum number of reference pictures 129134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K */ 130134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K#define MIN_REF_PIC_CNT 1 131134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K 132134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K/** 133134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K * Maximum number of B pictures between two I/P pictures 134134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K */ 135134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K#define MAX_NUM_BFRAMES 10 136134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K 137134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K/** 1388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Maximum number of reference buffers in DPB manager 1398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_REF_CNT 32 1418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 1436cb6772805d86c66848b15a54926e396daed06b1Harinarayanan K K/* Minimum size of inter prediction unit supported by encoder */ 1446cb6772805d86c66848b15a54926e396daed06b1Harinarayanan K K/*****************************************************************************/ 1456cb6772805d86c66848b15a54926e396daed06b1Harinarayanan K K#define ENC_MIN_PU_SIZE 16 1466cb6772805d86c66848b15a54926e396daed06b1Harinarayanan K K 1476cb6772805d86c66848b15a54926e396daed06b1Harinarayanan K K/*****************************************************************************/ 1488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Num cores releated defs */ 1498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 1508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 1518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Maximum number of cores 1528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_NUM_CORES 8 1548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 1568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Maximum number of threads for pixel processing 1578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_PROCESS_THREADS MAX_NUM_CORES 1598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 1618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Maximum process context sets 1628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Used to stagger encoding of MAX_CTXT_SETS in parallel 1638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1646cb6772805d86c66848b15a54926e396daed06b1Harinarayanan K K#define MAX_CTXT_SETS 1 1658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 1668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Maximum number of contexts 1678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Kept as twice the number of threads, to make it easier to initialize the contexts 1688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * from master thread 1698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_PROCESS_CTXT MAX_NUM_CORES * MAX_CTXT_SETS 1718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 1738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Profile and level restrictions */ 1748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/*****************************************************************************/ 1758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 1768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Max level supported by the codec 1778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_LEVEL IH264_LEVEL_51 1798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 1818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Min level supported by the codec 1828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MIN_LEVEL IH264_LEVEL_10 1848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 1868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Maximum number of slice headers that are held in memory simultaneously 1878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * For single core implementation only 1 slice header is enough. 1888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * But for multi-core parsing thread needs to ensure that slice headers are 1898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * stored till the last CB in a slice is decoded. 1908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Parsing thread has to wait till last CB of a slice is consumed before reusing 1918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * overwriting the slice header 1928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * MAX_SLICE_HDR_CNT is assumed to be a power of 2 1938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 1948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define LOG2_MAX_SLICE_HDR_CNT 8 1968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_SLICE_HDR_CNT (1 << LOG2_MAX_SLICE_HDR_CNT) 1978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 1988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* Generic declarations */ 1998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_MAX_LEVEL 40 2008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_RECON_ENABLE 0 2018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_RC IVE_RC_STORAGE 2028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_MAX_FRAMERATE 120000 2038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_MAX_BITRATE 20000000 204134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K#define DEFAULT_MAX_NUM_BFRAMES 0 2058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_MAX_SRCH_RANGE_X 256 2068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_MAX_SRCH_RANGE_Y 256 2078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_SLICE_PARAM 256 2088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_SRC_FRAME_RATE 30000 2098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_TGT_FRAME_RATE 30000 2108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_BITRATE 6000000 2118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_QP_MIN 10 2128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_QP_MAX 51 2138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_I_QP 25 2148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_P_QP 28 2158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_B_QP 28 2168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_AIR_MODE IVE_AIR_MODE_NONE 2178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_AIR_REFRESH_PERIOD 30 2188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_VBV_DELAY 1000 2198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_VBV_SIZE 16800000 /* level 3.1 */ 2208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_NUM_CORES 1 2218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_ME_SPEED_PRESET 100 2228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_HPEL 1 2238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_QPEL 1 2248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_I4 1 2258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_I8 0 2268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_I16 1 2278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_ENABLE_FAST_SAD 0 2288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_ENABLE_SATQD 1 2298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_MIN_SAD_ENABLE 0 2308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_MIN_SAD_DISABLE -1 2318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_SRCH_RNG_X 64 2328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_SRCH_RNG_Y 48 2338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_I_INTERVAL 30 2348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_IDR_INTERVAL 1000 2358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_B_FRAMES 0 2368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_DISABLE_DEBLK_LEVEL 0 2378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_PROFILE IV_PROFILE_BASE 2388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_MIN_INTRA_FRAME_RATE 1 2398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_MAX_INTRA_FRAME_RATE 2147483647 2408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_MIN_BUFFER_DELAY 30 2418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_MAX_BUFFER_DELAY 20000 2428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_STRIDE 0 2438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_ENC_SPEED_PRESET IVE_USER_DEFINED 2448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_PRE_ENC_ME 0 2458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DEFAULT_PRE_ENC_IPE 0 246134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K#define DEFAULT_ENTROPY_CODING_MODE 0 2478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Maximum number of entries in input buffer list */ 2498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_INP_BUF_LIST_ENTRIES 32 2508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Maximum number of entries in output buffer list */ 2528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_OUT_BUF_LIST_ENTRIES 32 2538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Maximum number of entries in recon buffer list used within the encoder */ 2558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_REC_LIST_ENTRIES 16 2568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Number of buffers created to hold half-pel planes for every reference buffer */ 258134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K#define HPEL_PLANES_CNT 1 259134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K 260134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K/** Number of buffers Needed for SUBPEL and BIPRED computation */ 261134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K#define SUBPEL_BUFF_CNT 4 2628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 2648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ***************************************************************************** 2658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Macro to compute total size required to hold on set of scaling matrices 2668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ***************************************************************************** 2678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 2688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define SCALING_MAT_SIZE(m_scaling_mat_size) \ 2698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ \ 2708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S m_scaling_mat_size = 6 * TRANS_SIZE_4 * TRANS_SIZE_4; \ 2718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S m_scaling_mat_size += 6 * TRANS_SIZE_8 * TRANS_SIZE_8; \ 2728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S m_scaling_mat_size += 6 * TRANS_SIZE_16 * TRANS_SIZE_16; \ 2738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S m_scaling_mat_size += 2 * TRANS_SIZE_32 * TRANS_SIZE_32; \ 2748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S} 2758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 2778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ****************************************************************************** 2788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @brief Macros to get raster scan position of a block[8x8] / sub block[4x4] 2798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S ****************************************************************************** 2808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 2818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define GET_BLK_RASTER_POS_X(x) ((x & 0x01)) 2828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define GET_BLK_RASTER_POS_Y(y) ((y >> 1)) 2838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define GET_SUB_BLK_RASTER_POS_X(x) ((x & 0x01)) 2848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define GET_SUB_BLK_RASTER_POS_Y(y) ((y >> 1)) 2858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NUM_RC_MEMTABS 17 2878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 2888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 2898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S *************************************************************************** 2908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Enum to hold various mem records being request 2918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S **************************************************************************** 2928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 2938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Senum 2948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 2958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 2968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Codec Object at API level 2978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 2988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_IV_OBJ, 2998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 3018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Codec context 3028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 3038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_CODEC, 3048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 306134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K * Cabac context 307134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K */ 308134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K MEM_REC_CABAC, 309134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K 310134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K /** 311134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K * Cabac context_mb_info 312134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K */ 313134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K MEM_REC_CABAC_MB_INFO, 314134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K 315134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K /** 3168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * entropy context 3178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 3188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_ENTROPY, 3198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 3218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Buffer to hold coeff data 3228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 3238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_MB_COEFF_DATA, 3248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 3268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Buffer to hold coeff data 3278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 3288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_MB_HEADER_DATA, 3298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 3318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Motion vector bank 3328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 3338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_MVBANK, 3348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 3368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Motion vector bits 3378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 3388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_MVBITS, 3398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 3418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds mem records passed to the codec. 3428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 3438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_BACKUP, 3448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 3468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds SPS 3478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 3488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_SPS, 3498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 3518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds PPS 3528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 3538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_PPS, 3548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 3568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds Slice Headers 3578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 3588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_SLICE_HDR, 3598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 3618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Contains map indicating slice index per MB basis 3628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 3638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_SLICE_MAP, 3648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 3668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds thread handles 3678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 3688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_THREAD_HANDLE, 3698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 3718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds control call mutex 3728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 3738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_CTL_MUTEX, 3748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 3768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds entropy call mutex 3778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 3788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_ENTROPY_MUTEX, 3798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 3818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds memory for Process JOB Queue 3828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 3838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_PROC_JOBQ, 3848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 3868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds memory for Entropy JOB Queue 3878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 3888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_ENTROPY_JOBQ, 3898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 3918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Contains status map indicating processing status per MB basis 3928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 3938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_PROC_MAP, 3948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 3958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 3968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Contains status map indicating deblocking status per MB basis 3978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 3988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_DBLK_MAP, 3998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* 4018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Contains AIR map and mask 4028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 4038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_AIR_MAP, 4048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 4068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Contains status map indicating ME status per MB basis 4078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 4088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_ME_MAP, 4098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 4118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds dpb manager context 4128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 4138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_DPB_MGR, 4148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 4168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds intermediate buffers needed during processing stage 4178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Memory for process contexts is allocated in this memtab 4188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 4198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_PROC_SCRATCH, 4208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 4228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds buffers for vert_bs, horz_bs and QP (all frame level) 4238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 4248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_QUANT_PARAM, 4258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 4278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds top row syntax information 4288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 4298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_TOP_ROW_SYN_INFO, 4308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 4328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds buffers for vert_bs, horz_bs and QP (all frame level) 4338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 4348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_BS_QP, 4358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 4378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds input buffer manager context 4388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 4398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_INP_PIC, 4408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 4428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds output buffer manager context 4438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 4448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_OUT, 4458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 4478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Holds picture buffer manager context and array of pic_buf_ts 4488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Also holds reference picture buffers in non-shared mode 4498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 4508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_REF_PIC, 4518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* 4538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Mem record for color space conversion 4548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 4558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_CSC, 4568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 4588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * NMB info struct 4598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 4608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_MB_INFO_NMB, 4618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 4638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Rate control of memory records. 4648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 4658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_RC, 4668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 4688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Place holder to compute number of memory records. 4698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 4708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S MEM_REC_CNT = MEM_REC_RC + NUM_RC_MEMTABS, 4718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /* 4738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Do not add anything below 4748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 4758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}; 4768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4778d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define DISABLE_DEBLOCK_INTERVAL 8 4788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4798d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 4808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S **************************************************************************** 4818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Disable deblock levels 4828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Level 0 enables deblocking completely and level 4 disables completely 4838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Other levels are intermediate values to control deblocking level 4848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S **************************************************************************** 4858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 4868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha Senum 4878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S{ 4888d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 4898d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Enable deblocking completely 4908d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 4918d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S DISABLE_DEBLK_LEVEL_0, 4928d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4938d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 4948d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Disable only within MB edges - Not supported currently 4958d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 4968d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S DISABLE_DEBLK_LEVEL_1, 4978d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 4988d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 4998d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Enable deblocking once in DEBLOCK_INTERVAL number of pictures 5008d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * and for I slices 5018d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 5028d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S DISABLE_DEBLK_LEVEL_2, 5038d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5048d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 5058d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Enable deblocking only for I slices 5068d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 5078d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S DISABLE_DEBLK_LEVEL_3, 5088d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5098d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S /** 5108d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Disable deblocking completely 5118d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 5128d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S DISABLE_DEBLK_LEVEL_4 5138d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S}; 5148d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5158d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 5168d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S **************************************************************************** 5178d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * Number of buffers for I/O based on format 5188d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S **************************************************************************** 5198d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S */ 5208d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5218d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Minimum number of input buffers */ 5228d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MIN_INP_BUFS 2 5238d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5248d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Minimum number of output buffers */ 5258d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MIN_OUT_BUFS 1 5268d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5278d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Minimum number of components in bitstream buffer */ 5288d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MIN_BITS_BUFS_COMP 1 5298d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5308d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Minimum number of components in raw buffer */ 5318d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MIN_RAW_BUFS_420_COMP 3 5328d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MIN_RAW_BUFS_422ILE_COMP 1 5338d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MIN_RAW_BUFS_RGB565_COMP 1 5348d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MIN_RAW_BUFS_RGBA8888_COMP 1 5358d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MIN_RAW_BUFS_420SP_COMP 2 5368d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5378d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** Maximum number of active config paramter sets */ 5388d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MAX_ACTIVE_CONFIG_PARAMS 32 5398d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5408d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 5418d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S****************************************************************************** 5428d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @brief Thresholds for luma & chroma to determine if the 8x8 subblock needs 5438d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * to be encoded or skipped 5448d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S****************************************************************************** 5458d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/ 5468d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define LUMA_SUB_BLOCK_SKIP_THRESHOLD 4 5478d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define LUMA_BLOCK_SKIP_THRESHOLD 5 5488d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define CHROMA_BLOCK_SKIP_THRESHOLD 4 5498d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5508d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/** 5518d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S****************************************************************************** 5528d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * @brief defines the first byte of a NAL unit 5538d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S * forbidden zero bit - nal_ref_idc - nal_unit_type 5548d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S****************************************************************************** 5558d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S*/ 5568d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* [0 - 11 - 00111] */ 5578d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NAL_SPS_FIRST_BYTE 0x67 5588d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5598d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* [0 - 11 - 01000] */ 5608d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NAL_PPS_FIRST_BYTE 0x68 5618d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5628d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* [0 - 11 - 00001] */ 5638d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NAL_SLICE_FIRST_BYTE 0x61 5648d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5658d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* [0 - 00 - 00001] */ 5668d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NAL_NON_REF_SLICE_FIRST_BYTE 0x01 5678d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5688d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* [0 - 11 - 00101] */ 5698d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NAL_IDR_SLICE_FIRST_BYTE 0x65 5708d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5718d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* [0 - 00 - 01100] */ 5728d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NAL_FILLER_FIRST_BYTE 0x0C 5738d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5748d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S/* [0 - 00 - 00110] */ 5758d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define NAL_SEI_FIRST_BYTE 0x06 5768d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 577134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K#define H264_ALLOC_INTER_FRM_INTV 2 5788d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 579134291ea0b1b9794b4d7feee2c3ffdbd941c5237Harinarayanan K K#define H264_MPEG_QP_MAP 255 5808d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5818d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define MPEG2_QP_ELEM (H264_MPEG_QP_MAP + 1) 5828d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_QP_ELEM (MAX_H264_QP + 1) 5838d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5848d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_INIT_QUANT_I 26 5858d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#define H264_INIT_QUANT_P 34 5868d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S 5878d3d303c7942ced6a987a52db8977d768dc3605fHamsalekha S#endif /*IH264E_DEFS_H_*/ 588