Changeset 833 in 3DVCSoftware for trunk/source/Lib/TLibDecoder/TDecCu.cpp
- Timestamp:
- 7 Feb 2014, 20:31:12 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/Lib/TLibDecoder/TDecCu.cpp
r773 r833 50 50 m_ppcYuvReco = NULL; 51 51 m_ppcCU = NULL; 52 #if H_3D_DBBP 53 m_ppcYuvRecoDBBP = NULL; 54 #endif 52 55 } 53 56 … … 75 78 m_ppcYuvReco = new TComYuv*[m_uiMaxDepth-1]; 76 79 m_ppcCU = new TComDataCU*[m_uiMaxDepth-1]; 80 #if H_3D_DBBP 81 m_ppcYuvRecoDBBP = new TComYuv*[m_uiMaxDepth-1]; 82 #endif 77 83 78 84 UInt uiNumPartitions; … … 86 92 m_ppcYuvReco[ui] = new TComYuv; m_ppcYuvReco[ui]->create( uiWidth, uiHeight ); 87 93 m_ppcCU [ui] = new TComDataCU; m_ppcCU [ui]->create( uiNumPartitions, uiWidth, uiHeight, true, uiMaxWidth >> (m_uiMaxDepth - 1) ); 94 #if H_3D_DBBP 95 m_ppcYuvRecoDBBP[ui] = new TComYuv; m_ppcYuvRecoDBBP[ui]->create( uiWidth, uiHeight ); 96 #endif 88 97 } 89 98 … … 106 115 m_ppcYuvReco[ui]->destroy(); delete m_ppcYuvReco[ui]; m_ppcYuvReco[ui] = NULL; 107 116 m_ppcCU [ui]->destroy(); delete m_ppcCU [ui]; m_ppcCU [ui] = NULL; 117 #if H_3D_DBBP 118 m_ppcYuvRecoDBBP[ui]->destroy(); delete m_ppcYuvRecoDBBP[ui]; m_ppcYuvRecoDBBP[ui] = NULL; 119 #endif 108 120 } 109 121 … … 111 123 delete [] m_ppcYuvReco; m_ppcYuvReco = NULL; 112 124 delete [] m_ppcCU ; m_ppcCU = NULL; 125 #if H_3D_DBBP 126 delete [] m_ppcYuvRecoDBBP; m_ppcYuvRecoDBBP = NULL; 127 #endif 113 128 } 114 129 … … 213 228 DTRACE_CU("cqtDepth" , uiDepth) 214 229 #endif 230 215 231 TComSlice * pcSlice = pcCU->getPic()->getSlice(pcCU->getPic()->getCurrSliceIdx()); 216 232 Bool bStartInCU = pcCU->getSCUAddr()+uiAbsPartIdx+uiCurNumParts>pcSlice->getSliceSegmentCurStartCUAddr()&&pcCU->getSCUAddr()+uiAbsPartIdx<pcSlice->getSliceSegmentCurStartCUAddr(); … … 276 292 #endif 277 293 294 295 #if MTK_DDD_G0063 296 pcCU->setUseDDD( false, uiAbsPartIdx, uiDepth ); 297 #endif 298 278 299 if( (g_uiMaxCUWidth>>uiDepth) >= pcCU->getSlice()->getPPS()->getMinCuDQPSize() && pcCU->getSlice()->getPPS()->getUseDQP()) 279 300 { … … 318 339 if( pcCU->getSlice()->getIsDepth()) 319 340 { 341 #if SEC_DEPTH_DV_DERIVAITON_G0074 342 DvInfo.bDV = m_ppcCU[uiDepth]->getDispforDepth(0, 0, &DvInfo); 343 #else 320 344 DvInfo.bDV = m_ppcCU[uiDepth]->getDispNeighBlocks(0, 0, &DvInfo); 345 #endif 321 346 } 322 347 else … … 390 415 UInt uiMergeIndex = pcCU->getMergeIndex(uiAbsPartIdx); 391 416 417 #if !SEC_IC_ARP_SIG_G0072 392 418 #if H_3D_IC 393 419 m_pcEntropyDecoder->decodeICFlag( pcCU, uiAbsPartIdx, uiDepth ); 394 420 #endif 421 #endif 395 422 #if H_3D_ARP 396 423 m_pcEntropyDecoder->decodeARPW( pcCU , uiAbsPartIdx , uiDepth ); 424 #endif 425 #if SEC_IC_ARP_SIG_G0072 426 #if H_3D_IC 427 m_pcEntropyDecoder->decodeICFlag( pcCU, uiAbsPartIdx, uiDepth ); 428 #endif 397 429 #endif 398 430 … … 434 466 pcCU->setInterDirSubParts( uhInterDirNeighbours[uiMergeIndex], uiAbsPartIdx, 0, uiDepth ); 435 467 468 #if MTK_DDD_G0063 469 if( uiMergeIndex == m_ppcCU[uiDepth]->getUseDDDCandIdx() ) 470 { 471 assert( pcCU->getSlice()->getViewIndex() != 0 ); 472 pcCU->setUseDDD( true, uiAbsPartIdx, 0, uiDepth ); 473 pcCU->setDDDepthSubParts( m_ppcCU[uiDepth]->getDDTmpDepth(),uiAbsPartIdx, 0, uiDepth ); 474 } 475 #endif 476 436 477 TComMv cTmpMv( 0, 0 ); 437 478 for ( UInt uiRefListIdx = 0; uiRefListIdx < 2; uiRefListIdx++ ) … … 443 484 pcCU->getCUMvField( RefPicList( uiRefListIdx ) )->setAllMvd( cTmpMv, SIZE_2Nx2N, uiAbsPartIdx, uiDepth ); 444 485 pcCU->getCUMvField( RefPicList( uiRefListIdx ) )->setAllMvField( cMvFieldNeighbours[ 2*uiMergeIndex + uiRefListIdx ], SIZE_2Nx2N, uiAbsPartIdx, uiDepth ); 486 #if NTT_STORE_SPDV_VSP_G0148 487 if( pcCU->getVSPFlag( uiAbsPartIdx ) != 0 ) 488 { 489 if ( uhInterDirNeighbours[ uiMergeIndex ] & (1<<uiRefListIdx) ) 490 { 491 UInt dummy; 492 Int vspSize; 493 Int width, height; 494 m_ppcCU[uiDepth]->getPartIndexAndSize( uiAbsPartIdx, dummy, width, height ); 495 m_ppcCU[uiDepth]->setMvFieldPUForVSP( pcCU, uiAbsPartIdx, width, height, RefPicList( uiRefListIdx ), cMvFieldNeighbours[ 2*uiMergeIndex + uiRefListIdx ].getRefIdx(), vspSize ); 496 pcCU->setVSPFlag( uiAbsPartIdx, vspSize ); 497 } 498 } 499 #endif 445 500 #if ENC_DEC_TRACE && H_MV_ENC_DEC_TRAC 446 501 if ( g_decTraceMvFromMerge ) … … 496 551 m_pcEntropyDecoder->decodePartSize( pcCU, uiAbsPartIdx, uiDepth ); 497 552 553 #if QC_SDC_UNIFY_G0130 554 m_pcEntropyDecoder->decodeSDCFlag( pcCU, uiAbsPartIdx, uiDepth ); 555 #endif 498 556 if (pcCU->isIntra( uiAbsPartIdx ) && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_2Nx2N ) 499 557 { … … 515 573 // prediction mode ( Intra : direction mode, Inter : Mv, reference idx ) 516 574 m_pcEntropyDecoder->decodePredInfo( pcCU, uiAbsPartIdx, uiDepth, m_ppcCU[uiDepth]); 517 #if H_3D_INTER_SDC 575 #if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130 518 576 m_pcEntropyDecoder->decodeInterSDCFlag( pcCU, uiAbsPartIdx, uiDepth ); 519 577 #endif … … 585 643 { 586 644 case MODE_INTER: 645 #if H_3D_DBBP 646 if( m_ppcCU[uiDepth]->getDBBPFlag(0) ) 647 { 648 xReconInterDBBP( m_ppcCU[uiDepth], uiAbsPartIdx, uiDepth ); 649 } 650 else 651 { 652 #endif 587 653 #if H_3D_INTER_SDC 654 #if QC_SDC_UNIFY_G0130 655 if( m_ppcCU[uiDepth]->getSDCFlag( 0 ) ) 656 #else 588 657 if( m_ppcCU[uiDepth]->getInterSDCFlag( 0 ) ) 658 #endif 589 659 { 590 660 xReconInterSDC( m_ppcCU[uiDepth], uiAbsPartIdx, uiDepth ); … … 595 665 xReconInter( m_ppcCU[uiDepth], uiDepth ); 596 666 #if H_3D_INTER_SDC 667 } 668 #endif 669 #if H_3D_DBBP 597 670 } 598 671 #endif … … 646 719 UInt uiWidth = pcCU->getWidth ( 0 ); 647 720 UInt uiHeight = pcCU->getHeight( 0 ); 721 #if !SEC_INTER_SDC_G0101 648 722 UChar* pMask = pcCU->getInterSDCMask(); 649 723 650 724 memset( pMask, 0, uiWidth*uiHeight ); 651 725 pcCU->xSetInterSDCCUMask( pcCU, pMask ); 726 #endif 652 727 653 728 Pel *pResi; … … 660 735 for( uiPelX = 0; uiPelX < uiWidth; uiPelX++ ) 661 736 { 737 #if SEC_INTER_SDC_G0101 738 pResi[ uiPelX ] = pcCU->getSDCSegmentDCOffset( 0, 0 ); 739 #else 662 740 UChar uiSeg = pMask[ uiPelX + uiPelY*uiWidth ]; 663 664 pResi[ uiPelX ] = pcCU->getInterSDCSegmentDCOffset( uiSeg, 0 );; 741 #if QC_SDC_UNIFY_G0130 742 pResi[ uiPelX ] = pcCU->getSDCSegmentDCOffset( uiSeg, 0 ); 743 #else 744 pResi[ uiPelX ] = pcCU->getInterSDCSegmentDCOffset( uiSeg, 0 ); 745 #endif 746 #endif 665 747 } 666 748 pResi += uiResiStride; … … 684 766 pRecCb += uiStrideC; 685 767 pRecCr += uiStrideC; 768 } 769 } 770 #endif 771 772 #if H_3D_DBBP 773 Void TDecCu::xReconInterDBBP( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) 774 { 775 AOF(!pcCU->getSlice()->getIsDepth()); 776 AOF(!pcCU->getSlice()->isIntra()); 777 PartSize ePartSize = pcCU->getPartitionSize( 0 ); 778 779 // get collocated depth block 780 UInt uiDepthStride = 0; 781 Pel* pDepthPels = pcCU->getVirtualDepthBlock(0, pcCU->getWidth(0), pcCU->getHeight(0), uiDepthStride); 782 AOF( pDepthPels != NULL ); 783 AOF( uiDepthStride != 0 ); 784 785 // compute mask by segmenting depth block 786 Bool pMask[MAX_CU_SIZE*MAX_CU_SIZE]; 787 Bool bValidMask = m_pcPrediction->getSegmentMaskFromDepth(pDepthPels, uiDepthStride, pcCU->getWidth(0), pcCU->getHeight(0), pMask); 788 AOF(bValidMask); 789 790 DBBPTmpData* pDBBPTmpData = pcCU->getDBBPTmpData(); 791 TComYuv* apSegPredYuv[2] = { m_ppcYuvReco[uiDepth], m_ppcYuvRecoDBBP[uiDepth] }; 792 793 // first, extract the two sets of motion parameters 794 UInt uiPUOffset = ( g_auiPUOffset[UInt( ePartSize )] << ( ( pcCU->getSlice()->getSPS()->getMaxCUDepth() - uiDepth ) << 1 ) ) >> 4; 795 for( UInt uiSegment = 0; uiSegment < 2; uiSegment++ ) 796 { 797 UInt uiPartAddr = uiSegment*uiPUOffset; 798 799 pDBBPTmpData->auhInterDir[uiSegment] = pcCU->getInterDir(uiPartAddr); 800 801 for ( UInt uiRefListIdx = 0; uiRefListIdx < 2; uiRefListIdx++ ) 802 { 803 RefPicList eRefList = (RefPicList)uiRefListIdx; 804 pcCU->getMvField(pcCU, uiPartAddr, eRefList, pDBBPTmpData->acMvField[uiSegment][eRefList]); 805 } 806 807 pDBBPTmpData->ahVSPFlag[uiSegment] = pcCU->getVSPFlag( uiPartAddr ); 808 pDBBPTmpData->acDvInfo[uiSegment] = pcCU->getDvInfo( uiPartAddr ); 809 } 810 811 // do motion compensation for each segment as 2Nx2N 812 pcCU->setPartSizeSubParts( SIZE_2Nx2N, 0, uiDepth ); 813 pcCU->setPredModeSubParts( MODE_INTER, 0, uiDepth ); 814 for( UInt uiSegment = 0; uiSegment < 2; uiSegment++ ) 815 { 816 pcCU->setInterDirSubParts( pDBBPTmpData->auhInterDir[uiSegment], 0, 0, uiDepth ); 817 818 pcCU->setVSPFlagSubParts( pDBBPTmpData->ahVSPFlag[uiSegment], 0, 0, uiDepth ); 819 pcCU->setDvInfoSubParts( pDBBPTmpData->acDvInfo[uiSegment], 0, 0, uiDepth ); 820 821 for ( UInt uiRefListIdx = 0; uiRefListIdx < 2; uiRefListIdx++ ) 822 { 823 RefPicList eRefList = (RefPicList)uiRefListIdx; 824 825 pcCU->getCUMvField( eRefList )->setAllMvField( pDBBPTmpData->acMvField[uiSegment][eRefList], SIZE_2Nx2N, 0, 0 ); 826 } 827 828 // inter prediction 829 m_pcPrediction->motionCompensation( pcCU, apSegPredYuv[uiSegment] ); 830 } 831 832 // restore motion information in both segments again 833 pcCU->setPartSizeSubParts( ePartSize, 0, uiDepth ); 834 pcCU->setPredModeSubParts( MODE_INTER, 0, uiDepth ); 835 for( UInt uiSegment = 0; uiSegment < 2; uiSegment++ ) 836 { 837 UInt uiPartAddr = uiSegment*uiPUOffset; 838 839 pcCU->setDBBPFlagSubParts(true, uiPartAddr, uiSegment, uiDepth); 840 841 pcCU->setVSPFlagSubParts( pDBBPTmpData->ahVSPFlag[uiSegment], uiPartAddr, uiSegment, uiDepth ); 842 pcCU->setDvInfoSubParts( pDBBPTmpData->acDvInfo[uiSegment], uiPartAddr, uiSegment, uiDepth ); 843 844 pcCU->setInterDirSubParts(pDBBPTmpData->auhInterDir[uiSegment], uiPartAddr, uiSegment, uiDepth); // interprets depth relative to LCU level 845 846 for ( UInt uiRefListIdx = 0; uiRefListIdx < 2; uiRefListIdx++ ) 847 { 848 RefPicList eRefList = (RefPicList)uiRefListIdx; 849 850 pcCU->getCUMvField( eRefList )->setAllMvField( pDBBPTmpData->acMvField[uiSegment][eRefList], ePartSize, uiPartAddr, 0, uiSegment ); // interprets depth relative to rpcTempCU level 851 } 852 } 853 854 // reconstruct final prediction signal by combining both segments 855 m_pcPrediction->combineSegmentsWithMask(apSegPredYuv, m_ppcYuvReco[uiDepth], pMask, pcCU->getWidth(0), pcCU->getHeight(0)); 856 857 // inter recon 858 xDecodeInterTexture( pcCU, 0, uiDepth ); 859 860 // clip for only non-zero cbp case 861 if ( ( pcCU->getCbf( 0, TEXT_LUMA ) ) || ( pcCU->getCbf( 0, TEXT_CHROMA_U ) ) || ( pcCU->getCbf(0, TEXT_CHROMA_V ) ) ) 862 { 863 m_ppcYuvReco[uiDepth]->addClip( m_ppcYuvReco[uiDepth], m_ppcYuvResi[uiDepth], 0, pcCU->getWidth( 0 ) ); 864 } 865 else 866 { 867 m_ppcYuvReco[uiDepth]->copyPartToPartYuv( m_ppcYuvReco[uiDepth],0, pcCU->getWidth( 0 ),pcCU->getHeight( 0 )); 686 868 } 687 869 } … … 906 1088 UInt uiWidth = pcCU->getWidth ( 0 ); 907 1089 UInt uiHeight = pcCU->getHeight ( 0 ); 908 1090 #if QC_PKU_SDC_SPLIT_G0123 1091 #if HS_TSINGHUA_SDC_SPLIT_G0111 1092 #if QC_GENERIC_SDC_G0122 1093 TComWedgelet* dmm4SegmentationOrg = new TComWedgelet( uiWidth, uiHeight ); 1094 #endif 1095 #else 1096 #if QC_GENERIC_SDC_G0122 1097 TComWedgelet* dmm4Segmentation = new TComWedgelet( uiWidth, uiHeight ); 1098 #endif 1099 #endif 1100 #endif 1101 #if QC_PKU_SDC_SPLIT_G0123 1102 UInt numParts = 1; 1103 UInt i = 0; 1104 UInt sdcDepth = 0; 1105 TComYuv* pcRecoYuv = m_ppcYuvReco[uiDepth]; 1106 TComYuv* pcPredYuv = m_ppcYuvReco[uiDepth]; 1107 TComYuv* pcResiYuv = m_ppcYuvResi[uiDepth]; 1108 1109 UInt uiStride = 0; 1110 Pel* piReco; 1111 Pel* piPred; 1112 Pel* piResi; 1113 1114 UInt uiZOrder; 1115 Pel* piRecIPred; 1116 UInt uiRecIPredStride; 1117 1118 UInt uiLumaPredMode = 0; 1119 1120 #if HS_TSINGHUA_SDC_SPLIT_G0111 1121 if ((uiWidth >> pcCU->getSlice()->getSPS()->getQuadtreeTULog2MaxSize()) > 1) 1122 { 1123 numParts = uiWidth * uiWidth >> (2 * pcCU->getSlice()->getSPS()->getQuadtreeTULog2MaxSize()); 1124 sdcDepth = g_aucConvertToBit[uiWidth] + 2 - pcCU->getSlice()->getSPS()->getQuadtreeTULog2MaxSize(); 1125 uiWidth = uiHeight = (1 << pcCU->getSlice()->getSPS()->getQuadtreeTULog2MaxSize()); 1126 } 1127 #else 1128 if (uiWidth == 64) 1129 { 1130 numParts = 4; 1131 sdcDepth = 1; 1132 uiWidth = uiHeight = 32; 1133 } 1134 #endif 1135 1136 for ( i = 0; i < numParts; i++ ) 1137 { 1138 uiStride = pcRecoYuv->getStride (); 1139 piReco = pcRecoYuv->getLumaAddr( uiAbsPartIdx ); 1140 piPred = pcPredYuv->getLumaAddr( uiAbsPartIdx ); 1141 piResi = pcResiYuv->getLumaAddr( uiAbsPartIdx ); 1142 1143 uiZOrder = pcCU->getZorderIdxInCU() + uiAbsPartIdx; 1144 piRecIPred = pcCU->getPic()->getPicYuvRec()->getLumaAddr( pcCU->getAddr(), uiZOrder ); 1145 uiRecIPredStride = pcCU->getPic()->getPicYuvRec()->getStride (); 1146 1147 uiLumaPredMode = pcCU->getLumaIntraDir ( uiAbsPartIdx ); 1148 1149 AOF( uiWidth == uiHeight ); 1150 #else 909 1151 TComYuv* pcRecoYuv = m_ppcYuvReco[uiDepth]; 910 1152 TComYuv* pcPredYuv = m_ppcYuvReco[uiDepth]; … … 926 1168 AOF( pcCU->getSDCAvailable(uiAbsPartIdx) ); 927 1169 AOF( pcCU->getSDCFlag(uiAbsPartIdx) ); 1170 #endif 928 1171 929 1172 //===== init availability pattern ===== 930 1173 Bool bAboveAvail = false; 931 1174 Bool bLeftAvail = false; 1175 #if QC_PKU_SDC_SPLIT_G0123 1176 pcCU->getPattern()->initPattern ( pcCU, sdcDepth, uiAbsPartIdx ); 1177 pcCU->getPattern()->initAdiPattern( pcCU, uiAbsPartIdx, sdcDepth, m_pcPrediction->getPredicBuf(), m_pcPrediction->getPredicBufWidth(), m_pcPrediction->getPredicBufHeight(), bAboveAvail, bLeftAvail ); 1178 #else 932 1179 pcCU->getPattern()->initPattern ( pcCU, 0, uiAbsPartIdx ); 933 1180 pcCU->getPattern()->initAdiPattern( pcCU, uiAbsPartIdx, 0, m_pcPrediction->getPredicBuf(), m_pcPrediction->getPredicBufWidth(), m_pcPrediction->getPredicBufHeight(), bAboveAvail, bLeftAvail ); 934 1181 #endif 1182 #if !QC_PKU_SDC_SPLIT_G0123 1183 #if QC_GENERIC_SDC_G0122 1184 TComWedgelet* dmm4Segmentation = new TComWedgelet( uiWidth, uiHeight ); 1185 #endif 1186 #endif 1187 #if HS_TSINGHUA_SDC_SPLIT_G0111 1188 TComWedgelet* dmm4Segmentation = new TComWedgelet( uiWidth, uiHeight ); 1189 #endif 935 1190 //===== get prediction signal ===== 936 1191 #if H_3D_DIM 937 1192 if( isDimMode( uiLumaPredMode ) ) 938 1193 { 939 m_pcPrediction->predIntraLumaDepth( pcCU, uiAbsPartIdx, uiLumaPredMode, piPred, uiStride, uiWidth, uiHeight ); 1194 m_pcPrediction->predIntraLumaDepth( pcCU, uiAbsPartIdx, uiLumaPredMode, piPred, uiStride, uiWidth, uiHeight 1195 #if QC_GENERIC_SDC_G0122 1196 , false, dmm4Segmentation 1197 #endif 1198 ); 1199 #if HS_TSINGHUA_SDC_SPLIT_G0111 1200 Bool* dmm4PatternSplit = dmm4Segmentation->getPattern(); 1201 Bool* dmm4PatternOrg = dmm4SegmentationOrg->getPattern(); 1202 for( UInt k = 0; k < (uiWidth*uiHeight); k++ ) 1203 { 1204 dmm4PatternOrg[k+(uiAbsPartIdx<<4)] = dmm4PatternSplit[k]; 1205 } 1206 #endif 940 1207 } 941 1208 else … … 946 1213 } 947 1214 #endif 948 1215 #if QC_PKU_SDC_SPLIT_G0123 1216 if ( numParts > 1 ) 1217 { 1218 for( UInt uiY = 0; uiY < uiHeight; uiY++ ) 1219 { 1220 for( UInt uiX = 0; uiX < uiWidth; uiX++ ) 1221 { 1222 piReco [ uiX ] = ClipY( piPred[ uiX ] ); 1223 piRecIPred [ uiX ] = piReco[ uiX ]; 1224 } 1225 piPred += uiStride; 1226 piReco += uiStride; 1227 piRecIPred += uiRecIPredStride; 1228 } 1229 } 1230 uiAbsPartIdx += ( (uiWidth * uiWidth) >> 4 ); 1231 #if HS_TSINGHUA_SDC_SPLIT_G0111 1232 dmm4Segmentation->destroy(); delete dmm4Segmentation; 1233 #endif 1234 } 1235 uiAbsPartIdx = 0; 1236 1237 if ( numParts > 1 ) 1238 { 1239 uiWidth = pcCU->getWidth( 0 ); 1240 uiHeight = pcCU->getHeight( 0 ); 1241 } 1242 piReco = pcRecoYuv->getLumaAddr( uiAbsPartIdx ); 1243 piPred = pcPredYuv->getLumaAddr( uiAbsPartIdx ); 1244 piResi = pcResiYuv->getLumaAddr( uiAbsPartIdx ); 1245 uiZOrder = pcCU->getZorderIdxInCU() + uiAbsPartIdx; 1246 piRecIPred = pcCU->getPic()->getPicYuvRec()->getLumaAddr( pcCU->getAddr(), uiZOrder ); 1247 uiRecIPredStride = pcCU->getPic()->getPicYuvRec()->getStride (); 1248 #endif 949 1249 // number of segments depends on prediction mode 950 1250 UInt uiNumSegments = 1; … … 963 1263 uiMaskStride = pcWedgelet->getStride(); 964 1264 } 965 1265 #if QC_GENERIC_SDC_G0122 1266 if( getDimType( uiLumaPredMode ) == DMM4_IDX ) 1267 { 1268 uiNumSegments = 2; 1269 #if HS_TSINGHUA_SDC_SPLIT_G0111 1270 pbMask = dmm4SegmentationOrg->getPattern(); 1271 uiMaskStride = dmm4SegmentationOrg->getStride(); 1272 #else 1273 pbMask = dmm4Segmentation->getPattern(); 1274 uiMaskStride = dmm4Segmentation->getStride(); 1275 #endif 1276 } 1277 #endif 966 1278 // get DC prediction for each segment 967 1279 Pel apDCPredValues[2]; … … 1025 1337 pRecCr += uiStrideC; 1026 1338 } 1339 #if QC_GENERIC_SDC_G0122 1340 #if HS_TSINGHUA_SDC_SPLIT_G0111 1341 dmm4SegmentationOrg->destroy(); delete dmm4SegmentationOrg; 1342 #else 1343 dmm4Segmentation->destroy(); delete dmm4Segmentation; 1344 #endif 1345 #endif 1027 1346 } 1028 1347 #endif
Note: See TracChangeset for help on using the changeset viewer.