Changeset 833 in 3DVCSoftware for trunk/source/Lib/TLibDecoder/TDecCu.cpp


Ignore:
Timestamp:
7 Feb 2014, 20:31:12 (11 years ago)
Author:
tech
Message:

Merged 9.3-dev0@831.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/Lib/TLibDecoder/TDecCu.cpp

    r773 r833  
    5050  m_ppcYuvReco = NULL;
    5151  m_ppcCU      = NULL;
     52#if H_3D_DBBP
     53  m_ppcYuvRecoDBBP = NULL;
     54#endif
    5255}
    5356
     
    7578  m_ppcYuvReco = new TComYuv*[m_uiMaxDepth-1];
    7679  m_ppcCU      = new TComDataCU*[m_uiMaxDepth-1];
     80#if H_3D_DBBP
     81  m_ppcYuvRecoDBBP = new TComYuv*[m_uiMaxDepth-1];
     82#endif
    7783 
    7884  UInt uiNumPartitions;
     
    8692    m_ppcYuvReco[ui] = new TComYuv;    m_ppcYuvReco[ui]->create( uiWidth, uiHeight );
    8793    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
    8897  }
    8998 
     
    106115    m_ppcYuvReco[ui]->destroy(); delete m_ppcYuvReco[ui]; m_ppcYuvReco[ui] = NULL;
    107116    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
    108120  }
    109121 
     
    111123  delete [] m_ppcYuvReco; m_ppcYuvReco = NULL;
    112124  delete [] m_ppcCU     ; m_ppcCU      = NULL;
     125#if H_3D_DBBP
     126  delete [] m_ppcYuvRecoDBBP; m_ppcYuvRecoDBBP = NULL;
     127#endif
    113128}
    114129
     
    213228  DTRACE_CU("cqtDepth"  , uiDepth)
    214229#endif
     230
    215231  TComSlice * pcSlice = pcCU->getPic()->getSlice(pcCU->getPic()->getCurrSliceIdx());
    216232  Bool bStartInCU = pcCU->getSCUAddr()+uiAbsPartIdx+uiCurNumParts>pcSlice->getSliceSegmentCurStartCUAddr()&&pcCU->getSCUAddr()+uiAbsPartIdx<pcSlice->getSliceSegmentCurStartCUAddr();
     
    276292#endif
    277293
     294
     295#if MTK_DDD_G0063
     296      pcCU->setUseDDD( false, uiAbsPartIdx, uiDepth );
     297#endif
     298
    278299  if( (g_uiMaxCUWidth>>uiDepth) >= pcCU->getSlice()->getPPS()->getMinCuDQPSize() && pcCU->getSlice()->getPPS()->getUseDQP())
    279300  {
     
    318339      if( pcCU->getSlice()->getIsDepth())
    319340      {
     341#if SEC_DEPTH_DV_DERIVAITON_G0074
     342        DvInfo.bDV = m_ppcCU[uiDepth]->getDispforDepth(0, 0, &DvInfo);
     343#else
    320344        DvInfo.bDV = m_ppcCU[uiDepth]->getDispNeighBlocks(0, 0, &DvInfo);
     345#endif
    321346      }
    322347      else
     
    390415    UInt uiMergeIndex = pcCU->getMergeIndex(uiAbsPartIdx);
    391416
     417#if !SEC_IC_ARP_SIG_G0072
    392418#if H_3D_IC
    393419    m_pcEntropyDecoder->decodeICFlag( pcCU, uiAbsPartIdx, uiDepth );
    394420#endif
     421#endif
    395422#if H_3D_ARP
    396423    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
    397429#endif
    398430
     
    434466    pcCU->setInterDirSubParts( uhInterDirNeighbours[uiMergeIndex], uiAbsPartIdx, 0, uiDepth );
    435467
     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
    436477    TComMv cTmpMv( 0, 0 );
    437478    for ( UInt uiRefListIdx = 0; uiRefListIdx < 2; uiRefListIdx++ )
     
    443484        pcCU->getCUMvField( RefPicList( uiRefListIdx ) )->setAllMvd( cTmpMv, SIZE_2Nx2N, uiAbsPartIdx, uiDepth );
    444485        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
    445500#if ENC_DEC_TRACE && H_MV_ENC_DEC_TRAC   
    446501        if ( g_decTraceMvFromMerge )
     
    496551  m_pcEntropyDecoder->decodePartSize( pcCU, uiAbsPartIdx, uiDepth );
    497552
     553#if QC_SDC_UNIFY_G0130
     554  m_pcEntropyDecoder->decodeSDCFlag( pcCU, uiAbsPartIdx, uiDepth );
     555#endif
    498556  if (pcCU->isIntra( uiAbsPartIdx ) && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_2Nx2N )
    499557  {
     
    515573  // prediction mode ( Intra : direction mode, Inter : Mv, reference idx )
    516574  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
    518576  m_pcEntropyDecoder->decodeInterSDCFlag( pcCU, uiAbsPartIdx, uiDepth );
    519577#endif
     
    585643  {
    586644    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
    587653#if H_3D_INTER_SDC
     654#if QC_SDC_UNIFY_G0130
     655      if( m_ppcCU[uiDepth]->getSDCFlag( 0 ) )
     656#else
    588657      if( m_ppcCU[uiDepth]->getInterSDCFlag( 0 ) )
     658#endif
    589659      {
    590660        xReconInterSDC( m_ppcCU[uiDepth], uiAbsPartIdx, uiDepth );
     
    595665      xReconInter( m_ppcCU[uiDepth], uiDepth );
    596666#if H_3D_INTER_SDC
     667      }
     668#endif
     669#if H_3D_DBBP
    597670      }
    598671#endif
     
    646719  UInt  uiWidth      = pcCU->getWidth ( 0 );
    647720  UInt  uiHeight     = pcCU->getHeight( 0 );
     721#if !SEC_INTER_SDC_G0101
    648722  UChar* pMask       = pcCU->getInterSDCMask();
    649723
    650724  memset( pMask, 0, uiWidth*uiHeight );
    651725  pcCU->xSetInterSDCCUMask( pcCU, pMask );
     726#endif
    652727
    653728  Pel  *pResi;
     
    660735    for( uiPelX = 0; uiPelX < uiWidth; uiPelX++ )
    661736    {
     737#if SEC_INTER_SDC_G0101
     738      pResi[ uiPelX ] = pcCU->getSDCSegmentDCOffset( 0, 0 );
     739#else
    662740      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
    665747    }
    666748    pResi += uiResiStride;
     
    684766    pRecCb += uiStrideC;
    685767    pRecCr += uiStrideC;
     768  }
     769}
     770#endif
     771
     772#if H_3D_DBBP
     773Void 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 ));
    686868  }
    687869}
     
    9061088  UInt uiWidth        = pcCU->getWidth  ( 0 );
    9071089  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
    9091151  TComYuv* pcRecoYuv  = m_ppcYuvReco[uiDepth];
    9101152  TComYuv* pcPredYuv  = m_ppcYuvReco[uiDepth];
     
    9261168  AOF( pcCU->getSDCAvailable(uiAbsPartIdx) );
    9271169  AOF( pcCU->getSDCFlag(uiAbsPartIdx) );
     1170#endif
    9281171 
    9291172  //===== init availability pattern =====
    9301173  Bool  bAboveAvail = false;
    9311174  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
    9321179  pcCU->getPattern()->initPattern   ( pcCU, 0, uiAbsPartIdx );
    9331180  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
    9351190  //===== get prediction signal =====
    9361191#if H_3D_DIM
    9371192  if( isDimMode( uiLumaPredMode ) )
    9381193  {
    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
    9401207  }
    9411208  else
     
    9461213  }
    9471214#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
    9491249  // number of segments depends on prediction mode
    9501250  UInt uiNumSegments = 1;
     
    9631263    uiMaskStride = pcWedgelet->getStride();
    9641264  }
    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
    9661278  // get DC prediction for each segment
    9671279  Pel apDCPredValues[2];
     
    10251337    pRecCr += uiStrideC;
    10261338  }
     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
    10271346}
    10281347#endif
Note: See TracChangeset for help on using the changeset viewer.