1*495ae853SAndroid Build Coastguard Worker /****************************************************************************** 2*495ae853SAndroid Build Coastguard Worker * 3*495ae853SAndroid Build Coastguard Worker * Copyright (C) 2015 The Android Open Source Project 4*495ae853SAndroid Build Coastguard Worker * 5*495ae853SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 6*495ae853SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 7*495ae853SAndroid Build Coastguard Worker * You may obtain a copy of the License at: 8*495ae853SAndroid Build Coastguard Worker * 9*495ae853SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 10*495ae853SAndroid Build Coastguard Worker * 11*495ae853SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 12*495ae853SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 13*495ae853SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14*495ae853SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 15*495ae853SAndroid Build Coastguard Worker * limitations under the License. 16*495ae853SAndroid Build Coastguard Worker * 17*495ae853SAndroid Build Coastguard Worker ***************************************************************************** 18*495ae853SAndroid Build Coastguard Worker * Originally developed and contributed by Ittiam Systems Pvt. Ltd, Bangalore 19*495ae853SAndroid Build Coastguard Worker */ 20*495ae853SAndroid Build Coastguard Worker 21*495ae853SAndroid Build Coastguard Worker /** 22*495ae853SAndroid Build Coastguard Worker ******************************************************************************* 23*495ae853SAndroid Build Coastguard Worker * @file 24*495ae853SAndroid Build Coastguard Worker * ih264_defs.h 25*495ae853SAndroid Build Coastguard Worker * 26*495ae853SAndroid Build Coastguard Worker * @brief 27*495ae853SAndroid Build Coastguard Worker * Definitions used in the codec 28*495ae853SAndroid Build Coastguard Worker * 29*495ae853SAndroid Build Coastguard Worker * @author 30*495ae853SAndroid Build Coastguard Worker * ittiam 31*495ae853SAndroid Build Coastguard Worker * 32*495ae853SAndroid Build Coastguard Worker * @remarks 33*495ae853SAndroid Build Coastguard Worker * none 34*495ae853SAndroid Build Coastguard Worker * 35*495ae853SAndroid Build Coastguard Worker ******************************************************************************* 36*495ae853SAndroid Build Coastguard Worker */ 37*495ae853SAndroid Build Coastguard Worker 38*495ae853SAndroid Build Coastguard Worker #ifndef _IH264_DEFS_H_ 39*495ae853SAndroid Build Coastguard Worker #define _IH264_DEFS_H_ 40*495ae853SAndroid Build Coastguard Worker 41*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 42*495ae853SAndroid Build Coastguard Worker /* Enums */ 43*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 44*495ae853SAndroid Build Coastguard Worker 45*495ae853SAndroid Build Coastguard Worker 46*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 47*495ae853SAndroid Build Coastguard Worker /* Profile and Levels */ 48*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 49*495ae853SAndroid Build Coastguard Worker 50*495ae853SAndroid Build Coastguard Worker /** 51*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 52*495ae853SAndroid Build Coastguard Worker * @enum PROFILE_IDC 53*495ae853SAndroid Build Coastguard Worker * @brief Defines the set of possible profiles 54*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 55*495ae853SAndroid Build Coastguard Worker */ 56*495ae853SAndroid Build Coastguard Worker enum 57*495ae853SAndroid Build Coastguard Worker { 58*495ae853SAndroid Build Coastguard Worker IH264_PROFILE_BASELINE = 66, 59*495ae853SAndroid Build Coastguard Worker IH264_PROFILE_MAIN = 77, 60*495ae853SAndroid Build Coastguard Worker IH264_PROFILE_EXTENDED = 88, 61*495ae853SAndroid Build Coastguard Worker IH264_PROFILE_HIGH = 100, 62*495ae853SAndroid Build Coastguard Worker IH264_PROFILE_HIGH10 = 110, 63*495ae853SAndroid Build Coastguard Worker IH264_PROFILE_HIGH422 = 122, 64*495ae853SAndroid Build Coastguard Worker IH264_PROFILE_HIGH444 = 144, 65*495ae853SAndroid Build Coastguard Worker }; 66*495ae853SAndroid Build Coastguard Worker 67*495ae853SAndroid Build Coastguard Worker /** 68*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 69*495ae853SAndroid Build Coastguard Worker * @enum LEVEL_IDC 70*495ae853SAndroid Build Coastguard Worker * @brief Defines the set of possible levels 71*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 72*495ae853SAndroid Build Coastguard Worker */ 73*495ae853SAndroid Build Coastguard Worker typedef enum 74*495ae853SAndroid Build Coastguard Worker { 75*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_10 = 10, 76*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_1B = 9, 77*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_11 = 11, 78*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_12 = 12, 79*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_13 = 13, 80*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_20 = 20, 81*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_21 = 21, 82*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_22 = 22, 83*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_30 = 30, 84*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_31 = 31, 85*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_32 = 32, 86*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_40 = 40, 87*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_41 = 41, 88*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_42 = 42, 89*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_50 = 50, 90*495ae853SAndroid Build Coastguard Worker IH264_LEVEL_51 = 51, 91*495ae853SAndroid Build Coastguard Worker }IH264_LEVEL_T; 92*495ae853SAndroid Build Coastguard Worker 93*495ae853SAndroid Build Coastguard Worker 94*495ae853SAndroid Build Coastguard Worker /** 95*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 96*495ae853SAndroid Build Coastguard Worker * @enum PIC TYPES 97*495ae853SAndroid Build Coastguard Worker * @brief Defines the set of possible picture type - not signaled in bitstream 98*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 99*495ae853SAndroid Build Coastguard Worker */ 100*495ae853SAndroid Build Coastguard Worker typedef enum 101*495ae853SAndroid Build Coastguard Worker { 102*495ae853SAndroid Build Coastguard Worker PIC_NA = 0x7FFFFFFF, 103*495ae853SAndroid Build Coastguard Worker PIC_IDR = 0, 104*495ae853SAndroid Build Coastguard Worker PIC_I = 1, 105*495ae853SAndroid Build Coastguard Worker PIC_P = 2, 106*495ae853SAndroid Build Coastguard Worker PIC_B = 3, 107*495ae853SAndroid Build Coastguard Worker PIC_P_NONREF = 4, 108*495ae853SAndroid Build Coastguard Worker PIC_B_NONREF = 5, 109*495ae853SAndroid Build Coastguard Worker PIC_MAX, 110*495ae853SAndroid Build Coastguard Worker }PIC_TYPE_T; 111*495ae853SAndroid Build Coastguard Worker 112*495ae853SAndroid Build Coastguard Worker /** 113*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 114*495ae853SAndroid Build Coastguard Worker * @enum FRAME-FIELD types 115*495ae853SAndroid Build Coastguard Worker * @brief Defines the set of possible field types. 116*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 117*495ae853SAndroid Build Coastguard Worker */ 118*495ae853SAndroid Build Coastguard Worker enum 119*495ae853SAndroid Build Coastguard Worker { 120*495ae853SAndroid Build Coastguard Worker TOP_FIELD, 121*495ae853SAndroid Build Coastguard Worker BOTTOM_FIELD, 122*495ae853SAndroid Build Coastguard Worker FRAME, 123*495ae853SAndroid Build Coastguard Worker }; 124*495ae853SAndroid Build Coastguard Worker 125*495ae853SAndroid Build Coastguard Worker /** 126*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 127*495ae853SAndroid Build Coastguard Worker * @enum SLICE TYPES 128*495ae853SAndroid Build Coastguard Worker * @brief Defines the set of possible SLICE TYPES 129*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 130*495ae853SAndroid Build Coastguard Worker */ 131*495ae853SAndroid Build Coastguard Worker enum 132*495ae853SAndroid Build Coastguard Worker { 133*495ae853SAndroid Build Coastguard Worker PSLICE = 0, 134*495ae853SAndroid Build Coastguard Worker BSLICE = 1, 135*495ae853SAndroid Build Coastguard Worker ISLICE = 2, 136*495ae853SAndroid Build Coastguard Worker SPSLICE = 3, 137*495ae853SAndroid Build Coastguard Worker SISLICE = 4, 138*495ae853SAndroid Build Coastguard Worker EPSLICE = 5, 139*495ae853SAndroid Build Coastguard Worker EBSLICE = 6, 140*495ae853SAndroid Build Coastguard Worker EISLICE = 7, 141*495ae853SAndroid Build Coastguard Worker MAXSLICE_TYPE, 142*495ae853SAndroid Build Coastguard Worker }; 143*495ae853SAndroid Build Coastguard Worker 144*495ae853SAndroid Build Coastguard Worker /** 145*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 146*495ae853SAndroid Build Coastguard Worker * @enum NAL_UNIT_TYPE 147*495ae853SAndroid Build Coastguard Worker * @brief Defines the set of possible nal unit types 148*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 149*495ae853SAndroid Build Coastguard Worker */ 150*495ae853SAndroid Build Coastguard Worker typedef enum NAL_UNIT_TYPE_T 151*495ae853SAndroid Build Coastguard Worker { 152*495ae853SAndroid Build Coastguard Worker NAL_UNSPEC_0 = 0, 153*495ae853SAndroid Build Coastguard Worker NAL_SLICE_NON_IDR = 1, 154*495ae853SAndroid Build Coastguard Worker NAL_SLICE_DPA = 2, 155*495ae853SAndroid Build Coastguard Worker NAL_SLICE_DPB = 3, 156*495ae853SAndroid Build Coastguard Worker NAL_SLICE_DPC = 4, 157*495ae853SAndroid Build Coastguard Worker NAL_SLICE_IDR = 5, 158*495ae853SAndroid Build Coastguard Worker NAL_SEI = 6, 159*495ae853SAndroid Build Coastguard Worker NAL_SPS = 7, 160*495ae853SAndroid Build Coastguard Worker NAL_PPS = 8, 161*495ae853SAndroid Build Coastguard Worker NAL_AUD = 9, 162*495ae853SAndroid Build Coastguard Worker NAL_EOSEQ = 10, 163*495ae853SAndroid Build Coastguard Worker NAL_EOSTR = 11, 164*495ae853SAndroid Build Coastguard Worker NAL_FILLER = 12, 165*495ae853SAndroid Build Coastguard Worker NAL_SPSE = 13, 166*495ae853SAndroid Build Coastguard Worker NAL_PREFIX = 14, 167*495ae853SAndroid Build Coastguard Worker NAL_SUBSET_SPS = 15, 168*495ae853SAndroid Build Coastguard Worker NAL_AUX_PIC = 19, 169*495ae853SAndroid Build Coastguard Worker NAL_CODED_SLICE_EXTENSION = 20, 170*495ae853SAndroid Build Coastguard Worker NAL_UNSPEC_31 = 24, 171*495ae853SAndroid Build Coastguard Worker } NAL_UNIT_TYPE_T; 172*495ae853SAndroid Build Coastguard Worker 173*495ae853SAndroid Build Coastguard Worker /** 174*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 175*495ae853SAndroid Build Coastguard Worker * @enum CHROMA_FORMAT_IDC 176*495ae853SAndroid Build Coastguard Worker * @brief Defines the set of possible chroma formats 177*495ae853SAndroid Build Coastguard Worker * Note Chorma format Do not change enum values 178*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 179*495ae853SAndroid Build Coastguard Worker */ 180*495ae853SAndroid Build Coastguard Worker enum 181*495ae853SAndroid Build Coastguard Worker { 182*495ae853SAndroid Build Coastguard Worker CHROMA_FMT_IDC_MONOCHROME = 0, 183*495ae853SAndroid Build Coastguard Worker CHROMA_FMT_IDC_YUV420 = 1, 184*495ae853SAndroid Build Coastguard Worker CHROMA_FMT_IDC_YUV422 = 2, 185*495ae853SAndroid Build Coastguard Worker CHROMA_FMT_IDC_YUV444 = 3, 186*495ae853SAndroid Build Coastguard Worker CHROMA_FMT_IDC_YUV444_PLANES = 4, 187*495ae853SAndroid Build Coastguard Worker }; 188*495ae853SAndroid Build Coastguard Worker 189*495ae853SAndroid Build Coastguard Worker 190*495ae853SAndroid Build Coastguard Worker /** 191*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 192*495ae853SAndroid Build Coastguard Worker * @enum MBMODES_I16x16 193*495ae853SAndroid Build Coastguard Worker * @brief Defines the set of possible intra 16x16 mb modes 194*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 195*495ae853SAndroid Build Coastguard Worker */ 196*495ae853SAndroid Build Coastguard Worker typedef enum 197*495ae853SAndroid Build Coastguard Worker { 198*495ae853SAndroid Build Coastguard Worker VERT_I16x16 = 0, 199*495ae853SAndroid Build Coastguard Worker HORZ_I16x16 = 1, 200*495ae853SAndroid Build Coastguard Worker DC_I16x16 = 2, 201*495ae853SAndroid Build Coastguard Worker PLANE_I16x16 = 3, 202*495ae853SAndroid Build Coastguard Worker MAX_I16x16 = 4, 203*495ae853SAndroid Build Coastguard Worker }MBMODES_I16x16; 204*495ae853SAndroid Build Coastguard Worker 205*495ae853SAndroid Build Coastguard Worker /** 206*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 207*495ae853SAndroid Build Coastguard Worker * @enum MBMODES_I4x4 208*495ae853SAndroid Build Coastguard Worker * @brief Defines the set of possible intra 4x4 mb modes 209*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 210*495ae853SAndroid Build Coastguard Worker */ 211*495ae853SAndroid Build Coastguard Worker typedef enum 212*495ae853SAndroid Build Coastguard Worker { 213*495ae853SAndroid Build Coastguard Worker VERT_I4x4 = 0, 214*495ae853SAndroid Build Coastguard Worker HORZ_I4x4 = 1, 215*495ae853SAndroid Build Coastguard Worker DC_I4x4 = 2, 216*495ae853SAndroid Build Coastguard Worker DIAG_DL_I4x4 = 3, 217*495ae853SAndroid Build Coastguard Worker DIAG_DR_I4x4 = 4, 218*495ae853SAndroid Build Coastguard Worker VERT_R_I4x4 = 5, 219*495ae853SAndroid Build Coastguard Worker HORZ_D_I4x4 = 6, 220*495ae853SAndroid Build Coastguard Worker VERT_L_I4x4 = 7, 221*495ae853SAndroid Build Coastguard Worker HORZ_U_I4x4 = 8, 222*495ae853SAndroid Build Coastguard Worker MAX_I4x4 = 9, 223*495ae853SAndroid Build Coastguard Worker }MBMODES_I4x4; 224*495ae853SAndroid Build Coastguard Worker 225*495ae853SAndroid Build Coastguard Worker /** 226*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 227*495ae853SAndroid Build Coastguard Worker * @enum MBMODES_I8x8 228*495ae853SAndroid Build Coastguard Worker * @brief Defines the set of possible intra 8x8 mb modes 229*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 230*495ae853SAndroid Build Coastguard Worker */ 231*495ae853SAndroid Build Coastguard Worker typedef enum 232*495ae853SAndroid Build Coastguard Worker { 233*495ae853SAndroid Build Coastguard Worker VERT_I8x8 = 0, 234*495ae853SAndroid Build Coastguard Worker HORZ_I8x8 = 1, 235*495ae853SAndroid Build Coastguard Worker DC_I8x8 = 2, 236*495ae853SAndroid Build Coastguard Worker DIAG_DL_I8x8 = 3, 237*495ae853SAndroid Build Coastguard Worker DIAG_DR_I8x8 = 4, 238*495ae853SAndroid Build Coastguard Worker VERT_R_I8x8 = 5, 239*495ae853SAndroid Build Coastguard Worker HORZ_D_I8x8 = 6, 240*495ae853SAndroid Build Coastguard Worker VERT_L_I8x8 = 7, 241*495ae853SAndroid Build Coastguard Worker HORZ_U_I8x8 = 8, 242*495ae853SAndroid Build Coastguard Worker MAX_I8x8 = 9, 243*495ae853SAndroid Build Coastguard Worker }MBMODES_I8x8; 244*495ae853SAndroid Build Coastguard Worker 245*495ae853SAndroid Build Coastguard Worker /** 246*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 247*495ae853SAndroid Build Coastguard Worker * @enum MBMODES_CHROMA_I8x8 (Chroma) 248*495ae853SAndroid Build Coastguard Worker * @brief Defines the set of possible intra 8x8 mb modes for chroma 249*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 250*495ae853SAndroid Build Coastguard Worker */ 251*495ae853SAndroid Build Coastguard Worker typedef enum 252*495ae853SAndroid Build Coastguard Worker { 253*495ae853SAndroid Build Coastguard Worker DC_CH_I8x8 = 0, 254*495ae853SAndroid Build Coastguard Worker HORZ_CH_I8x8 = 1, 255*495ae853SAndroid Build Coastguard Worker VERT_CH_I8x8 = 2, 256*495ae853SAndroid Build Coastguard Worker PLANE_CH_I8x8 = 3, 257*495ae853SAndroid Build Coastguard Worker MAX_CH_I8x8 = 4, 258*495ae853SAndroid Build Coastguard Worker }MBMODES_CHROMA_I8x8; 259*495ae853SAndroid Build Coastguard Worker 260*495ae853SAndroid Build Coastguard Worker /** 261*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 262*495ae853SAndroid Build Coastguard Worker * @enum MBTYPES 263*495ae853SAndroid Build Coastguard Worker * @brief Defines the set of possible macro block types 264*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 265*495ae853SAndroid Build Coastguard Worker */ 266*495ae853SAndroid Build Coastguard Worker typedef enum 267*495ae853SAndroid Build Coastguard Worker { 268*495ae853SAndroid Build Coastguard Worker INVALID_MB_TYPE = -1, 269*495ae853SAndroid Build Coastguard Worker I16x16 = 0, 270*495ae853SAndroid Build Coastguard Worker I4x4 = 1, 271*495ae853SAndroid Build Coastguard Worker I8x8 = 2, 272*495ae853SAndroid Build Coastguard Worker P16x16 = 3, 273*495ae853SAndroid Build Coastguard Worker P16x8 = 4, 274*495ae853SAndroid Build Coastguard Worker P8x16 = 5, 275*495ae853SAndroid Build Coastguard Worker P8x8 = 6, 276*495ae853SAndroid Build Coastguard Worker PSKIP = 7, 277*495ae853SAndroid Build Coastguard Worker IPCM = 8, 278*495ae853SAndroid Build Coastguard Worker B16x16 = 9, 279*495ae853SAndroid Build Coastguard Worker BSKIP = 10, 280*495ae853SAndroid Build Coastguard Worker BDIRECT = 11, 281*495ae853SAndroid Build Coastguard Worker BASE_MODE = 12, 282*495ae853SAndroid Build Coastguard Worker MAX_MBTYPES, 283*495ae853SAndroid Build Coastguard Worker } MBTYPES_T; 284*495ae853SAndroid Build Coastguard Worker 285*495ae853SAndroid Build Coastguard Worker /* Pred Modes */ 286*495ae853SAndroid Build Coastguard Worker enum 287*495ae853SAndroid Build Coastguard Worker { 288*495ae853SAndroid Build Coastguard Worker BLOCK_TYPE_INTER_MB = 0, 289*495ae853SAndroid Build Coastguard Worker BLOCK_TYPE_INTRA_MB = 1, 290*495ae853SAndroid Build Coastguard Worker BLOCK_TYPE_SKIP_MB = 2 291*495ae853SAndroid Build Coastguard Worker }; 292*495ae853SAndroid Build Coastguard Worker 293*495ae853SAndroid Build Coastguard Worker /* Prediction list */ 294*495ae853SAndroid Build Coastguard Worker /* Do not change enum values */ 295*495ae853SAndroid Build Coastguard Worker enum 296*495ae853SAndroid Build Coastguard Worker { 297*495ae853SAndroid Build Coastguard Worker PRED_L0 = 0, 298*495ae853SAndroid Build Coastguard Worker PRED_L1 = 1, 299*495ae853SAndroid Build Coastguard Worker PRED_BI = 2 300*495ae853SAndroid Build Coastguard Worker }; 301*495ae853SAndroid Build Coastguard Worker 302*495ae853SAndroid Build Coastguard Worker 303*495ae853SAndroid Build Coastguard Worker /** 304*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 305*495ae853SAndroid Build Coastguard Worker * @enum ENTROPY_BLK_TYPE 306*495ae853SAndroid Build Coastguard Worker * @brief Defines the nature of blocks employed in entropy coding 307*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 308*495ae853SAndroid Build Coastguard Worker */ 309*495ae853SAndroid Build Coastguard Worker typedef enum 310*495ae853SAndroid Build Coastguard Worker { 311*495ae853SAndroid Build Coastguard Worker ENTROPY_BLK_INVALID = -1, 312*495ae853SAndroid Build Coastguard Worker CAVLC_LUMA_4x4_DC = 0, 313*495ae853SAndroid Build Coastguard Worker CAVLC_LUMA_4x4_AC = 1, 314*495ae853SAndroid Build Coastguard Worker CAVLC_LUMA_4x4 = 2, 315*495ae853SAndroid Build Coastguard Worker CAVLC_CHROMA_4x4_DC = 3, 316*495ae853SAndroid Build Coastguard Worker CAVLC_CHROMA_4x4_AC = 4, 317*495ae853SAndroid Build Coastguard Worker } ENTROPY_BLK_TYPE; 318*495ae853SAndroid Build Coastguard Worker 319*495ae853SAndroid Build Coastguard Worker /** 320*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 321*495ae853SAndroid Build Coastguard Worker * @enum ENTROPY_MODE 322*495ae853SAndroid Build Coastguard Worker * @brief Entropy coding modes 323*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 324*495ae853SAndroid Build Coastguard Worker */ 325*495ae853SAndroid Build Coastguard Worker typedef enum 326*495ae853SAndroid Build Coastguard Worker { 327*495ae853SAndroid Build Coastguard Worker CAVLC = 0, 328*495ae853SAndroid Build Coastguard Worker CABAC = 1, 329*495ae853SAndroid Build Coastguard Worker } ENTROPY_MODE; 330*495ae853SAndroid Build Coastguard Worker 331*495ae853SAndroid Build Coastguard Worker /** 332*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 333*495ae853SAndroid Build Coastguard Worker * @enum COMPONENT_TYPE 334*495ae853SAndroid Build Coastguard Worker * @brief components Y, U & V 335*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 336*495ae853SAndroid Build Coastguard Worker */ 337*495ae853SAndroid Build Coastguard Worker typedef enum 338*495ae853SAndroid Build Coastguard Worker { 339*495ae853SAndroid Build Coastguard Worker Y, 340*495ae853SAndroid Build Coastguard Worker U, 341*495ae853SAndroid Build Coastguard Worker V, 342*495ae853SAndroid Build Coastguard Worker } COMPONENT_TYPE; 343*495ae853SAndroid Build Coastguard Worker 344*495ae853SAndroid Build Coastguard Worker 345*495ae853SAndroid Build Coastguard Worker /** 346*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 347*495ae853SAndroid Build Coastguard Worker * @enum MBPART_PREDMODE_T 348*495ae853SAndroid Build Coastguard Worker * @brief MbPartps_pred_mode_ctxt Table 7-11 to 7-14 349*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 350*495ae853SAndroid Build Coastguard Worker */ 351*495ae853SAndroid Build Coastguard Worker typedef enum 352*495ae853SAndroid Build Coastguard Worker { 353*495ae853SAndroid Build Coastguard Worker MBPART_NA, 354*495ae853SAndroid Build Coastguard Worker MBPART_I4x4, 355*495ae853SAndroid Build Coastguard Worker MBPART_I8x8, 356*495ae853SAndroid Build Coastguard Worker MBPART_I16x16, 357*495ae853SAndroid Build Coastguard Worker MBPART_L0, 358*495ae853SAndroid Build Coastguard Worker MBPART_L1, 359*495ae853SAndroid Build Coastguard Worker MBPART_BI, 360*495ae853SAndroid Build Coastguard Worker MBPART_DIRECT, 361*495ae853SAndroid Build Coastguard Worker MBPART_IPCM, 362*495ae853SAndroid Build Coastguard Worker }MBPART_PREDMODE_T; 363*495ae853SAndroid Build Coastguard Worker 364*495ae853SAndroid Build Coastguard Worker 365*495ae853SAndroid Build Coastguard Worker typedef enum 366*495ae853SAndroid Build Coastguard Worker { 367*495ae853SAndroid Build Coastguard Worker I_NxN, 368*495ae853SAndroid Build Coastguard Worker I_16x16_0_0_0, 369*495ae853SAndroid Build Coastguard Worker I_16x16_1_0_0, 370*495ae853SAndroid Build Coastguard Worker I_16x16_2_0_0, 371*495ae853SAndroid Build Coastguard Worker I_16x16_3_0_0, 372*495ae853SAndroid Build Coastguard Worker I_16x16_0_1_0, 373*495ae853SAndroid Build Coastguard Worker I_16x16_1_1_0, 374*495ae853SAndroid Build Coastguard Worker I_16x16_2_1_0, 375*495ae853SAndroid Build Coastguard Worker I_16x16_3_1_0, 376*495ae853SAndroid Build Coastguard Worker I_16x16_0_2_0, 377*495ae853SAndroid Build Coastguard Worker I_16x16_1_2_0, 378*495ae853SAndroid Build Coastguard Worker I_16x16_2_2_0, 379*495ae853SAndroid Build Coastguard Worker I_16x16_3_2_0, 380*495ae853SAndroid Build Coastguard Worker I_16x16_0_0_1, 381*495ae853SAndroid Build Coastguard Worker I_16x16_1_0_1, 382*495ae853SAndroid Build Coastguard Worker I_16x16_2_0_1, 383*495ae853SAndroid Build Coastguard Worker I_16x16_3_0_1, 384*495ae853SAndroid Build Coastguard Worker I_16x16_0_1_1, 385*495ae853SAndroid Build Coastguard Worker I_16x16_1_1_1, 386*495ae853SAndroid Build Coastguard Worker I_16x16_2_1_1, 387*495ae853SAndroid Build Coastguard Worker I_16x16_3_1_1, 388*495ae853SAndroid Build Coastguard Worker I_16x16_0_2_1, 389*495ae853SAndroid Build Coastguard Worker I_16x16_1_2_1, 390*495ae853SAndroid Build Coastguard Worker I_16x16_2_2_1, 391*495ae853SAndroid Build Coastguard Worker I_16x16_3_2_1, 392*495ae853SAndroid Build Coastguard Worker I_PCM, 393*495ae853SAndroid Build Coastguard Worker }MBTYPE_ISLICE_T; 394*495ae853SAndroid Build Coastguard Worker 395*495ae853SAndroid Build Coastguard Worker typedef enum 396*495ae853SAndroid Build Coastguard Worker { 397*495ae853SAndroid Build Coastguard Worker P_L0_16x16, 398*495ae853SAndroid Build Coastguard Worker P_L0_L0_16x8, 399*495ae853SAndroid Build Coastguard Worker P_L0_L0_8x16, 400*495ae853SAndroid Build Coastguard Worker P_8x8, 401*495ae853SAndroid Build Coastguard Worker P_8x8REF0, 402*495ae853SAndroid Build Coastguard Worker P_SKIP 403*495ae853SAndroid Build Coastguard Worker }MBTYPE_PSLICE_T; 404*495ae853SAndroid Build Coastguard Worker 405*495ae853SAndroid Build Coastguard Worker typedef enum 406*495ae853SAndroid Build Coastguard Worker { 407*495ae853SAndroid Build Coastguard Worker B_DIRECT_16x16, 408*495ae853SAndroid Build Coastguard Worker B_L0_16x16, 409*495ae853SAndroid Build Coastguard Worker B_L1_16x16, 410*495ae853SAndroid Build Coastguard Worker B_BI_16x16, 411*495ae853SAndroid Build Coastguard Worker B_L0_L0_16x8, 412*495ae853SAndroid Build Coastguard Worker B_L0_L0_8x16, 413*495ae853SAndroid Build Coastguard Worker B_L1_L1_16x8, 414*495ae853SAndroid Build Coastguard Worker B_L1_L1_8x16, 415*495ae853SAndroid Build Coastguard Worker B_L0_L1_16x8, 416*495ae853SAndroid Build Coastguard Worker B_L0_L1_8x16, 417*495ae853SAndroid Build Coastguard Worker B_L1_L0_16x8, 418*495ae853SAndroid Build Coastguard Worker B_L1_L0_8x16, 419*495ae853SAndroid Build Coastguard Worker B_L0_BI_16x8, 420*495ae853SAndroid Build Coastguard Worker B_L0_BI_8x16, 421*495ae853SAndroid Build Coastguard Worker B_L1_BI_16x8, 422*495ae853SAndroid Build Coastguard Worker B_L1_BI_8x16, 423*495ae853SAndroid Build Coastguard Worker B_BI_L0_16x8, 424*495ae853SAndroid Build Coastguard Worker B_BI_L0_8x16, 425*495ae853SAndroid Build Coastguard Worker B_BI_L1_16x8, 426*495ae853SAndroid Build Coastguard Worker B_BI_L1_8x16, 427*495ae853SAndroid Build Coastguard Worker B_BI_BI_16x8, 428*495ae853SAndroid Build Coastguard Worker B_BI_BI_8x16, 429*495ae853SAndroid Build Coastguard Worker B_8x8, 430*495ae853SAndroid Build Coastguard Worker B_SKIP, 431*495ae853SAndroid Build Coastguard Worker }MBTYPE_BSLICE_T; 432*495ae853SAndroid Build Coastguard Worker 433*495ae853SAndroid Build Coastguard Worker 434*495ae853SAndroid Build Coastguard Worker typedef enum 435*495ae853SAndroid Build Coastguard Worker { 436*495ae853SAndroid Build Coastguard Worker P_L0_8x8, 437*495ae853SAndroid Build Coastguard Worker P_L0_8x4, 438*495ae853SAndroid Build Coastguard Worker P_L0_4x8, 439*495ae853SAndroid Build Coastguard Worker P_L0_4x4, 440*495ae853SAndroid Build Coastguard Worker }SUBMBTYPE_PSLICE_T; 441*495ae853SAndroid Build Coastguard Worker 442*495ae853SAndroid Build Coastguard Worker typedef enum 443*495ae853SAndroid Build Coastguard Worker { 444*495ae853SAndroid Build Coastguard Worker B_DIRECT_8x8, 445*495ae853SAndroid Build Coastguard Worker B_L0_8x8, 446*495ae853SAndroid Build Coastguard Worker B_L1_8x8, 447*495ae853SAndroid Build Coastguard Worker B_BI_8x8, 448*495ae853SAndroid Build Coastguard Worker B_L0_8x4, 449*495ae853SAndroid Build Coastguard Worker B_L0_4x8, 450*495ae853SAndroid Build Coastguard Worker B_L1_8x4, 451*495ae853SAndroid Build Coastguard Worker B_L1_4x8, 452*495ae853SAndroid Build Coastguard Worker B_BI_8x4, 453*495ae853SAndroid Build Coastguard Worker B_BI_4x8, 454*495ae853SAndroid Build Coastguard Worker B_L0_4x4, 455*495ae853SAndroid Build Coastguard Worker B_L1_4x4, 456*495ae853SAndroid Build Coastguard Worker B_BI_4x4, 457*495ae853SAndroid Build Coastguard Worker }SUBMBTYPE_BSLICE_T; 458*495ae853SAndroid Build Coastguard Worker 459*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 460*495ae853SAndroid Build Coastguard Worker /* Constant Macros */ 461*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 462*495ae853SAndroid Build Coastguard Worker 463*495ae853SAndroid Build Coastguard Worker /** 464*495ae853SAndroid Build Coastguard Worker * DC Mode pattern for 4 4x4 sub blocks in an MB row 465*495ae853SAndroid Build Coastguard Worker */ 466*495ae853SAndroid Build Coastguard Worker #define DC_I16X16_MB_ROW (DC_I16x16 << 24) | (DC_I16x16 << 16) | \ 467*495ae853SAndroid Build Coastguard Worker (DC_I16x16 << 8) | DC_I16x16 468*495ae853SAndroid Build Coastguard Worker 469*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 470*495ae853SAndroid Build Coastguard Worker /* Reference frame defs */ 471*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 472*495ae853SAndroid Build Coastguard Worker /* Maximum DPB size */ 473*495ae853SAndroid Build Coastguard Worker #define MAX_DPB_SIZE 16 474*495ae853SAndroid Build Coastguard Worker 475*495ae853SAndroid Build Coastguard Worker /* Maximum mmco commands in slice header */ 476*495ae853SAndroid Build Coastguard Worker #define MAX_MMCO_COMMANDS 32 477*495ae853SAndroid Build Coastguard Worker 478*495ae853SAndroid Build Coastguard Worker /* Maximum reference reorder idc */ 479*495ae853SAndroid Build Coastguard Worker #define MAX_MODICATION_IDC 32 480*495ae853SAndroid Build Coastguard Worker 481*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 482*495ae853SAndroid Build Coastguard Worker /* SPS restrictions */ 483*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 484*495ae853SAndroid Build Coastguard Worker 485*495ae853SAndroid Build Coastguard Worker /* Number of SPS allowed */ 486*495ae853SAndroid Build Coastguard Worker /* An extra buffer is allocated to write the parsed data 487*495ae853SAndroid Build Coastguard Worker * It is copied to the appropriate location later */ 488*495ae853SAndroid Build Coastguard Worker #define MAX_SPS_CNT (32 + 1) 489*495ae853SAndroid Build Coastguard Worker 490*495ae853SAndroid Build Coastguard Worker /* Maximum long term reference pics */ 491*495ae853SAndroid Build Coastguard Worker #define MAX_LTREF_PICS_SPS 16 492*495ae853SAndroid Build Coastguard Worker 493*495ae853SAndroid Build Coastguard Worker /* Maximum short term reference pics */ 494*495ae853SAndroid Build Coastguard Worker #define MAX_STREF_PICS_SPS 64 495*495ae853SAndroid Build Coastguard Worker 496*495ae853SAndroid Build Coastguard Worker 497*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 498*495ae853SAndroid Build Coastguard Worker /* PPS restrictions */ 499*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 500*495ae853SAndroid Build Coastguard Worker 501*495ae853SAndroid Build Coastguard Worker /* Number of PPS allowed */ 502*495ae853SAndroid Build Coastguard Worker /* An extra buffer is allocated to write the parsed data 503*495ae853SAndroid Build Coastguard Worker * It is copied to the appropriate location later */ 504*495ae853SAndroid Build Coastguard Worker #define MAX_PPS_CNT (256 + 1) 505*495ae853SAndroid Build Coastguard Worker 506*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 507*495ae853SAndroid Build Coastguard Worker /* Macro definitions for sizes of MB, PU, TU, CU */ 508*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 509*495ae853SAndroid Build Coastguard Worker #define MB_SIZE 16 510*495ae853SAndroid Build Coastguard Worker #define BLK8x8SIZE 8 511*495ae853SAndroid Build Coastguard Worker #define BLK_SIZE 4 512*495ae853SAndroid Build Coastguard Worker 513*495ae853SAndroid Build Coastguard Worker 514*495ae853SAndroid Build Coastguard Worker /* TU Size Range */ 515*495ae853SAndroid Build Coastguard Worker #define MAX_TU_SIZE 8 516*495ae853SAndroid Build Coastguard Worker #define MIN_TU_SIZE 4 517*495ae853SAndroid Build Coastguard Worker 518*495ae853SAndroid Build Coastguard Worker /* Max Transform Size */ 519*495ae853SAndroid Build Coastguard Worker #define MAX_TRANS_SIZE (MAX_TU_SIZE*MAX_TU_SIZE) 520*495ae853SAndroid Build Coastguard Worker 521*495ae853SAndroid Build Coastguard Worker /* PU Size Range */ 522*495ae853SAndroid Build Coastguard Worker #define MAX_PU_SIZE 16 523*495ae853SAndroid Build Coastguard Worker #define MIN_PU_SIZE 4 524*495ae853SAndroid Build Coastguard Worker 525*495ae853SAndroid Build Coastguard Worker /* Number of max TU in a MB row */ 526*495ae853SAndroid Build Coastguard Worker #define MAX_TU_IN_MB_ROW ((MB_SIZE / MIN_TU_SIZE)) 527*495ae853SAndroid Build Coastguard Worker 528*495ae853SAndroid Build Coastguard Worker #define MIN_TU_IN_MB_ROW ((MB_SIZE / MAX_TU_SIZE)) 529*495ae853SAndroid Build Coastguard Worker 530*495ae853SAndroid Build Coastguard Worker /* Number of max PU in a CTb row */ 531*495ae853SAndroid Build Coastguard Worker #define MAX_PU_IN_MB_ROW ((MB_SIZE / MIN_PU_SIZE)) 532*495ae853SAndroid Build Coastguard Worker 533*495ae853SAndroid Build Coastguard Worker #define MAX_TU_IN_MB_COL MAX_TU_IN_MB_ROW 534*495ae853SAndroid Build Coastguard Worker 535*495ae853SAndroid Build Coastguard Worker #define MIN_TU_IN_MB_COL MIN_TU_IN_MB_ROW 536*495ae853SAndroid Build Coastguard Worker 537*495ae853SAndroid Build Coastguard Worker #define MAX_PU_IN_MB_COL MAX_PU_IN_MB_ROW 538*495ae853SAndroid Build Coastguard Worker 539*495ae853SAndroid Build Coastguard Worker /* Number of max PU in a MB */ 540*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 541*495ae853SAndroid Build Coastguard Worker /* Note though for 64 x 64 MB, Max PU in MB is 128, in order to store */ 542*495ae853SAndroid Build Coastguard Worker /* intra pred info, 256 entries are needed */ 543*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 544*495ae853SAndroid Build Coastguard Worker #define MAX_PU_IN_MB ((MB_SIZE / MIN_PU_SIZE) * \ 545*495ae853SAndroid Build Coastguard Worker (MB_SIZE / MIN_PU_SIZE)) 546*495ae853SAndroid Build Coastguard Worker 547*495ae853SAndroid Build Coastguard Worker /* Number of max TU in a MB */ 548*495ae853SAndroid Build Coastguard Worker #define MAX_TU_IN_MB ((MB_SIZE / MIN_TU_SIZE) * \ 549*495ae853SAndroid Build Coastguard Worker (MB_SIZE / MIN_TU_SIZE)) 550*495ae853SAndroid Build Coastguard Worker 551*495ae853SAndroid Build Coastguard Worker #define MIN_TU_IN_MB (MIN_TU_IN_MB_ROW * MIN_TU_IN_MB_COL) 552*495ae853SAndroid Build Coastguard Worker 553*495ae853SAndroid Build Coastguard Worker #define NUM_4x4_IN_8x8 4 554*495ae853SAndroid Build Coastguard Worker 555*495ae853SAndroid Build Coastguard Worker #define NUM_COEFFS_IN_MIN_TU (MIN_TU_SIZE * MIN_TU_SIZE) 556*495ae853SAndroid Build Coastguard Worker 557*495ae853SAndroid Build Coastguard Worker /** 558*495ae853SAndroid Build Coastguard Worker * Maximum transform depths 559*495ae853SAndroid Build Coastguard Worker */ 560*495ae853SAndroid Build Coastguard Worker #define MAX_TRAFO_DEPTH 5 561*495ae853SAndroid Build Coastguard Worker 562*495ae853SAndroid Build Coastguard Worker #define MAX_DC_4x4_SUBBLK_LUMA 1 563*495ae853SAndroid Build Coastguard Worker #define MAX_AC_4x4_SUBBLK_LUMA 16 564*495ae853SAndroid Build Coastguard Worker #define MAX_DC_4x4_SUBBLK_CHROMA 2 565*495ae853SAndroid Build Coastguard Worker #define MAX_AC_4x4_SUBBLK_CHROMA 8 566*495ae853SAndroid Build Coastguard Worker 567*495ae853SAndroid Build Coastguard Worker #define MAX_4x4_SUBBLKS (MAX_DC_4x4_SUBBLK_LUMA + MAX_DC_4x4_SUBBLK_CHROMA +\ 568*495ae853SAndroid Build Coastguard Worker MAX_AC_4x4_SUBBLK_LUMA + MAX_AC_4x4_SUBBLK_CHROMA) 569*495ae853SAndroid Build Coastguard Worker 570*495ae853SAndroid Build Coastguard Worker /* Max number of deblocking edges */ 571*495ae853SAndroid Build Coastguard Worker #define MAX_VERT_DEBLK_EDGES ((MB_SIZE/8) * (MB_SIZE/4)) 572*495ae853SAndroid Build Coastguard Worker #define MAX_HORZ_DEBLK_EDGES ((MB_SIZE/4) * (MB_SIZE/8)) 573*495ae853SAndroid Build Coastguard Worker 574*495ae853SAndroid Build Coastguard Worker /* Qp can not change below 8x8 level */ 575*495ae853SAndroid Build Coastguard Worker #define MAX_DEBLK_QP_CNT ((MB_SIZE/8) * (MB_SIZE/8)) 576*495ae853SAndroid Build Coastguard Worker 577*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 578*495ae853SAndroid Build Coastguard Worker /* Parsing related macros */ 579*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 580*495ae853SAndroid Build Coastguard Worker #define SUBBLK_COEFF_CNT 16 581*495ae853SAndroid Build Coastguard Worker 582*495ae853SAndroid Build Coastguard Worker /* Quant and Trans defs */ 583*495ae853SAndroid Build Coastguard Worker 584*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 585*495ae853SAndroid Build Coastguard Worker /* Sizes for Transform functions */ 586*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 587*495ae853SAndroid Build Coastguard Worker #define TRANS_SIZE_4 4 588*495ae853SAndroid Build Coastguard Worker #define TRANS_SIZE_8 8 589*495ae853SAndroid Build Coastguard Worker #define TRANS_SIZE_16 16 590*495ae853SAndroid Build Coastguard Worker #define TRANS_SIZE_32 32 591*495ae853SAndroid Build Coastguard Worker 592*495ae853SAndroid Build Coastguard Worker 593*495ae853SAndroid Build Coastguard Worker #define IT_SHIFT_STAGE_1 7 594*495ae853SAndroid Build Coastguard Worker #define IT_SHIFT_STAGE_2 12 595*495ae853SAndroid Build Coastguard Worker 596*495ae853SAndroid Build Coastguard Worker /** 597*495ae853SAndroid Build Coastguard Worker * @breif Maximum transform dynamic range (excluding sign bit) 598*495ae853SAndroid Build Coastguard Worker */ 599*495ae853SAndroid Build Coastguard Worker #define MAX_TR_DYNAMIC_RANGE 15 600*495ae853SAndroid Build Coastguard Worker 601*495ae853SAndroid Build Coastguard Worker /** 602*495ae853SAndroid Build Coastguard Worker * @brief Q(QP%6) * IQ(QP%6) = 2^20 603*495ae853SAndroid Build Coastguard Worker */ 604*495ae853SAndroid Build Coastguard Worker #define QUANT_IQUANT_SHIFT 20 605*495ae853SAndroid Build Coastguard Worker 606*495ae853SAndroid Build Coastguard Worker /** 607*495ae853SAndroid Build Coastguard Worker * @breif Q factor for Qp%6 multiplication 608*495ae853SAndroid Build Coastguard Worker */ 609*495ae853SAndroid Build Coastguard Worker #define QUANT_SHIFT 14 610*495ae853SAndroid Build Coastguard Worker 611*495ae853SAndroid Build Coastguard Worker /** 612*495ae853SAndroid Build Coastguard Worker * @breif Q shift factor for flat rescale matrix weights 613*495ae853SAndroid Build Coastguard Worker */ 614*495ae853SAndroid Build Coastguard Worker #define FLAT_RESCALE_MAT_Q_SHIFT 11 615*495ae853SAndroid Build Coastguard Worker 616*495ae853SAndroid Build Coastguard Worker /** 617*495ae853SAndroid Build Coastguard Worker * @breif Scaling matrix is represented in Q15 format 618*495ae853SAndroid Build Coastguard Worker */ 619*495ae853SAndroid Build Coastguard Worker #define SCALING_Q_SHIFT 15 620*495ae853SAndroid Build Coastguard Worker 621*495ae853SAndroid Build Coastguard Worker /** 622*495ae853SAndroid Build Coastguard Worker * @brief rounding factor for quantization represented in Q9 format 623*495ae853SAndroid Build Coastguard Worker */ 624*495ae853SAndroid Build Coastguard Worker #define QUANT_ROUND_FACTOR_Q 9 625*495ae853SAndroid Build Coastguard Worker 626*495ae853SAndroid Build Coastguard Worker /** 627*495ae853SAndroid Build Coastguard Worker * @brief Minimum qp supported in H264 spec 628*495ae853SAndroid Build Coastguard Worker */ 629*495ae853SAndroid Build Coastguard Worker #define MIN_H264_QP 0 630*495ae853SAndroid Build Coastguard Worker 631*495ae853SAndroid Build Coastguard Worker /** 632*495ae853SAndroid Build Coastguard Worker * @brief Maximum qp supported in H264 spec 633*495ae853SAndroid Build Coastguard Worker */ 634*495ae853SAndroid Build Coastguard Worker #define MAX_H264_QP 51 635*495ae853SAndroid Build Coastguard Worker 636*495ae853SAndroid Build Coastguard Worker /** 637*495ae853SAndroid Build Coastguard Worker * @brief Minimum delta scale supported in H264 spec 638*495ae853SAndroid Build Coastguard Worker */ 639*495ae853SAndroid Build Coastguard Worker #define MIN_H264_DELTA_SCALE (-128) 640*495ae853SAndroid Build Coastguard Worker 641*495ae853SAndroid Build Coastguard Worker /** 642*495ae853SAndroid Build Coastguard Worker * @brief Maximum delta scale supported in H264 spec 643*495ae853SAndroid Build Coastguard Worker */ 644*495ae853SAndroid Build Coastguard Worker #define MAX_H264_DELTA_SCALE 127 645*495ae853SAndroid Build Coastguard Worker 646*495ae853SAndroid Build Coastguard Worker /** 647*495ae853SAndroid Build Coastguard Worker * @breif Total number of transform sizes 648*495ae853SAndroid Build Coastguard Worker * used for sizeID while getting scale matrix 649*495ae853SAndroid Build Coastguard Worker */ 650*495ae853SAndroid Build Coastguard Worker #define NUM_UNIQUE_TRANS_SIZE 4 651*495ae853SAndroid Build Coastguard Worker 652*495ae853SAndroid Build Coastguard Worker /** 653*495ae853SAndroid Build Coastguard Worker * @breif Maximum number of bits in frameNumber signaling 654*495ae853SAndroid Build Coastguard Worker */ 655*495ae853SAndroid Build Coastguard Worker #define MAX_BITS_IN_FRAME_NUM 16 656*495ae853SAndroid Build Coastguard Worker 657*495ae853SAndroid Build Coastguard Worker /** 658*495ae853SAndroid Build Coastguard Worker * @breif Maximum number of bits in POC LSB signaling 659*495ae853SAndroid Build Coastguard Worker */ 660*495ae853SAndroid Build Coastguard Worker #define MAX_BITS_IN_POC_LSB 16 661*495ae853SAndroid Build Coastguard Worker 662*495ae853SAndroid Build Coastguard Worker 663*495ae853SAndroid Build Coastguard Worker /** 664*495ae853SAndroid Build Coastguard Worker * @breif Maximum PIC Order Count type 665*495ae853SAndroid Build Coastguard Worker */ 666*495ae853SAndroid Build Coastguard Worker #define MAX_PIC_ORDER_COUNT_TYPE 2 667*495ae853SAndroid Build Coastguard Worker 668*495ae853SAndroid Build Coastguard Worker 669*495ae853SAndroid Build Coastguard Worker /** 670*495ae853SAndroid Build Coastguard Worker * @breif Maximum Weighted bipred idc 671*495ae853SAndroid Build Coastguard Worker */ 672*495ae853SAndroid Build Coastguard Worker #define MAX_WEIGHT_BIPRED_IDC 2 673*495ae853SAndroid Build Coastguard Worker 674*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 675*495ae853SAndroid Build Coastguard Worker /* Number of scaling matrices for each transform size */ 676*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 677*495ae853SAndroid Build Coastguard Worker #define SCALE_MAT_CNT_TRANS_SIZE_4 6 678*495ae853SAndroid Build Coastguard Worker #define SCALE_MAT_CNT_TRANS_SIZE_8 6 679*495ae853SAndroid Build Coastguard Worker #define SCALE_MAT_CNT_TRANS_SIZE_16 6 680*495ae853SAndroid Build Coastguard Worker #define SCALE_MAT_CNT_TRANS_SIZE_32 2 681*495ae853SAndroid Build Coastguard Worker 682*495ae853SAndroid Build Coastguard Worker /* Maximum number of scale matrices for a given transform size */ 683*495ae853SAndroid Build Coastguard Worker #define SCALE_MAT_CNT_MAX_PER_TRANS_SIZE 6 684*495ae853SAndroid Build Coastguard Worker 685*495ae853SAndroid Build Coastguard Worker /* Total number of scale matrices */ 686*495ae853SAndroid Build Coastguard Worker #define TOTAL_SCALE_MAT_COUNT (SCALE_MAT_CNT_TRANS_SIZE_4 + \ 687*495ae853SAndroid Build Coastguard Worker SCALE_MAT_CNT_TRANS_SIZE_8 + \ 688*495ae853SAndroid Build Coastguard Worker SCALE_MAT_CNT_TRANS_SIZE_16 + \ 689*495ae853SAndroid Build Coastguard Worker SCALE_MAT_CNT_TRANS_SIZE_32) 690*495ae853SAndroid Build Coastguard Worker 691*495ae853SAndroid Build Coastguard Worker 692*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 693*495ae853SAndroid Build Coastguard Worker /* Intra pred Macros */ 694*495ae853SAndroid Build Coastguard Worker /*****************************************************************************/ 695*495ae853SAndroid Build Coastguard Worker /** Planar Intra prediction mode */ 696*495ae853SAndroid Build Coastguard Worker #define INTRA_PLANAR 0 697*495ae853SAndroid Build Coastguard Worker 698*495ae853SAndroid Build Coastguard Worker /** DC Intra prediction mode */ 699*495ae853SAndroid Build Coastguard Worker #define INTRA_DC 1 700*495ae853SAndroid Build Coastguard Worker 701*495ae853SAndroid Build Coastguard Worker /** Gives angular mode for intra prediction */ 702*495ae853SAndroid Build Coastguard Worker #define INTRA_ANGULAR(x) (x) 703*495ae853SAndroid Build Coastguard Worker 704*495ae853SAndroid Build Coastguard Worker /** Following is used to signal no intra prediction in case of pcm blocks 705*495ae853SAndroid Build Coastguard Worker */ 706*495ae853SAndroid Build Coastguard Worker #define INTRA_PRED_NONE 63 707*495ae853SAndroid Build Coastguard Worker 708*495ae853SAndroid Build Coastguard Worker 709*495ae853SAndroid Build Coastguard Worker /** Following is used to signal no intra prediction is needed for first three 710*495ae853SAndroid Build Coastguard Worker * 4x4 luma blocks in case of 4x4 TU sizes 711*495ae853SAndroid Build Coastguard Worker * Also used in pcm cases 712*495ae853SAndroid Build Coastguard Worker */ 713*495ae853SAndroid Build Coastguard Worker #define INTRA_PRED_CHROMA_IDX_NONE 7 714*495ae853SAndroid Build Coastguard Worker 715*495ae853SAndroid Build Coastguard Worker 716*495ae853SAndroid Build Coastguard Worker /** 717*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 718*495ae853SAndroid Build Coastguard Worker * @brief neighbor availability masks 719*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 720*495ae853SAndroid Build Coastguard Worker */ 721*495ae853SAndroid Build Coastguard Worker #define LEFT_MB_AVAILABLE_MASK 0x01 722*495ae853SAndroid Build Coastguard Worker #define TOP_LEFT_MB_AVAILABLE_MASK 0x02 723*495ae853SAndroid Build Coastguard Worker #define TOP_MB_AVAILABLE_MASK 0x04 724*495ae853SAndroid Build Coastguard Worker #define TOP_RIGHT_MB_AVAILABLE_MASK 0x08 725*495ae853SAndroid Build Coastguard Worker 726*495ae853SAndroid Build Coastguard Worker /** 727*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 728*495ae853SAndroid Build Coastguard Worker * @brief SEI macros 729*495ae853SAndroid Build Coastguard Worker ****************************************************************************** 730*495ae853SAndroid Build Coastguard Worker */ 731*495ae853SAndroid Build Coastguard Worker /* 732*495ae853SAndroid Build Coastguard Worker * @brief specifies the number of colour primary components of the mastering display 733*495ae853SAndroid Build Coastguard Worker */ 734*495ae853SAndroid Build Coastguard Worker #define NUM_SEI_MDCV_PRIMARIES 3 735*495ae853SAndroid Build Coastguard Worker 736*495ae853SAndroid Build Coastguard Worker /* 737*495ae853SAndroid Build Coastguard Worker * @brief specifies the number of colour primary components of the nominal content colour volume 738*495ae853SAndroid Build Coastguard Worker */ 739*495ae853SAndroid Build Coastguard Worker #define NUM_SEI_CCV_PRIMARIES 3 740*495ae853SAndroid Build Coastguard Worker 741*495ae853SAndroid Build Coastguard Worker #define DISPLAY_PRIMARIES_X_UPPER_LIMIT 37000 742*495ae853SAndroid Build Coastguard Worker #define DISPLAY_PRIMARIES_X_LOWER_LIMIT 5 743*495ae853SAndroid Build Coastguard Worker #define DISPLAY_PRIMARIES_X_DIVISION_FACTOR 5 744*495ae853SAndroid Build Coastguard Worker 745*495ae853SAndroid Build Coastguard Worker #define DISPLAY_PRIMARIES_Y_UPPER_LIMIT 42000 746*495ae853SAndroid Build Coastguard Worker #define DISPLAY_PRIMARIES_Y_LOWER_LIMIT 5 747*495ae853SAndroid Build Coastguard Worker #define DISPLAY_PRIMARIES_Y_DIVISION_FACTOR 5 748*495ae853SAndroid Build Coastguard Worker 749*495ae853SAndroid Build Coastguard Worker #define WHITE_POINT_X_UPPER_LIMIT 37000 750*495ae853SAndroid Build Coastguard Worker #define WHITE_POINT_X_LOWER_LIMIT 5 751*495ae853SAndroid Build Coastguard Worker #define WHITE_POINT_X_DIVISION_FACTOR 5 752*495ae853SAndroid Build Coastguard Worker 753*495ae853SAndroid Build Coastguard Worker #define WHITE_POINT_Y_UPPER_LIMIT 42000 754*495ae853SAndroid Build Coastguard Worker #define WHITE_POINT_Y_LOWER_LIMIT 5 755*495ae853SAndroid Build Coastguard Worker #define WHITE_POINT_Y_DIVISION_FACTOR 5 756*495ae853SAndroid Build Coastguard Worker 757*495ae853SAndroid Build Coastguard Worker #define MAX_DISPLAY_MASTERING_LUMINANCE_UPPER_LIMIT 100000000 758*495ae853SAndroid Build Coastguard Worker #define MAX_DISPLAY_MASTERING_LUMINANCE_LOWER_LIMIT 50000 759*495ae853SAndroid Build Coastguard Worker #define MAX_DISPLAY_MASTERING_LUMINANCE_DIVISION_FACTOR 10000 760*495ae853SAndroid Build Coastguard Worker 761*495ae853SAndroid Build Coastguard Worker #define MIN_DISPLAY_MASTERING_LUMINANCE_UPPER_LIMIT 50000 762*495ae853SAndroid Build Coastguard Worker #define MIN_DISPLAY_MASTERING_LUMINANCE_LOWER_LIMIT 1 763*495ae853SAndroid Build Coastguard Worker 764*495ae853SAndroid Build Coastguard Worker #define AMBIENT_LIGHT_X_UPPER_LIMIT 50000 765*495ae853SAndroid Build Coastguard Worker #define AMBIENT_LIGHT_Y_UPPER_LIMIT 50000 766*495ae853SAndroid Build Coastguard Worker 767*495ae853SAndroid Build Coastguard Worker #define CCV_PRIMARIES_X_UPPER_LIMIT 5000000 768*495ae853SAndroid Build Coastguard Worker #define CCV_PRIMARIES_X_LOWER_LIMIT -5000000 769*495ae853SAndroid Build Coastguard Worker #define CCV_PRIMARIES_Y_UPPER_LIMIT 5000000 770*495ae853SAndroid Build Coastguard Worker #define CCV_PRIMARIES_Y_LOWER_LIMIT -5000000 771*495ae853SAndroid Build Coastguard Worker 772*495ae853SAndroid Build Coastguard Worker #define RSD_MAX 255 773*495ae853SAndroid Build Coastguard Worker #define RSD_MIN -255 774*495ae853SAndroid Build Coastguard Worker #define CLIP_RSD(x) CLIP3(RSD_MIN, RSD_MAX, (x)) 775*495ae853SAndroid Build Coastguard Worker 776*495ae853SAndroid Build Coastguard Worker #define SII_MAX_SUB_LAYERS 8 777*495ae853SAndroid Build Coastguard Worker #define SII_SUB_LAYER_IDX 0 778*495ae853SAndroid Build Coastguard Worker #define SHUTTER_INTERVAL_INFO_PRESENT_FLAG 1 779*495ae853SAndroid Build Coastguard Worker #define SII_TIME_SCALE 24000000 780*495ae853SAndroid Build Coastguard Worker #define FIXED_SHUTTER_INTERVAL_WITHIN_CVS_FLAG 0 781*495ae853SAndroid Build Coastguard Worker #define SII_NUM_UNITS_IN_SHUTTER_INTERVAL 480000 782*495ae853SAndroid Build Coastguard Worker #define SII_MAX_SUB_LAYERS_MINUS1 (SII_MAX_SUB_LAYERS - 1) 783*495ae853SAndroid Build Coastguard Worker #define SUB_LAYER_NUM_UNITS_IN_SHUTTER_INTERVAL_HFR 480000 784*495ae853SAndroid Build Coastguard Worker #define SUB_LAYER_NUM_UNITS_IN_SHUTTER_INTERVAL_SFR 240000 785*495ae853SAndroid Build Coastguard Worker 786*495ae853SAndroid Build Coastguard Worker /* 787*495ae853SAndroid Build Coastguard Worker * @brief Below macros related to film grain characteristics SEI 788*495ae853SAndroid Build Coastguard Worker */ 789*495ae853SAndroid Build Coastguard Worker #define SEI_FGC_NUM_COLOUR_COMPONENTS 3 790*495ae853SAndroid Build Coastguard Worker #define SEI_FGC_MAX_NUM_MODEL_VALUES 6 791*495ae853SAndroid Build Coastguard Worker #define SEI_FGC_MAX_NUM_INTENSITY_INTERVALS 256 792*495ae853SAndroid Build Coastguard Worker 793*495ae853SAndroid Build Coastguard Worker #endif /* _IH264_DEFS_H_ */ 794