Changeset 443 in 3DVCSoftware for trunk/source/Lib/TLibDecoder/TDecEntropy.cpp


Ignore:
Timestamp:
26 May 2013, 15:41:34 (11 years ago)
Author:
tech
Message:
  • Reintegrated branch 6.2-dev0 rev. 442.
  • Changed version number.
  • Added coding results.
File:
1 edited

Legend:

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

    r332 r443  
    108108}
    109109
     110#if QC_ARP_D0177
     111Void TDecEntropy::decodeARPW( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, TComDataCU* pcSubCU, UInt uiPUIdx )
     112{
     113  if( pcCU->getSlice()->getViewId() == 0 || pcCU->getSlice()->getIsDepth() == true || !pcCU->getSlice()->getARPStepNum() )
     114    return;
     115  assert( !pcCU->isIntra( uiAbsPartIdx ) );
     116  Bool bResPredAvailable = !pcCU->getSlice()->getARPStepNum() ? false: ((pcCU->getPartitionSize(uiAbsPartIdx)==SIZE_2Nx2N || pcCU->isSkipped(uiAbsPartIdx)) ? true: false);
     117  if(!bResPredAvailable)
     118    pcCU->setARPWSubParts( 0 , uiAbsPartIdx, uiDepth ); 
     119  else
     120    m_pcEntropyDecoderIf->parseARPW( pcCU , uiAbsPartIdx , uiDepth );
     121}
     122#endif
    110123Void TDecEntropy::decodeSplitFlag   ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
    111124{
     
    117130  m_pcEntropyDecoderIf->parsePredMode( pcCU, uiAbsPartIdx, uiDepth );
    118131 
     132#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    119133#if RWTH_SDC_DLT_B0036
    120134  // if B-Slice, code SDC flag later
     
    125139  }
    126140#endif
     141#endif
    127142}
    128143
    129144Void TDecEntropy::decodePartSize( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
    130145{
     146#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    131147#if RWTH_SDC_DLT_B0036
    132148  if( !pcCU->getSlice()->isInterB() && pcCU->isIntra(uiAbsPartIdx) && pcCU->getSDCFlag(uiAbsPartIdx)  )
     
    137153  }
    138154#endif
     155#endif
    139156 
    140157  m_pcEntropyDecoderIf->parsePartSize( pcCU, uiAbsPartIdx, uiDepth );
    141158 
     159#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    142160#if RWTH_SDC_DLT_B0036
    143161  if( pcCU->getSlice()->isInterB() && pcCU->getSlice()->getSPS()->isDepth() && pcCU->isIntra(uiAbsPartIdx) )
     
    154172  }
    155173#endif
     174#endif
    156175}
    157176
    158177Void TDecEntropy::decodePredInfo    ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, TComDataCU* pcSubCU )
    159178{
     179#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    160180#if RWTH_SDC_DLT_B0036
    161181  if( pcCU->getSDCFlag(uiAbsPartIdx) )
     
    164184    return;
    165185  }
     186#endif
    166187#endif
    167188 
     
    178199      decodeIntraDirModeLuma( pcCU, uiAbsPartIdx + uiPartOffset*2, uiDepth+1 );
    179200      decodeIntraDirModeLuma( pcCU, uiAbsPartIdx + uiPartOffset*3, uiDepth+1 );
     201#if PKU_QC_DEPTH_INTRA_UNI_D0195
     202      if(!pcCU->getSDCFlag(uiAbsPartIdx))
     203#endif
    180204      decodeIntraDirModeChroma( pcCU, uiAbsPartIdx, uiDepth );
    181205    }
     
    183207    {
    184208      decodeIntraDirModeLuma  ( pcCU, uiAbsPartIdx, uiDepth );
     209#if PKU_QC_DEPTH_INTRA_UNI_D0195
     210      if(!pcCU->getSDCFlag(uiAbsPartIdx))
     211#endif
    185212      decodeIntraDirModeChroma( pcCU, uiAbsPartIdx, uiDepth );
    186213    }
     
    189216  {
    190217    decodePUWise( pcCU, uiAbsPartIdx, uiDepth, pcSubCU );
     218#if QC_ARP_D0177
     219    if( pcCU->getSlice()->getSPS()->getUseAdvRP() )
     220    {
     221      decodeARPW( pcCU , uiAbsPartIdx , uiDepth, pcSubCU, 0  );
     222    }
     223#endif
    191224  }
    192225}
     
    301334      UInt uiMergeIndex = pcCU->getMergeIndex(uiSubPartIdx);
    302335#if MERL_VSP_C0152
     336#if LGE_VSP_INHERIT_D0092
     337      Int iVSPIndexTrue[MRG_MAX_NUM_CANDS_MEM];
     338      for (Int i=0; i<MRG_MAX_NUM_CANDS_MEM; i++)
     339      {
     340          iVSPIndexTrue[i] = 0;
     341      }
     342#else
    303343      Int iVSPIndexTrue[3] = {-1, -1, -1};
     344#endif
     345#if MERL_VSP_NBDV_RefVId_Fix_D0166
     346      Int iVSPDirTrue[3]   = {-1, -1, -1};
     347      pcSubCU->getInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, uiDepth, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, iVSPIndexTrue, iVSPDirTrue, uiMergeIndex );
     348#else
    304349      pcSubCU->getInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, uiDepth, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, iVSPIndexTrue, uiMergeIndex );
    305 
     350#endif
    306351#if HHI_MPI
    307352      if(pcCU->getTextureModeDepth( uiSubPartIdx ) == uiDepth)//MPI is used
     
    311356        for( UInt ui = 0; ui < uiCurrPartNumb; ui++ )
    312357        {
    313           Int vspIdx = pcTextureCU->getVSPIndex( uiAbsPartIdx + ui);
     358          Int vspIdx = pcTextureCU->getVSPIndex( uiAbsPartIdx + ui );
    314359          pcCU->setVSPIndex( uiAbsPartIdx + ui, vspIdx);
     360#if MERL_VSP_NBDV_RefVId_Fix_D0166
     361          Int vspDir = pcTextureCU->getVSPDir( uiAbsPartIdx + ui );
     362          pcCU->setVSPDir( uiAbsPartIdx + ui, vspDir);
     363#endif
    315364        }
    316365      }
    317366      else // MPI not used
    318367#endif
     368#if MTK_D0156
     369          if( !pcCU->getSlice()->getSPS()->getUseVSPCompensation() )
     370          {
     371              pcCU->setVSPIndexSubParts( 0, uiSubPartIdx, uiPartIdx, uiDepth );
     372          }
     373          else
     374#endif
    319375      {
    320376        Int iVSPIdx = 0;
     377#if LGE_VSP_INHERIT_D0092
     378        if (iVSPIndexTrue[uiMergeIndex] == 1)
     379        {
     380            iVSPIdx = 1;
     381        }
     382#else
    321383        Int numVspIdx;
    322384        numVspIdx = 3;
     
    329391            }
    330392        }
    331         pcCU->setVSPIndexSubParts( iVSPIdx, uiSubPartIdx, uiPartIdx, uiDepth );  //Initialize the VSP, may change later in get InterMergeCandidates()
     393#endif
     394        pcCU->setVSPIndexSubParts( iVSPIdx, uiSubPartIdx, uiPartIdx, uiDepth );               // Initialize
     395#if MERL_VSP_NBDV_RefVId_Fix_D0166
     396        pcCU->setVSPDirSubParts( 0, uiSubPartIdx, uiPartIdx, uiDepth );  // Initialize
     397#endif
     398#if QC_BVSP_CleanUP_D0191 && !LGE_VSP_INHERIT_D0092
     399       if(iVSPIdx != 0)
     400       {
     401         Int iIVCIdx = pcCU->getSlice()->getRefPic(REF_PIC_LIST_0, 0)->getPOC()==pcCU->getSlice()->getPOC() ? 0: pcCU->getSlice()->getNewRefIdx(REF_PIC_LIST_0);
     402         cMvFieldNeighbours[ 2*uiMergeIndex].setRefIdx(iIVCIdx);
     403       }
     404#endif
    332405      }
    333406
     
    479552  {
    480553#if H3D_IVMP
     554#if SEC_TWO_CANDIDATES_FOR_AMVP_D0122
     555    const Int iNumAMVPCands = AMVP_MAX_NUM_CANDS;
     556#else
    481557    const Int iNumAMVPCands = AMVP_MAX_NUM_CANDS + ( pcSubCU->getSlice()->getSPS()->getMultiviewMvPredMode() ? 1 : 0 );
     558#endif
    482559    m_pcEntropyDecoderIf->parseMVPIdx( iMVPIdx, iNumAMVPCands );
    483560#else
     
    789866    assert( pcCU->getCbf(uiAbsPartIdx, TEXT_CHROMA_U) == 1 );
    790867    assert( pcCU->getCbf(uiAbsPartIdx, TEXT_CHROMA_V) == 1 );
    791    
     868#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    792869    decodeSDCResidualData(pcCU, uiAbsPartIdx, uiDepth);
     870#endif
    793871    return;
    794872  }
     
    847925
    848926#if RWTH_SDC_DLT_B0036
     927#if !PKU_QC_DEPTH_INTRA_UNI_D0195
    849928Void TDecEntropy::decodeSDCPredMode( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
    850929{
     
    861940  m_pcEntropyDecoderIf->parseSDCFlag(pcCU, uiAbsPartIdx, uiDepth );
    862941}
    863 
     942#endif
    864943Void TDecEntropy::decodeSDCResidualData( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
    865944{
Note: See TracChangeset for help on using the changeset viewer.