Changeset 724 in 3DVCSoftware for trunk/source/Lib/TLibDecoder
- Timestamp:
- 30 Nov 2013, 12:29:49 (11 years ago)
- Location:
- trunk/source/Lib/TLibDecoder
- Files:
-
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/Lib/TLibDecoder/TDecCAVLC.cpp
r655 r724 1245 1245 pcVPS->setARPStepNum( i, 1 ); 1246 1246 #endif 1247 #if MTK_SPIVMP_F0110 1248 pcVPS->setSubPULog2Size(i, 0); 1249 #endif 1247 1250 if ( i != 0 ) 1248 1251 { … … 1251 1254 #if H_3D_IV_MERGE 1252 1255 READ_FLAG( uiCode, "iv_mv_pred_flag[i]"); pcVPS->setIvMvPredFlag ( i, uiCode == 1 ? true : false ); 1256 #if MTK_SPIVMP_F0110 1257 READ_UVLC (uiCode, "log2_sub_PU_size_minus2"); pcVPS->setSubPULog2Size(i, uiCode+2); 1258 #endif 1253 1259 #endif 1254 1260 #if H_3D_ARP … … 1265 1271 else 1266 1272 { 1267 1273 #if QC_DEPTH_IV_MRG_F0125 && H_3D_IV_MERGE 1274 if(i!=1) 1275 { 1276 READ_FLAG( uiCode, "iv_mv_pred_flag[i]"); pcVPS->setIvMvPredFlag ( i, uiCode == 1 ? true : false ); 1277 } 1278 #endif 1279 #if MTK_SPIVMP_F0110 1280 if (i!=1) 1281 { 1282 READ_UVLC (uiCode, "log2_sub_PU_size_minus2"); pcVPS->setSubPULog2Size(i, uiCode+2); 1283 } 1284 #endif 1285 #if SEC_MPI_ENABLING_MERGE_F0150 1286 READ_FLAG( uiCode, "mpi_flag[i]" ); pcVPS->setMPIFlag( i, uiCode == 1 ? true : false ); 1287 #endif 1268 1288 READ_FLAG( uiCode, "vps_depth_modes_flag[i]" ); pcVPS->setVpsDepthModesFlag( i, uiCode == 1 ? true : false ); 1269 1289 // READ_FLAG( uiCode, "lim_qt_pred_flag[i]"); pcVPS->setLimQtPreFlag ( i, uiCode == 1 ? true : false ); … … 1795 1815 } 1796 1816 #if H_3D_IC 1817 #if SEC_ONLY_TEXTURE_IC_F0151 1818 else if( rpcSlice->getViewIndex() && ( rpcSlice->getSliceType() == P_SLICE || rpcSlice->getSliceType() == B_SLICE ) && !rpcSlice->getIsDepth()) 1819 #else 1797 1820 else if( rpcSlice->getViewIndex() && ( rpcSlice->getSliceType() == P_SLICE || rpcSlice->getSliceType() == B_SLICE ) ) 1821 #endif 1798 1822 { 1799 1823 UInt uiCodeTmp = 0; … … 1813 1837 READ_UVLC( uiCode, "five_minus_max_num_merge_cand"); 1814 1838 #if H_3D_IV_MERGE 1839 #if SEC_MPI_ENABLING_MERGE_F0150 1840 if(rpcSlice->getIsDepth()) 1841 { 1842 Bool bMPIFlag = rpcSlice->getVPS()->getMPIFlag( rpcSlice->getLayerIdInVps() ) ; 1843 Bool ivMvPredFlag = rpcSlice->getVPS()->getIvMvPredFlag( rpcSlice->getLayerIdInVps() ) ; 1844 rpcSlice->setMaxNumMergeCand(( ( bMPIFlag || ivMvPredFlag ) ? MRG_MAX_NUM_CANDS_MEM : MRG_MAX_NUM_CANDS) - uiCode); 1845 } 1846 else 1847 { 1848 Bool ivMvPredFlag = rpcSlice->getVPS()->getIvMvPredFlag( rpcSlice->getLayerIdInVps() ) ; 1849 rpcSlice->setMaxNumMergeCand(( ivMvPredFlag ? MRG_MAX_NUM_CANDS_MEM : MRG_MAX_NUM_CANDS) - uiCode); 1850 } 1851 #else 1815 1852 Bool ivMvPredFlag = rpcSlice->getVPS()->getIvMvPredFlag( rpcSlice->getLayerIdInVps() ) ; 1816 1853 rpcSlice->setMaxNumMergeCand(( ivMvPredFlag ? MRG_MAX_NUM_CANDS_MEM : MRG_MAX_NUM_CANDS) - uiCode); 1854 #endif 1817 1855 #else 1818 1856 rpcSlice->setMaxNumMergeCand(MRG_MAX_NUM_CANDS - uiCode); -
trunk/source/Lib/TLibDecoder/TDecCu.cpp
r655 r724 135 135 Void TDecCu::decompressCU( TComDataCU* pcCU ) 136 136 { 137 #if !QC_DEPTH_IV_MRG_F0125 137 138 xDecompressCU( pcCU, 0, 0 ); 139 #endif 138 140 } 139 141 … … 313 315 m_ppcCU[uiDepth]->setHeight ( 0, pcCU->getSlice()->getSPS()->getMaxCUHeight()/(1<<uiDepth) ); 314 316 m_ppcCU[uiDepth]->setPartSizeSubParts( SIZE_2Nx2N, 0, uiDepth ); 317 #if QC_DEPTH_IV_MRG_F0125 318 if( pcCU->getSlice()->getIsDepth()) 319 { 320 DvInfo.bDV = m_ppcCU[uiDepth]->getDispNeighBlocks(0, 0, &DvInfo); 321 } 322 else 323 { 324 #endif 315 325 #if H_3D_NBDV_REF 316 326 if(pcCU->getSlice()->getVPS()->getDepthRefinementFlag( pcCU->getSlice()->getLayerIdInVps() )) //Notes from QC: please check the condition for DoNBDV. Remove this comment once it is done. … … 323 333 DvInfo.bDV = m_ppcCU[uiDepth]->getDisMvpCandNBDV(&DvInfo); 324 334 } 325 335 #if QC_DEPTH_IV_MRG_F0125 336 } 337 #endif 326 338 #if ENC_DEC_TRACE && H_MV_ENC_DEC_TRAC 327 339 if ( g_decTraceDispDer ) … … 378 390 UInt uiMergeIndex = pcCU->getMergeIndex(uiAbsPartIdx); 379 391 392 #if LGE_SHARP_VSP_INHERIT_F0104 393 #if H_3D_IC 394 m_pcEntropyDecoder->decodeICFlag( pcCU, uiAbsPartIdx, uiDepth ); 395 #endif 396 #if H_3D_ARP 397 m_pcEntropyDecoder->decodeARPW( pcCU , uiAbsPartIdx , uiDepth ); 398 #endif 399 #endif 400 380 401 #if H_3D_VSP 381 402 Int vspFlag[MRG_MAX_NUM_CANDS_MEM]; 382 403 memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM); 383 404 InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM]; 405 #if MTK_SPIVMP_F0110 406 Bool bSPIVMPFlag[MRG_MAX_NUM_CANDS_MEM]; 407 memset(bSPIVMPFlag, false, sizeof(Bool)*MRG_MAX_NUM_CANDS_MEM); 408 TComMvField* pcMvFieldSP; 409 UChar* puhInterDirSP; 410 pcMvFieldSP = new TComMvField[pcCU->getPic()->getPicSym()->getNumPartition()*2]; 411 puhInterDirSP = new UChar[pcCU->getPic()->getPicSym()->getNumPartition()]; 412 #endif 413 #if ETRIKHU_MERGE_REUSE_F0093 414 m_ppcCU[uiDepth]->initAvailableFlags(); 415 m_ppcCU[uiDepth]->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); 416 m_ppcCU[uiDepth]->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, vspFlag, inheritedVSPDisInfo 417 #if MTK_SPIVMP_F0110 418 , bSPIVMPFlag, pcMvFieldSP, puhInterDirSP 419 #endif 420 , numValidMergeCand, uiMergeIndex ); 421 #else 384 422 m_ppcCU[uiDepth]->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, numValidMergeCand, uiMergeIndex ); 423 #endif 385 424 pcCU->setVSPFlagSubParts( vspFlag[uiMergeIndex], uiAbsPartIdx, 0, uiDepth ); 386 425 #else 426 #if ETRIKHU_MERGE_REUSE_F0093 427 m_ppcCU[uiDepth]->initAvailableFlags(); 387 428 m_ppcCU[uiDepth]->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); 429 m_ppcCU[uiDepth]->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); 430 #else 431 m_ppcCU[uiDepth]->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); 432 #endif 388 433 #endif 389 434 #if H_3D_VSP … … 423 468 } 424 469 } 470 #if MTK_SPIVMP_F0110 471 pcCU->setSPIVMPFlagSubParts(bSPIVMPFlag[uiMergeIndex], uiAbsPartIdx, 0, uiDepth ); 472 if (bSPIVMPFlag[uiMergeIndex]) 473 { 474 UInt uiSPAddr; 475 Int iWidth = pcCU->getWidth(uiAbsPartIdx); 476 Int iHeight = pcCU->getHeight(uiAbsPartIdx); 477 478 Int iNumSPInOneLine, iNumSP, iSPWidth, iSPHeight; 479 480 pcCU->getSPPara(iWidth, iHeight, iNumSP, iNumSPInOneLine, iSPWidth, iSPHeight); 481 482 for (Int iPartitionIdx = 0; iPartitionIdx < iNumSP; iPartitionIdx++) 483 { 484 pcCU->getSPAbsPartIdx(uiAbsPartIdx, iSPWidth, iSPHeight, iPartitionIdx, iNumSPInOneLine, uiSPAddr); 485 pcCU->setInterDirSP(puhInterDirSP[iPartitionIdx], uiSPAddr, iSPWidth, iSPHeight); 486 pcCU->getCUMvField( REF_PIC_LIST_0 )->setMvFieldSP(pcCU, uiSPAddr, pcMvFieldSP[2*iPartitionIdx], iSPWidth, iSPHeight); 487 pcCU->getCUMvField( REF_PIC_LIST_1 )->setMvFieldSP(pcCU, uiSPAddr, pcMvFieldSP[2*iPartitionIdx + 1], iSPWidth, iSPHeight); 488 } 489 } 490 delete pcMvFieldSP; 491 delete puhInterDirSP; 492 #endif 493 #if !LGE_SHARP_VSP_INHERIT_F0104 425 494 #if H_3D_IC 426 495 m_pcEntropyDecoder->decodeICFlag( pcCU, uiAbsPartIdx, uiDepth ); … … 429 498 m_pcEntropyDecoder->decodeARPW( pcCU , uiAbsPartIdx , uiDepth ); 430 499 #endif 500 #endif 501 431 502 xFinishDecodeCU( pcCU, uiAbsPartIdx, uiDepth, ruiIsLast ); 503 #if QC_DEPTH_IV_MRG_F0125 504 xDecompressCU(pcCU, uiAbsPartIdx, uiDepth ); 505 #endif 432 506 return; 433 507 } … … 443 517 { 444 518 xFinishDecodeCU( pcCU, uiAbsPartIdx, uiDepth, ruiIsLast ); 519 #if QC_DEPTH_IV_MRG_F0125 520 xDecompressCU(pcCU, uiAbsPartIdx, uiDepth ); 521 #endif 445 522 return; 446 523 } … … 452 529 // prediction mode ( Intra : direction mode, Inter : Mv, reference idx ) 453 530 m_pcEntropyDecoder->decodePredInfo( pcCU, uiAbsPartIdx, uiDepth, m_ppcCU[uiDepth]); 531 #if !LGE_SHARP_VSP_INHERIT_F0104 454 532 #if H_3D_IC 455 533 m_pcEntropyDecoder->decodeICFlag( pcCU, uiAbsPartIdx, uiDepth ); … … 458 536 m_pcEntropyDecoder->decodeARPW ( pcCU , uiAbsPartIdx , uiDepth ); 459 537 #endif 538 #endif 460 539 #if H_3D_INTER_SDC 461 540 m_pcEntropyDecoder->decodeInterSDCFlag( pcCU, uiAbsPartIdx, uiDepth ); … … 466 545 setdQPFlag( bCodeDQP ); 467 546 xFinishDecodeCU( pcCU, uiAbsPartIdx, uiDepth, ruiIsLast ); 547 #if QC_DEPTH_IV_MRG_F0125 548 xDecompressCU(pcCU, uiAbsPartIdx, uiDepth ); 549 #endif 468 550 } 469 551 … … 481 563 { 482 564 TComPic* pcPic = pcCU->getPic(); 483 565 #if !QC_DEPTH_IV_MRG_F0125 484 566 Bool bBoundary = false; 485 567 UInt uiLPelX = pcCU->getCUPelX() + g_auiRasterToPelX[ g_auiZscanToRaster[uiAbsPartIdx] ]; … … 516 598 return; 517 599 } 518 600 #endif 519 601 // Residual reconstruction 520 602 m_ppcYuvResi[uiDepth]->clear(); … … 693 775 for( UInt uiX = 0; uiX < uiWidth; uiX++ ) 694 776 { 777 #if LGE_PRED_RES_CODING_DLT_DOMAIN_F0159 778 if( (isDimMode( uiLumaPredMode ) || uiLumaPredMode == HOR_IDX || uiLumaPredMode == VER_IDX || uiLumaPredMode == DC_IDX) && pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->getVPS()->getUseDLTFlag(pcCU->getSlice()->getLayerIdInVps()) ) 779 { 780 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 ] ) ); 781 } 782 else 783 { 695 784 pReco [ uiX ] = ClipY( pPred[ uiX ] + pResi[ uiX ] ); 785 } 786 #else 787 pReco [ uiX ] = ClipY( pPred[ uiX ] + pResi[ uiX ] ); 788 #endif 696 789 pRecIPred[ uiX ] = pReco[ uiX ]; 697 790 } -
trunk/source/Lib/TLibDecoder/TDecEntropy.cpp
r655 r724 111 111 pcCU->setICFlagSubParts( false , uiAbsPartIdx, 0, uiDepth ); 112 112 113 #if SEC_ONLY_TEXTURE_IC_F0151 114 if ( pcCU->isIntra( uiAbsPartIdx ) || ( pcCU->getSlice()->getViewIndex() == 0 ) || pcCU->getSlice()->getIsDepth() ) 115 #else 113 116 if ( pcCU->isIntra( uiAbsPartIdx ) || ( pcCU->getSlice()->getViewIndex() == 0 ) ) 117 #endif 114 118 { 115 119 return; … … 209 213 UChar uhInterDirNeighbours[MRG_MAX_NUM_CANDS]; 210 214 #endif 211 215 #if MTK_SPIVMP_F0110 216 Bool bSPIVMPFlag[MRG_MAX_NUM_CANDS_MEM]; 217 TComMvField* pcMvFieldSP; 218 UChar* puhInterDirSP; 219 pcMvFieldSP = new TComMvField[pcCU->getPic()->getPicSym()->getNumPartition()*2]; 220 puhInterDirSP = new UChar[pcCU->getPic()->getPicSym()->getNumPartition()]; 221 #endif 212 222 for ( UInt ui = 0; ui < pcCU->getSlice()->getMaxNumMergeCand(); ui++ ) 213 223 { … … 235 245 decodeMergeIndex( pcCU, uiPartIdx, uiSubPartIdx, uiDepth ); 236 246 UInt uiMergeIndex = pcCU->getMergeIndex(uiSubPartIdx); 247 #if LGE_SHARP_VSP_INHERIT_F0104 248 #if H_3D_IC 249 decodeICFlag( pcCU, uiAbsPartIdx, uiDepth ); 250 #endif 251 #if H_3D_ARP 252 decodeARPW ( pcCU, uiAbsPartIdx, uiDepth ); 253 #endif 254 #endif 237 255 if ( pcCU->getSlice()->getPPS()->getLog2ParallelMergeLevelMinus2() && ePartSize != SIZE_2Nx2N && pcSubCU->getWidth( 0 ) <= 8 ) 238 256 { … … 244 262 memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM); 245 263 InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM]; 264 #if MTK_SPIVMP_F0110 265 memset(bSPIVMPFlag, false, sizeof(Bool)*MRG_MAX_NUM_CANDS_MEM); 266 #endif 267 #if ETRIKHU_MERGE_REUSE_F0093 268 pcSubCU->initAvailableFlags(); 269 pcSubCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand); 270 pcSubCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, vspFlag, inheritedVSPDisInfo 271 #if MTK_SPIVMP_F0110 272 , bSPIVMPFlag, pcMvFieldSP, puhInterDirSP 273 #endif 274 , numValidMergeCand ); 275 #else 246 276 pcSubCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, vspFlag, inheritedVSPDisInfo, numValidMergeCand ); 277 #endif 247 278 pcCU->setVSPFlagSubParts( vspFlag[uiMergeIndex], uiSubPartIdx, uiPartIdx, uiDepth ); 248 279 … … 252 283 } 253 284 #else 285 #if ETRIKHU_MERGE_REUSE_F0093 286 pcSubCU->initAvailableFlags(); 287 pcSubCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand); 288 pcSubCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand ); 289 290 #else 254 291 pcSubCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand ); 292 #endif 255 293 #endif 256 294 isMerged = true; … … 265 303 memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM); 266 304 InheritedVSPDisInfo inheritedVSPDisInfo[MRG_MAX_NUM_CANDS_MEM]; 305 #if MTK_SPIVMP_F0110 306 memset(bSPIVMPFlag, false, sizeof(Bool)*MRG_MAX_NUM_CANDS_MEM); 307 #endif 308 #if ETRIKHU_MERGE_REUSE_F0093 309 pcSubCU->initAvailableFlags(); 310 pcSubCU->getInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); 311 pcSubCU->xGetInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours, vspFlag, inheritedVSPDisInfo 312 #if MTK_SPIVMP_F0110 313 , bSPIVMPFlag, pcMvFieldSP, puhInterDirSP 314 #endif 315 ,numValidMergeCand, uiMergeIndex ); 316 #else 267 317 pcSubCU->getInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours, vspFlag, inheritedVSPDisInfo,numValidMergeCand, uiMergeIndex ); 318 #endif 268 319 pcCU->setVSPFlagSubParts( vspFlag[uiMergeIndex], uiSubPartIdx, uiPartIdx, uiDepth ); 269 320 if(vspFlag[uiMergeIndex]) … … 272 323 } 273 324 #else 325 #if ETRIKHU_MERGE_REUSE_F0093 326 pcSubCU->initAvailableFlags(); 274 327 pcSubCU->getInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); 328 pcSubCU->xGetInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); 329 #else 330 pcSubCU->getInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); 331 #endif 275 332 #endif 276 333 } … … 288 345 } 289 346 } 347 #if MTK_SPIVMP_F0110 348 pcCU->setSPIVMPFlagSubParts(bSPIVMPFlag[uiMergeIndex], uiSubPartIdx, uiPartIdx, uiDepth ); 349 if (bSPIVMPFlag[uiMergeIndex] != 0) 350 { 351 Int iWidth, iHeight; 352 UInt uiIdx; 353 pcCU->getPartIndexAndSize( uiPartIdx, uiIdx, iWidth, iHeight, uiSubPartIdx, true ); 354 355 UInt uiSPAddr; 356 357 Int iNumSPInOneLine, iNumSP, iSPWidth, iSPHeight; 358 359 pcCU->getSPPara(iWidth, iHeight, iNumSP, iNumSPInOneLine, iSPWidth, iSPHeight); 360 361 for (Int iPartitionIdx = 0; iPartitionIdx < iNumSP; iPartitionIdx++) 362 { 363 pcCU->getSPAbsPartIdx(uiSubPartIdx, iSPWidth, iSPHeight, iPartitionIdx, iNumSPInOneLine, uiSPAddr); 364 pcCU->setInterDirSP(puhInterDirSP[iPartitionIdx], uiSPAddr, iSPWidth, iSPHeight); 365 pcCU->getCUMvField( REF_PIC_LIST_0 )->setMvFieldSP(pcCU, uiSPAddr, pcMvFieldSP[2*iPartitionIdx], iSPWidth, iSPHeight); 366 pcCU->getCUMvField( REF_PIC_LIST_1 )->setMvFieldSP(pcCU, uiSPAddr, pcMvFieldSP[2*iPartitionIdx + 1], iSPWidth, iSPHeight); 367 } 368 } 369 #endif 290 370 } 291 371 else … … 301 381 } 302 382 } 383 #if LGE_SHARP_VSP_INHERIT_F0104 384 #if H_3D_IC 385 decodeICFlag( pcCU, uiAbsPartIdx, uiDepth ); 386 #endif 387 #if H_3D_ARP 388 decodeARPW ( pcCU, uiAbsPartIdx, uiDepth ); 389 #endif 390 #endif 303 391 } 304 392 #if H_3D_VSP … … 313 401 } 314 402 } 403 #if MTK_SPIVMP_F0110 404 delete pcMvFieldSP; 405 delete puhInterDirSP; 406 #endif 315 407 return; 316 408 } -
trunk/source/Lib/TLibDecoder/TDecSbac.cpp
r655 r724 89 89 #if H_3D_DIM_DMM 90 90 , m_cDmm1DataSCModel ( 1, 1, NUM_DMM1_DATA_CTX , m_contextModels + m_numContextModels, m_numContextModels) 91 #if !SEC_DMM3_RBC_F0147 91 92 , m_cDmm3DataSCModel ( 1, 1, NUM_DMM3_DATA_CTX , m_contextModels + m_numContextModels, m_numContextModels) 93 #endif 92 94 #endif 93 95 #if H_3D_DIM_RBC … … 176 178 #if H_3D_DIM_DMM 177 179 m_cDmm1DataSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_DMM1_DATA ); 180 #if !SEC_DMM3_RBC_F0147 178 181 m_cDmm3DataSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_DMM3_DATA ); 182 #endif 179 183 #endif 180 184 #if H_3D_DIM_RBC … … 249 253 #if H_3D_DIM_DMM 250 254 m_cDmm1DataSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_DMM1_DATA ); 255 #if !SEC_DMM3_RBC_F0147 251 256 m_cDmm3DataSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_DMM3_DATA ); 257 #endif 252 258 #endif 253 259 #if H_3D_DIM_RBC … … 408 414 } 409 415 416 #if QC_DIM_DELTADC_UNIFY_F0132 417 Void TDecSbac::xParseDimDeltaDC( Pel& rValDeltaDC, UInt uiNumSeg ) 418 { 419 UInt absValDeltaDC = 0; 420 xReadExGolombLevel( absValDeltaDC, m_cDdcDataSCModel.get(0, 0, 0) ); 421 rValDeltaDC = (Pel)absValDeltaDC + ( uiNumSeg > 1 ? 0 : 1 ); 422 423 if( rValDeltaDC != 0 ) 424 { 425 UInt uiSign; 426 m_pcTDecBinIf->decodeBinEP( uiSign ); 427 if ( uiSign ) 428 { 429 rValDeltaDC = -rValDeltaDC; 430 } 431 } 432 } 433 #else 410 434 Void TDecSbac::xParseDimDeltaDC( Pel& rValDeltaDC, UInt dimType ) 411 435 { … … 424 448 } 425 449 } 450 #endif 451 426 452 #if H_3D_DIM_DMM 427 453 Void TDecSbac::xParseDmm1WedgeIdx( UInt& ruiTabIdx, Int iNumBit ) … … 435 461 ruiTabIdx = uiIdx; 436 462 } 437 463 #if !SEC_DMM3_RBC_F0147 438 464 Void TDecSbac::xParseDmm3WedgeIdx( UInt& ruiIntraIdx, Int iNumBit ) 439 465 { … … 446 472 ruiIntraIdx = uiIdx; 447 473 } 474 #endif 448 475 #endif 449 476 #if H_3D_DIM_RBC … … 1140 1167 pcCU->setDmmWedgeTabIdxSubParts( uiTabIdx, dimType, absPartIdx, depth ); 1141 1168 } break; 1169 #if !SEC_DMM3_RBC_F0147 1142 1170 case( DMM3_IDX ): 1143 1171 { … … 1146 1174 pcCU->setDmm3IntraTabIdxSubParts( uiIntraIdx, absPartIdx, depth ); 1147 1175 } break; 1176 #endif 1148 1177 case( DMM4_IDX ): break; 1149 1178 #endif … … 1157 1186 } 1158 1187 1159 #if H_3D_DIM_SDC 1188 #if H_3D_DIM_SDC && !QC_DIM_DELTADC_UNIFY_F0132 1160 1189 if( pcCU->getSDCFlag(absPartIdx) ) 1161 1190 { … … 1173 1202 { 1174 1203 #endif 1204 #if QC_DIM_DELTADC_UNIFY_F0132 1205 if( dimType < DIM_NUM_TYPE || pcCU->getSDCFlag( absPartIdx ) ) 1206 #else 1175 1207 if( dimType < DIM_NUM_TYPE ) 1208 #endif 1176 1209 { 1177 1210 UInt symbol; 1211 #if QC_DIM_DELTADC_UNIFY_F0132 1212 UInt uiNumSegments = ( dir == PLANAR_IDX ) ? 1 : 2; 1213 1214 if( pcCU->getSDCFlag( absPartIdx ) ) 1215 { 1216 assert(pcCU->getPartitionSize(absPartIdx)==SIZE_2Nx2N); 1217 pcCU->setTrIdxSubParts(0, absPartIdx, depth); 1218 pcCU->setCbfSubParts(1, 1, 1, absPartIdx, depth); 1219 } 1220 1221 m_pcTDecBinIf->decodeBin( symbol, m_cDdcFlagSCModel.get(0, 0, uiNumSegments-1) ); 1222 1223 if( symbol ) 1224 { 1225 if( !pcCU->getSDCFlag( absPartIdx ) ) 1226 { 1227 dir += symbol; 1228 } 1229 } 1230 for( UInt segment = 0; segment < uiNumSegments; segment++ ) 1231 { 1232 Pel valDeltaDC = 0; 1233 if( symbol ) 1234 { 1235 xParseDimDeltaDC( valDeltaDC, uiNumSegments ); 1236 } 1237 1238 if( pcCU->getSDCFlag( absPartIdx ) ) 1239 { 1240 pcCU->setSDCSegmentDCOffset( valDeltaDC, segment, absPartIdx ); 1241 } 1242 else 1243 { 1244 pcCU->setDimDeltaDC( dimType, segment, absPartIdx, valDeltaDC ); 1245 } 1246 } 1247 #else 1178 1248 m_pcTDecBinIf->decodeBin( symbol, m_cDdcFlagSCModel.get(0, 0, (RBC_IDX == dimType) ? 1 : 0) ); 1179 1249 if( symbol ) … … 1187 1257 } 1188 1258 } 1189 } 1190 #if H_3D_DIM_SDC 1259 #endif 1260 } 1261 #if H_3D_DIM_SDC && !QC_DIM_DELTADC_UNIFY_F0132 1191 1262 } 1192 1263 #endif … … 1218 1289 else if( puIdx == 0 ) 1219 1290 { 1291 #if SEC_DMM3_RBC_F0147 1292 while( binNum < 1 && symbol ) 1293 #else 1220 1294 while( binNum < 3 && symbol ) 1295 #endif 1221 1296 { 1222 1297 ctxDepthMode = puIdx*3 + ((binNum >= 2) ? 2 : binNum); … … 1225 1300 binNum++; 1226 1301 } 1302 #if SEC_DMM3_RBC_F0147 1303 if( modeCode == 0 ) { dir = 0; sdcFlag = 0;} 1304 else if( modeCode == 1 ) { dir = (2*DMM1_IDX+DIM_OFFSET); sdcFlag = 0;} 1305 #else 1227 1306 if( modeCode == 0 ) { dir = 0; sdcFlag = 0;} 1228 1307 else if( modeCode == 2 ) { dir = (2*DMM1_IDX+DIM_OFFSET); sdcFlag = 0;} 1229 1308 else if( modeCode == 6 ) { dir = (2*DMM3_IDX+DIM_OFFSET); sdcFlag = 0;} 1230 1309 else if( modeCode == 7 ) { dir = (2* RBC_IDX+DIM_OFFSET); sdcFlag = 0;} 1310 #endif 1231 1311 } 1232 1312 else 1233 1313 { 1314 #if SEC_DMM3_RBC_F0147 1315 while( binNum < 4 && symbol ) 1316 { 1317 ctxDepthMode = puIdx*3 + ((binNum >= 2) ? 2 : binNum); 1318 m_pcTDecBinIf->decodeBin( symbol, m_cDepthIntraModeSCModel.get(0,0,ctxDepthMode) ); 1319 modeCode = (modeCode<<1) + symbol; 1320 binNum++; 1321 } 1322 if ( modeCode == 0 ) { dir = PLANAR_IDX; sdcFlag = 1;} 1323 else if ( modeCode == 2 ) { dir = 5; sdcFlag = 0;} 1324 else if ( modeCode == 6 ) { dir = (2*DMM1_IDX+DIM_OFFSET); sdcFlag = 1;} 1325 else if ( modeCode == 14 ) { dir = (2*DMM1_IDX+DIM_OFFSET); sdcFlag = 0;} 1326 else if ( modeCode == 15 ) { dir = (2*DMM4_IDX+DIM_OFFSET); sdcFlag = 0;} 1327 #else 1234 1328 UInt maxBinNum = 0; 1235 1329 m_pcTDecBinIf->decodeBinEP(symbol); … … 1263 1357 else if ( modeCode == 3 ) { dir = (2*DMM4_IDX+DIM_OFFSET); sdcFlag = 0;} 1264 1358 } 1359 #endif 1265 1360 } 1266 1361 pcCU->setLumaIntraDirSubParts( (UChar)dir, absPartIdx, depth ); -
trunk/source/Lib/TLibDecoder/TDecSbac.h
r655 r724 99 99 #if H_3D_DIM 100 100 Void xReadExGolombLevel ( UInt& ruiSymbol, ContextModel& rcSCModel ); 101 #if QC_DIM_DELTADC_UNIFY_F0132 102 Void xParseDimDeltaDC ( Pel& rValDeltaDC, UInt uiNumSeg ); 103 #else 101 104 Void xParseDimDeltaDC ( Pel& rValDeltaDC, UInt dimType ); 105 #endif 102 106 #if H_3D_DIM_DMM 103 107 Void xParseDmm1WedgeIdx ( UInt& ruiTabIdx, Int iNumBit ); 108 #if !SEC_DMM3_RBC_F0147 104 109 Void xParseDmm3WedgeIdx ( UInt& ruiIntraIdx, Int iNumBit ); 110 #endif 105 111 #endif 106 112 #if H_3D_DIM_RBC … … 213 219 #if H_3D_DIM_DMM 214 220 ContextModel3DBuffer m_cDmm1DataSCModel; 221 #if !SEC_DMM3_RBC_F0147 215 222 ContextModel3DBuffer m_cDmm3DataSCModel; 223 #endif 216 224 #endif 217 225 #if H_3D_DIM_RBC -
trunk/source/Lib/TLibDecoder/TDecTop.cpp
r655 r724 282 282 } 283 283 284 #if QC_DEPTH_IV_MRG_F0125 285 Void 286 CamParsCollector::copyCamParamForSlice( TComSlice* pcSlice ) 287 { 288 UInt uiViewIndex = pcSlice->getViewIndex(); 289 290 pcSlice->getSPS()->initCamParaSPS( uiViewIndex, m_uiCamParsCodedPrecision, m_bCamParsVaryOverTime, m_aaiCodedScale, m_aaiCodedOffset ); 291 292 if( m_bCamParsVaryOverTime ) 293 { 294 pcSlice->setCamparaSlice( m_aaiCodedScale, m_aaiCodedOffset ); 295 } 296 } 297 #endif 298 284 299 Bool 285 300 CamParsCollector::xIsComplete() … … 951 966 pcSlice->setRefPicList ( tempRefPicLists, usedAsLongTerm, numPocTotalCurr, true ); 952 967 #if H_3D_ARP 968 #if SHARP_ARP_REF_CHECK_F0105 969 pcSlice->setARPStepNum(m_ivPicLists); 970 #else 953 971 pcSlice->setARPStepNum(); 972 #endif 954 973 if( pcSlice->getARPStepNum() > 1 ) 955 974 { … … 1053 1072 } 1054 1073 1074 #if QC_DEPTH_IV_MRG_F0125 1075 if( pcSlice->getIsDepth() && m_pcCamParsCollector ) 1076 { 1077 m_pcCamParsCollector->copyCamParamForSlice( pcSlice ); 1078 } 1079 #endif 1080 1055 1081 // Decode a picture 1056 1082 m_cGopDecoder.decompressSlice(nalu.m_Bitstream, pcPic); … … 1060 1086 m_pcCamParsCollector->setSlice( pcSlice ); 1061 1087 } 1088 #if QC_DEPTH_IV_MRG_F0125 1089 if( pcSlice->getIsDepth() ) 1090 { 1091 pcSlice->getSPS()->setHasCamParInSliceHeader( false ); 1092 } 1093 #endif 1062 1094 #endif 1063 1095 m_bFirstSliceInPicture = false; -
trunk/source/Lib/TLibDecoder/TDecTop.h
r655 r724 77 77 Bool isInitialized() const { return m_bInitialized; } 78 78 Int**** getBaseViewShiftLUTI() { return m_aiBaseViewShiftLUT; } 79 80 #if QC_DEPTH_IV_MRG_F0125 81 Void copyCamParamForSlice( TComSlice* pcSlice ); 82 #endif 79 83 80 84 private:
Note: See TracChangeset for help on using the changeset viewer.