Changeset 467 in 3DVCSoftware for branches/HTM-DEV-0.3-dev1/source/App/TAppEncoder
- Timestamp:
- 14 Jun 2013, 17:12:18 (11 years ago)
- Location:
- branches/HTM-DEV-0.3-dev1/source/App/TAppEncoder
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-DEV-0.3-dev1/source/App/TAppEncoder/TAppEncTop.cpp
r459 r467 123 123 { 124 124 vps.setVpsDepthModesFlag( layer, ((vps.getDepthId( layer ) != 0) && (m_useDMM || m_useRBC || m_useSDC || m_useDLT)) ? true : false ); 125 #if H_3D_DIM_DLT 126 vps.setUseDLTFlag( layer , ((vps.getDepthId( layer ) != 0) && m_useDLT) ? true : false ); 127 if( vps.getUseDLTFlag( layer ) ) 128 { 129 xAnalyzeInputBaseDepth(layer, max(m_iIntraPeriod, 24), &vps); 130 } 131 #endif 125 132 } 126 133 … … 986 993 } 987 994 995 #if H_3D_DIM_DLT 996 Void TAppEncTop::xAnalyzeInputBaseDepth(UInt layer, UInt uiNumFrames, TComVPS* vps) 997 { 998 TComPicYuv* pcDepthPicYuvOrg = new TComPicYuv; 999 // allocate original YUV buffer 1000 pcDepthPicYuvOrg->create( m_iSourceWidth, m_iSourceHeight, m_uiMaxCUWidth, m_uiMaxCUHeight, m_uiMaxCUDepth ); 1001 1002 TVideoIOYuv* depthVideoFile = new TVideoIOYuv; 1003 1004 UInt uiMaxDepthValue = ((1 << g_bitDepthY)-1); 1005 1006 Bool abValidDepths[256]; 1007 1008 depthVideoFile->open( m_pchInputFileList[layer], false, m_inputBitDepthY, m_inputBitDepthC, m_internalBitDepthY, m_internalBitDepthC ); // read mode 1009 1010 // initialize boolean array 1011 for(Int p=0; p<=uiMaxDepthValue; p++) 1012 abValidDepths[p] = false; 1013 1014 Int iHeight = pcDepthPicYuvOrg->getHeight(); 1015 Int iWidth = pcDepthPicYuvOrg->getWidth(); 1016 Int iStride = pcDepthPicYuvOrg->getStride(); 1017 1018 Pel* pInDM = pcDepthPicYuvOrg->getLumaAddr(); 1019 1020 for(Int uiFrame=0; uiFrame < uiNumFrames; uiFrame++ ) 1021 { 1022 depthVideoFile->read( pcDepthPicYuvOrg, m_aiPad ); 1023 1024 // check all pixel values 1025 for (Int i=0; i<iHeight; i++) 1026 { 1027 Int rowOffset = i*iStride; 1028 1029 for (Int j=0; j<iWidth; j++) 1030 { 1031 Pel depthValue = pInDM[rowOffset+j]; 1032 abValidDepths[depthValue] = true; 1033 } 1034 } 1035 } 1036 1037 depthVideoFile->close(); 1038 1039 pcDepthPicYuvOrg->destroy(); 1040 delete pcDepthPicYuvOrg; 1041 1042 // convert boolean array to idx2Depth LUT 1043 Int* aiIdx2DepthValue = (Int*) calloc(uiMaxDepthValue, sizeof(Int)); 1044 Int iNumDepthValues = 0; 1045 for(Int p=0; p<=uiMaxDepthValue; p++) 1046 { 1047 if( abValidDepths[p] == true) 1048 { 1049 aiIdx2DepthValue[iNumDepthValues++] = p; 1050 } 1051 } 1052 1053 if( uiNumFrames == 0 || (Int)ceil(Log2(iNumDepthValues)) == (Int)ceil(Log2(((1 << g_bitDepthY)-1))) ) 1054 { 1055 // don't use DLT 1056 vps->setUseDLTFlag(layer, false); 1057 } 1058 1059 // assign LUT 1060 if( vps->getUseDLTFlag(layer) ) 1061 vps->setDepthLUTs(layer, aiIdx2DepthValue, iNumDepthValues); 1062 1063 // free temporary memory 1064 free(aiIdx2DepthValue); 1065 } 1066 #endif 1067 988 1068 #if H_MV 989 1069 Void TAppEncTop::xSetDimensionIdAndLength( TComVPS& vps ) -
branches/HTM-DEV-0.3-dev1/source/App/TAppEncoder/TAppEncTop.h
r446 r467 121 121 Int xGetMax( std::vector<Int>& vec); 122 122 #endif 123 124 #if H_3D_DIM_DLT 125 Void xAnalyzeInputBaseDepth(UInt layer, UInt uiNumFrames, TComVPS* vps); 126 #endif 123 127 public: 124 128 TAppEncTop();
Note: See TracChangeset for help on using the changeset viewer.