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