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