Changeset 773 in 3DVCSoftware for trunk/source/App
- Timestamp:
- 16 Jan 2014, 09:56:13 (11 years ago)
- Location:
- trunk/source/App
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/App/TAppDecoder/TAppDecCfg.cpp
r738 r773 85 85 ("OutputBitDepthC,d", m_outputBitDepthC, 0, "bit depth of YUV output chroma component (default: use 0 for native depth)") 86 86 #if H_MV 87 #if H_MV_6_HRD_O0217_1388 87 ("TargetOptLayerSetIdx,x", m_targetOptLayerSetIdx, -1, "Target output layer set index. (default: -1, determine automatically to be equal to highest layer set index") // Should actually equal to 0 as default. However, this would cause only the base layer to be decoded. 89 #else90 ("MaxLayerId,-ls", m_maxLayerId, MAX_NUM_LAYER_IDS-1, "Maximum LayerId to be decoded.")91 #endif92 88 #endif 93 89 ("MaxTemporalLayer,t", m_iMaxTemporalLayer, -1, "Maximum Temporal Layer to be decoded. -1 to decode all layers") … … 128 124 if ( !cfg_TargetDecLayerIdSetFile.empty() ) 129 125 { 130 #if H_MV _6_HRD_O0217_13126 #if H_MV 131 127 m_targetDecLayerIdSetFileEmpty = false; 132 128 #endif … … 174 170 } 175 171 #if H_MV 176 #if H_MV_6_HRD_O0217_13177 172 m_targetDecLayerIdSet.push_back( 0 ); // Only base layer at startup 178 #else179 else180 {181 for ( Int curLayerId = 0; curLayerId <= m_maxLayerId; curLayerId++ )182 {183 m_targetDecLayerIdSet.push_back( curLayerId );184 }185 }186 #endif187 173 #endif 188 174 -
trunk/source/App/TAppDecoder/TAppDecCfg.h
r738 r773 59 59 Char* m_pchBitstreamFile; ///< input bitstream file name 60 60 #if H_MV 61 #if H_MV_6_HRD_O0217_1362 61 Int m_targetOptLayerSetIdx; ///< target output layer set index 63 #endif64 62 Int m_maxLayerId; ///< maximum nuh_layer_id decoded 65 63 std::vector<Char*> m_pchReconFiles; ///< array of output reconstruction file name create from output reconstruction file name … … 77 75 78 76 std::vector<Int> m_targetDecLayerIdSet; ///< set of LayerIds to be included in the sub-bitstream extraction process. 79 #if H_MV _6_HRD_O0217_1377 #if H_MV 80 78 Bool m_targetDecLayerIdSetFileEmpty; ///< indication if target layers are given by file 81 79 #endif … … 88 86 TAppDecCfg() 89 87 : m_pchBitstreamFile(NULL) 90 #if H_MV91 #if !H_MV_6_HRD_O0217_1392 , m_maxLayerId(0)93 #endif94 #endif95 88 , m_pchReconFile(NULL) 96 89 , m_iSkipFrame(0) … … 99 92 , m_iMaxTemporalLayer(-1) 100 93 , m_decodedPictureHashSEIEnabled(0) 101 #if H_MV _6_HRD_O0217_1394 #if H_MV 102 95 , m_targetDecLayerIdSetFileEmpty(true) 103 96 #endif -
trunk/source/App/TAppDecoder/TAppDecTop.cpp
r738 r773 61 61 { 62 62 #if H_MV 63 #if H_MV_LAYER_WISE_STARTUP64 63 for (Int i = 0; i < MAX_NUM_LAYER_IDS; i++) 65 64 { … … 67 66 m_layerInitilizedFlags[i] = false; 68 67 } 69 #else70 for (Int i = 0; i < MAX_NUM_LAYER_IDS; i++) m_layerIdToDecIdx[i] = -1;71 #endif72 68 #endif 73 69 #if H_3D … … 192 188 Bool newSliceDiffPoc = false; 193 189 Bool newSliceDiffLayer = false; 194 #if H_MV_FIX_SKIP_PICTURES195 190 Bool sliceSkippedFlag = false; 196 #endif197 191 #if H_3D 198 192 Bool allLayersDecoded = false; … … 212 206 read(nalu, nalUnit); 213 207 #if H_MV 214 #if !H_MV_6_HRD_O0217_13215 Int decIdx = xGetDecoderIdx( nalu.m_layerId , true );216 #endif217 #if H_MV_6_LAYER_ID_32218 208 if( (m_iMaxTemporalLayer >= 0 && nalu.m_temporalId > m_iMaxTemporalLayer) || !isNaluWithinTargetDecLayerIdSet(&nalu) || nalu.m_layerId > MAX_NUM_LAYER_IDS-1 ) 219 #else220 if( (m_iMaxTemporalLayer >= 0 && nalu.m_temporalId > m_iMaxTemporalLayer) || !isNaluWithinTargetDecLayerIdSet(&nalu) )221 #endif222 209 { 223 210 bNewPicture = false; 224 #if H_MV_6_LAYER_ID_32225 211 if ( !bitstreamFile ) 226 212 { 227 213 decIdxLastPic = decIdxCurrPic; 228 214 } 229 #endif230 215 } 231 216 else 232 217 { 233 #if H_MV_6_HRD_O0217_13234 218 Int decIdx = xGetDecoderIdx( nalu.m_layerId , true ); 235 #endif236 219 newSliceDiffLayer = nalu.isSlice() && ( nalu.m_layerId != layerIdCurrPic ) && !firstSlice; 237 #if H_MV_FIX_SKIP_PICTURES238 220 newSliceDiffPoc = m_tDecTop[decIdx]->decode(nalu, m_iSkipFrame, m_pocLastDisplay[decIdx], newSliceDiffLayer, sliceSkippedFlag ); 239 #else240 newSliceDiffPoc = m_tDecTop[decIdx]->decode(nalu, m_iSkipFrame, m_pocLastDisplay[decIdx], newSliceDiffLayer );241 #endif242 221 // decode function only returns true when all of the following conditions are true 243 222 // - poc in particular layer changes … … 245 224 // - nalu.isSlice() == true 246 225 247 #if H_MV_6_HRD_O0217_13248 226 // Update TargetDecLayerIdList only when not specified by layer id file, specification by file might actually out of conformance. 249 227 if (nalu.m_nalUnitType == NAL_UNIT_VPS && m_targetDecLayerIdSetFileEmpty ) … … 258 236 m_targetDecLayerIdSet = vps->getTargetDecLayerIdList( m_targetOptLayerSetIdx ); 259 237 } 260 #endif261 #if H_MV_FIX_SKIP_PICTURES262 238 bNewPicture = ( newSliceDiffLayer || newSliceDiffPoc ) && !sliceSkippedFlag; 263 239 if ( nalu.isSlice() && firstSlice && !sliceSkippedFlag ) 264 #else265 bNewPicture = newSliceDiffLayer || newSliceDiffPoc;266 267 if ( nalu.isSlice() && firstSlice )268 #endif269 240 { 270 241 layerIdCurrPic = nalu.m_layerId; … … 881 852 Int decIdx = -1; 882 853 883 #if H_MV_6_LAYER_ID_32884 854 if ( layerId > MAX_NUM_LAYER_IDS-1 ) 885 855 { 886 856 return decIdx; 887 857 } 888 #endif889 858 890 859 if ( m_layerIdToDecIdx[ layerId ] != -1 ) … … 906 875 m_tDecTop[ decIdx ]->setDecodedPictureHashSEIEnabled(m_decodedPictureHashSEIEnabled); 907 876 m_tDecTop[ decIdx ]->setIvPicLists( &m_ivPicLists ); 908 #if H_MV_LAYER_WISE_STARTUP909 877 m_tDecTop[ decIdx ]->setLayerInitilizedFlags( m_layerInitilizedFlags ); 910 #endif911 878 912 879 #if H_3D -
trunk/source/App/TAppDecoder/TAppDecTop.h
r738 r773 67 67 Int m_numDecoders; ///< number of decoder instances 68 68 TComPicLists m_ivPicLists; ///< picture buffers of decoder instances 69 #if H_MV_LAYER_WISE_STARTUP70 69 Bool m_layerInitilizedFlags[ MAX_NUM_LAYER_IDS ]; ///< for layerwise startup 71 #endif72 70 73 71 #else -
trunk/source/App/TAppEncoder/TAppEncCfg.cpp
r738 r773 378 378 #if H_3D_DIM 379 379 ("DMM", m_useDMM, true, "Depth intra model modes") 380 #if !SEC_DMM3_RBC_F0147381 ("RBC", m_useRBC, true, "Region boundary chain mode")382 #endif383 380 ("SDC", m_useSDC, true, "Simplified depth coding") 384 381 ("DLT", m_useDLT, true, "Depth lookup table") … … 391 388 ("VpsNumLayerSets", m_vpsNumLayerSets , 1 , "Number of layer sets") 392 389 ("LayerIdsInSet_%d", m_layerIdsInSets , std::vector<Int>(1,0), MAX_VPS_OP_SETS_PLUS1 ,"LayerIds of Layer set") 393 #if H_MV_6_PS_0109_25394 390 ("DefaultOneTargetOutputLayerFlag" , m_defaultOneTargetOutputLayerIdc , 0, "Output highest layer of layer sets by default") 395 #else396 ("DefaultOneTargetOutputLayerFlag", m_defaultOneTargetOutputLayerFlag, false , "Output highest layer of layer sets by default")397 #endif398 391 ("OutputLayerSetIdx", m_outputLayerSetIdx , std::vector<Int>(0,0), "Indices of layer sets used as additional output layer sets") 399 392 ("LayerIdsInAddOutputLayerSet_%d", m_layerIdsInAddOutputLayerSet , std::vector<Int>(1,0), MAX_VPS_ADD_OUTPUT_LAYER_SETS, "LayerIds of additional output layers") … … 451 444 ("QuadtreeTUMaxDepthIntra", m_uiQuadtreeTUMaxDepthIntra, 1u, "Depth of TU tree for intra CUs") 452 445 ("QuadtreeTUMaxDepthInter", m_uiQuadtreeTUMaxDepthInter, 2u, "Depth of TU tree for inter CUs") 453 454 446 // Coding structure parameters 455 #if H_MV _LAYER_WISE_STARTUP447 #if H_MV 456 448 ("IntraPeriod,-ip", m_iIntraPeriod,std::vector<Int>(1,-1), "Intra period in frames, (-1: only first frame), per layer") 457 449 #else 458 450 ("IntraPeriod,-ip", m_iIntraPeriod, -1, "Intra period in frames, (-1: only first frame)") 459 451 #endif 460 452 ("DecodingRefreshType,-dr", m_iDecodingRefreshType, 0, "Intra refresh type (0:none 1:CRA 2:IDR)") … … 518 510 ("AdvMultiviewResPred", m_uiUseAdvResPred, (UInt)1, "Usage of Advanced Residual Prediction" ) 519 511 #endif 520 #if MTK_SPIVMP_F0110512 #if H_3D_SPIVMP 521 513 ("SubPULog2Size", m_iSubPULog2Size, (Int)3, "Sub-PU size index: 2^n") 522 514 #endif 523 515 524 516 #if H_3D_IC 525 #if SEC_ONLY_TEXTURE_IC_F0151526 517 ("IlluCompEnable", m_abUseIC, true, "Enable illumination compensation") 527 #else528 ("IlluCompEnable", m_abUseIC, std::vector<Bool>(2, true), "Enable illumination compensation")529 #endif530 518 #endif 531 519 #if H_3D_INTER_SDC 532 520 ("InterSDC", m_bDepthInterSDCFlag, true, "Enable depth inter SDC") 533 521 #endif 534 #if SEC_MPI_ENABLING_MERGE_F0150522 #if H_3D_IV_MERGE 535 523 ("MPI", m_bMPIFlag, true, "Enable MPI") 536 524 #endif … … 633 621 #if H_MV 634 622 635 #if H_MV_6_HRD_O0217_13636 623 // DBP Size 637 624 ("SubLayerFlagInfoPresentFlag", m_subLayerFlagInfoPresentFlag , false , "SubLayerFlagInfoPresentFlag") 638 #endif639 625 // VPS VUI 640 626 ("VpsVuiPresentFlag" , m_vpsVuiPresentFlag , false , "VpsVuiPresentFlag ") 641 #if H_MV_6_PS_O0223_29642 627 ("CrossLayerPicTypeAlignedFlag", m_crossLayerPicTypeAlignedFlag, false , "CrossLayerPicTypeAlignedFlag") // Could actually be derived by the encoder 643 628 ("CrossLayerIrapAlignedFlag" , m_crossLayerIrapAlignedFlag , false , "CrossLayerIrapAlignedFlag ") // Could actually be derived by the encoder 644 #endif645 629 ("BitRatePresentVpsFlag" , m_bitRatePresentVpsFlag , false , "BitRatePresentVpsFlag ") 646 630 ("PicRatePresentVpsFlag" , m_picRatePresentVpsFlag , false , "PicRatePresentVpsFlag ") … … 651 635 ("ConstantPicRateIdc" , m_constantPicRateIdc , std::vector< Int >(1,0) ,MAX_VPS_OP_SETS_PLUS1, "ConstantPicRateIdc per sub layer for the N-th layer set") 652 636 ("AvgPicRate" , m_avgPicRate , std::vector< Int >(1,0) ,MAX_VPS_OP_SETS_PLUS1, "AvgPicRate per sub layer for the N-th layer set") 653 #if H_MV_6_O0226_37654 637 ("TilesNotInUseFlag" , m_tilesNotInUseFlag , true , "TilesNotInUseFlag ") 655 638 ("TilesInUseFlag" , m_tilesInUseFlag , std::vector< Bool >(1,false) , "TilesInUseFlag ") … … 657 640 ("WppNotInUseFlag" , m_wppNotInUseFlag , true , "WppNotInUseFlag ") 658 641 ("WppInUseFlag" , m_wppInUseFlag , std::vector< Bool >(1,0) , "WppInUseFlag ") 659 #endif660 642 ("TileBoundariesAlignedFlag" , m_tileBoundariesAlignedFlag , std::vector< Bool >(1,0) ,MAX_NUM_LAYERS , "TileBoundariesAlignedFlag per direct reference for the N-th layer") 661 643 ("IlpRestrictedRefLayersFlag" , m_ilpRestrictedRefLayersFlag , false , "IlpRestrictedRefLayersFlag") … … 787 769 #endif 788 770 #if H_3D_IV_MERGE 789 #if QC_DEPTH_IV_MRG_F0125790 771 ("IvMvPred", m_ivMvPredFlag , std::vector<Bool>(2, true) , "inter view motion prediction " ) 791 #else792 ("IvMvPred", m_ivMvPredFlag, true , "inter view motion prediction " )793 #endif794 772 #endif 795 773 #if H_3D_NBDV_REF … … 1074 1052 xResizeVector( m_bLoopFilterDisable ); 1075 1053 xResizeVector( m_bUseSAO ); 1076 #if H_MV_LAYER_WISE_STARTUP1077 1054 xResizeVector( m_iIntraPeriod ); 1078 #endif1079 #if H_MV_6_O0226_371080 1055 xResizeVector( m_tilesInUseFlag ); 1081 1056 xResizeVector( m_loopFilterNotAcrossTilesFlag ); 1082 1057 xResizeVector( m_wppInUseFlag ); 1083 #endif1084 1058 #else 1085 1059 m_aidQP = new Int[ m_framesToBeEncoded + m_iGOPSize + 1 ]; … … 1426 1400 for ( Int i = 0; i < m_layerIdsInSets[lsIdx].size(); i++ ) 1427 1401 { 1428 #if H_MV_6_LAYER_ID_321429 1402 xConfirmPara( m_layerIdsInSets[lsIdx][i] < 0 || m_layerIdsInSets[lsIdx].size() >= MAX_NUM_LAYER_IDS, "LayerIdsInSet must be greater than and less than MAX_NUM_LAYER_IDS" ); 1430 #else1431 xConfirmPara( m_layerIdsInSets[lsIdx][i] < 0 || m_layerIdsInSets[lsIdx].size() >= MAX_NUM_LAYER_IDS, "LayerIdsInSet must be greater than and less than 64" );1432 #endif1433 1403 } 1434 1404 } … … 1456 1426 } 1457 1427 1458 #if H_MV_6_PS_0109_251459 1428 xConfirmPara( m_defaultOneTargetOutputLayerIdc < 0 || m_defaultOneTargetOutputLayerIdc > 1, "Default one target output layer idc must be equal to 0 or equal to 1" ); 1460 #endif1461 1429 xConfirmPara( m_profileLevelTierIdx.size() < m_vpsNumLayerSets + m_outputLayerSetIdx.size(), "The number of Profile Level Tier indices must be equal to the number of layer set plus the number of output layer set indices" ); 1462 1430 … … 1475 1443 xConfirmPara( m_iGOPSize < 1 , "GOP Size must be greater or equal to 1" ); 1476 1444 xConfirmPara( m_iGOPSize > 1 && m_iGOPSize % 2, "GOP Size must be a multiple of 2, if GOP Size is greater than 1" ); 1477 #if H_MV _LAYER_WISE_STARTUP1445 #if H_MV 1478 1446 for( Int layer = 0; layer < m_numberOfLayers; layer++ ) 1479 1447 { … … 1508 1476 if (m_iDecodingRefreshType == 2) 1509 1477 { 1510 #if H_MV _LAYER_WISE_STARTUP1478 #if H_MV 1511 1479 for (Int i = 0; i < m_numberOfLayers; i++ ) 1512 1480 { … … 1544 1512 xConfirmPara( ( 0 != m_uiUseAdvResPred ) && ( 1 != m_uiUseAdvResPred ), "UseAdvResPred must be 0 or 1." ); 1545 1513 #endif 1546 #if MTK_SPIVMP_F01101514 #if H_3D_SPIVMP 1547 1515 xConfirmPara( m_iSubPULog2Size < 2, "SubPULog2Size must be 2 or greater."); 1548 1516 xConfirmPara( m_iSubPULog2Size > 6, "SubPULog2Size must be 6 or smaller."); … … 1774 1742 /* if this is an intra-only sequence, ie IntraPeriod=1, don't verify the GOP structure 1775 1743 * This permits the ability to omit a GOP structure specification */ 1776 #if H_MV _LAYER_WISE_STARTUP1744 #if H_MV 1777 1745 if (m_iIntraPeriod[layer] == 1 && m_GOPList[0].m_POC == -1) { 1778 1746 #else … … 1803 1771 } 1804 1772 Int numOK=0; 1805 #if H_MV _LAYER_WISE_STARTUP1773 #if H_MV 1806 1774 xConfirmPara( m_iIntraPeriod[layer] >=0&&(m_iIntraPeriod[layer]%m_iGOPSize!=0), "Intra period must be a multiple of GOPSize, or -1" ); 1807 1775 #else 1808 1776 xConfirmPara( m_iIntraPeriod >=0&&(m_iIntraPeriod%m_iGOPSize!=0), "Intra period must be a multiple of GOPSize, or -1" ); 1809 1777 #endif 1810 1778 … … 1818 1786 1819 1787 #if H_MV 1820 #if H_MV_LAYER_WISE_STARTUP1821 1788 if ( (m_iIntraPeriod[layer] != 1) && !m_loopFilterOffsetInPPS && m_DeblockingFilterControlPresent && (!m_bLoopFilterDisable[layer]) ) 1822 #else1823 if ( (m_iIntraPeriod != 1) && !m_loopFilterOffsetInPPS && m_DeblockingFilterControlPresent && (!m_bLoopFilterDisable[layer]) )1824 #endif1825 1789 #else 1826 1790 if ( (m_iIntraPeriod != 1) && !m_loopFilterOffsetInPPS && m_DeblockingFilterControlPresent && (!m_bLoopFilterDisable) ) … … 2347 2311 printf("Min PCM size : %d\n", 1 << m_uiPCMLog2MinSize); 2348 2312 printf("Motion search range : %d\n", m_iSearchRange ); 2349 #if H_MV _LAYER_WISE_STARTUP2313 #if H_MV 2350 2314 xPrintParaVector( "Intra period", m_iIntraPeriod ); 2351 2315 #else … … 2505 2469 #endif 2506 2470 #if H_3D_IV_MERGE 2507 #if QC_DEPTH_IV_MRG_F01252508 2471 printf("IvMvPred:%d %d", m_ivMvPredFlag[0] ? 1 : 0, m_ivMvPredFlag[1] ? 1 : 0); 2509 #else 2510 printf("IvMvPred:%d ", m_ivMvPredFlag ); 2511 #endif 2512 #if MTK_SPIVMP_F0110 2472 #if H_3D_SPIVMP 2513 2473 printf(" SubPULog2Size:%d " , m_iSubPULog2Size ); 2514 2474 #endif … … 2518 2478 #endif 2519 2479 #if H_3D_IC 2520 #if SEC_ONLY_TEXTURE_IC_F01512521 2480 printf( "IlluCompEnable: %d ", m_abUseIC); 2522 #else2523 printf( "IlluCompEnable: %d %d ", m_abUseIC[0] ? 1 : 0, m_abUseIC[1] ? 1 : 0 );2524 #endif2525 2481 #endif 2526 2482 #if H_3D_NBDV_REF … … 2535 2491 #if H_3D_DIM 2536 2492 printf("DMM:%d ", m_useDMM ); 2537 #if !SEC_DMM3_RBC_F01472538 printf("RBC:%d ", m_useRBC );2539 #endif2540 2493 printf("SDC:%d ", m_useSDC ); 2541 2494 printf("DLT:%d ", m_useDLT ); … … 2544 2497 printf( "interSDC: %d ", m_bDepthInterSDCFlag ? 1 : 0 ); 2545 2498 #endif 2546 #if SEC_MPI_ENABLING_MERGE_F01502499 #if H_3D_IV_MERGE 2547 2500 printf( "MPI: %d ", m_bMPIFlag ? 1 : 0 ); 2548 2501 #endif -
trunk/source/App/TAppEncoder/TAppEncCfg.h
r738 r773 89 89 Int m_vpsNumLayerSets; ///< Number of layer sets 90 90 std::vector< std::vector<Int> > m_layerIdsInSets; ///< LayerIds in vps of layer set 91 #if H_MV_6_PS_0109_2592 91 Int m_defaultOneTargetOutputLayerIdc; ///< Output highest layer of layer sets by default when equal to 1 93 #else94 Bool m_defaultOneTargetOutputLayerFlag; ///< Output highest layer of layer sets by default95 #endif96 92 std::vector<Int> m_outputLayerSetIdx; ///< Indices of layer sets used as additional output layer sets 97 93 std::vector< std::vector<Int> > m_layerIdsInAddOutputLayerSet; ///< LayerIds in vps of additional output layers … … 102 98 std::vector< std::vector<Int> > m_dependencyTypes; ///< Dependency types of direct reference layers 103 99 104 #if H_MV_6_HRD_O0217_13105 100 // DBP Size 106 101 Bool m_subLayerFlagInfoPresentFlag; 107 #endif108 102 109 103 // VPS VUI 110 104 Bool m_vpsVuiPresentFlag; 111 #if H_MV_6_PS_O0223_29112 105 Bool m_crossLayerPicTypeAlignedFlag; 113 106 Bool m_crossLayerIrapAlignedFlag; 114 #endif115 107 Bool m_bitRatePresentVpsFlag; 116 108 Bool m_picRatePresentVpsFlag; … … 121 113 std::vector< std::vector<Int > > m_constantPicRateIdc; 122 114 std::vector< std::vector<Int > > m_avgPicRate; 123 #if H_MV_6_O0226_37124 115 Bool m_tilesNotInUseFlag; 125 116 std::vector< Bool > m_tilesInUseFlag; … … 128 119 std::vector< Bool > m_wppInUseFlag; 129 120 130 #endif131 121 std::vector< std::vector<Bool > > m_tileBoundariesAlignedFlag; 132 122 Bool m_ilpRestrictedRefLayersFlag; … … 136 126 137 127 #if H_3D_IV_MERGE 138 #if QC_DEPTH_IV_MRG_F0125139 128 vector<Bool> m_ivMvPredFlag; ///< Interview motion vector prediction 140 #else 141 Bool m_ivMvPredFlag; ///< Interview motion vector prediction 142 #endif 143 #if MTK_SPIVMP_F0110 129 #if H_3D_SPIVMP 144 130 Int m_iSubPULog2Size; 145 131 #endif … … 150 136 #endif 151 137 #if H_3D_IC 152 #if SEC_ONLY_TEXTURE_IC_F0151153 138 Bool m_abUseIC; 154 #else155 vector<Bool> m_abUseIC; ///< flag for using illumination compensation for inter-view prediction156 #endif157 139 #endif 158 140 #if H_3D_NBDV_REF … … 196 178 197 179 // coding structure 198 #if H_MV _LAYER_WISE_STARTUP180 #if H_MV 199 181 std::vector<Int> m_iIntraPeriod; ///< period of I-slice (random access period) 200 182 #else … … 497 479 #if H_3D_DIM 498 480 Bool m_useDMM; ///< flag for using DMM 499 #if !SEC_DMM3_RBC_F0147500 Bool m_useRBC; ///< flag for using RBC501 #endif502 481 Bool m_useSDC; ///< flag for using SDC 503 482 Bool m_useDLT; ///< flag for using DLT … … 510 489 Bool m_bDepthInterSDCFlag; ///< flag for inter SDC of depth map coding 511 490 #endif 512 #if SEC_MPI_ENABLING_MERGE_F0150491 #if H_3D_IV_MERGE 513 492 Bool m_bMPIFlag; ///< flag for MPI of depth map coding 514 493 #endif -
trunk/source/App/TAppEncoder/TAppEncTop.cpp
r758 r773 76 76 #endif 77 77 78 #if CAM_HLS_F0136_F0045_F008278 #if H_3D 79 79 vps.createCamPars(m_iNumberOfViews); 80 #endif81 82 #if DLT_DIFF_CODING_IN_PPS83 80 TComDLT& dlt = m_dlt; 84 81 #endif … … 134 131 xSetVPSExtension2 ( vps ); 135 132 m_ivPicLists.setVPS ( &vps ); 136 #if DLT_DIFF_CODING_IN_PPS137 133 xDeriveDltArray ( vps, dlt ); 138 #endif139 134 #endif 140 135 … … 160 155 //====== Camera Parameters ========= 161 156 m_cTEncTop.setCameraParameters ( &m_cCameraData ); 162 #if QC_DEPTH_IV_MRG_F0125163 157 m_cTEncTop.setCamParPrecision ( m_cCameraData.getCamParsCodedPrecision () ); 164 158 m_cTEncTop.setCamParInSliceHeader ( m_cCameraData.getVaryingCameraParameters() ); 165 159 m_cTEncTop.setCodedScale ( m_cCameraData.getCodedScale () ); 166 160 m_cTEncTop.setCodedOffset ( m_cCameraData.getCodedOffset () ); 167 #else168 m_cTEncTop.setCamParPrecision ( isDepth ? false : m_cCameraData.getCamParsCodedPrecision () );169 m_cTEncTop.setCamParInSliceHeader ( isDepth ? 0 : m_cCameraData.getVaryingCameraParameters() );170 m_cTEncTop.setCodedScale ( isDepth ? 0 : m_cCameraData.getCodedScale () );171 m_cTEncTop.setCodedOffset ( isDepth ? 0 : m_cCameraData.getCodedOffset () );172 #endif173 161 #if H_3D_VSO 174 162 //====== VSO ========= … … 194 182 m_cTEncTop.setARPStepNum ( ( isDepth || 0==layerIdInVps ) ? 1 : H_3D_ARP_WFNR ); 195 183 #endif 196 #if MTK_SPIVMP_F0110184 #if H_3D_SPIVMP 197 185 m_cTEncTop.setSubPULog2Size (( isDepth || 0==layerIdInVps ) ? 0 : m_iSubPULog2Size ); 198 186 #endif 199 187 #if H_3D_IC 200 #if SEC_ONLY_TEXTURE_IC_F0151201 188 m_cTEncTop.setUseIC ( vps.getViewIndex( layerId ) == 0 || isDepth ? false : m_abUseIC ); 202 #else203 m_cTEncTop.setUseIC ( vps.getViewIndex( layerId ) == 0 ? false : m_abUseIC[isDepth ? 1 : 0] );204 #endif205 189 #endif 206 190 //========== Depth intra modes ========== 207 191 #if H_3D_DIM 208 192 m_cTEncTop.setUseDMM ( isDepth ? m_useDMM : false ); 209 #if !SEC_DMM3_RBC_F0147210 m_cTEncTop.setUseRBC ( isDepth ? m_useRBC : false );211 #endif212 193 m_cTEncTop.setUseSDC ( isDepth ? m_useSDC : false ); 213 194 m_cTEncTop.setUseDLT ( isDepth ? m_useDLT : false ); … … 221 202 m_cTEncTop.setInterSDCEnable ( isDepth ? m_bDepthInterSDCFlag : false ); 222 203 #endif 223 #if SEC_MPI_ENABLING_MERGE_F0150204 #if H_3D_IV_MERGE 224 205 m_cTEncTop.setUseMPI ( isDepth ? m_bMPIFlag : false ); 225 206 #endif … … 227 208 228 209 m_cTEncTop.setIvPicLists ( &m_ivPicLists ); 229 // H_MV210 #endif // H_MV 230 211 m_cTEncTop.setVPS(&vps); 231 212 232 #if DLT_DIFF_CODING_IN_PPS213 #if H_3D 233 214 m_cTEncTop.setDLT(&dlt); 234 215 #endif … … 249 230 250 231 //====== Coding Structure ======== 251 #if H_MV _LAYER_WISE_STARTUP232 #if H_MV 252 233 m_cTEncTop.setIntraPeriod ( m_iIntraPeriod[ layerIdInVps ] ); 253 234 #else … … 796 777 Void TAppEncTop::xInitLib(Bool isFieldCoding) 797 778 { 798 #if CAM_HLS_F0136_F0045_F0082779 #if H_3D 799 780 for ( Int viewIndex = 0; viewIndex < m_vps.getNumViews(); viewIndex++ ) 800 781 { … … 1270 1251 1271 1252 #if H_3D_DIM_DLT 1272 #if DLT_DIFF_CODING_IN_PPS1273 1253 Void TAppEncTop::xAnalyzeInputBaseDepth(UInt layer, UInt uiNumFrames, TComVPS* vps, TComDLT* dlt) 1274 #else1275 Void TAppEncTop::xAnalyzeInputBaseDepth(UInt layer, UInt uiNumFrames, TComVPS* vps)1276 #endif1277 1254 { 1278 1255 TComPicYuv* pcDepthPicYuvOrg = new TComPicYuv; … … 1334 1311 if( uiNumFrames == 0 || numBitsForValue(iNumDepthValues) == g_bitDepthY ) 1335 1312 { 1336 #if DLT_DIFF_CODING_IN_PPS1337 1313 dlt->setUseDLTFlag(layer, false); 1338 #else1339 // don't use DLT1340 vps->setUseDLTFlag(layer, false);1341 #endif1342 1314 } 1343 1315 1344 1316 // assign LUT 1345 #if DLT_DIFF_CODING_IN_PPS1346 1317 if( dlt->getUseDLTFlag(layer) ) 1318 { 1347 1319 dlt->setDepthLUTs(layer, aiIdx2DepthValue, iNumDepthValues); 1348 #else 1349 if( vps->getUseDLTFlag(layer) ) 1350 vps->setDepthLUTs(layer, aiIdx2DepthValue, iNumDepthValues); 1351 #endif 1320 } 1352 1321 1353 1322 // free temporary memory … … 1372 1341 Int maxViewId = xGetMax( m_viewId ); 1373 1342 1374 #if H_MV_6_PS_O0109_221375 1343 Int viewIdLen = gCeilLog2( maxViewId + 1 ); 1376 1344 const Int maxViewIdLen = ( 1 << 4 ) - 1; 1377 1345 assert( viewIdLen <= maxViewIdLen ); 1378 1346 vps.setViewIdLen( viewIdLen ); 1379 #else1380 Int viewIdLenMinus1 = std::max( gCeilLog2( maxViewId + 1 ) - 1, 0 ) ;1381 const Int maxViewIdLenMinus1 = ( 1 << 4 ) - 1;1382 assert( viewIdLenMinus1 <= maxViewIdLenMinus1 );1383 vps.setViewIdLenMinus1( viewIdLenMinus1 );1384 #endif1385 1347 for (Int i = 0; i < m_iNumberOfViews; i++) 1386 1348 { … … 1403 1365 } 1404 1366 1405 #if H_MV_6_PS_O0096_211406 1367 Int defaultDirectDependencyType = -1; 1407 1368 Bool defaultDirectDependencyFlag = true; 1408 #endif1409 1369 for( Int depLayer = 1; depLayer < m_numberOfLayers; depLayer++ ) 1410 1370 { … … 1415 1375 Int refLayer = m_directRefLayers[depLayer][i]; 1416 1376 vps.setDirectDependencyFlag( depLayer, refLayer, true); 1417 #if H_MV_6_PS_O0096_211418 1377 Int curDirectDependencyType = m_dependencyTypes[depLayer][i]; 1419 1378 … … 1428 1387 1429 1388 vps.setDirectDependencyType( depLayer, refLayer, curDirectDependencyType); 1430 #else 1431 vps.setDirectDependencyType( depLayer, refLayer,m_dependencyTypes[depLayer][i]); 1432 #endif 1433 } 1434 } 1435 1436 #if H_MV_6_PS_O0096_21 1389 } 1390 } 1391 1437 1392 vps.setDefaultDirectDependencyFlag( defaultDirectDependencyFlag ); 1438 1393 vps.setDefaultDirectDependencyType( defaultDirectDependencyFlag ? defaultDirectDependencyType : -1 ); 1439 #endif 1440 1441 #if H_MV_6_ILDSD_O0120_26 1394 1442 1395 // Max sub layers, + presence flag 1443 1396 Bool subLayersMaxMinus1PresentFlag = false; … … 1464 1417 1465 1418 vps.setVpsSubLayersMaxMinus1PresentFlag( subLayersMaxMinus1PresentFlag ); 1466 #endif1467 1419 1468 1420 … … 1471 1423 for ( Int refLayerIdInVps = 0; refLayerIdInVps < m_numberOfLayers; refLayerIdInVps++) 1472 1424 { 1473 #if !H_MV_6_ILDDS_O0225_301474 Int maxTid = -1;1475 #endif1476 1425 for ( Int curLayerIdInVps = 1; curLayerIdInVps < m_numberOfLayers; curLayerIdInVps++) 1477 1426 { 1478 #if H_MV_6_ILDDS_O0225_301479 1427 Int maxTid = -1; 1480 #endif1481 1428 for( Int i = 0; i < getGOPSize(); i++ ) 1482 1429 { … … 1492 1439 } 1493 1440 } 1494 #if H_MV_6_ILDDS_O0225_301495 1441 vps.setMaxTidIlRefPicsPlus1( refLayerIdInVps, curLayerIdInVps, maxTid + 1 ); 1496 1442 maxTidRefPresentFlag = maxTidRefPresentFlag || ( maxTid != 6 ); 1497 1443 } 1498 #else1499 }1500 vps.setMaxTidIlRefPicPlus1( refLayerIdInVps, maxTid + 1 );1501 maxTidRefPresentFlag = maxTidRefPresentFlag || ( maxTid != 6 );1502 #endif1503 1444 } 1504 1445 … … 1518 1459 1519 1460 // Poc Lsb Not Present Flag 1520 #if H_MV_6_MISC_O0062_311521 1461 for ( Int layerIdInVps = 1; layerIdInVps < m_numberOfLayers; layerIdInVps++) 1522 1462 { … … 1526 1466 } 1527 1467 } 1528 #endif1529 1468 1530 1469 // All Ref layers active flag … … 1535 1474 { 1536 1475 GOPEntry ge = m_GOPListMvc[layerIdInVps][ ( i < getGOPSize() ? i : MAX_GOP ) ]; 1537 #if H_MV_6_ILDDS_ILREFPICS_27_341538 1476 Int tId = ge.m_temporalId; // Should be equal for all layers. 1539 1477 … … 1571 1509 } 1572 1510 assert ( maxTidIlRefAndSubLayerMaxVaildFlag ); // Something wrong with MaxTidIlRefPicsPlus1 or SubLayersVpsMaxMinus1 1573 #else1574 allRefLayersActiveFlag = allRefLayersActiveFlag && (ge.m_numActiveRefLayerPics == m_directRefLayers[ layerIdInVps ].size() );1575 #endif1576 1511 } 1577 1512 } … … 1579 1514 vps.setAllRefLayersActiveFlag( allRefLayersActiveFlag ); 1580 1515 1581 #if !H_MV_6_PS_O0223_291582 // Currently cross layer irap aligned is always true.1583 vps.setCrossLayerIrapAlignedFlag( true );1584 #endif1585 1516 vps.setRefLayers(); 1586 1517 }; … … 1652 1583 repFormat->setPicHeightVpsInLumaSamples ( m_iSourceHeight ); 1653 1584 repFormat->setPicWidthVpsInLumaSamples ( m_iSourceWidth ); 1654 #if H_MV_6_PS_REP_FORM_18_19_201655 1585 repFormat->setChromaAndBitDepthVpsPresentFlag( true ); 1656 #endif1657 1586 // ToDo not supported yet. 1658 1587 //repFormat->setSeparateColourPlaneVpsFlag( ); … … 1667 1596 } 1668 1597 1669 #if H_MV_6_HRD_O0217_131670 1598 Void TAppEncTop::xSetDpbSize ( TComVPS& vps ) 1671 1599 { … … 1723 1651 } 1724 1652 } 1725 #endif1726 1653 1727 1654 … … 1743 1670 } 1744 1671 } 1745 #if H_MV_6_HRD_O0217_131746 1672 vps.deriveLayerSetLayerIdList(); 1747 #endif1748 1673 1749 1674 Int numAddOuputLayerSets = (Int) m_outputLayerSetIdx.size(); 1750 1675 // Additional output layer sets + profileLevelTierIdx 1751 #if H_MV_6_PS_0109_251752 1676 vps.setDefaultOneTargetOutputLayerIdc ( m_defaultOneTargetOutputLayerIdc ); 1753 #else1754 vps.setDefaultOneTargetOutputLayerFlag ( m_defaultOneTargetOutputLayerFlag );1755 #endif1756 1677 vps.setMoreOutputLayerSetsThanDefaultFlag( numAddOuputLayerSets != 0 ); 1757 1678 vps.setNumAddOutputLayerSetsMinus1 ( numAddOuputLayerSets - 1 ); … … 1759 1680 1760 1681 1761 #if H_MV_6_HRD_O0217_131762 1682 for (Int lsIdx = 0; lsIdx < m_vpsNumLayerSets; lsIdx++) 1763 1683 { … … 1774 1694 } 1775 1695 } 1776 #else1777 for (Int lsIdx = 1; lsIdx < m_vpsNumLayerSets; lsIdx++)1778 {1779 vps.setProfileLevelTierIdx( lsIdx, m_profileLevelTierIdx[ lsIdx ] );1780 }1781 #endif1782 1696 1783 1697 for (Int addOutLs = 0; addOutLs < numAddOuputLayerSets; addOutLs++ ) … … 1802 1716 } 1803 1717 } 1804 #if H_MV_6_HRD_O0217_131805 1718 vps.deriveTargetLayerIdLists(); 1806 #endif1807 1719 } 1808 1720 … … 1821 1733 // however preliminary setting it from input parameters 1822 1734 1823 #if H_MV_6_PS_O0223_291824 1735 pcVPSVUI->setCrossLayerPicTypeAlignedFlag( m_crossLayerPicTypeAlignedFlag ); 1825 1736 pcVPSVUI->setCrossLayerIrapAlignedFlag ( m_crossLayerIrapAlignedFlag ); 1826 #endif1827 1737 1828 1738 pcVPSVUI->setBitRatePresentVpsFlag( m_bitRatePresentVpsFlag ); … … 1863 1773 } 1864 1774 1865 #if H_MV_6_O0226_371866 1775 pcVPSVUI->setTilesNotInUseFlag( m_tilesNotInUseFlag ); 1867 1776 … … 1899 1808 } 1900 1809 } 1901 #else1902 for( Int i = 1; i <= vps.getMaxLayersMinus1(); i++ )1903 {1904 for( Int j = 0; j < vps.getNumDirectRefLayers( vps.getLayerIdInNuh( i ) ); j++ )1905 {1906 if ( m_tileBoundariesAlignedFlag[i].size() > j )1907 {1908 pcVPSVUI->setTileBoundariesAlignedFlag( i, j, m_tileBoundariesAlignedFlag[i][j]);1909 }1910 }1911 }1912 #endif1913 1810 1914 1811 pcVPSVUI->setIlpRestrictedRefLayersFlag( m_ilpRestrictedRefLayersFlag ); … … 1941 1838 } 1942 1839 } 1943 #if H_MV_6_PS_O0118_331944 1840 pcVPSVUI->setVideoSignalInfoIdxPresentFlag( true ); 1945 1841 pcVPSVUI->setVpsNumVideoSignalInfoMinus1 ( 0 ); … … 1961 1857 pcVPSVUI->setVpsVideoSignalInfoIdx( i, 0 ); 1962 1858 } 1963 #endif1964 #if H_MV_6_HRD_O0164_151965 1859 pcVPSVUI->setVpsVuiBspHrdPresentFlag( false ); // TBD 1966 #endif1967 1860 } 1968 1861 } … … 1971 1864 Void TAppEncTop::xSetVPSExtension2( TComVPS& vps ) 1972 1865 { 1973 1974 1866 for ( Int layer = 0; layer <= vps.getMaxLayersMinus1(); layer++ ) 1975 1867 { … … 1981 1873 vps.setARPStepNum ( layer, ( isDepth || isLayerZero ) ? 1 : H_3D_ARP_WFNR ); 1982 1874 #endif 1983 #if MTK_SPIVMP_F01101875 #if H_3D_SPIVMP 1984 1876 if( isDepth ) 1985 1877 { 1986 #if MTK_F0110_FIX1987 1878 vps.setSubPULog2Size ( layer, (layer != 1) ? 6: 0 ); 1988 #else1989 vps.setSubPULog2Size ( layer, (layer != 1) ? m_iSubPULog2Size: 0 );1990 #endif1991 1879 } 1992 1880 else … … 1997 1885 1998 1886 #if H_3D_DIM 1999 #if SEC_DMM3_RBC_F01472000 1887 vps.setVpsDepthModesFlag( layer, isDepth && !isLayerZero && (m_useDMM || m_useSDC || m_useDLT ) ); 2001 #else2002 vps.setVpsDepthModesFlag( layer, isDepth && !isLayerZero && (m_useDMM || m_useRBC || m_useSDC || m_useDLT ) );2003 #endif2004 #if H_3D_DIM_DLT2005 #if !DLT_DIFF_CODING_IN_PPS2006 vps.setUseDLTFlag( layer , isDepth && m_useDLT );2007 if( vps.getUseDLTFlag( layer ) )2008 {2009 #if H_MV_LAYER_WISE_STARTUP2010 xAnalyzeInputBaseDepth(layer, max( m_iIntraPeriod[layer], 24), &vps);2011 #else2012 xAnalyzeInputBaseDepth(layer, max(m_iIntraPeriod, 24), &vps);2013 #endif2014 }2015 #endif2016 #endif2017 1888 #endif 2018 1889 2019 1890 #if H_3D_IV_MERGE 2020 #if QC_DEPTH_IV_MRG_F01252021 1891 if( isDepth ) 2022 1892 { … … 2027 1897 vps.setIvMvPredFlag ( layer, !isLayerZero && m_ivMvPredFlag[0] ); 2028 1898 } 2029 #else2030 vps.setIvMvPredFlag ( layer, !isLayerZero && !isDepth && m_ivMvPredFlag );2031 #endif2032 1899 #endif 2033 1900 #if H_3D_NBDV_REF … … 2040 1907 vps.setInterSDCFlag( layer, !isLayerZero && isDepth && m_bDepthInterSDCFlag ); 2041 1908 #endif 2042 #if SEC_MPI_ENABLING_MERGE_F01501909 #if H_3D_IV_MERGE 2043 1910 vps.setMPIFlag( layer, !isLayerZero && isDepth && m_bMPIFlag ); 2044 1911 #endif … … 2048 1915 #endif 2049 1916 } 2050 #endif 2051 2052 #if DLT_DIFF_CODING_IN_PPS 1917 2053 1918 Void TAppEncTop::xDeriveDltArray( TComVPS& vps, TComDLT& dlt ) 2054 1919 { … … 2080 1945 } 2081 1946 #endif 2082 #endif 1947 2083 1948 //! \} -
trunk/source/App/TAppEncoder/TAppEncTop.h
r758 r773 86 86 #endif 87 87 88 #if DLT_DIFF_CODING_IN_PPS88 #if H_3D 89 89 TComDLT m_dlt; ///< dlt 90 90 #endif … … 129 129 Void xSetProfileTierLevel ( TComVPS& vps ); 130 130 Void xSetRepFormat ( TComVPS& vps ); 131 #if H_MV_6_HRD_O0217_13132 131 Void xSetDpbSize ( TComVPS& vps ); 133 #endif134 132 Void xSetVPSVUI ( TComVPS& vps ); 135 133 GOPEntry* xGetGopEntry( Int layerIdInVps, Int poc ); … … 138 136 #if H_3D 139 137 Void xSetVPSExtension2( TComVPS& vps ); 140 #endif141 #if DLT_DIFF_CODING_IN_PPS142 138 Void xDeriveDltArray( TComVPS& vps, TComDLT& dlt ); 143 139 #endif 144 140 #if H_3D_DIM_DLT 145 #if DLT_DIFF_CODING_IN_PPS146 141 Void xAnalyzeInputBaseDepth(UInt layer, UInt uiNumFrames, TComVPS* vps, TComDLT* dlt); 147 #else148 Void xAnalyzeInputBaseDepth(UInt layer, UInt uiNumFrames, TComVPS* vps);149 #endif150 142 #endif 151 143 public:
Note: See TracChangeset for help on using the changeset viewer.