Changeset 446 in 3DVCSoftware for branches/HTM-DEV-0.2-dev/source/App/TAppEncoder/TAppEncTop.cpp
- Timestamp:
- 26 May 2013, 16:22:23 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-DEV-0.2-dev/source/App/TAppEncoder/TAppEncTop.cpp
r438 r446 70 70 Void TAppEncTop::xInitLibCfg() 71 71 { 72 #if H_MV 73 TComVPS& vps = m_vps; 74 #else 72 75 TComVPS vps; 76 #endif 73 77 74 78 #if H_MV … … 111 115 } 112 116 #endif 113 114 117 #if H_MV 115 118 xSetLayerIds ( vps ); 116 119 xSetDimensionIdAndLength ( vps ); 117 120 xSetDirectDependencyFlags( vps ); 121 #if H_3D 122 vps.initViewIndex(); 123 m_ivPicLists.setVPS ( &vps ); 124 #endif 118 125 119 126 for(Int layer = 0; layer < m_numberOfLayers; layer++) … … 128 135 TEncTop& m_cTEncTop = *m_acTEncTopList[ layer ]; // It is not a member, but this name helps avoiding code duplication !!! 129 136 130 m_cTEncTop.setLayerIdInVps ( layer );131 m_cTEncTop.setLayerId ( vps.getLayerIdInNuh( layer ) );132 m_cTEncTop.setViewId ( vps.getViewId ( layer ) );137 m_cTEncTop.setLayerIdInVps ( layer ); 138 m_cTEncTop.setLayerId ( vps.getLayerIdInNuh( layer ) ); 139 m_cTEncTop.setViewId ( vps.getViewId ( layer ) ); 133 140 #if H_3D 134 m_cTEncTop.setIsDepth ( vps.getDepthId ( layer ) != 0 ); 135 #endif 136 m_cTEncTop.setIvPicLists ( &m_ivPicLists ); 137 #endif 138 141 Bool isDepth = ( vps.getDepthId ( layer ) != 0 ) ; 142 m_cTEncTop.setViewIndex ( vps.getViewIndex ( layer ) ); 143 m_cTEncTop.setIsDepth ( isDepth ); 144 //====== Camera Parameters ========= 145 m_cTEncTop.setCameraParameters ( &m_cCameraData ); 146 m_cTEncTop.setCamParPrecision ( isDepth ? false : m_cCameraData.getCamParsCodedPrecision () ); 147 m_cTEncTop.setCamParInSliceHeader ( isDepth ? 0 : m_cCameraData.getVaryingCameraParameters() ); 148 m_cTEncTop.setCodedScale ( isDepth ? 0 : m_cCameraData.getCodedScale () ); 149 m_cTEncTop.setCodedOffset ( isDepth ? 0 : m_cCameraData.getCodedOffset () ); 150 #if H_3D_VSO 151 //====== VSO ========= 152 m_cTEncTop.setRenderModelParameters ( &m_cRenModStrParser ); 153 m_cTEncTop.setForceLambdaScaleVSO ( isDepth ? m_bForceLambdaScaleVSO : false ); 154 m_cTEncTop.setLambdaScaleVSO ( isDepth ? m_dLambdaScaleVSO : 1 ); 155 m_cTEncTop.setVSOMode ( isDepth ? m_uiVSOMode : 0 ); 156 157 m_cTEncTop.setAllowNegDist ( isDepth ? m_bAllowNegDist : false ); 158 159 // SAIT_VSO_EST_A0033 160 m_cTEncTop.setUseEstimatedVSD ( isDepth ? m_bUseEstimatedVSD : false ); 161 162 // LGE_WVSO_A0119 163 m_cTEncTop.setUseWVSO ( isDepth ? m_bUseWVSO : false ); 164 m_cTEncTop.setVSOWeight ( isDepth ? m_iVSOWeight : 0 ); 165 m_cTEncTop.setVSDWeight ( isDepth ? m_iVSDWeight : 0 ); 166 m_cTEncTop.setDWeight ( isDepth ? m_iDWeight : 0 ); 167 #endif // H_3D_VSO 168 #endif // H_3D 169 170 m_cTEncTop.setIvPicLists ( &m_ivPicLists ); 171 #endif // H_MV 139 172 m_cTEncTop.setVPS(&vps); 140 173 141 174 m_cTEncTop.setProfile(m_profile); 142 175 m_cTEncTop.setLevel(m_levelTier, m_level); 143 144 176 #if L0046_CONSTRAINT_FLAGS 145 177 m_cTEncTop.setProgressiveSourceFlag(m_progressiveSourceFlag); … … 186 218 m_cTEncTop.setQP ( m_iQP ); 187 219 #endif 220 188 221 m_cTEncTop.setPad ( m_aiPad ); 189 222 190 223 #if H_MV 191 224 m_cTEncTop.setMaxTempLayer ( m_maxTempLayerMvc[layer] ); … … 207 240 m_cTEncTop.setLoopFilterTcOffset ( m_loopFilterTcOffsetDiv2 ); 208 241 m_cTEncTop.setDeblockingFilterControlPresent( m_DeblockingFilterControlPresent); 242 #if L0386_DB_METRIC 243 m_cTEncTop.setDeblockingFilterMetric ( m_DeblockingFilterMetric ); 244 #endif 209 245 210 246 //====== Motion search ======== … … 226 262 Int lowestQP; 227 263 lowestQP = - 6*(g_bitDepthY - 8); // XXX: check 264 228 265 #if H_MV 229 266 if ((m_iMaxDeltaQP == 0 ) && (m_iQP[layer] == lowestQP) && (m_useLossless == true)) … … 243 280 m_cTEncTop.setUseHADME ( m_bUseHADME ); 244 281 m_cTEncTop.setUseLossless ( m_useLossless ); 282 #if !L0034_COMBINED_LIST_CLEANUP 245 283 m_cTEncTop.setUseLComb ( m_bUseLComb ); 284 #endif 246 285 #if H_MV 247 286 m_cTEncTop.setdQPs ( m_aidQP[layer] ); … … 321 360 m_cTEncTop.setBufferingPeriodSEIEnabled( m_bufferingPeriodSEIEnabled ); 322 361 m_cTEncTop.setPictureTimingSEIEnabled( m_pictureTimingSEIEnabled ); 362 #if J0149_TONE_MAPPING_SEI 363 m_cTEncTop.setToneMappingInfoSEIEnabled ( m_toneMappingInfoSEIEnabled ); 364 m_cTEncTop.setTMISEIToneMapId ( m_toneMapId ); 365 m_cTEncTop.setTMISEIToneMapCancelFlag ( m_toneMapCancelFlag ); 366 m_cTEncTop.setTMISEIToneMapPersistenceFlag ( m_toneMapPersistenceFlag ); 367 m_cTEncTop.setTMISEICodedDataBitDepth ( m_toneMapCodedDataBitDepth ); 368 m_cTEncTop.setTMISEITargetBitDepth ( m_toneMapTargetBitDepth ); 369 m_cTEncTop.setTMISEIModelID ( m_toneMapModelId ); 370 m_cTEncTop.setTMISEIMinValue ( m_toneMapMinValue ); 371 m_cTEncTop.setTMISEIMaxValue ( m_toneMapMaxValue ); 372 m_cTEncTop.setTMISEISigmoidMidpoint ( m_sigmoidMidpoint ); 373 m_cTEncTop.setTMISEISigmoidWidth ( m_sigmoidWidth ); 374 m_cTEncTop.setTMISEIStartOfCodedInterva ( m_startOfCodedInterval ); 375 m_cTEncTop.setTMISEINumPivots ( m_numPivots ); 376 m_cTEncTop.setTMISEICodedPivotValue ( m_codedPivotValue ); 377 m_cTEncTop.setTMISEITargetPivotValue ( m_targetPivotValue ); 378 m_cTEncTop.setTMISEICameraIsoSpeedIdc ( m_cameraIsoSpeedIdc ); 379 m_cTEncTop.setTMISEICameraIsoSpeedValue ( m_cameraIsoSpeedValue ); 380 m_cTEncTop.setTMISEIExposureCompensationValueSignFlag ( m_exposureCompensationValueSignFlag ); 381 m_cTEncTop.setTMISEIExposureCompensationValueNumerator ( m_exposureCompensationValueNumerator ); 382 m_cTEncTop.setTMISEIExposureCompensationValueDenomIdc ( m_exposureCompensationValueDenomIdc ); 383 m_cTEncTop.setTMISEIRefScreenLuminanceWhite ( m_refScreenLuminanceWhite ); 384 m_cTEncTop.setTMISEIExtendedRangeWhiteLevel ( m_extendedRangeWhiteLevel ); 385 m_cTEncTop.setTMISEINominalBlackLevelLumaCodeValue ( m_nominalBlackLevelLumaCodeValue ); 386 m_cTEncTop.setTMISEINominalWhiteLevelLumaCodeValue ( m_nominalWhiteLevelLumaCodeValue ); 387 m_cTEncTop.setTMISEIExtendedWhiteLevelLumaCodeValue ( m_extendedWhiteLevelLumaCodeValue ); 388 #endif 323 389 m_cTEncTop.setFramePackingArrangementSEIEnabled( m_framePackingSEIEnabled ); 324 390 m_cTEncTop.setFramePackingArrangementSEIType( m_framePackingSEIType ); … … 330 396 m_cTEncTop.setGradualDecodingRefreshInfoEnabled( m_gradualDecodingRefreshInfoEnabled ); 331 397 m_cTEncTop.setDecodingUnitInfoSEIEnabled( m_decodingUnitInfoSEIEnabled ); 398 #if L0208_SOP_DESCRIPTION_SEI 399 m_cTEncTop.setSOPDescriptionSEIEnabled( m_SOPDescriptionSEIEnabled ); 400 #endif 401 #if K0180_SCALABLE_NESTING_SEI 402 m_cTEncTop.setScalableNestingSEIEnabled( m_scalableNestingSEIEnabled ); 403 #endif 332 404 m_cTEncTop.setUniformSpacingIdr ( m_iUniformSpacingIdr ); 333 405 m_cTEncTop.setNumColumnsMinus1 ( m_iNumColumnsMinus1 ); … … 424 496 } 425 497 #endif 426 427 #if H_MV 428 } 429 #endif 430 498 #if H_MV 499 } 500 #endif 501 #if H_3D_VSO 502 if ( m_bUseVSO ) 503 { 504 if ( m_uiVSOMode == 4 ) 505 { 506 #if H_3D_VSO_EARLY_SKIP 507 m_cRendererModel.create( m_cRenModStrParser.getNumOfBaseViews(), m_cRenModStrParser.getNumOfModels(), m_iSourceWidth, g_uiMaxCUHeight , LOG2_DISP_PREC_LUT, 0, m_bVSOEarlySkip ); 508 #else 509 m_cRendererModel.create( m_cRenModStrParser.getNumOfBaseViews(), m_cRenModStrParser.getNumOfModels(), m_iSourceWidth, g_uiMaxCUHeight , LOG2_DISP_PREC_LUT, 0 ); 510 #endif 511 for ( Int layer = 0; layer < m_numberOfLayers ; layer++ ) 512 { 513 TEncTop* pcEncTop = m_acTEncTopList[ layer ]; 514 Int iViewNum = pcEncTop->getViewIndex(); 515 Int iContent = pcEncTop->getIsDepth() ? 1 : 0; 516 Int iNumOfModels = m_cRenModStrParser.getNumOfModelsForView(iViewNum, iContent); 517 518 Bool bUseVSO = (iNumOfModels != 0); 519 520 pcEncTop->setUseVSO( bUseVSO ); 521 pcEncTop->getRdCost()->setRenModel( bUseVSO ? &m_cRendererModel : NULL ); 522 523 for (Int iCurModel = 0; iCurModel < iNumOfModels; iCurModel++ ) 524 { 525 Int iModelNum; Int iLeftViewNum; Int iRightViewNum; Int iDump; Int iOrgRefNum; Int iBlendMode; 526 527 m_cRenModStrParser.getSingleModelData ( iViewNum, iContent, iCurModel, iModelNum, iBlendMode, iLeftViewNum, iRightViewNum, iOrgRefNum, iDump ) ; 528 m_cRendererModel .createSingleModel ( iViewNum, iContent, iModelNum, iLeftViewNum, iRightViewNum, (iOrgRefNum != -1), iBlendMode ); 529 } 530 } 531 } 532 else 533 { 534 AOT(true); 535 } 536 } 537 #endif 431 538 } 432 539 … … 579 686 580 687 eos[layer] = (m_frameRcvd[layer] == m_framesToBeEncoded); 581 allEos = allEos| eos[layer];688 allEos = allEos||eos[layer]; 582 689 583 690 // if end of file (which is only detected on a read failure) flush the encoder of any queued pictures … … 585 692 { 586 693 flush [layer] = true; 587 eos [layer] = true;694 eos [layer] = true; 588 695 m_frameRcvd [layer]--; 589 696 m_acTEncTopList[layer]->setFramesToBeEncoded(m_frameRcvd[layer]); … … 593 700 for ( Int gopId=0; gopId < gopSize; gopId++ ) 594 701 { 702 #if H_3D 703 UInt iNextPoc = m_acTEncTopList[0] -> getFrameId( gopId ); 704 if ( iNextPoc < m_framesToBeEncoded ) 705 { 706 m_cCameraData.update( iNextPoc ); 707 } 708 #endif 595 709 for(Int layer=0; layer < m_numberOfLayers; layer++ ) 596 710 { 711 #if H_3D_VSO 712 if( m_bUseVSO && m_bUseEstimatedVSD && iNextPoc < m_framesToBeEncoded ) 713 { 714 m_cCameraData.setDispCoeff( iNextPoc, m_acTEncTopList[layer]->getViewIndex() ); 715 m_acTEncTopList[layer] ->setDispCoeff( m_cCameraData.getDispCoeff() ); 716 } 717 #endif 597 718 Int iNumEncoded = 0; 598 719 … … 602 723 outputAccessUnits.clear(); 603 724 } 604 605 725 } 606 726 gopSize = maxGopSize; … … 666 786 return; 667 787 } 668 669 #if H_3D670 TEncTop* TAppEncTop::getTEncTopView( Int viewId, Bool isDepth )671 {672 TEncTop* encoder = NULL;673 for( Int layer = 0; layer < m_acTEncTopList.size(); layer++ )674 {675 if( m_acTEncTopList[layer]->getViewId() == viewId &&676 m_acTEncTopList[layer]->getIsDepth() == isDepth )677 {678 encoder = m_acTEncTopList[layer];679 break;680 }681 }682 return encoder;683 }684 #endif685 788 686 789 // ==================================================================================================================== … … 694 797 . 695 798 */ 696 697 799 #if H_MV 698 800 Void TAppEncTop::xGetBuffer( TComPicYuv*& rpcPicYuvRec, UInt layer) … … 722 824 723 825 } 724 725 826 #if H_MV 726 827 m_picYuvRec[layer]->pushBack( rpcPicYuvRec ); … … 732 833 Void TAppEncTop::xDeleteBuffer( ) 733 834 { 734 735 835 #if H_MV 736 836 for(Int layer=0; layer<m_picYuvRec.size(); layer++) … … 757 857 } 758 858 #endif 759 760 859 } 761 860 … … 787 886 { 788 887 TComPicYuv* pcPicYuvRec = *(iterPicYuvRec++); 789 790 888 #if H_MV 791 889 if (m_pchReconFileList[layerId]) … … 815 913 } 816 914 #endif 817 818 915 } 819 916 … … 832 929 case NAL_UNIT_CODED_SLICE_TRAIL_R: 833 930 case NAL_UNIT_CODED_SLICE_TRAIL_N: 834 case NAL_UNIT_CODED_SLICE_TLA :931 case NAL_UNIT_CODED_SLICE_TLA_R: 835 932 case NAL_UNIT_CODED_SLICE_TSA_N: 836 933 case NAL_UNIT_CODED_SLICE_STSA_R: 837 934 case NAL_UNIT_CODED_SLICE_STSA_N: 838 case NAL_UNIT_CODED_SLICE_BLA :839 case NAL_UNIT_CODED_SLICE_BLA NT:935 case NAL_UNIT_CODED_SLICE_BLA_W_LP: 936 case NAL_UNIT_CODED_SLICE_BLA_W_RADL: 840 937 case NAL_UNIT_CODED_SLICE_BLA_N_LP: 841 case NAL_UNIT_CODED_SLICE_IDR :938 case NAL_UNIT_CODED_SLICE_IDR_W_RADL: 842 939 case NAL_UNIT_CODED_SLICE_IDR_N_LP: 843 940 case NAL_UNIT_CODED_SLICE_CRA: 844 941 case NAL_UNIT_CODED_SLICE_RADL_N: 845 case NAL_UNIT_CODED_SLICE_ DLP:942 case NAL_UNIT_CODED_SLICE_RADL_R: 846 943 case NAL_UNIT_CODED_SLICE_RASL_N: 847 case NAL_UNIT_CODED_SLICE_ TFD:944 case NAL_UNIT_CODED_SLICE_RASL_R: 848 945 case NAL_UNIT_VPS: 849 946 case NAL_UNIT_SPS: … … 861 958 void TAppEncTop::printRateSummary() 862 959 { 863 864 960 #if H_MV 865 961 Double time = (Double) m_frameRcvd[0] / m_iFrameRate; … … 868 964 Double time = (Double) m_iFrameRcvd / m_iFrameRate; 869 965 #endif 870 871 966 printf("Bytes written to file: %u (%.3f kbps)\n", m_totalBytes, 0.008 * m_totalBytes / time); 872 967 #if VERBOSE_RATE … … 881 976 for( Int dim = 0; dim < m_dimIds.size(); dim++ ) 882 977 { 883 vps.setDimensionIdLen( dim, m_dimensionIdLen[ dim ] );884 for( Int layer = 1; layer < vps.getMaxLayers(); layer++ )885 {886 vps.setDimensionId( layer, dim, m_dimIds[ dim ][ layer ] );887 }978 vps.setDimensionIdLen( dim, m_dimensionIdLen[ dim ] ); 979 for( Int layer = 0; layer < vps.getMaxLayers(); layer++ ) 980 { 981 vps.setDimensionId( layer, dim, m_dimIds[ dim ][ layer ] ); 982 } 888 983 } 889 984 } … … 937 1032 } 938 1033 #endif 939 940 1034 //! \}
Note: See TracChangeset for help on using the changeset viewer.