Changeset 1412 in 3DVCSoftware for branches/HTM-16.2-dev/source/Lib/TLibDecoder/TDecCu.cpp
- Timestamp:
- 12 Apr 2018, 11:12:21 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-16.2-dev/source/Lib/TLibDecoder/TDecCu.cpp
r1405 r1412 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-201 6, ITU/ISO/IEC6 * Copyright (c) 2010-2017, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * … … 52 52 m_ppcYuvReco = NULL; 53 53 m_ppcCU = NULL; 54 #if NH_3D _DBBP54 #if NH_3D 55 55 m_ppcYuvRecoDBBP = NULL; 56 56 #endif … … 61 61 } 62 62 63 #if MCTS_ENC_CHECK 64 Void TDecCu::init( TDecEntropy* pcEntropyDecoder, TComTrQuant* pcTrQuant, TComPrediction* pcPrediction, TDecConformanceCheck* pConformanceCheck) 65 #else 63 66 Void TDecCu::init( TDecEntropy* pcEntropyDecoder, TComTrQuant* pcTrQuant, TComPrediction* pcPrediction) 67 #endif 64 68 { 65 69 m_pcEntropyDecoder = pcEntropyDecoder; 66 70 m_pcTrQuant = pcTrQuant; 67 71 m_pcPrediction = pcPrediction; 72 #if MCTS_ENC_CHECK 73 m_pConformanceCheck = pConformanceCheck; 74 #endif 68 75 } 69 76 … … 81 88 m_ppcYuvReco = new TComYuv*[m_uiMaxDepth-1]; 82 89 m_ppcCU = new TComDataCU*[m_uiMaxDepth-1]; 83 #if NH_3D _DBBP90 #if NH_3D 84 91 m_ppcYuvRecoDBBP = new TComYuv*[m_uiMaxDepth-1]; 85 92 #endif … … 102 109 m_ppcYuvReco[ui] = new TComYuv; m_ppcYuvReco[ui]->create( uiWidth, uiHeight, chromaFormatIDC ); 103 110 m_ppcCU [ui] = new TComDataCU; m_ppcCU [ui]->create( chromaFormatIDC, uiNumPartitions, uiWidth, uiHeight, true, uiMaxWidth >> (m_uiMaxDepth - 1) ); 104 #if NH_3D _DBBP111 #if NH_3D 105 112 m_ppcYuvRecoDBBP[ui] = new TComYuv; m_ppcYuvRecoDBBP[ui]->create( uiWidth, uiHeight, chromaFormatIDC ); 106 113 #endif … … 126 133 m_ppcYuvReco[ui]->destroy(); delete m_ppcYuvReco[ui]; m_ppcYuvReco[ui] = NULL; 127 134 m_ppcCU [ui]->destroy(); delete m_ppcCU [ui]; m_ppcCU [ui] = NULL; 128 #if NH_3D _DBBP135 #if NH_3D 129 136 m_ppcYuvRecoDBBP[ui]->destroy(); delete m_ppcYuvRecoDBBP[ui]; m_ppcYuvRecoDBBP[ui] = NULL; 130 137 #endif … … 134 141 delete [] m_ppcYuvReco; m_ppcYuvReco = NULL; 135 142 delete [] m_ppcCU ; m_ppcCU = NULL; 136 #if NH_3D _DBBP143 #if NH_3D 137 144 delete [] m_ppcYuvRecoDBBP; m_ppcYuvRecoDBBP = NULL; 138 145 #endif … … 170 177 Void TDecCu::decompressCtu( TComDataCU* pCtu ) 171 178 { 172 #if !NH_3D _IV_MERGE179 #if !NH_3D 173 180 xDecompressCU( pCtu, 0, 0 ); 174 181 #endif … … 290 297 pcCU->setQPSubParts( pcCU->getRefQP(uiAbsPartIdx), uiAbsPartIdx, uiDepth ); // set QP to default QP 291 298 } 292 #if NH_3D _NBDV299 #if NH_3D 293 300 DisInfo DvInfo; 294 301 DvInfo.m_acNBDV.setZero(); 295 302 DvInfo.m_aVIdxCan = 0; 296 #if NH_3D_NBDV_REF297 303 DvInfo.m_acDoNBDV.setZero(); 298 #endif 299 300 if(!pcCU->getSlice()->isIntra()) 301 { 302 #if NH_3D_ARP && NH_3D_IV_MERGE && NH_3D_VSP 304 305 if(!pcCU->getSlice()->isIntra()) 306 { 303 307 if( pcCU->getSlice()->getIvResPredFlag() || pcCU->getSlice()->getIvMvPredFlag() || pcCU->getSlice()->getViewSynthesisPredFlag() ) 304 #else305 #if NH_3D_IV_MERGE && NH_3D_VSP306 if( pcCU->getSlice()->getIvMvPredFlag() || pcCU->getSlice()->getViewSynthesisPredFlag() )307 #else308 #if NH_3D_ARP && NH_3D_VSP309 if( pcCU->getSlice()->getIvResPredFlag() || pcCU->getSlice()->getViewSynthesisPredFlag() )310 #else311 #if NH_3D_VSP312 if( pcCU->getSlice()->getViewSynthesisPredFlag() )313 #else314 #if H_3D_ARP315 if( pcCU->getSlice()->getIvResPredFlag( ) )316 #else317 #if H_3D_IV_MERGE318 if( pcCU->getSlice()->getVPS()->getIvMvPredFlag(pcCU->getSlice()->getLayerId()) )319 #else320 #if NH_3D_DBBP321 if( pcCU->getSlice()->getDepthBasedBlkPartFlag() )322 #else323 if (0)324 #endif325 #endif326 #endif327 #endif328 #endif329 #endif330 #endif331 308 { 332 309 m_ppcCU[uiDepth]->copyInterPredInfoFrom(pcCU, uiAbsPartIdx, REF_PIC_LIST_0, true); … … 338 315 m_ppcCU[uiDepth]->setHeight(0, pcCU->getSlice()->getSPS()->getMaxCUHeight() / (1 << uiDepth)); 339 316 m_ppcCU[uiDepth]->setPartSizeSubParts(SIZE_2Nx2N, 0, uiDepth); 340 #if NH_3D_IV_MERGE341 317 if( pcCU->getSlice()->getIsDepth()) 342 318 { … … 345 321 else 346 322 { 347 #endif 348 #if NH_3D_NBDV_REF 349 if( pcCU->getSlice()->getDepthBasedBlkPartFlag() ) //Notes from QC: please check the condition for DoNBDV. Remove this comment once it is done. 350 { 351 m_ppcCU[uiDepth]->getDisMvpCandNBDV(&DvInfo, true); 352 } 353 else 354 #endif 355 { 356 m_ppcCU[uiDepth]->getDisMvpCandNBDV(&DvInfo); 357 } 358 #if NH_3D_IV_MERGE 359 } 360 #endif 323 if( pcCU->getSlice()->getDepthBasedBlkPartFlag() ) //Notes from QC: please check the condition for DoNBDV. Remove this comment once it is done. 324 { 325 m_ppcCU[uiDepth]->getDisMvpCandNBDV(&DvInfo, true); 326 } 327 else 328 { 329 m_ppcCU[uiDepth]->getDisMvpCandNBDV(&DvInfo); 330 } 331 } 361 332 #if ENC_DEC_TRACE && NH_MV_ENC_DEC_TRAC 362 333 if ( g_decTraceDispDer ) … … 373 344 m_ppcCU[uiDepth]->setWidth(0, cWidTemp); 374 345 m_ppcCU[uiDepth]->setHeight(0, cHeightTemp); 375 346 } 376 347 } 377 348 #endif … … 382 353 } 383 354 384 if (pps.getTransquantBypassEnable Flag())355 if (pps.getTransquantBypassEnabledFlag()) 385 356 { 386 357 m_pcEntropyDecoder->decodeCUTransquantBypassFlag( pcCU, uiAbsPartIdx, uiDepth ); … … 403 374 m_ppcCU[uiDepth]->copyInterPredInfoFrom( pcCU, uiAbsPartIdx, REF_PIC_LIST_0 ); 404 375 m_ppcCU[uiDepth]->copyInterPredInfoFrom( pcCU, uiAbsPartIdx, REF_PIC_LIST_1 ); 405 #if NH_3D _IV_MERGE376 #if NH_3D 406 377 m_ppcCU[uiDepth]->copyDVInfoFrom(pcCU, uiAbsPartIdx); 407 TComMvField cMvFieldNeighbours[MRG_MAX_NUM_CANDS_MEM << 1]; // double length for mv of both lists408 UChar uhInterDirNeighbours[MRG_MAX_NUM_CANDS_MEM];409 #else410 #if NH_3D_MLC411 378 TComMvField cMvFieldNeighbours[MRG_MAX_NUM_CANDS_MEM << 1]; // double length for mv of both lists 412 379 UChar uhInterDirNeighbours[MRG_MAX_NUM_CANDS_MEM]; … … 415 382 UChar uhInterDirNeighbours[MRG_MAX_NUM_CANDS]; 416 383 #endif 417 #endif418 384 Int numValidMergeCand = 0; 419 385 for( UInt ui = 0; ui < m_ppcCU[uiDepth]->getSlice()->getMaxNumMergeCand(); ++ui ) … … 423 389 m_pcEntropyDecoder->decodeMergeIndex( pcCU, 0, uiAbsPartIdx, uiDepth ); 424 390 UInt uiMergeIndex = pcCU->getMergeIndex(uiAbsPartIdx); 425 #if NH_3D _ARP391 #if NH_3D 426 392 m_pcEntropyDecoder->decodeARPW( pcCU , uiAbsPartIdx , uiDepth ); 427 #endif428 #if NH_3D_IC429 393 m_pcEntropyDecoder->decodeICFlag( pcCU, uiAbsPartIdx, uiDepth ); 430 #endif 431 432 433 #if NH_3D_VSP 394 434 395 Int vspFlag[MRG_MAX_NUM_CANDS_MEM]; 435 396 memset(vspFlag, 0, sizeof(Int)*MRG_MAX_NUM_CANDS_MEM); 436 #endif 437 #if NH_3D_SPIVMP 397 438 398 Bool bSPIVMPFlag[MRG_MAX_NUM_CANDS_MEM]; 439 399 memset(bSPIVMPFlag, false, sizeof(Bool)*MRG_MAX_NUM_CANDS_MEM); … … 442 402 pcMvFieldSP = new TComMvField[pcCU->getPic()->getPicSym()->getNumPartitionsInCtu()*2]; 443 403 puhInterDirSP = new UChar[pcCU->getPic()->getPicSym()->getNumPartitionsInCtu()]; 444 #endif445 446 #if NH_3D_MLC447 404 m_ppcCU[uiDepth]->initAvailableFlags(); 448 405 #endif 406 #if MCTS_ENC_CHECK 407 UInt numSpatialMergeCandidates = 0; 408 m_ppcCU[uiDepth]->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, numSpatialMergeCandidates, uiMergeIndex ); 409 #if MCTS_ENC_CHECK 410 if ( m_pConformanceCheck->getTMctsCheck() && m_ppcCU[uiDepth]->isLastColumnCTUInTile() && (uiMergeIndex >= numSpatialMergeCandidates) ) 411 { 412 m_pConformanceCheck->flagTMctsError("Merge Index using non-spatial merge candidate (Skip)"); 413 } 414 #endif 415 #else 449 416 m_ppcCU[uiDepth]->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); 450 #if NH_3D_MLC 451 m_ppcCU[uiDepth]->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours 452 #if NH_3D_SPIVMP 453 , pcMvFieldSP, puhInterDirSP 454 #endif 455 , numValidMergeCand, uiMergeIndex ); 456 457 m_ppcCU[uiDepth]->buildMCL( cMvFieldNeighbours, uhInterDirNeighbours 458 #if NH_3D_VSP 459 , vspFlag 460 #endif 461 #if NH_3D_SPIVMP 462 , bSPIVMPFlag 463 #endif 464 , numValidMergeCand ); 465 #endif 466 #if NH_3D_VSP 417 #endif 418 #if NH_3D 419 m_ppcCU[uiDepth]->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, pcMvFieldSP, puhInterDirSP, numValidMergeCand, uiMergeIndex ); 420 m_ppcCU[uiDepth]->buildMCL( cMvFieldNeighbours, uhInterDirNeighbours, vspFlag, bSPIVMPFlag, numValidMergeCand ); 467 421 pcCU->setVSPFlagSubParts( vspFlag[uiMergeIndex], uiAbsPartIdx, 0, uiDepth ); 468 422 #endif … … 479 433 pcCU->getCUMvField( RefPicList( uiRefListIdx ) )->setAllMvd( cTmpMv, SIZE_2Nx2N, uiAbsPartIdx, uiDepth ); 480 434 pcCU->getCUMvField( RefPicList( uiRefListIdx ) )->setAllMvField( cMvFieldNeighbours[ 2*uiMergeIndex + uiRefListIdx ], SIZE_2Nx2N, uiAbsPartIdx, uiDepth ); 481 #if NH_3D _VSP435 #if NH_3D 482 436 if( pcCU->getVSPFlag( uiAbsPartIdx ) != 0 ) 483 437 { … … 512 466 } 513 467 } 514 #if NH_3D _SPIVMP468 #if NH_3D 515 469 pcCU->setSPIVMPFlagSubParts(bSPIVMPFlag[uiMergeIndex], uiAbsPartIdx, 0, uiDepth ); 516 470 if (bSPIVMPFlag[uiMergeIndex]) … … 570 524 571 525 xFinishDecodeCU( pcCU, uiAbsPartIdx, uiDepth, isLastCtuOfSliceSegment ); 572 #if NH_3D _IV_MERGE526 #if NH_3D 573 527 xDecompressCU(pcCU, uiAbsPartIdx, uiDepth ); 574 528 #endif … … 576 530 return; 577 531 } 578 #if NH_3D _DIS532 #if NH_3D 579 533 m_pcEntropyDecoder->decodeDIS( pcCU, uiAbsPartIdx, uiDepth ); 580 534 if(!pcCU->getDISFlag(uiAbsPartIdx)) … … 582 536 #endif 583 537 584 m_pcEntropyDecoder->decodePredMode( pcCU, uiAbsPartIdx, uiDepth );585 m_pcEntropyDecoder->decodePartSize( pcCU, uiAbsPartIdx, uiDepth );586 587 if (pcCU->isIntra( uiAbsPartIdx ) && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_2Nx2N )588 {589 m_pcEntropyDecoder->decodeIPCMInfo( pcCU, uiAbsPartIdx, uiDepth );590 591 if(pcCU->getIPCMFlag(uiAbsPartIdx))592 {593 #if NH_3D _SDC_INTRA594 m_pcEntropyDecoder->decodeSDCFlag( pcCU, uiAbsPartIdx, uiDepth );595 #endif 596 xFinishDecodeCU( pcCU, uiAbsPartIdx, uiDepth, isLastCtuOfSliceSegment );597 #if NH_3D _IV_MERGE598 xDecompressCU(pcCU, uiAbsPartIdx, uiDepth );599 #endif 600 return;601 }602 }603 604 // prediction mode ( Intra : direction mode, Inter : Mv, reference idx )605 m_pcEntropyDecoder->decodePredInfo( pcCU, uiAbsPartIdx, uiDepth, m_ppcCU[uiDepth]);606 607 // Coefficient decoding608 Bool bCodeDQP = getdQPFlag();609 Bool isChromaQpAdjCoded = getIsChromaQpAdjCoded();610 m_pcEntropyDecoder->decodeCoeff( pcCU, uiAbsPartIdx, uiDepth, bCodeDQP, isChromaQpAdjCoded );611 setIsChromaQpAdjCoded( isChromaQpAdjCoded );612 setdQPFlag( bCodeDQP );613 #if NH_3D _DIS538 m_pcEntropyDecoder->decodePredMode( pcCU, uiAbsPartIdx, uiDepth ); 539 m_pcEntropyDecoder->decodePartSize( pcCU, uiAbsPartIdx, uiDepth ); 540 541 if (pcCU->isIntra( uiAbsPartIdx ) && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_2Nx2N ) 542 { 543 m_pcEntropyDecoder->decodeIPCMInfo( pcCU, uiAbsPartIdx, uiDepth ); 544 545 if(pcCU->getIPCMFlag(uiAbsPartIdx)) 546 { 547 #if NH_3D 548 m_pcEntropyDecoder->decodeSDCFlag( pcCU, uiAbsPartIdx, uiDepth ); 549 #endif 550 xFinishDecodeCU( pcCU, uiAbsPartIdx, uiDepth, isLastCtuOfSliceSegment ); 551 #if NH_3D 552 xDecompressCU(pcCU, uiAbsPartIdx, uiDepth ); 553 #endif 554 return; 555 } 556 } 557 558 // prediction mode ( Intra : direction mode, Inter : Mv, reference idx ) 559 m_pcEntropyDecoder->decodePredInfo( pcCU, uiAbsPartIdx, uiDepth, m_ppcCU[uiDepth]); 560 561 // Coefficient decoding 562 Bool bCodeDQP = getdQPFlag(); 563 Bool isChromaQpAdjCoded = getIsChromaQpAdjCoded(); 564 m_pcEntropyDecoder->decodeCoeff( pcCU, uiAbsPartIdx, uiDepth, bCodeDQP, isChromaQpAdjCoded ); 565 setIsChromaQpAdjCoded( isChromaQpAdjCoded ); 566 setdQPFlag( bCodeDQP ); 567 #if NH_3D 614 568 } 615 569 #endif 616 570 xFinishDecodeCU( pcCU, uiAbsPartIdx, uiDepth, isLastCtuOfSliceSegment ); 617 #if NH_3D _IV_MERGE571 #if NH_3D 618 572 xDecompressCU(pcCU, uiAbsPartIdx, uiDepth ); 619 573 #endif … … 638 592 { 639 593 TComPic* pcPic = pCtu->getPic(); 640 #if !NH_3D _IV_MERGE594 #if !NH_3D 641 595 TComSlice * pcSlice = pCtu->getSlice(); 642 596 const TComSPS &sps=*(pcSlice->getSPS()); … … 681 635 { 682 636 case MODE_INTER: 683 #if NH_3D _DBBP637 #if NH_3D 684 638 if( m_ppcCU[uiDepth]->getDBBPFlag(0) ) 685 639 { … … 688 642 else 689 643 { 690 #endif691 #if NH_3D_SDC_INTER692 644 if( m_ppcCU[uiDepth]->getSDCFlag( 0 ) ) 693 645 { … … 698 650 #endif 699 651 xReconInter( m_ppcCU[uiDepth], uiDepth ); 700 #if NH_3D_SDC_INTER 701 } 702 #endif 703 #if NH_3D_DBBP 652 #if NH_3D 653 } 704 654 } 705 655 #endif … … 707 657 case MODE_INTRA: 708 658 #if NH_3D 709 #if NH_3D_DIS710 659 if( m_ppcCU[uiDepth]->getDISFlag(0) ) 711 660 { 712 661 xReconDIS( m_ppcCU[uiDepth], 0, uiDepth ); 713 662 } 714 #else715 if(false )716 {717 // xReconDIS( m_ppcCU[uiDepth], 0, uiDepth );718 }719 #endif720 #if NH_3D_SDC_INTRA721 663 else if( m_ppcCU[uiDepth]->getSDCFlag(0) ) 722 664 { 723 665 xReconIntraSDC( m_ppcCU[uiDepth], 0, uiDepth ); 724 666 } 725 #endif726 667 else 727 668 #endif … … 756 697 757 698 // inter prediction 699 #if MCTS_ENC_CHECK 700 if (m_pConformanceCheck->getTMctsCheck() && !m_pcPrediction->checkTMctsMvp(pcCU)) 701 { 702 m_pConformanceCheck->flagTMctsError("motion vector across tile boundaries"); 703 } 704 #endif 758 705 m_pcPrediction->motionCompensation( pcCU, m_ppcYuvReco[uiDepth] ); 759 706 … … 794 741 } 795 742 796 #if NH_3D _DIS743 #if NH_3D 797 744 Void TDecCu::xReconDIS( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) 798 745 { … … 869 816 } 870 817 } 871 #endif 872 #if NH_3D_SDC_INTER 818 873 819 Void TDecCu::xReconInterSDC( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) 874 820 { … … 913 859 } 914 860 } 915 #endif 916 917 #if NH_3D_DBBP 861 918 862 Void TDecCu::xReconInterDBBP( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) 919 863 { … … 926 870 // get collocated depth block 927 871 UInt uiDepthStride = 0; 928 #if H_3D_FCO929 Pel* pDepthPels = pcCU->getVirtualDepthBlock(pcCU->getZorderIdxInCU(), pcCU->getWidth(0), pcCU->getHeight(0), uiDepthStride);930 #else931 872 Pel* pDepthPels = pcCU->getVirtualDepthBlock(0, pcCU->getWidth(0), pcCU->getHeight(0), uiDepthStride); 932 #endif933 873 AOF( pDepthPels != NULL ); 934 874 AOF( uiDepthStride != 0 ); … … 956 896 pcCU->getMvField(pcCU, uiPartAddr, eRefList, pDBBPTmpData->acMvField[uiSegment][eRefList]); 957 897 } 958 959 #if NH_3D 898 960 899 AOF( pcCU->getARPW(uiPartAddr) == 0 ); 961 900 AOF( pcCU->getICFlag(uiPartAddr) == false ); 962 901 AOF( pcCU->getSPIVMPFlag(uiPartAddr) == false ); 963 902 AOF( pcCU->getVSPFlag(uiPartAddr) == 0 ); 964 #endif965 903 } 966 904 … … 1081 1019 1082 1020 //===== get prediction signal ===== 1083 #if NH_3D _DMM1021 #if NH_3D 1084 1022 if( bIsLuma && isDmmMode( uiChFinalMode ) ) 1085 1023 { … … 1090 1028 #endif 1091 1029 m_pcPrediction->predIntraAng( compID, uiChFinalMode, 0 /* Decoder does not have an original image */, 0, piPred, uiStride, rTu, bUseFilteredPredictions ); 1092 #if NH_3D _DMM1030 #if NH_3D 1093 1031 } 1094 1032 #endif … … 1255 1193 } 1256 1194 1257 #if NH_3D _SDC_INTRA1195 #if NH_3D 1258 1196 Void TDecCu::xReconIntraSDC( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) 1259 1197 { … … 1284 1222 UInt uiMaskStride = 0; 1285 1223 1286 #if NH_3D_DMM1287 1224 if( isDmmMode( uiLumaPredMode ) ) 1288 1225 { … … 1330 1267 else // regular HEVC intra modes 1331 1268 { 1332 #endif 1269 1333 1270 uiNumSegments = 1; 1334 1271 … … 1389 1326 1390 1327 m_pcPrediction->predConstantSDC( piPred, uiStride, uiWidth, apDCPredValues[0] ); apDCPredValues[1] = 0; 1391 #if NH_3D_DMM 1392 } 1393 #endif 1394 1328 } 1329 1395 1330 // reconstruct residual based on mask + DC residuals 1396 1331 Pel apDCResiValues[2]; 1397 1332 for( UInt uiSegment = 0; uiSegment < uiNumSegments; uiSegment++ ) 1398 1333 { 1399 #if NH_3D_DLT1400 1334 Pel pPredIdx = pcCU->getSlice()->getPPS()->getDLT()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), apDCPredValues[uiSegment] ); 1401 1335 Pel pResiIdx = pcCU->getSDCSegmentDCOffset(uiSegment, uiAbsPartIdx); … … 1403 1337 1404 1338 apDCResiValues[uiSegment] = pRecoValue - apDCPredValues[uiSegment]; 1405 #else1406 apDCResiValues[uiSegment] = pcCU->getSDCSegmentDCOffset(uiSegment, uiAbsPartIdx);1407 #endif1408 1339 } 1409 1340 … … 1450 1381 pRecCr += uiStrideC; 1451 1382 } 1452 #if NH_3D_DMM1453 1383 if( pbMask ) { delete[] pbMask; } 1454 #endif1455 1384 } 1456 1385 #endif
Note: See TracChangeset for help on using the changeset viewer.