Changeset 1313 in 3DVCSoftware for trunk/source/Lib/TLibCommon/TypeDef.h
- Timestamp:
- 13 Aug 2015, 17:38:13 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/Lib/TLibCommon/TypeDef.h
r1196 r1313 2 2 * License, included below. This software may be subject to other third party 3 3 * and contributor rights, including patent rights, and no such rights are 4 * granted under this license. 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-2015, ITU/ISO/IEC6 * Copyright (c) 2010-2015, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * … … 31 31 * THE POSSIBILITY OF SUCH DAMAGE. 32 32 */ 33 34 33 /** \file TypeDef.h 35 34 \brief Define basic types, new types and enumerations 36 35 */ 37 38 #ifndef _TYPEDEF__ 39 #define _TYPEDEF__ 40 36 #ifndef __TYPEDEF__ 37 #define __TYPEDEF__ 38 #ifndef __COMMONDEF__ 39 #error Include CommonDef.h not TypeDef.h 40 #endif 41 #include <vector> 41 42 //! \ingroup TLibCommon 42 43 //! \{ … … 44 45 ///////////////////////////////// EXTENSION SELECTION /////////////////////////////////// 45 46 ///////////////////////////////////////////////////////////////////////////////////////// 46 47 47 /* HEVC_EXT might be defined by compiler/makefile options. 48 49 48 Linux makefiles support the following settings: 50 49 make -> HEVC_EXT not defined 51 make HEVC_EXT=0 -> H_MV=0 H_3D=0 --> plain HM52 make HEVC_EXT=1 -> H_MV=1 H_3D=0 --> MV only53 make HEVC_EXT=2 -> H_MV=1 H_3D=1 --> full 3D50 make HEVC_EXT=0 -> NH_MV=0 H_3D=0 --> plain HM 51 make HEVC_EXT=1 -> NH_MV=1 H_3D=0 --> MV only 52 make HEVC_EXT=2 -> NH_MV=1 H_3D=1 --> full 3D 54 53 */ 55 56 54 #ifndef HEVC_EXT 57 55 #define HEVC_EXT 2 58 56 #endif 59 60 57 #if ( HEVC_EXT < 0 )||( HEVC_EXT > 2 ) 61 58 #error HEVC_EXT must be in the range of 0 to 2, inclusive. 62 59 #endif 63 64 #define H_MV ( HEVC_EXT != 0) 65 #define H_3D ( HEVC_EXT == 2) 66 67 60 #define NH_MV ( HEVC_EXT != 0) 61 #define NH_3D ( HEVC_EXT == 2) 68 62 ///////////////////////////////////////////////////////////////////////////////////////// 69 63 /////////////////////////////////// MAJOR DEFINES /////////////////////////////////// 70 64 ///////////////////////////////////////////////////////////////////////////////////////// 71 72 #if H_MV 65 #if NH_MV 66 #define NH_MV_FIX_TICKET_105 1 // layer_set_idx_for_ols_minus1 length 67 #define NH_MV_FIX_TICKET_100 1 // Extra slice header bits 73 68 #define H_MV_ENC_DEC_TRAC 1 //< CU/PU level tracking 74 #endif 75 69 #define H_MV_ENC_DEC_TRAC_FIX 1 // by SHARP 70 #if NH_3D 71 // FIXES 72 #define NH_3D_FIX_TICKET_98 1 // Writing of depth intra skip flag 73 #define NH_3D_FIX_TICKET_101 ( 1 && NH_3D_VER141_DEC_COMP_FLAG ) // Camera parameters for depth 74 #define NH_3D_DIS_FIX 1 75 #define NH_3D_ENC_DEPTH_FIX 1 // Fix Intra TU coding. 76 #define NH_3D_INTRA_SDC_RD_FIX 1 // Fix in RD- decision of intra SDC. 77 #define NH_3D_DLT_FIX 1 // Fixes numbers of parsed DLTs 78 #define NH_3D_VER141_DEC_COMP_FLAG 0 // Makes decoding of this version compatible to HTM-14.1 by re-introducing HTM-14.1 bugs. 79 #define NH_3D_ALIGN_SPIVMP_DBBP 1 // Further alignment of DBBP and SBP motion 80 #define NH_3D_ALIGN_SPIVMP_RP 1 // Alignment of DBBP and RP 81 #define NH_3D_FIX_VSP 1 82 #define NH_3D_VSO 1 83 #define NH_3D_NBDV 1 84 #define NH_3D_TMVP 1 // QC_TMVP_C0047 85 // Sony_M23639 86 // H_3D_TMVP_SCALING_FIX_K0053 1 // QC/CY for K0053 87 #define NH_3D_IC 1 // Illumination Compensation, JCT3V-B0045, JCT3V-C0046, JCT3V-D0060 88 // Unifying rounding offset, for IC part, JCT3V-D0135 89 // SHARP_ILLUCOMP_REFINE_E0046 90 // MTK_CLIPPING_ALIGN_IC_E0168 // To support simplify bi-prediction PU with identical motion checking, JCT3V-E0168 91 // LGE_IC_CTX_F0160 //JCT3V-F0160 92 // SEC_ONLY_TEXTURE_IC_F0151 93 // MTK_IC_FLAG_CABAC_SIMP_G0061 94 // SEC_IC_ARP_SIG_G0072, Disabling IC when ARP is enabled, option 1 in JCT3V-G0072, part 2 in JCT3V-G0121 95 // MTK_LOW_LATENCY_IC_ENCODING_H0086 Low-latency IC encoding in JCT3V-H0086 96 // MTK_LOW_LATENCY_IC_ENCODING_H0086_FIX 1 // Remove the global variables used in JCT3V-H0086 97 // SEC_IC_NEIGHBOR_CLIP_I0080 // Clipping of neighboring sample position, JCT3V-I0080 98 // LGE_CHROMA_IC_J0050_J0034 99 #define NH_3D_IC_FIX 1 // Fix uninitialized value in cDtParam.bUseIC (it happened on intra block) 100 #define NH_3D_FULL_PEL_DEPTH_MAP_MV_ACC 1 // Full Pel Interpolation for Depth, HHI_FULL_PEL_DEPTH_MAP_MV_ACC 101 #define NH_3D_QTLPC 1 // OL_QTLIMIT_PREDCODING_B0068 //JCT3V-B0068 102 // HHI_QTLPC_RAU_OFF_C0160 JCT3V-C0160 change 2: quadtree limitation and predictive coding switched off in random access units 103 // MTK_TEX_DEP_PAR_G0055 Texture-partition-dependent depth partition. JCT3V-G0055 104 #define NH_3D_NBDV_REF 1 105 #define NH_3D_MLC 1 106 #define NH_3D_FIX_PRUNING 1 107 #define NH_3D_VSP 1 108 #define NH_3D_IV_MERGE 1 109 #define NH_3D_SPIVMP 1 110 #define NH_3D_INTEGER_MV_DEPTH 1 111 #define NH_3D_TEXT_MERGE 1 112 #define NH_3D_DBBP 1 113 #define BUF_FIX 1 114 #define NH_3D_ARP 1 // Advanced residual prediction (ARP), JCT3V-D0177 115 // QC_MTK_INTERVIEW_ARP_F0123_F0108 JCT3V-F0123; JCT3V-F0108 116 // SHARP_ARP_REF_CHECK_F0105 ARP reference picture selection and DPB check 117 // LGE_ARP_CTX_F0161 JCT3V-F0161 118 // MTK_ARP_FLAG_CABAC_SIMP_G0061 Use 2 context for ARP flag referring to only left neighbor block in JCT3V-G0061 119 // MTK_ARP_REF_SELECTION_G0053 ARP Reference picture selection in JCT3V-G0053 120 // MTK_ALIGN_SW_WD_BI_PRED_ARP_H0085 Align the SW and WD for the bi-prediction ARP PUs by disallowing non-normative fast bi-prediction for ARP PUs, JCT3V-H0085 121 // QC_I0051_ARP_SIMP 122 // SHARP_ARP_CHROMA_I0104 123 // MTK_I0072_IVARP_SCALING_FIX 124 // SEC_ARP_VIEW_REF_CHECK_J0037 Signaling iv_res_pred_weight_idx when the current slice has both view and temporal reference picture(s), JCT3V-J0037 item1 125 // SEC_ARP_REM_ENC_RESTRICT_K0035 Removal of encoder restriction of ARP, JCT3V-K0035 126 #define NH_3D_DMM 1 // Depth modeling modes 127 #define NH_3D_DLT 1 // Depth Lookup Table 128 #define NH_3D_SDC_INTRA 1 // Segment-wise DC Coding method for INTRA 129 #define NH_3D_SDC_INTER 1 // Segment-wise DC Coding method for INTER 130 #define NH_3D_ENC_DEPTH 1 // Encoder optimizations for depth, incl. 131 // HHI_DEPTH_INTRA_SEARCH_RAU_C0160 132 // LG_ZEROINTRADEPTHRESI_A0087 133 // HHI_DMM4_ENC_I0066 134 // H_3D_FAST_DEPTH_INTRA 135 #define NH_3D_DIS 1 136 #define NH_3D_FAST_TEXTURE_ENCODING 1 // Fast merge mode decision and early CU determination for texture component of dependent view, JCT3V-E0173 137 #endif 76 138 #if H_3D 77 139 #define H_3D_QTLPC 1 // OL_QTLIMIT_PREDCODING_B0068 //JCT3V-B0068 78 140 // HHI_QTLPC_RAU_OFF_C0160 JCT3V-C0160 change 2: quadtree limitation and predictive coding switched off in random access units 79 141 // MTK_TEX_DEP_PAR_G0055 Texture-partition-dependent depth partition. JCT3V-G0055 80 81 142 #define H_3D_VSO 1 // VSO, View synthesis optimization, includes: 82 143 // HHI_VSO … … 101 162 // MTK_TEXTURE_MRGCAND_BUGFIX_E0182 Bug fix for TEXTURE MERGING CANDIDATE , JCT3V-E0182 102 163 // LGE_SIMP_DISP_AVAIL_J0041 // Use 2 status for disparity availability - DISP_AVAILABLE and DISP_NONE 103 104 #define H_3D_ARP 1 // Advanced residual prediction (ARP), JCT3V-D0177105 // QC_MTK_INTERVIEW_ARP_F0123_F0108 JCT3V-F0123; JCT3V-F0108106 // SHARP_ARP_REF_CHECK_F0105 ARP reference picture selection and DPB check107 // LGE_ARP_CTX_F0161 JCT3V-F0161108 // MTK_ARP_FLAG_CABAC_SIMP_G0061 Use 2 context for ARP flag referring to only left neighbor block in JCT3V-G0061109 // MTK_ARP_REF_SELECTION_G0053 ARP Reference picture selection in JCT3V-G0053110 // MTK_ALIGN_SW_WD_BI_PRED_ARP_H0085 Align the SW and WD for the bi-prediction ARP PUs by disallowing non-normative fast bi-prediction for ARP PUs, JCT3V-H0085111 // QC_I0051_ARP_SIMP112 // SHARP_ARP_CHROMA_I0104113 // MTK_I0072_IVARP_SCALING_FIX114 // SEC_ARP_VIEW_REF_CHECK_J0037 Signaling iv_res_pred_weight_idx when the current slice has both view and temporal reference picture(s), JCT3V-J0037 item1115 // SEC_ARP_REM_ENC_RESTRICT_K0035 Removal of encoder restriction of ARP, JCT3V-K0035116 117 164 #define H_3D_IC 1 // Illumination Compensation, JCT3V-B0045, JCT3V-C0046, JCT3V-D0060 118 165 // Unifying rounding offset, for IC part, JCT3V-D0135 … … 128 175 // SEC_IC_NEIGHBOR_CLIP_I0080 // Clipping of neighboring sample position, JCT3V-I0080 129 176 // LGE_CHROMA_IC_J0050_J0034 130 131 #if H_3D_NBDV 177 #if NH_3D_NBDV 132 178 #define H_3D_NBDV_REF 1 // Depth oriented neighboring block disparity derivation 133 179 // MTK_D0156 … … 138 184 // SEC_VER_DONBDV_H0103 Vertical DV Restriction for DoNBDV 139 185 #endif 140 141 186 #define H_3D_VSP 1 // View synthesis prediction 142 187 // MERL_C0152: Basic VSP … … 157 202 // MTK_MRG_LIST_SIZE_CLEANUP_J0059 1 // Include VSP for deriving merge candidate list size, JCT3V-J0059 158 203 // SEC_A1_BASED_VSP_J0039 1 // Removal of redundant VSP in Merge list 159 160 161 162 204 #define H_3D_IV_MERGE 1 // Inter-view motion merge candidate 163 205 // HHI_INTER_VIEW_MOTION_PRED … … 183 225 // SEC_SIMP_SHIFTED_DV_I0086 Simplification of Shifted DV candidate, JCT3V-I0086 184 226 // SEC_SHIFTED_IVMC_POS_K0036 Position Derivation for Shifted-IVMC, JCT3V-K0036 185 186 187 227 #define H_3D_TMVP 1 // QC_TMVP_C0047 188 228 // Sony_M23639 189 229 // H_3D_TMVP_SCALING_FIX_K0053 1 // QC/CY for K0053 190 191 192 230 #define H_3D_DIM 1 // DIM, Depth intra modes, includes: 193 231 // HHI_DMM_WEDGE_INTRA … … 238 276 // SHARP_DLT_SIMP_J0029 DLT(DepthValue2Idx[]) table derivation cleanup 239 277 // SHARP_DMM_CLEAN_K0042 1 // Generate DMM pattern with rotation 240 241 242 278 #define H_3D_INTER_SDC 1 // INTER SDC, Inter simplified depth coding 243 279 // LGE_INTER_SDC_E0156 Enable inter SDC for depth coding 244 280 // SEC_INTER_SDC_G0101 Improved inter SDC with multiple DC candidates 245 281 #define H_3D_INTER_SDC_FIX 1 246 282 #define H_3D_SPIVMP 1 // H_3D_SPIVMP JCT3V-F0110: Sub-PU level inter-view motion prediction 247 283 // SEC_SPIVMP_MCP_SIZE_G0077, Apply SPIVMP only to 2Nx2N partition, JCT3V-G0077 … … 249 285 // Simplification on Sub-PU level temporal interview motion prediction 250 286 // MPI_SUBPU_DEFAULT_MV_H0077_H0099_H0111_H0133 251 252 287 #define H_3D_DBBP 1 // DBBP: Depth-based Block Partitioning and Merging 253 288 // MTK_DBBP_AMP_REM_H0072 … … 263 298 // RWTH_DBBP_NO_SATD_K0028 264 299 // HS_DBBP_CLEAN_K0048 265 266 300 #define H_3D_DDD 1 // Disparity derived depth coding 267 301 // LGE_DDD_REMOVAL_J0042_J0030 DDD removal 268 269 302 #define H_3D_DIS 1 // Depth intra skip 270 303 // SEC_DEPTH_INTRA_SKIP_MODE_K0033 Depth intra skip mode 271 272 304 #define H_3D_FCO 0 // Flexible coding order for 3D 273 274 305 #define H_3D_FAST_INTRA_SDC 1 // I0123 275 276 306 // OTHERS 277 307 // MTK_SONY_PROGRESSIVE_MV_COMPRESSION_E0170 // Progressive MV Compression, JCT3V-E0170 278 279 308 #define H_3D_FAST_TEXTURE_ENCODING 1 // Fast merge mode decision and early CU determination for texture component of dependent view, JCT3V-E0173 280 309 // MTK_FAST_TEXTURE_ENCODING_E0173 … … 283 312 // SCU_HS_FAST_DEPTH_INTRA_E0238_HHIFIX 284 313 #endif 285 286 314 //HLS 287 315 // HHI_DEPENDENCY_SIGNALLING_I1_J0107 … … 292 320 // HHI_CAM_PARA_K0052 293 321 // H_3D_DIRECT_DEP_TYPE 294 295 322 // Rate Control 296 323 #define KWU_FIX_URQ 1 … … 298 325 #define KWU_RC_MADPRED_E0227 0 ///< JCT3V-E0227, inter-view MAD prediction 299 326 #endif // H_3D 300 301 327 ///////////////////////////////////////////////////////////////////////////////////////// 302 328 /////////////////////////////////// DERIVED DEFINES /////////////////////////////////// 303 329 ///////////////////////////////////////////////////////////////////////////////////////// 304 305 #if H_3D 306 #define H_3D_DISABLE_CHROMA 1 330 #if NH_3D 307 331 #define H_3D_OUTPUT_ACTIVE_TOOLS 0 308 332 #define H_3D_REN_MAX_DEV_OUT 0 309 333 #endif 310 311 334 ///// ***** VIEW SYNTHESIS OPTIMIZAION ********* 312 #if H_3D_VSO335 #if NH_3D_VSO 313 336 #define H_3D_VSO_DIST_INT 1 // Allow negative synthesized view distortion change 314 337 #define H_3D_VSO_COLOR_PLANES 1 // Compute VSO distortion on color planes … … 317 340 #define H_3D_VSO_SYNTH_DIST_OUT 0 // Output of synthesized view distortion instead of depth distortion in encoder output 318 341 #endif 319 320 342 //// ****** NEIGHBOURING BLOCK-BASED DISPARITY VECTOR ********* 321 #if H_3D_NBDV343 #if NH_3D_NBDV 322 344 #define DVFROM_LEFT 0 323 345 #define DVFROM_ABOVE 1 324 346 #define IDV_CANDS 2 325 347 #endif 326 327 348 ///// ***** ADVANCED INTERVIEW RESIDUAL PREDICTION ********* 328 #if H_3D_ARP349 #if NH_3D_ARP 329 350 #define H_3D_ARP_WFNR 3 330 351 #endif 331 332 352 ///// ***** DEPTH INTRA MODES ********* 333 353 #if H_3D_DIM … … 336 356 #define H_3D_DIM_SDC 1 // Simplified Depth Coding method 337 357 #define H_3D_DIM_DLT 1 // Depth Lookup Table 338 339 358 #define H_3D_DIM_ENC 1 // Depth Intra encoder optimizations, includes: 340 359 // HHI_DEPTH_INTRA_SEARCH_RAU_C0160 341 360 // LG_ZEROINTRADEPTHRESI_A0087 342 343 #endif 344 ///// ***** VIEW SYNTHESIS PREDICTION ********* 345 #if H_3D_VSP 346 #define H_3D_VSP_BLOCKSIZE 4 // Supported values: 1, 2, and 4 347 #if H_3D_VSP_BLOCKSIZE == 1 348 #define H_3D_VSP_CONSTRAINED 1 // Constrained VSP @ 1x1 349 #else 350 #define H_3D_VSP_CONSTRAINED 0 351 #endif 352 #endif 353 354 361 #endif 362 ///////////////////////////////////////////////////////////////////////////////////// 363 /// GT: Move values which are not flags to CommonDef.h and convert to static int !! 364 /////////////////////////////////////////////////////////////////////////////////// 355 365 ///// ***** ILLUMATION COMPENSATION ********* 356 #if H_3D_IC366 #if NH_3D_IC 357 367 #define IC_REG_COST_SHIFT 7 358 368 #define IC_CONST_SHIFT 5 … … 360 370 #define IC_LOW_LATENCY_ENCODING_THRESHOLD 0.1 // Threshold for low-latency IC encoding in JCT3V-H0086 361 371 #endif 362 363 364 372 ///// ***** DEPTH BASED BLOCK PARTITIONING ********* 365 #if H_3D_DBBP373 #if NH_3D_DBBP 366 374 #define DBBP_INVALID_SHORT (-4) 367 375 #define DBBP_PACK_MODE SIZE_2NxN 368 376 #endif 369 370 371 377 ///// ***** FCO ********* 372 378 #if H_3D_FCO … … 375 381 #define H_3D_FCO_VSP_DONBDV_E0163 0 // Adaptive depth reference for flexible coding order 376 382 #endif 377 378 383 #if H_3D 379 384 #define PPS_FIX_DEPTH 1 380 385 #endif 381 382 383 386 ///////////////////////////////////////////////////////////////////////////////// 384 387 /////////////////////////////////// MV_HEVC HLS ////////////////////////////// 385 388 ///////////////////////////////////////////////////////////////////////////////// 386 389 // TBD: Check if integration is necessary. 387 388 389 390 #define H_MV_HLS_PTL_LIMITS 0 390 391 #define H_MV_HLS7_GEN 0 // General changes (not tested) 391 392 392 // POC 393 393 // #define H_MV_HLS_7_POC_P0041_3 0 // (POC/P0041/POC reset) #3 It was remarked that we should require each non-IRAP picture that has discardable_flag equal to 1 to have NUT value indicating that it is a sub-layer non-reference picture. This was agreed. Decision: Adopt (with constraint for discardable_flag as described above) 394 394 // #define H_MV_HLS_7_POC_P0041_FIXES 0 // (POC/P0041/Fixes) For each non-IRAP picture that has discardable_flag equal to 1 to have NUT value indicating that it is a sub-layer non-reference picture. 395 395 // #define H_MV_HLS_7_POC_P0056_4 0 // (POC/P0056/layer tree poc) #4 Proposal 1: If the POC reset approach is adopted as the basis for multi-layer POC derivation, it is proposed to derive the POC anchor picture from the previous TID0 picture (that is not a RASL picture, a RADL picture or a sub-layer non-reference picture and not with discardable_flag equal to 1) of the current layer or any of its reference layer. This is asserted to improve loss resilience and reduce bit rate overhead. Decision: Adopt Proposal 1 (with the suggested modifications Ewith text provided as P0297). 396 397 396 // SEI related 398 397 //#define H_MV_HLS_8_SEI_NODOC_53 0 // #53 (SEI /NODOC/Added Multiview view position SEI message) Plain copy from AVC. … … 409 408 //#define H_MV_HLS_7_SEI_P0133_28 0 // (SEI/P0133/Recovery point SEI) #28 Decision: Adopt change to recover point semantics only (-v3) 410 409 //#define H_MV_HLS_7_SEI_P0123_25 0 // (SEI/P0123/Alpha channel info) #25 Add alpha channel information SEI message Decision: Adopt. Constrain the bit depth indicated to be equal to the coded bit depth of the aux picture. 411 412 410 // DPB 413 411 //#define H_MV_HLS_8_HRD_Q0102_09 0 // #9 (HRD /Q0102/NoOutputOfPriorPicsFlag) It was suggested that also the separate_colour_plane_flag should affect inference of NoOutputOfPriorPicsFlag. Decision (Ed.): Agreed (affects RExt text). … … 415 413 //#define H_MV_HLS_8_HRD_Q0154_10 0 // #10 (HRD /Q0154/DPB Flushing and parameters) On picture flushing and DPB parameters Decision: Adopted (some details to be discussed further in BoG). 416 414 //#define H_MV_HLS_7_OTHER_P0187_1 0 // (OTHER/P0187/NoOutputOfPriorPicsFlag) #1 Inference of NoOutputOfPriorPicsFlag and proposes to take into account colour format and bit depth for the inference in addition to spatial resolution 417 418 415 // OTHERS 419 416 //#define H_MV_HLS_8_HSB_Q0041_03 0 // #3 (HS /Q0041/hybrid scalability) The proposed text was endorsed, with non-editorial open issues considered as follows ?// #define H_MV_HLS_7_OTHER_P0187_1 0 // (OTHER/P0187/NoOutputOfPriorPicsFlag) #1 Inference of NoOutputOfPriorPicsFlag and proposes to take into account colour format and bit depth for the inference in addition to spatial resolution 420 417 //#define H_MV_HLS_8_MIS_Q0078_24 0 // #24 (MISC /Q0078/scan and pic type) , Items 3 b,c and 4, clarifying which pictures in an output layer sets are applied the values of general_progressive_source_flag, general_interlaced_source_flag, general_non_packed_constraint_flag and general_frame_only_constraint_flag. 421 418 //#define H_MV_HLS_7_HRD_P0138_6 0 // (HRD/P0138/HRD parameters for bitstreams excluding) #6 Decision: Adopt (as revised in updated contribution, with the specification of a flag in the BP SEI (HRD/P0192/sub-DPB) #12 Establish sub-DPBs based on the representation format indicated at the VPS level. It was suggested that the expressed shared capacity limit would need to be less than or equal to the sum of the individual capacity limits. Decision: Adopt as modified. Further study is encouraged on profile/level constraint selections. 422 423 419 ///////////////////////////////////////////////////////////////////////////////////////// 424 420 /////////////////////////////////// HM RELATED DEFINES //////////////////////////////// 425 421 ///////////////////////////////////////////////////////////////////////////////////////// 426 #define HARMONIZE_GOP_FIRST_FIELD_COUPLE 1 427 #define FIX_FIELD_DEPTH 1 428 #if H_MV 429 #define EFFICIENT_FIELD_IRAP 0 430 #else 431 #define EFFICIENT_FIELD_IRAP 1 432 #endif 433 #define ALLOW_RECOVERY_POINT_AS_RAP 1 434 #define BUGFIX_INTRAPERIOD 1 435 #define SAO_ENCODE_ALLOW_USE_PREDEBLOCK 1 436 437 #define SAO_SGN_FUNC 1 438 439 #define TILE_SIZE_CHECK 1 440 441 #define FIX1172 1 ///< fix ticket #1172 442 443 #define SETTING_PIC_OUTPUT_MARK 1 444 #define SETTING_NO_OUT_PIC_PRIOR 1 445 #define FIX_EMPTY_PAYLOAD_NAL 1 446 #define FIX_WRITING_OUTPUT 1 447 #define FIX_OUTPUT_EOS 1 448 449 #define FIX_POC_CRA_NORASL_OUTPUT 1 450 451 #define MAX_NUM_PICS_IN_SOP 1024 452 453 #define MAX_NESTING_NUM_OPS 1024 454 #define MAX_NESTING_NUM_LAYER 64 455 456 #if H_MV 457 #define MAX_VPS_NUM_HRD_PARAMETERS 1024 458 #else 459 #define MAX_VPS_NUM_HRD_PARAMETERS 1 460 #endif 461 #if H_MV 462 #define MAX_NUM_SUB_LAYERS 7 463 #define MAX_NUM_SIGNALLED_PARTITIONING_SCHEMES 16 464 #endif 465 #define MAX_VPS_OP_SETS_PLUS1 1024 466 #if H_MV 467 #define MAX_VPS_NUM_ADD_LAYER_SETS 1024 468 #define MAX_VPS_NUH_LAYER_ID_PLUS1 63 469 #define MAX_NUM_SCALABILITY_TYPES 16 470 #define ENC_CFG_CONSOUT_SPACE 29 471 #else 472 #define MAX_VPS_NUH_RESERVED_ZERO_LAYER_ID_PLUS1 1 473 #endif 474 475 476 #define MAX_CPB_CNT 32 ///< Upper bound of (cpb_cnt_minus1 + 1) 477 #if H_MV 478 #define MAX_NUM_LAYER_IDS 63 479 #define MAX_NUM_LAYERS 63 480 #define MAX_VPS_PROFILE_TIER_LEVEL 64 481 #define MAX_VPS_ADD_OUTPUT_LAYER_SETS 1024 482 #define MAX_VPS_OUTPUTLAYER_SETS ( MAX_VPS_ADD_OUTPUT_LAYER_SETS + MAX_VPS_OP_SETS_PLUS1 + MAX_VPS_OP_SETS_PLUS1 ) 483 #define MAX_NUM_VIDEO_SIGNAL_INFO 16 484 #define MAX_NUM_SCALED_REF_LAYERS MAX_NUM_LAYERS-1 485 #else 486 #define MAX_NUM_LAYER_IDS 64 487 #endif 488 489 #define COEF_REMAIN_BIN_REDUCTION 3 ///< indicates the level at which the VLC 490 ///< transitions from Golomb-Rice to TU+EG(k) 491 492 #define CU_DQP_TU_CMAX 5 ///< max number bins for truncated unary 493 #define CU_DQP_EG_k 0 ///< expgolomb order 494 495 #define SBH_THRESHOLD 4 ///< I0156: value of the fixed SBH controlling threshold 496 497 #define SEQUENCE_LEVEL_LOSSLESS 0 ///< H0530: used only for sequence or frame-level lossless coding 498 499 #define DISABLING_CLIP_FOR_BIPREDME 1 ///< Ticket #175 500 501 #define C1FLAG_NUMBER 8 // maximum number of largerThan1 flag coded in one chunk : 16 in HM5 502 #define C2FLAG_NUMBER 1 // maximum number of largerThan2 flag coded in one chunk: 16 in HM5 503 #define SAO_ENCODING_CHOICE 1 ///< I0184: picture early termination 504 #if SAO_ENCODING_CHOICE 505 #define SAO_ENCODING_RATE 0.75 506 #define SAO_ENCODING_CHOICE_CHROMA 1 ///< J0044: picture early termination Luma and Chroma are handled separately 507 #if SAO_ENCODING_CHOICE_CHROMA 508 #define SAO_ENCODING_RATE_CHROMA 0.5 509 #endif 510 #endif 511 512 #define MAX_NUM_VPS 16 513 #define MAX_NUM_SPS 16 514 #define MAX_NUM_PPS 64 515 516 #define RDOQ_CHROMA_LAMBDA 1 ///< F386: weighting of chroma for RDOQ 517 518 #define MIN_SCAN_POS_CROSS 4 519 520 #define FAST_BIT_EST 1 ///< G763: Table-based bit estimation for CABAC 521 522 #define MLS_GRP_NUM 64 ///< G644 : Max number of coefficient groups, max(16, 64) 523 #define MLS_CG_SIZE 4 ///< G644 : Coefficient group size of 4x4 524 525 #define ADAPTIVE_QP_SELECTION 1 ///< G382: Adaptive reconstruction levels, non-normative part for adaptive QP selection 526 #if ADAPTIVE_QP_SELECTION 527 #define ARL_C_PRECISION 7 ///< G382: 7-bit arithmetic precision 528 #define LEVEL_RANGE 30 ///< G382: max coefficient level in statistics collection 529 #endif 530 531 #define HHI_RQT_INTRA_SPEEDUP 1 ///< tests one best mode with full rqt 532 #define HHI_RQT_INTRA_SPEEDUP_MOD 0 ///< tests two best modes with full rqt 533 422 #endif 423 // ==================================================================================================================== 424 // Debugging 425 // ==================================================================================================================== 426 #define DEBUG_STRING 0 ///< When enabled, prints out final decision debug info at encoder and decoder 427 #define DEBUG_ENCODER_SEARCH_BINS 0 ///< When enabled, prints out each bin as it is coded during encoder search 428 #define DEBUG_CABAC_BINS 0 ///< When enabled, prints out each bin as it is coded during final encode and decode 429 #define DEBUG_INTRA_SEARCH_COSTS 0 ///< When enabled, prints out the cost for each mode during encoder search 430 #define DEBUG_TRANSFORM_AND_QUANTISE 0 ///< When enabled, prints out each TU as it passes through the transform-quantise-dequantise-inverseTransform process 431 #define ENVIRONMENT_VARIABLE_DEBUG_AND_TEST 0 ///< When enabled, allows control of debug modifications via environment variables 432 #define PRINT_MACRO_VALUES 1 ///< When enabled, the encoder prints out a list of the non-environment-variable controlled macros and their values on startup 433 // TODO: rename this macro to DECODER_DEBUG_BIT_STATISTICS (may currently cause merge issues with other branches) 434 // This can be enabled by the makefile 435 #ifndef RExt__DECODER_DEBUG_BIT_STATISTICS 436 #define RExt__DECODER_DEBUG_BIT_STATISTICS 0 ///< 0 (default) = decoder reports as normal, 1 = decoder produces bit usage statistics (will impact decoder run time by up to ~10%) 437 #endif 438 // This can be enabled by the makefile 439 #if !NH_MV 440 #ifndef ENC_DEC_TRACE 441 #define ENC_DEC_TRACE 0 442 #endif 443 #endif 444 #define DEC_NUH_TRACE 0 ///< When trace enabled, enable tracing of NAL unit headers at the decoder (currently not possible at the encoder) 445 #define PRINT_RPS_INFO 0 ///< Enable/disable the printing of bits used to send the RPS. 446 // ==================================================================================================================== 447 // Tool Switches - transitory (these macros are likely to be removed in future revisions) 448 // ==================================================================================================================== 449 #define DECODER_CHECK_SUBSTREAM_AND_SLICE_TRAILING_BYTES 1 ///< TODO: integrate this macro into a broader conformance checking system. 450 #define T0196_SELECTIVE_RDOQ 1 ///< selective RDOQ 451 // ==================================================================================================================== 452 // Tool Switches 453 // ==================================================================================================================== 454 #define ADAPTIVE_QP_SELECTION 1 ///< G382: Adaptive reconstruction levels, non-normative part for adaptive QP selection 455 #define AMP_ENC_SPEEDUP 1 ///< encoder only speed-up by AMP mode skipping 456 #if AMP_ENC_SPEEDUP 457 #define AMP_MRG 1 ///< encoder only force merge for AMP partition (no motion search for AMP) 458 #endif 459 #define FAST_BIT_EST 1 ///< G763: Table-based bit estimation for CABAC 460 #define HHI_RQT_INTRA_SPEEDUP 1 ///< tests one best mode with full rqt 461 #define HHI_RQT_INTRA_SPEEDUP_MOD 0 ///< tests two best modes with full rqt 534 462 #if HHI_RQT_INTRA_SPEEDUP_MOD && !HHI_RQT_INTRA_SPEEDUP 535 463 #error 536 464 #endif 537 538 #define VERBOSE_RATE 0 ///< Print additional rate information in encoder 539 540 #define AMVP_DECIMATION_FACTOR 4 541 542 #define SCAN_SET_SIZE 16 543 #define LOG2_SCAN_SET_SIZE 4 544 545 #define FAST_UDI_MAX_RDMODE_NUM 35 ///< maximum number of RD comparison in fast-UDI estimation loop 546 547 #define ZERO_MVD_EST 0 ///< Zero Mvd Estimation in normal mode 548 549 #define NUM_INTRA_MODE 36 550 #if !REMOVE_LM_CHROMA 551 #define LM_CHROMA_IDX 35 552 #endif 553 554 #define WRITE_BACK 1 ///< Enable/disable the encoder to replace the deltaPOC and Used by current from the config file with the values derived by the refIdc parameter. 555 #define AUTO_INTER_RPS 1 ///< Enable/disable the automatic generation of refIdc from the deltaPOC and Used by current from the config file. 556 #define PRINT_RPS_INFO 0 ///< Enable/disable the printing of bits used to send the RPS. 557 // using one nearest frame as reference frame, and the other frames are high quality (POC%4==0) frames (1+X) 558 // this should be done with encoder only decision 559 // but because of the absence of reference frame management, the related code was hard coded currently 560 561 #define RVM_VCEGAM10_M 4 562 563 #define PLANAR_IDX 0 564 #define VER_IDX 26 // index for intra VERTICAL mode 565 #define HOR_IDX 10 // index for intra HORIZONTAL mode 566 #define DC_IDX 1 // index for intra DC mode 567 #define NUM_CHROMA_MODE 5 // total number of chroma modes 568 #define DM_CHROMA_IDX 36 // chroma mode index for derived from luma intra mode 569 570 571 #define FAST_UDI_USE_MPM 1 572 573 #define RDO_WITHOUT_DQP_BITS 0 ///< Disable counting dQP bits in RDO-based mode decision 574 575 #define FULL_NBIT 0 ///< When enabled, compute costs using full sample bitdepth. When disabled, compute costs as if it is 8-bit source video. 465 #define MATRIX_MULT 0 ///< Brute force matrix multiplication instead of partial butterfly 466 #define O0043_BEST_EFFORT_DECODING 0 ///< 0 (default) = disable code related to best effort decoding, 1 = enable code relating to best effort decoding [ decode-side only ]. 467 #define RDOQ_CHROMA_LAMBDA 1 ///< F386: weighting of chroma for RDOQ 468 // This can be enabled by the makefile 469 #ifndef RExt__HIGH_BIT_DEPTH_SUPPORT 470 #define RExt__HIGH_BIT_DEPTH_SUPPORT 0 ///< 0 (default) use data type definitions for 8-10 bit video, 1 = use larger data types to allow for up to 16-bit video (originally developed as part of N0188) 471 #endif 472 // ==================================================================================================================== 473 // Derived macros 474 // ==================================================================================================================== 475 #if RExt__HIGH_BIT_DEPTH_SUPPORT 476 #define FULL_NBIT 1 ///< When enabled, use distortion measure derived from all bits of source data, otherwise discard (bitDepth - 8) least-significant bits of distortion 477 #define RExt__HIGH_PRECISION_FORWARD_TRANSFORM 1 ///< 0 use original 6-bit transform matrices for both forward and inverse transform, 1 (default) = use original matrices for inverse transform and high precision matrices for forward transform 478 #else 479 #define FULL_NBIT 0 ///< When enabled, use distortion measure derived from all bits of source data, otherwise discard (bitDepth - 8) least-significant bits of distortion 480 #define RExt__HIGH_PRECISION_FORWARD_TRANSFORM 0 ///< 0 (default) use original 6-bit transform matrices for both forward and inverse transform, 1 = use original matrices for inverse transform and high precision matrices for forward transform 481 #endif 576 482 #if FULL_NBIT 577 # define DISTORTION_PRECISION_ADJUSTMENT(x) 0483 # define DISTORTION_PRECISION_ADJUSTMENT(x) 0 578 484 #else 579 485 # define DISTORTION_PRECISION_ADJUSTMENT(x) (x) 580 486 #endif 581 582 #define LOG2_MAX_NUM_COLUMNS_MINUS1 7 583 #define LOG2_MAX_NUM_ROWS_MINUS1 7 584 #define LOG2_MAX_COLUMN_WIDTH 13 585 #define LOG2_MAX_ROW_HEIGHT 13 586 587 #define MATRIX_MULT 0 // Brute force matrix multiplication instead of partial butterfly 588 589 #define REG_DCT 65535 590 591 #define AMP_SAD 1 ///< dedicated SAD functions for AMP 592 #define AMP_ENC_SPEEDUP 1 ///< encoder only speed-up by AMP mode skipping 593 #if AMP_ENC_SPEEDUP 594 #define AMP_MRG 1 ///< encoder only force merge for AMP partition (no motion search for AMP) 595 #endif 596 597 #define CABAC_INIT_PRESENT_FLAG 1 598 487 #if DEBUG_STRING 488 #define DEBUG_STRING_PASS_INTO(name) , name 489 #define DEBUG_STRING_PASS_INTO_OPTIONAL(name, exp) , (exp==0)?0:name 490 #define DEBUG_STRING_FN_DECLARE(name) , std::string &name 491 #define DEBUG_STRING_FN_DECLAREP(name) , std::string *name 492 #define DEBUG_STRING_NEW(name) std::string name; 493 #define DEBUG_STRING_OUTPUT(os, name) os << name; 494 #define DEBUG_STRING_APPEND(str1, str2) str1+=str2; 495 #define DEBUG_STRING_SWAP(str1, str2) str1.swap(str2); 496 #define DEBUG_STRING_CHANNEL_CONDITION(compID) (true) 497 #include <sstream> 498 #include <iomanip> 499 #else 500 #define DEBUG_STRING_PASS_INTO(name) 501 #define DEBUG_STRING_PASS_INTO_OPTIONAL(name, exp) 502 #define DEBUG_STRING_FN_DECLARE(name) 503 #define DEBUG_STRING_FN_DECLAREP(name) 504 #define DEBUG_STRING_NEW(name) 505 #define DEBUG_STRING_OUTPUT(os, name) 506 #define DEBUG_STRING_APPEND(str1, str2) 507 #define DEBUG_STRING_SWAP(srt1, str2) 508 #define DEBUG_STRING_CHANNEL_CONDITION(compID) 509 #endif 510 // ==================================================================================================================== 511 // Error checks 512 // ==================================================================================================================== 513 #if ((RExt__HIGH_PRECISION_FORWARD_TRANSFORM != 0) && (RExt__HIGH_BIT_DEPTH_SUPPORT == 0)) 514 #error ERROR: cannot enable RExt__HIGH_PRECISION_FORWARD_TRANSFORM without RExt__HIGH_BIT_DEPTH_SUPPORT 515 #endif 599 516 // ==================================================================================================================== 600 517 // Basic type redefinition 601 518 // ==================================================================================================================== 602 603 519 typedef void Void; 604 520 typedef bool Bool; 605 606 521 #ifdef __arm__ 607 522 typedef signed char Char; … … 616 531 typedef double Double; 617 532 typedef float Float; 618 619 533 // ==================================================================================================================== 620 534 // 64-bit integer type 621 535 // ==================================================================================================================== 622 623 536 #ifdef _MSC_VER 624 537 typedef __int64 Int64; 625 626 538 #if _MSC_VER <= 1200 // MS VC6 627 539 typedef __int64 UInt64; // MS VC6 does not support unsigned __int64 to double conversion … … 629 541 typedef unsigned __int64 UInt64; 630 542 #endif 631 632 543 #else 633 634 544 typedef long long Int64; 635 545 typedef unsigned long long UInt64; 636 637 #endif 638 639 // ==================================================================================================================== 640 // Type definition 641 // ==================================================================================================================== 642 643 typedef UChar Pxl; ///< 8-bit pixel type 644 typedef Short Pel; ///< 16-bit pixel type 645 typedef Int TCoeff; ///< transform coefficient 646 647 #if H_3D_VSO 546 #endif 547 // ==================================================================================================================== 548 // Named numerical types 549 // ==================================================================================================================== 550 #if RExt__HIGH_BIT_DEPTH_SUPPORT 551 typedef Int Pel; ///< pixel type 552 typedef Int64 TCoeff; ///< transform coefficient 553 typedef Int TMatrixCoeff; ///< transform matrix coefficient 554 typedef Short TFilterCoeff; ///< filter coefficient 555 typedef Int64 Intermediate_Int; ///< used as intermediate value in calculations 556 typedef UInt64 Intermediate_UInt; ///< used as intermediate value in calculations 557 #else 558 typedef Short Pel; ///< pixel type 559 typedef Int TCoeff; ///< transform coefficient 560 typedef Short TMatrixCoeff; ///< transform matrix coefficient 561 typedef Short TFilterCoeff; ///< filter coefficient 562 typedef Int Intermediate_Int; ///< used as intermediate value in calculations 563 typedef UInt Intermediate_UInt; ///< used as intermediate value in calculations 564 #endif 565 #if FULL_NBIT 566 typedef UInt64 Distortion; ///< distortion measurement 567 #else 568 typedef UInt Distortion; ///< distortion measurement 569 #endif 570 #if NH_MV 571 typedef std::vector< Int > IntAry1d; 572 typedef std::vector< IntAry1d > IntAry2d; 573 typedef std::vector< IntAry2d > IntAry3d; 574 typedef std::vector< IntAry3d > IntAry4d; 575 typedef std::vector< IntAry4d > IntAry5d; 576 typedef std::vector< Bool > BoolAry1d; 577 typedef std::vector< BoolAry1d > BoolAry2d; 578 typedef std::vector< BoolAry2d > BoolAry3d; 579 typedef std::vector< BoolAry3d > BoolAry4d; 580 typedef std::vector< BoolAry4d > BoolAry5d; 581 #endif 582 #if NH_3D_VSO 648 583 // ==================================================================================================================== 649 584 // Define Distortion Types 650 585 // ==================================================================================================================== 651 586 typedef Int64 RMDist; ///< renderer model distortion 652 653 587 #if H_3D_VSO_DIST_INT 654 588 typedef Int64 Dist; ///< RDO distortion … … 663 597 #endif 664 598 #endif 665 /// parameters for adaptive loop filter666 class TComPicSym;667 668 // Slice / Slice segment encoding modes669 enum SliceConstraint670 {671 NO_SLICES = 0, ///< don't use slices / slice segments672 FIXED_NUMBER_OF_LCU = 1, ///< Limit maximum number of largest coding tree blocks in a slice / slice segments673 FIXED_NUMBER_OF_BYTES = 2, ///< Limit maximum number of bytes in a slice / slice segment674 FIXED_NUMBER_OF_TILES = 3, ///< slices / slice segments span an integer number of tiles675 };676 677 enum SAOComponentIdx678 {679 SAO_Y =0,680 SAO_Cb,681 SAO_Cr,682 NUM_SAO_COMPONENTS683 };684 685 enum SAOMode //mode686 {687 SAO_MODE_OFF = 0,688 SAO_MODE_NEW,689 SAO_MODE_MERGE,690 NUM_SAO_MODES691 };692 693 enum SAOModeMergeTypes694 {695 SAO_MERGE_LEFT =0,696 SAO_MERGE_ABOVE,697 NUM_SAO_MERGE_TYPES698 };699 700 701 enum SAOModeNewTypes702 {703 SAO_TYPE_START_EO =0,704 SAO_TYPE_EO_0 = SAO_TYPE_START_EO,705 SAO_TYPE_EO_90,706 SAO_TYPE_EO_135,707 SAO_TYPE_EO_45,708 709 SAO_TYPE_START_BO,710 SAO_TYPE_BO = SAO_TYPE_START_BO,711 712 NUM_SAO_NEW_TYPES713 };714 #define NUM_SAO_EO_TYPES_LOG2 2715 716 enum SAOEOClasses717 {718 SAO_CLASS_EO_FULL_VALLEY = 0,719 SAO_CLASS_EO_HALF_VALLEY = 1,720 SAO_CLASS_EO_PLAIN = 2,721 SAO_CLASS_EO_HALF_PEAK = 3,722 SAO_CLASS_EO_FULL_PEAK = 4,723 NUM_SAO_EO_CLASSES,724 };725 726 727 #define NUM_SAO_BO_CLASSES_LOG2 5728 enum SAOBOClasses729 {730 //SAO_CLASS_BO_BAND0 = 0,731 //SAO_CLASS_BO_BAND1,732 //SAO_CLASS_BO_BAND2,733 //...734 //SAO_CLASS_BO_BAND31,735 736 NUM_SAO_BO_CLASSES = (1<<NUM_SAO_BO_CLASSES_LOG2),737 };738 #define MAX_NUM_SAO_CLASSES 32 //(NUM_SAO_EO_GROUPS > NUM_SAO_BO_GROUPS)?NUM_SAO_EO_GROUPS:NUM_SAO_BO_GROUPS739 740 struct SAOOffset741 {742 Int modeIdc; //NEW, MERGE, OFF743 Int typeIdc; //NEW: EO_0, EO_90, EO_135, EO_45, BO. MERGE: left, above744 Int typeAuxInfo; //BO: starting band index745 Int offset[MAX_NUM_SAO_CLASSES];746 747 SAOOffset();748 ~SAOOffset();749 Void reset();750 751 const SAOOffset& operator= (const SAOOffset& src);752 };753 754 struct SAOBlkParam755 {756 757 SAOBlkParam();758 ~SAOBlkParam();759 Void reset();760 const SAOBlkParam& operator= (const SAOBlkParam& src);761 SAOOffset& operator[](Int compIdx){ return offsetParam[compIdx];}762 private:763 SAOOffset offsetParam[NUM_SAO_COMPONENTS];764 765 };766 767 /// parameters for deblocking filter768 typedef struct _LFCUParam769 {770 Bool bInternalEdge; ///< indicates internal edge771 Bool bLeftEdge; ///< indicates left edge772 Bool bTopEdge; ///< indicates top edge773 } LFCUParam;774 775 599 // ==================================================================================================================== 776 600 // Enumeration 777 601 // ==================================================================================================================== 778 602 enum RDPCMMode 603 { 604 RDPCM_OFF = 0, 605 RDPCM_HOR = 1, 606 RDPCM_VER = 2, 607 NUMBER_OF_RDPCM_MODES = 3 608 }; 609 enum RDPCMSignallingMode 610 { 611 RDPCM_SIGNAL_IMPLICIT = 0, 612 RDPCM_SIGNAL_EXPLICIT = 1, 613 NUMBER_OF_RDPCM_SIGNALLING_MODES = 2 614 }; 779 615 /// supported slice type 780 616 enum SliceType 781 617 { 782 B_SLICE ,783 P_SLICE ,784 I_SLICE 785 }; 786 618 B_SLICE = 0, 619 P_SLICE = 1, 620 I_SLICE = 2, 621 NUMBER_OF_SLICE_TYPES = 3 622 }; 787 623 /// chroma formats (according to semantics of chroma_format_idc) 788 624 enum ChromaFormat 789 625 { 790 CHROMA_400 = 0, 791 CHROMA_420 = 1, 792 CHROMA_422 = 2, 793 CHROMA_444 = 3 794 }; 795 626 CHROMA_400 = 0, 627 CHROMA_420 = 1, 628 CHROMA_422 = 2, 629 CHROMA_444 = 3, 630 NUM_CHROMA_FORMAT = 4 631 }; 632 enum ChannelType 633 { 634 CHANNEL_TYPE_LUMA = 0, 635 CHANNEL_TYPE_CHROMA = 1, 636 MAX_NUM_CHANNEL_TYPE = 2 637 }; 638 enum ComponentID 639 { 640 COMPONENT_Y = 0, 641 COMPONENT_Cb = 1, 642 COMPONENT_Cr = 2, 643 MAX_NUM_COMPONENT = 3 644 }; 645 enum InputColourSpaceConversion // defined in terms of conversion prior to input of encoder. 646 { 647 IPCOLOURSPACE_UNCHANGED = 0, 648 IPCOLOURSPACE_YCbCrtoYCrCb = 1, // Mainly used for debug! 649 IPCOLOURSPACE_YCbCrtoYYY = 2, // Mainly used for debug! 650 IPCOLOURSPACE_RGBtoGBR = 3, 651 NUMBER_INPUT_COLOUR_SPACE_CONVERSIONS = 4 652 }; 653 enum DeblockEdgeDir 654 { 655 EDGE_VER = 0, 656 EDGE_HOR = 1, 657 NUM_EDGE_DIR = 2 658 }; 796 659 /// supported partition shape 797 660 enum PartSize 798 661 { 799 SIZE_2Nx2N, ///< symmetric motion partition, 2Nx2N 800 SIZE_2NxN, ///< symmetric motion partition, 2Nx N 801 SIZE_Nx2N, ///< symmetric motion partition, Nx2N 802 SIZE_NxN, ///< symmetric motion partition, Nx N 803 SIZE_2NxnU, ///< asymmetric motion partition, 2Nx( N/2) + 2Nx(3N/2) 804 SIZE_2NxnD, ///< asymmetric motion partition, 2Nx(3N/2) + 2Nx( N/2) 805 SIZE_nLx2N, ///< asymmetric motion partition, ( N/2)x2N + (3N/2)x2N 806 SIZE_nRx2N, ///< asymmetric motion partition, (3N/2)x2N + ( N/2)x2N 807 SIZE_NONE = 15 808 }; 809 662 SIZE_2Nx2N = 0, ///< symmetric motion partition, 2Nx2N 663 SIZE_2NxN = 1, ///< symmetric motion partition, 2Nx N 664 SIZE_Nx2N = 2, ///< symmetric motion partition, Nx2N 665 SIZE_NxN = 3, ///< symmetric motion partition, Nx N 666 SIZE_2NxnU = 4, ///< asymmetric motion partition, 2Nx( N/2) + 2Nx(3N/2) 667 SIZE_2NxnD = 5, ///< asymmetric motion partition, 2Nx(3N/2) + 2Nx( N/2) 668 SIZE_nLx2N = 6, ///< asymmetric motion partition, ( N/2)x2N + (3N/2)x2N 669 SIZE_nRx2N = 7, ///< asymmetric motion partition, (3N/2)x2N + ( N/2)x2N 670 NUMBER_OF_PART_SIZES = 8 671 }; 810 672 /// supported prediction type 811 673 enum PredMode 812 674 { 813 MODE_INTER, ///< inter-prediction mode 814 MODE_INTRA, ///< intra-prediction mode 815 MODE_NONE = 15 816 }; 817 818 /// texture component type 819 enum TextType 820 { 821 TEXT_LUMA, ///< luma 822 TEXT_CHROMA, ///< chroma (U+V) 823 TEXT_CHROMA_U, ///< chroma U 824 TEXT_CHROMA_V, ///< chroma V 825 TEXT_ALL, ///< Y+U+V 826 TEXT_NONE = 15 827 }; 828 675 MODE_INTER = 0, ///< inter-prediction mode 676 MODE_INTRA = 1, ///< intra-prediction mode 677 NUMBER_OF_PREDICTION_MODES = 2, 678 }; 829 679 /// reference list index 830 680 enum RefPicList 831 681 { 832 REF_PIC_LIST_0 = 0, ///< reference list 0833 REF_PIC_LIST_1 = 1, ///< reference list 1834 REF_PIC_LIST_X = 100 ///< special mark835 }; 836 682 REF_PIC_LIST_0 = 0, ///< reference list 0 683 REF_PIC_LIST_1 = 1, ///< reference list 1 684 NUM_REF_PIC_LIST_01 = 2, 685 REF_PIC_LIST_X = 100 ///< special mark 686 }; 837 687 /// distortion function index 838 688 enum DFunc 839 689 { 840 DF_DEFAULT = 0, 841 DF_SSE = 1, ///< general size SSE 842 DF_SSE4 = 2, ///< 4xM SSE 843 DF_SSE8 = 3, ///< 8xM SSE 844 DF_SSE16 = 4, ///< 16xM SSE 845 DF_SSE32 = 5, ///< 32xM SSE 846 DF_SSE64 = 6, ///< 64xM SSE 847 DF_SSE16N = 7, ///< 16NxM SSE 848 849 DF_SAD = 8, ///< general size SAD 850 DF_SAD4 = 9, ///< 4xM SAD 851 DF_SAD8 = 10, ///< 8xM SAD 852 DF_SAD16 = 11, ///< 16xM SAD 853 DF_SAD32 = 12, ///< 32xM SAD 854 DF_SAD64 = 13, ///< 64xM SAD 855 DF_SAD16N = 14, ///< 16NxM SAD 856 857 DF_SADS = 15, ///< general size SAD with step 858 DF_SADS4 = 16, ///< 4xM SAD with step 859 DF_SADS8 = 17, ///< 8xM SAD with step 860 DF_SADS16 = 18, ///< 16xM SAD with step 861 DF_SADS32 = 19, ///< 32xM SAD with step 862 DF_SADS64 = 20, ///< 64xM SAD with step 863 DF_SADS16N = 21, ///< 16NxM SAD with step 864 865 DF_HADS = 22, ///< general size Hadamard with step 866 DF_HADS4 = 23, ///< 4xM HAD with step 867 DF_HADS8 = 24, ///< 8xM HAD with step 868 DF_HADS16 = 25, ///< 16xM HAD with step 869 DF_HADS32 = 26, ///< 32xM HAD with step 870 DF_HADS64 = 27, ///< 64xM HAD with step 871 DF_HADS16N = 28, ///< 16NxM HAD with step 872 #if H_3D_VSO 690 DF_DEFAULT = 0, 691 DF_SSE = 1, ///< general size SSE 692 DF_SSE4 = 2, ///< 4xM SSE 693 DF_SSE8 = 3, ///< 8xM SSE 694 DF_SSE16 = 4, ///< 16xM SSE 695 DF_SSE32 = 5, ///< 32xM SSE 696 DF_SSE64 = 6, ///< 64xM SSE 697 DF_SSE16N = 7, ///< 16NxM SSE 698 DF_SAD = 8, ///< general size SAD 699 DF_SAD4 = 9, ///< 4xM SAD 700 DF_SAD8 = 10, ///< 8xM SAD 701 DF_SAD16 = 11, ///< 16xM SAD 702 DF_SAD32 = 12, ///< 32xM SAD 703 DF_SAD64 = 13, ///< 64xM SAD 704 DF_SAD16N = 14, ///< 16NxM SAD 705 DF_SADS = 15, ///< general size SAD with step 706 DF_SADS4 = 16, ///< 4xM SAD with step 707 DF_SADS8 = 17, ///< 8xM SAD with step 708 DF_SADS16 = 18, ///< 16xM SAD with step 709 DF_SADS32 = 19, ///< 32xM SAD with step 710 DF_SADS64 = 20, ///< 64xM SAD with step 711 DF_SADS16N = 21, ///< 16NxM SAD with step 712 DF_HADS = 22, ///< general size Hadamard with step 713 DF_HADS4 = 23, ///< 4xM HAD with step 714 DF_HADS8 = 24, ///< 8xM HAD with step 715 DF_HADS16 = 25, ///< 16xM HAD with step 716 DF_HADS32 = 26, ///< 32xM HAD with step 717 DF_HADS64 = 27, ///< 64xM HAD with step 718 DF_HADS16N = 28, ///< 16NxM HAD with step 719 #if NH_3D_VSO 873 720 DF_VSD = 29, ///< general size VSD 874 721 DF_VSD4 = 30, ///< 4xM VSD … … 879 726 DF_VSD16N = 35, ///< 16NxM VSD 880 727 #endif 881 882 #if AMP_SAD 883 DF_SAD12 = 43, 884 DF_SAD24 = 44, 885 DF_SAD48 = 45, 886 887 DF_SADS12 = 46, 888 DF_SADS24 = 47, 889 DF_SADS48 = 48, 890 891 DF_SSE_FRAME = 50 ///< Frame-based SSE 892 #else 893 DF_SSE_FRAME = 33 ///< Frame-based SSE 894 #endif 895 }; 896 728 DF_SAD12 = 43, 729 DF_SAD24 = 44, 730 DF_SAD48 = 45, 731 DF_SADS12 = 46, 732 DF_SADS24 = 47, 733 DF_SADS48 = 48, 734 DF_SSE_FRAME = 50, ///< Frame-based SSE 735 DF_TOTAL_FUNCTIONS = 64 736 }; 897 737 /// index for SBAC based RD optimization 898 738 enum CI_IDX … … 906 746 CI_NUM, ///< total number 907 747 }; 908 909 748 /// motion vector predictor direction used in AMVP 910 749 enum MVP_DIR … … 916 755 MD_ABOVE_LEFT ///< MVP of above left block 917 756 }; 918 919 /// merging candidates 920 #if H_3D 757 #if NH_3D_MLC 921 758 enum DefaultMergCandOrder 922 759 { … … 931 768 MRG_A0, ///< Left bottom 932 769 MRG_B2, ///< Above left 933 MRG_IVSHIFT, ///< Shifted IVMC o fShifted IVDC. (These are mutually exclusive)770 MRG_IVSHIFT, ///< Shifted IVMC or Shifted IVDC. (These are mutually exclusive) 934 771 MRG_COL ///< Temporal co-located 935 772 }; 936 773 #endif 937 774 enum StoredResidualType 775 { 776 RESIDUAL_RECONSTRUCTED = 0, 777 RESIDUAL_ENCODER_SIDE = 1, 778 NUMBER_OF_STORED_RESIDUAL_TYPES = 2 779 }; 780 enum TransformDirection 781 { 782 TRANSFORM_FORWARD = 0, 783 TRANSFORM_INVERSE = 1, 784 TRANSFORM_NUMBER_OF_DIRECTIONS = 2 785 }; 786 /// supported ME search methods 787 enum MESearchMethod 788 { 789 FULL_SEARCH = 0, ///< Full search 790 DIAMOND = 1, ///< Fast search 791 SELECTIVE = 2 ///< Selective search 792 }; 938 793 /// coefficient scanning type used in ACS 939 794 enum COEFF_SCAN_TYPE 940 795 { 941 SCAN_DIAG = 0, ///< up-right diagonal scan 942 SCAN_HOR, ///< horizontal first scan 943 SCAN_VER ///< vertical first scan 944 }; 945 796 SCAN_DIAG = 0, ///< up-right diagonal scan 797 SCAN_HOR = 1, ///< horizontal first scan 798 SCAN_VER = 2, ///< vertical first scan 799 SCAN_NUMBER_OF_TYPES = 3 800 }; 801 enum COEFF_SCAN_GROUP_TYPE 802 { 803 SCAN_UNGROUPED = 0, 804 SCAN_GROUPED_4x4 = 1, 805 SCAN_NUMBER_OF_GROUP_TYPES = 2 806 }; 807 enum SignificanceMapContextType 808 { 809 CONTEXT_TYPE_4x4 = 0, 810 CONTEXT_TYPE_8x8 = 1, 811 CONTEXT_TYPE_NxN = 2, 812 CONTEXT_TYPE_SINGLE = 3, 813 CONTEXT_NUMBER_OF_TYPES = 4 814 }; 815 enum ScalingListMode 816 { 817 SCALING_LIST_OFF, 818 SCALING_LIST_DEFAULT, 819 SCALING_LIST_FILE_READ 820 }; 821 enum ScalingListSize 822 { 823 SCALING_LIST_4x4 = 0, 824 SCALING_LIST_8x8, 825 SCALING_LIST_16x16, 826 SCALING_LIST_32x32, 827 SCALING_LIST_SIZE_NUM 828 }; 829 // Slice / Slice segment encoding modes 830 enum SliceConstraint 831 { 832 NO_SLICES = 0, ///< don't use slices / slice segments 833 FIXED_NUMBER_OF_CTU = 1, ///< Limit maximum number of largest coding tree units in a slice / slice segments 834 FIXED_NUMBER_OF_BYTES = 2, ///< Limit maximum number of bytes in a slice / slice segment 835 FIXED_NUMBER_OF_TILES = 3, ///< slices / slice segments span an integer number of tiles 836 }; 837 enum SAOMode //mode 838 { 839 SAO_MODE_OFF = 0, 840 SAO_MODE_NEW, 841 SAO_MODE_MERGE, 842 NUM_SAO_MODES 843 }; 844 enum SAOModeMergeTypes 845 { 846 SAO_MERGE_LEFT =0, 847 SAO_MERGE_ABOVE, 848 NUM_SAO_MERGE_TYPES 849 }; 850 enum SAOModeNewTypes 851 { 852 SAO_TYPE_START_EO =0, 853 SAO_TYPE_EO_0 = SAO_TYPE_START_EO, 854 SAO_TYPE_EO_90, 855 SAO_TYPE_EO_135, 856 SAO_TYPE_EO_45, 857 SAO_TYPE_START_BO, 858 SAO_TYPE_BO = SAO_TYPE_START_BO, 859 NUM_SAO_NEW_TYPES 860 }; 861 #define NUM_SAO_EO_TYPES_LOG2 2 862 enum SAOEOClasses 863 { 864 SAO_CLASS_EO_FULL_VALLEY = 0, 865 SAO_CLASS_EO_HALF_VALLEY = 1, 866 SAO_CLASS_EO_PLAIN = 2, 867 SAO_CLASS_EO_HALF_PEAK = 3, 868 SAO_CLASS_EO_FULL_PEAK = 4, 869 NUM_SAO_EO_CLASSES, 870 }; 871 #define NUM_SAO_BO_CLASSES_LOG2 5 872 #define NUM_SAO_BO_CLASSES (1<<NUM_SAO_BO_CLASSES_LOG2) 946 873 namespace Profile 947 874 { … … 952 879 MAIN10 = 2, 953 880 MAINSTILLPICTURE = 3, 954 #if H_MV 955 MULTIVIEWMAIN = 6, 956 #if H_3D 881 MAINREXT = 4, 882 HIGHTHROUGHPUTREXT = 5 883 #if NH_MV 884 ,MULTIVIEWMAIN = 6, 885 #if NH_3D 957 886 MAIN3D = 8, 958 887 #endif … … 960 889 }; 961 890 } 962 963 891 namespace Level 964 892 { … … 968 896 HIGH = 1, 969 897 }; 970 971 898 enum Name 972 899 { 900 // code = (level * 30) 973 901 NONE = 0, 974 902 LEVEL1 = 30, … … 985 913 LEVEL6_1 = 183, 986 914 LEVEL6_2 = 186, 915 LEVEL8_5 = 255, 987 916 }; 988 917 } 918 enum CostMode 919 { 920 COST_STANDARD_LOSSY = 0, 921 COST_SEQUENCE_LEVEL_LOSSLESS = 1, 922 COST_LOSSLESS_CODING = 2, 923 COST_MIXED_LOSSLESS_LOSSY_CODING = 3 924 }; 925 enum SPSExtensionFlagIndex 926 { 927 SPS_EXT__REXT = 0, 928 //SPS_EXT__MVHEVC = 1, //for use in future versions 929 //SPS_EXT__SHVC = 2, //for use in future versions 930 NUM_SPS_EXTENSION_FLAGS = 8 931 }; 932 enum PPSExtensionFlagIndex 933 { 934 PPS_EXT__REXT = 0, 935 //PPS_EXT__MVHEVC = 1, //for use in future versions 936 //PPS_EXT__SHVC = 2, //for use in future versions 937 NUM_PPS_EXTENSION_FLAGS = 8 938 }; 939 // TODO: Existing names used for the different NAL unit types can be altered to better reflect the names in the spec. 940 // However, the names in the spec are not yet stable at this point. Once the names are stable, a cleanup 941 // effort can be done without use of macros to alter the names used to indicate the different NAL unit types. 942 enum NalUnitType 943 { 944 NAL_UNIT_CODED_SLICE_TRAIL_N = 0, // 0 945 NAL_UNIT_CODED_SLICE_TRAIL_R, // 1 946 NAL_UNIT_CODED_SLICE_TSA_N, // 2 947 NAL_UNIT_CODED_SLICE_TSA_R, // 3 948 NAL_UNIT_CODED_SLICE_STSA_N, // 4 949 NAL_UNIT_CODED_SLICE_STSA_R, // 5 950 NAL_UNIT_CODED_SLICE_RADL_N, // 6 951 NAL_UNIT_CODED_SLICE_RADL_R, // 7 952 NAL_UNIT_CODED_SLICE_RASL_N, // 8 953 NAL_UNIT_CODED_SLICE_RASL_R, // 9 954 NAL_UNIT_RESERVED_VCL_N10, 955 NAL_UNIT_RESERVED_VCL_R11, 956 NAL_UNIT_RESERVED_VCL_N12, 957 NAL_UNIT_RESERVED_VCL_R13, 958 NAL_UNIT_RESERVED_VCL_N14, 959 NAL_UNIT_RESERVED_VCL_R15, 960 NAL_UNIT_CODED_SLICE_BLA_W_LP, // 16 961 NAL_UNIT_CODED_SLICE_BLA_W_RADL, // 17 962 NAL_UNIT_CODED_SLICE_BLA_N_LP, // 18 963 NAL_UNIT_CODED_SLICE_IDR_W_RADL, // 19 964 NAL_UNIT_CODED_SLICE_IDR_N_LP, // 20 965 NAL_UNIT_CODED_SLICE_CRA, // 21 966 NAL_UNIT_RESERVED_IRAP_VCL22, 967 NAL_UNIT_RESERVED_IRAP_VCL23, 968 NAL_UNIT_RESERVED_VCL24, 969 NAL_UNIT_RESERVED_VCL25, 970 NAL_UNIT_RESERVED_VCL26, 971 NAL_UNIT_RESERVED_VCL27, 972 NAL_UNIT_RESERVED_VCL28, 973 NAL_UNIT_RESERVED_VCL29, 974 NAL_UNIT_RESERVED_VCL30, 975 NAL_UNIT_RESERVED_VCL31, 976 NAL_UNIT_VPS, // 32 977 NAL_UNIT_SPS, // 33 978 NAL_UNIT_PPS, // 34 979 NAL_UNIT_ACCESS_UNIT_DELIMITER, // 35 980 NAL_UNIT_EOS, // 36 981 NAL_UNIT_EOB, // 37 982 NAL_UNIT_FILLER_DATA, // 38 983 NAL_UNIT_PREFIX_SEI, // 39 984 NAL_UNIT_SUFFIX_SEI, // 40 985 NAL_UNIT_RESERVED_NVCL41, 986 NAL_UNIT_RESERVED_NVCL42, 987 NAL_UNIT_RESERVED_NVCL43, 988 NAL_UNIT_RESERVED_NVCL44, 989 NAL_UNIT_RESERVED_NVCL45, 990 NAL_UNIT_RESERVED_NVCL46, 991 NAL_UNIT_RESERVED_NVCL47, 992 NAL_UNIT_UNSPECIFIED_48, 993 NAL_UNIT_UNSPECIFIED_49, 994 NAL_UNIT_UNSPECIFIED_50, 995 NAL_UNIT_UNSPECIFIED_51, 996 NAL_UNIT_UNSPECIFIED_52, 997 NAL_UNIT_UNSPECIFIED_53, 998 NAL_UNIT_UNSPECIFIED_54, 999 NAL_UNIT_UNSPECIFIED_55, 1000 NAL_UNIT_UNSPECIFIED_56, 1001 NAL_UNIT_UNSPECIFIED_57, 1002 NAL_UNIT_UNSPECIFIED_58, 1003 NAL_UNIT_UNSPECIFIED_59, 1004 NAL_UNIT_UNSPECIFIED_60, 1005 NAL_UNIT_UNSPECIFIED_61, 1006 NAL_UNIT_UNSPECIFIED_62, 1007 NAL_UNIT_UNSPECIFIED_63, 1008 NAL_UNIT_INVALID, 1009 }; 1010 #if NH_MV 1011 /// scalability types 1012 enum ScalabilityType 1013 { 1014 DEPTH_ID = 0, 1015 VIEW_ORDER_INDEX = 1, 1016 DEPENDENCY_ID = 2, 1017 AUX_ID = 3, 1018 }; 1019 #endif 1020 #if NH_3D 1021 // Renderer 1022 enum BlenMod 1023 { 1024 BLEND_NONE = -1, 1025 BLEND_AVRG = 0, 1026 BLEND_LEFT = 1, 1027 BLEND_RIGHT = 2, 1028 BLEND_GEN = 3 1029 }; 1030 enum 1031 { 1032 VIEWPOS_INVALID = -1, 1033 VIEWPOS_LEFT = 0, 1034 VIEWPOS_RIGHT = 1, 1035 VIEWPOS_MERGED = 2 1036 }; 1037 #endif 1038 // ==================================================================================================================== 1039 // Type definition 1040 // ==================================================================================================================== 1041 /// parameters for adaptive loop filter 1042 class TComPicSym; 1043 #define MAX_NUM_SAO_CLASSES 32 //(NUM_SAO_EO_GROUPS > NUM_SAO_BO_GROUPS)?NUM_SAO_EO_GROUPS:NUM_SAO_BO_GROUPS 1044 struct SAOOffset 1045 { 1046 SAOMode modeIdc; // NEW, MERGE, OFF 1047 Int typeIdc; // union of SAOModeMergeTypes and SAOModeNewTypes, depending on modeIdc. 1048 Int typeAuxInfo; // BO: starting band index 1049 Int offset[MAX_NUM_SAO_CLASSES]; 1050 SAOOffset(); 1051 ~SAOOffset(); 1052 Void reset(); 1053 const SAOOffset& operator= (const SAOOffset& src); 1054 }; 1055 struct SAOBlkParam 1056 { 1057 SAOBlkParam(); 1058 ~SAOBlkParam(); 1059 Void reset(); 1060 const SAOBlkParam& operator= (const SAOBlkParam& src); 1061 SAOOffset& operator[](Int compIdx){ return offsetParam[compIdx];} 1062 private: 1063 SAOOffset offsetParam[MAX_NUM_COMPONENT]; 1064 }; 1065 struct BitDepths 1066 { 1067 #if O0043_BEST_EFFORT_DECODING 1068 Int recon[MAX_NUM_CHANNEL_TYPE]; ///< the bit depth used for reconstructing the video 1069 Int stream[MAX_NUM_CHANNEL_TYPE];///< the bit depth used indicated in the SPS 1070 #else 1071 Int recon[MAX_NUM_CHANNEL_TYPE]; ///< the bit depth as indicated in the SPS 1072 #endif 1073 }; 1074 /// parameters for deblocking filter 1075 typedef struct _LFCUParam 1076 { 1077 Bool bInternalEdge; ///< indicates internal edge 1078 Bool bLeftEdge; ///< indicates left edge 1079 Bool bTopEdge; ///< indicates top edge 1080 } LFCUParam; 1081 //TU settings for entropy encoding 1082 struct TUEntropyCodingParameters 1083 { 1084 const UInt *scan; 1085 const UInt *scanCG; 1086 COEFF_SCAN_TYPE scanType; 1087 UInt widthInGroups; 1088 UInt heightInGroups; 1089 UInt firstSignificanceMapContext; 1090 }; 1091 struct TComPictureHash 1092 { 1093 std::vector<UChar> hash; 1094 Bool operator==(const TComPictureHash &other) const 1095 { 1096 if (other.hash.size() != hash.size()) 1097 { 1098 return false; 1099 } 1100 for(UInt i=0; i<UInt(hash.size()); i++) 1101 { 1102 if (other.hash[i] != hash[i]) 1103 { 1104 return false; 1105 } 1106 } 1107 return true; 1108 } 1109 Bool operator!=(const TComPictureHash &other) const 1110 { 1111 return !(*this == other); 1112 } 1113 }; 1114 struct TComSEITimeSet 1115 { 1116 TComSEITimeSet() : clockTimeStampFlag(false), 1117 numUnitFieldBasedFlag(false), 1118 countingType(0), 1119 fullTimeStampFlag(false), 1120 discontinuityFlag(false), 1121 cntDroppedFlag(false), 1122 numberOfFrames(0), 1123 secondsValue(0), 1124 minutesValue(0), 1125 hoursValue(0), 1126 secondsFlag(false), 1127 minutesFlag(false), 1128 hoursFlag(false), 1129 timeOffsetLength(0), 1130 timeOffsetValue(0) 1131 { } 1132 Bool clockTimeStampFlag; 1133 Bool numUnitFieldBasedFlag; 1134 Int countingType; 1135 Bool fullTimeStampFlag; 1136 Bool discontinuityFlag; 1137 Bool cntDroppedFlag; 1138 Int numberOfFrames; 1139 Int secondsValue; 1140 Int minutesValue; 1141 Int hoursValue; 1142 Bool secondsFlag; 1143 Bool minutesFlag; 1144 Bool hoursFlag; 1145 Int timeOffsetLength; 1146 Int timeOffsetValue; 1147 }; 1148 struct TComSEIMasteringDisplay 1149 { 1150 Bool colourVolumeSEIEnabled; 1151 UInt maxLuminance; 1152 UInt minLuminance; 1153 UShort primaries[3][2]; 1154 UShort whitePoint[2]; 1155 }; 989 1156 //! \} 990 991 #if H_MV 992 993 /// scalability types 994 enum ScalabilityType 995 { 996 #if H_3D 997 DEPTH_ID = 0, 998 #endif 999 VIEW_ORDER_INDEX = 1, 1000 DEPENDENCY_ID = 2, 1001 AUX_ID = 3, 1002 }; 1003 #endif 1004 #if H_3D 1005 // Renderer 1006 enum BlenMod 1007 { 1008 BLEND_NONE = -1, 1009 BLEND_AVRG = 0, 1010 BLEND_LEFT = 1, 1011 BLEND_RIGHT = 2, 1012 BLEND_GEN = 3 1013 }; 1014 1015 1016 enum 1017 { 1018 VIEWPOS_INVALID = -1, 1019 VIEWPOS_LEFT = 0, 1020 VIEWPOS_RIGHT = 1, 1021 VIEWPOS_MERGED = 2 1022 }; 1023 1024 #define Log2( n ) ( log((double)n) / log(2.0) ) // Ed.(GT): This is very very bad and should be fixed to used integer arithmetics ( see gCeilLog2 ) moreover it should not be defined in the tool macro section! 1025 #endif 1026 #endif 1157 #endif
Note: See TracChangeset for help on using the changeset viewer.