| /* | 
| * | 
| * 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 PIXW_1080P      (1920) | 
| #define PIXH_1080P      (1088) | 
| #define PIXW_4Kx2K      (4096) | 
| #define PIXH_4Kx2K      (2304) | 
| #define PIXW_8Kx4K      (8192) | 
| #define PIXH_8Kx4K      (4320) | 
|   | 
| #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 | 
|   | 
| #define LOG2_MAX_CTB_SIZE   6 | 
| #define LOG2_MIN_CTB_SIZE   4 | 
| #define LOG2_MAX_PU_SIZE    6 | 
| #define LOG2_MIN_PU_SIZE    2 | 
| #define LOG2_MAX_TU_SIZE    5 | 
| #define LOG2_MIN_TU_SIZE    2 | 
| #define LOG2_MAX_CU_SIZE    6 | 
| #define LOG2_MIN_CU_SIZE    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 |