android13/hardware/rockchip/tv_input/enc/include/h265_syntax.h

192 lines
4.9 KiB
C
Executable File

/*
*
* Copyright 2015 Rockchip Electronics Co. LTD
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef __H265_SYNTAX_H__
#define __H265_SYNTAX_H__
#define MAX_WIDTH (4096)
#define MAX_HEIGHT (2304)
#if 0
#define REF_PIC_LIST_NUM_IDX 32
#define H265E_UUID_LENGTH 16
#define MAX_CPB_CNT 32 ///< Upper bound of (cpb_cnt_minus1 + 1)
#define MAX_NUM_LAYER_IDS 64
#define MAX_NUM_VPS 16
#define MAX_NUM_SPS 16
#define MAX_NUM_PPS 64
#define MAX_TLAYER 7 ///< max number of temporal layer
#define MAX_VPS_NUM_HRD_PARAMETERS 1
#define MAX_VPS_OP_SETS_PLUS1 1024
#define MAX_VPS_NUH_RESERVED_ZERO_LAYER_ID_PLUS1 1
#define MAX_NUM_REF_PICS 16 ///< max. number of pictures used for reference
#define MAX_NUM_REF 16 ///< max. number of entries in picture reference list
#define MAX_CU_DEPTH 6 // log2(LCUSize)
#define REF_PIC_LIST_0 0
#define REF_PIC_LIST_1 1
#define REF_PIC_LIST_X 100
#define REF_BY_RECN(idx) (0x00000001 << idx)
#define REF_BY_REFR(idx) (0x00000001 << idx)
#define MAX_NUM_REF_PICS 16
#endif
#define MAX_DPB_SIZE 17 // A.4.1
#define MAX_REFS 16
/**
* 7.4.2.1
*/
#define MAX_SUB_LAYERS 7
#define MAX_VPS_COUNT 16
#define MAX_SPS_COUNT 16
#define MAX_PPS_COUNT 64
#define MAX_SHORT_TERM_RPS_COUNT 64
#define MAX_CU_SIZE 128
//TODO: check if this is really the maximum
#define MAX_TRANSFORM_DEPTH 5
#define MAX_TB_SIZE 32
#define MAX_PB_SIZE 64
#define MAX_LOG2_CTB_SIZE 6
#define MAX_QP 51
#define DEFAULT_INTRA_TC_OFFSET 2
#define HEVC_CONTEXTS 183
#define MRG_MAX_NUM_CANDS 5
#define L0 0
#define L1 1
#define REF_PIC_LIST_NUM_IDX 32
#define MAX_CPB_CNT 32 //< Upper bound of (cpb_cnt_minus1 + 1)
#define MAX_CU_DEPTH 6 // log2(LCUSize)
#define MAX_VPS_NUM_HRD_PARAMETERS 1
#define MAX_VPS_OP_SETS_PLUS1 1024
#define MAX_VPS_NUH_RESERVED_ZERO_LAYER_ID_PLUS1 1
#define MAX_NUM_LONG_TERM_REF_PIC_POC 20
#define REF_BY_RECN(idx) (0x00000001 << idx)
#define REF_BY_REFR(idx) (0x00000001 << idx)
#define EPEL_EXTRA_BEFORE 1
#define EPEL_EXTRA_AFTER 2
#define EPEL_EXTRA 3
#define QPEL_EXTRA_BEFORE 3
#define QPEL_EXTRA_AFTER 4
#define QPEL_EXTRA 7
#define EDGE_EMU_BUFFER_STRIDE 80
#define MPP_INPUT_BUFFER_PADDING_SIZE 8
#define MPP_PROFILE_HEVC_MAIN 1
#define MPP_PROFILE_HEVC_MAIN_10 2
#define MPP_PROFILE_HEVC_MAIN_STILL_PICTURE 3
/**
* Value of the luma sample at position (x, y) in the 2D array tab.
*/
#define IS_IDR(s) (s->nal_unit_type == NAL_IDR_W_RADL || s->nal_unit_type == NAL_IDR_N_LP)
#define IS_BLA(s) (s->nal_unit_type == NAL_BLA_W_RADL || s->nal_unit_type == NAL_BLA_W_LP || \
s->nal_unit_type == NAL_BLA_N_LP)
#define IS_IRAP(s) (s->nal_unit_type >= 16 && s->nal_unit_type <= 23)
/**
* Table 7-3: NAL unit type codes
*/
enum NALUnitType {
NAL_TRAIL_N = 0,
NAL_TRAIL_R = 1,
NAL_TSA_N = 2,
NAL_TSA_R = 3,
NAL_STSA_N = 4,
NAL_STSA_R = 5,
NAL_RADL_N = 6,
NAL_RADL_R = 7,
NAL_RASL_N = 8,
NAL_RASL_R = 9,
NAL_BLA_W_LP = 16,
NAL_BLA_W_RADL = 17,
NAL_BLA_N_LP = 18,
NAL_IDR_W_RADL = 19,
NAL_IDR_N_LP = 20,
NAL_CRA_NUT = 21,
NAL_VPS = 32,
NAL_SPS = 33,
NAL_PPS = 34,
NAL_AUD = 35,
NAL_EOS_NUT = 36,
NAL_EOB_NUT = 37,
NAL_FD_NUT = 38,
NAL_SEI_PREFIX = 39,
NAL_SEI_SUFFIX = 40,
};
typedef enum H265NalPriority_t {
H265_NAL_PRIORITY_DISPOSABLE = 0,
H265_NAL_PRIORITY_LOW = 1,
H265_NAL_PRIORITY_HIGH = 2,
H265_NAL_PRIORITY_HIGHEST = 3,
} H265NalPriority;
enum RPSType {
ST_CURR_BEF = 0,
ST_CURR_AFT,
ST_FOLL,
LT_CURR,
LT_FOLL,
NB_RPS_TYPE,
};
typedef enum SliceType_t {
B_SLICE = 0,
P_SLICE = 1,
I_SLICE = 2,
} SliceType;
typedef enum {
H265_LEVEL_NONE = 0,
H265_LEVEL1 = 30,
H265_LEVEL2 = 60,
H265_LEVEL2_1 = 63,
H265_LEVEL3 = 90,
H265_LEVEL3_1 = 93,
H265_LEVEL4 = 120,
H265_LEVEL4_1 = 123,
H265_LEVEL5 = 150,
H265_LEVEL5_1 = 153,
H265_LEVEL5_2 = 156,
H265_LEVEL6 = 180,
H265_LEVEL6_1 = 183,
H265_LEVEL6_2 = 186,
H265_LEVEL8_5 = 255,
} H265Level;
#endif