Changeset 712 in 3DVCSoftware for branches/HTM-8.2-dev0/source/Lib/TLibEncoder
- Timestamp:
- 21 Nov 2013, 13:28:24 (11 years ago)
- Location:
- branches/HTM-8.2-dev0/source/Lib/TLibEncoder
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-8.2-dev0/source/Lib/TLibEncoder/TEncCavlc.cpp
r696 r712 1396 1396 } 1397 1397 #if H_3D_IC 1398 #if SEC_ONLY_TEXTURE_IC_F0151 1399 else if( pcSlice->getViewIndex() && ( pcSlice->getSliceType() == P_SLICE || pcSlice->getSliceType() == B_SLICE ) && !pcSlice->getIsDepth()) 1400 #else 1398 1401 else if( pcSlice->getViewIndex() && ( pcSlice->getSliceType() == P_SLICE || pcSlice->getSliceType() == B_SLICE ) ) 1402 #endif 1399 1403 { 1400 1404 WRITE_FLAG( pcSlice->getApplyIC() ? 1 : 0, "slice_ic_enable_flag" ); -
branches/HTM-8.2-dev0/source/Lib/TLibEncoder/TEncCfg.h
r696 r712 412 412 #if H_3D_DIM 413 413 Bool m_useDMM; 414 #if !SEC_DMM3_RBC_F0147 414 415 Bool m_useRBC; 416 #endif 415 417 Bool m_useSDC; 416 418 Bool m_useDLT; … … 983 985 Bool getUseDMM () { return m_useDMM; } 984 986 Void setUseDMM ( Bool b) { m_useDMM = b; } 987 #if !SEC_DMM3_RBC_F0147 985 988 Bool getUseRBC () { return m_useRBC; } 986 989 Void setUseRBC ( Bool b) { m_useRBC = b; } 990 #endif 987 991 Bool getUseSDC () { return m_useSDC; } 988 992 Void setUseSDC ( Bool b) { m_useSDC = b; } -
branches/HTM-8.2-dev0/source/Lib/TLibEncoder/TEncCu.cpp
r711 r712 497 497 #endif 498 498 #if H_3D_IC 499 #if SEC_ONLY_TEXTURE_IC_F0151 500 Bool bICEnabled = rpcTempCU->getSlice()->getViewIndex() && ( rpcTempCU->getSlice()->getSliceType() == P_SLICE || rpcTempCU->getSlice()->getSliceType() == B_SLICE ) && !rpcTempCU->getSlice()->getIsDepth(); 501 #else 499 502 Bool bICEnabled = rpcTempCU->getSlice()->getViewIndex() && ( rpcTempCU->getSlice()->getSliceType() == P_SLICE || rpcTempCU->getSlice()->getSliceType() == B_SLICE ); 503 #endif 500 504 bICEnabled = bICEnabled && rpcTempCU->getSlice()->getApplyIC(); 501 505 #endif -
branches/HTM-8.2-dev0/source/Lib/TLibEncoder/TEncEntropy.cpp
r655 r712 160 160 Void TEncEntropy::encodeICFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD ) 161 161 { 162 #if SEC_ONLY_TEXTURE_IC_F0151 163 if ( pcCU->isIntra( uiAbsPartIdx ) || ( pcCU->getSlice()->getViewIndex() == 0 ) || pcCU->getSlice()->getIsDepth() ) 164 #else 162 165 if ( pcCU->isIntra( uiAbsPartIdx ) || ( pcCU->getSlice()->getViewIndex() == 0 ) ) 166 #endif 163 167 { 164 168 return; -
branches/HTM-8.2-dev0/source/Lib/TLibEncoder/TEncSbac.cpp
r655 r712 95 95 #if H_3D_DIM_DMM 96 96 , m_cDmm1DataSCModel ( 1, 1, NUM_DMM1_DATA_CTX , m_contextModels + m_numContextModels, m_numContextModels) 97 #if !SEC_DMM3_RBC_F0147 97 98 , m_cDmm3DataSCModel ( 1, 1, NUM_DMM3_DATA_CTX , m_contextModels + m_numContextModels, m_numContextModels) 99 #endif 98 100 #endif 99 101 #if H_3D_DIM_RBC … … 174 176 #if H_3D_DIM_DMM 175 177 m_cDmm1DataSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_DMM1_DATA ); 178 #if !SEC_DMM3_RBC_F0147 176 179 m_cDmm3DataSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_DMM3_DATA ); 180 #endif 177 181 #endif 178 182 #if H_3D_DIM_RBC … … 262 266 #if H_3D_DIM_DMM 263 267 curCost += m_cDmm1DataSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_DMM1_DATA ); 268 #if !SEC_DMM3_RBC_F0147 264 269 curCost += m_cDmm3DataSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_DMM3_DATA ); 270 #endif 265 271 #endif 266 272 #if H_3D_DIM_RBC … … 331 337 #if H_3D_DIM_DMM 332 338 m_cDmm1DataSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_DMM1_DATA ); 339 #if !SEC_DMM3_RBC_F0147 333 340 m_cDmm3DataSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_DMM3_DATA ); 341 #endif 334 342 #endif 335 343 #if H_3D_DIM_RBC … … 518 526 } 519 527 528 #if QC_DIM_DELTADC_UNIFY_F0132 529 Void TEncSbac::xCodeDimDeltaDC( Pel valDeltaDC, UInt uiNumSeg ) 530 { 531 xWriteExGolombLevel( UInt( abs( valDeltaDC ) - ( uiNumSeg > 1 ? 0 : 1 ) ), m_cDdcDataSCModel.get(0, 0, 0) ); 532 if( valDeltaDC != 0 ) 533 { 534 UInt uiSign = valDeltaDC > 0 ? 0 : 1; 535 m_pcBinIf->encodeBinEP( uiSign ); 536 } 537 } 538 #else 520 539 Void TEncSbac::xCodeDimDeltaDC( Pel valDeltaDC, UInt dimType ) 521 540 { … … 527 546 } 528 547 } 548 #endif 529 549 530 550 #if H_3D_DIM_DMM … … 537 557 } 538 558 559 #if !SEC_DMM3_RBC_F0147 539 560 Void TEncSbac::xCodeDmm3WedgeIdx( UInt uiIntraIdx, Int iNumBit ) 540 561 { … … 544 565 } 545 566 } 567 #endif 546 568 #endif 547 569 #if H_3D_DIM_RBC … … 1209 1231 xCodeDmm1WedgeIdx( pcCU->getDmmWedgeTabIdx( dimType, absPartIdx ), g_dmm1TabIdxBits[pcCU->getIntraSizeIdx(absPartIdx)] ); 1210 1232 } break; 1233 #if !SEC_DMM3_RBC_F0147 1211 1234 case( DMM3_IDX ): 1212 1235 { 1213 1236 xCodeDmm3WedgeIdx( pcCU->getDmm3IntraTabIdx( absPartIdx ), g_dmm3IntraTabIdxBits[pcCU->getIntraSizeIdx(absPartIdx)] ); 1214 1237 } break; 1238 #endif 1215 1239 case( DMM4_IDX ): break; 1216 1240 #endif … … 1225 1249 } 1226 1250 1227 #if H_3D_DIM_SDC 1251 #if H_3D_DIM_SDC && !QC_DIM_DELTADC_UNIFY_F0132 1228 1252 if( pcCU->getSDCFlag( absPartIdx ) ) 1229 1253 { … … 1238 1262 { 1239 1263 #endif 1264 #if QC_DIM_DELTADC_UNIFY_F0132 1265 if( dimType < DIM_NUM_TYPE || pcCU->getSDCFlag( absPartIdx ) ) 1266 #else 1240 1267 if( dimType < DIM_NUM_TYPE ) 1241 { 1268 #endif 1269 { 1270 #if QC_DIM_DELTADC_UNIFY_F0132 1271 UInt dimDeltaDC; 1272 Pel deltaDC; 1273 UInt uiNumSegments = ( dir == PLANAR_IDX ) ? 1 : 2; 1274 if( pcCU->getSDCFlag( absPartIdx ) ) 1275 { 1276 if( uiNumSegments==1 ) 1277 { 1278 dimDeltaDC = pcCU->getSDCSegmentDCOffset(0, absPartIdx) ? 1 : 0; 1279 } 1280 else 1281 { 1282 dimDeltaDC = ( pcCU->getSDCSegmentDCOffset(0, absPartIdx) || pcCU->getSDCSegmentDCOffset(1, absPartIdx) ) ? 1 : 0; 1283 } 1284 } 1285 else 1286 { 1287 dimDeltaDC = isDimDeltaDC( dir ); 1288 } 1289 1290 m_pcBinIf->encodeBin( dimDeltaDC, m_cDdcFlagSCModel.get(0, 0, uiNumSegments-1) ); 1291 1292 if( dimDeltaDC ) 1293 { 1294 for( UInt segment = 0; segment < uiNumSegments; segment++ ) 1295 { 1296 deltaDC = pcCU->getSDCFlag( absPartIdx ) ? pcCU->getSDCSegmentDCOffset(segment, absPartIdx) : pcCU->getDimDeltaDC( dimType, segment, absPartIdx ); 1297 xCodeDimDeltaDC( deltaDC, uiNumSegments ); 1298 } 1299 } 1300 #else 1242 1301 UInt dimDeltaDC = isDimDeltaDC( dir ); 1243 1302 m_pcBinIf->encodeBin( dimDeltaDC, m_cDdcFlagSCModel.get(0, 0, (RBC_IDX == dimType) ? 1 : 0) ); … … 1249 1308 } 1250 1309 } 1251 } 1252 #if H_3D_DIM_SDC 1310 #endif 1311 } 1312 #if H_3D_DIM_SDC && !QC_DIM_DELTADC_UNIFY_F0132 1253 1313 } 1254 1314 #endif … … 1257 1317 Void TEncSbac::codeIntraDepthMode( TComDataCU* pcCU, UInt absPartIdx ) 1258 1318 { 1319 #if SEC_DMM3_RBC_F0147 1320 UInt codeWordTable[3][7] = {{0, 0, 0, 1, 0, 0, 0},{0, 2, 6, 14, 15, 0, 0},{0, 1, 0, 0, 0, 0, 0}}; 1321 UInt codeWordLenTable[3][7] = {{0, 1, 0, 1, 0, 0, 0},{1, 2, 3, 4, 4, 0, 0},{1, 1, 0, 0, 0, 0, 0}}; 1322 #else 1259 1323 UInt codeWordTable[3][7] = {{0, 0, 0, 2, 0,6, 7},{0, 0, 2, 7, 3, 6, 2},{0, 1, 0, 0, 0, 0, 0}}; 1260 1324 UInt codeWordLenTable[3][7] = {{0, 1, 0, 2, 0,3, 3},{1, 1, 2, 3, 2, 3, 2},{1, 1, 0, 0, 0, 0, 0}}; 1325 #endif 1261 1326 UInt dir = pcCU->getLumaIntraDir( absPartIdx ); 1262 1327 UInt puIdx = (pcCU->getWidth(absPartIdx) == 64) ? 2 : ( (pcCU->getPartitionSize(absPartIdx) == SIZE_NxN && pcCU->getWidth(absPartIdx) == 8) ? 0 : 1 ); … … 1273 1338 case DMM1_IDX: codeIdx = 3; break; 1274 1339 case DMM4_IDX: codeIdx = 4; break; 1340 #if !SEC_DMM3_RBC_F0147 1275 1341 case DMM3_IDX: codeIdx = 5; break; 1276 1342 case RBC_IDX: codeIdx = 6; break; 1343 #endif 1277 1344 default: break; 1278 1345 } … … 1289 1356 } 1290 1357 #endif 1358 #if !SEC_DMM3_RBC_F0147 1291 1359 if( puIdx==1 ) 1292 1360 { … … 1300 1368 } 1301 1369 } 1370 #endif 1302 1371 //mode coding 1303 1372 for( UInt i = 0; i < codeWordLenTable[puIdx][codeIdx]; i++ ) -
branches/HTM-8.2-dev0/source/Lib/TLibEncoder/TEncSbac.h
r655 r712 118 118 #if H_3D_DIM 119 119 Void xWriteExGolombLevel ( UInt uiSymbol, ContextModel& rcSCModel ); 120 #if QC_DIM_DELTADC_UNIFY_F0132 121 Void xCodeDimDeltaDC ( Pel valDeltaDC, UInt uiNumSeg ); 122 #else 120 123 Void xCodeDimDeltaDC ( Pel valDeltaDC, UInt dimType ); 124 #endif 121 125 #if H_3D_DIM_DMM 122 126 Void xCodeDmm1WedgeIdx ( UInt uiTabIdx, Int iNumBit ); 127 #if !SEC_DMM3_RBC_F0147 123 128 Void xCodeDmm3WedgeIdx ( UInt uiIntraIdx, Int iNumBit ); 129 #endif 124 130 #endif 125 131 #if H_3D_DIM_RBC … … 253 259 #if H_3D_DIM_DMM 254 260 ContextModel3DBuffer m_cDmm1DataSCModel; 261 #if !SEC_DMM3_RBC_F0147 255 262 ContextModel3DBuffer m_cDmm3DataSCModel; 263 #endif 256 264 #endif 257 265 #if H_3D_DIM_RBC -
branches/HTM-8.2-dev0/source/Lib/TLibEncoder/TEncSearch.cpp
r708 r712 1126 1126 for( UInt uiX = 0; uiX < uiWidth; uiX++ ) 1127 1127 { 1128 #if LGE_PRED_RES_CODING_DLT_DOMAIN_F0159 1129 if( (isDimMode( uiLumaPredMode ) || uiLumaPredMode == HOR_IDX || uiLumaPredMode == VER_IDX || uiLumaPredMode == DC_IDX) && pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->getVPS()->getUseDLTFlag(pcCU->getSlice()->getLayerIdInVps()) ) 1130 { 1131 pResi[ uiX ] = pcCU->getSlice()->getVPS()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), pOrg[ uiX ] ) - pcCU->getSlice()->getVPS()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), pPred[ uiX ] ); 1132 } 1133 else 1134 { 1135 pResi[ uiX ] = pOrg[ uiX ] - pPred[ uiX ]; 1136 } 1137 #else 1128 1138 pResi[ uiX ] = pOrg[ uiX ] - pPred[ uiX ]; 1139 #endif 1129 1140 } 1130 1141 pOrg += uiStride; … … 1190 1201 for( UInt uiX = 0; uiX < uiWidth; uiX++ ) 1191 1202 { 1203 #if LGE_PRED_RES_CODING_DLT_DOMAIN_F0159 1204 if( (isDimMode( uiLumaPredMode ) || uiLumaPredMode == HOR_IDX || uiLumaPredMode == VER_IDX || uiLumaPredMode == DC_IDX) && pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->getVPS()->getUseDLTFlag(pcCU->getSlice()->getLayerIdInVps()) ) 1205 { 1206 pReco [ uiX ] = pcCU->getSlice()->getVPS()->idx2DepthValue( pcCU->getSlice()->getLayerIdInVps(), Clip3( 0, pcCU->getSlice()->getVPS()->getNumDepthValues( pcCU->getSlice()->getLayerIdInVps() ) - 1, pcCU->getSlice()->getVPS()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), pPred[ uiX ] ) + pResi[ uiX ] ) ); 1207 } 1208 else 1209 { 1210 pReco [ uiX ] = ClipY( pPred[ uiX ] + pResi[ uiX ] ); 1211 } 1212 #else 1192 1213 pReco [ uiX ] = ClipY( pPred[ uiX ] + pResi[ uiX ] ); 1214 #endif 1193 1215 pRecQt [ uiX ] = pReco[ uiX ]; 1194 1216 pRecIPred[ uiX ] = pReco[ uiX ]; … … 2876 2898 biSegmentation = &(g_dmmWedgeLists[(g_aucConvertToBit[uiWidth])][uiTabIdx]); 2877 2899 } break; 2900 #if !SEC_DMM3_RBC_F0147 2878 2901 case( DMM3_IDX ): 2879 2902 { … … 2893 2916 } 2894 2917 } break; 2918 #endif 2895 2919 case( DMM4_IDX ): 2896 2920 { … … 2928 2952 { 2929 2953 Pel deltaDC1 = 0; Pel deltaDC2 = 0; 2954 #if QC_DIM_DELTADC_UNIFY_F0132 2955 xSearchDmmDeltaDCs( pcCU, uiPartOffset, piOrg, piPred, uiStride, pcCU->getEdgePartition( uiPartOffset ), uiWidth, uiWidth, uiHeight, deltaDC1, deltaDC2 ); 2956 #else 2930 2957 xSearchRbcDeltaDCs( pcCU, uiPartOffset, piOrg, piPred, uiStride, pcCU->getEdgePartition( uiPartOffset ), uiWidth, uiWidth, uiHeight, deltaDC1, deltaDC2 ); 2958 #endif 2931 2959 pcCU->setDimDeltaDC( RBC_IDX, 0, uiPartOffset, deltaDC1 ); 2932 2960 pcCU->setDimDeltaDC( RBC_IDX, 1, uiPartOffset, deltaDC2 ); … … 2975 3003 Bool bTestZeroResi = false; 2976 3004 #if H_3D_DIM_ENC 3005 #if LGE_BUGFIX_F0158 3006 bTestZeroResi |= pcCU->getSlice()->getIsDepth() && !pcCU->getSlice()->isIRAP(); 3007 #else 2977 3008 bTestZeroResi |= pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->isIRAP(); 3009 #endif 2978 3010 #endif 2979 3011 #if H_3D_DIM_SDC … … 7324 7356 } 7325 7357 7358 #if !SEC_DMM3_RBC_F0147 7326 7359 Void TEncSearch::xSearchDmm3Wedge( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx, UInt& ruiIntraTabIdx, UInt colTexIntraDir ) 7327 7360 { … … 7360 7393 cPredYuv.destroy(); 7361 7394 } 7362 7395 #endif 7363 7396 #endif 7364 7397 #if H_3D_DIM_RBC -
branches/HTM-8.2-dev0/source/Lib/TLibEncoder/TEncSearch.h
r655 r712 351 351 Void xSearchDmmDeltaDCs ( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piOrig, Pel* piPredic, UInt uiStride, Bool* biSegPattern, Int patternStride, UInt uiWidth, UInt uiHeight, Pel& rDeltaDC1, Pel& rDeltaDC2 ); 352 352 Void xSearchDmm1Wedge ( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx ); 353 #if !SEC_DMM3_RBC_F0147 353 354 Void xSearchDmm3Wedge ( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx, UInt& ruiIntraTabIdx, UInt colTexIntraDir ); 355 #endif 354 356 #endif 355 357 #if H_3D_DIM_RBC
Note: See TracChangeset for help on using the changeset viewer.