Ignore:
Timestamp:
22 May 2013, 22:32:57 (11 years ago)
Author:
tech
Message:

Merged missing parts.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-6.2-dev0/source/Lib/TLibDecoder/TDecSbac.cpp

    r433 r434  
    919919  pcCU->setPredModeSubParts( (PredMode)iPredMode, uiAbsPartIdx, uiDepth );
    920920}
     921#if PKU_QC_DEPTH_INTRA_UNI_D0195
     922Void TDecSbac::parseDepthIntraMode  ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
     923{
     924  UInt uiPuIdx = ( pcCU->getWidth(uiAbsPartIdx) == 64 )? 2 : ( ( pcCU->getPartitionSize(uiAbsPartIdx) == SIZE_NxN && pcCU->getWidth(uiAbsPartIdx) == 8 )? 0 : 1);
     925  UInt uiDir = 0;
     926  Bool bSDCFlag = 0;
     927  UInt uiSymbol = 1;
     928  UInt uiCode = 0 ;
     929  UInt uiBinNum = 0;
     930  UInt uiCtxDepthMode = 0;
     931  if ( uiPuIdx ==2 )
     932  {
     933    while(uiBinNum<2 && uiSymbol)
     934    {
     935      uiCtxDepthMode = uiPuIdx*3 + uiBinNum;
     936      m_pcTDecBinIf->decodeBin(uiSymbol,m_cDepthModeModel.get(0,0,uiCtxDepthMode));
     937      uiCode = (uiCode<<1)+uiSymbol;
     938      uiBinNum++;
     939    }
     940    if (uiCode == 0)      { uiDir = PLANAR_IDX; bSDCFlag = 1;}
     941    else if (uiCode == 2) { uiDir = 0;          bSDCFlag = 0;}
     942    else if (uiCode == 3) { uiDir = DC_IDX;     bSDCFlag = 1;}
     943  }
     944  else if ( uiPuIdx ==0 )
     945  {
     946    while(uiBinNum<3 && uiSymbol)
     947    {
     948      uiCtxDepthMode = uiPuIdx*3 + ( uiBinNum >= 2? 2 : uiBinNum );
     949      m_pcTDecBinIf->decodeBin(uiSymbol,m_cDepthModeModel.get(0,0,uiCtxDepthMode));
     950      uiCode = (uiCode<<1)+uiSymbol;
     951      uiBinNum++;
     952    }
     953    if (uiCode == 0)      { uiDir = 0;                     bSDCFlag = 0;}
     954    else if (uiCode == 2) { uiDir = DMM_WEDGE_FULL_IDX;    bSDCFlag = 0;}
     955    else if (uiCode == 6) { uiDir = DMM_WEDGE_PREDTEX_IDX; bSDCFlag = 0;}
     956    else if (uiCode == 7) { uiDir = EDGE_INTRA_IDX;        bSDCFlag = 0;}
     957  }
     958  else
     959  {
     960    uiCtxDepthMode = uiPuIdx*3 ;
     961    m_pcTDecBinIf->decodeBin(uiSymbol,m_cDepthModeModel.get(0,0,uiCtxDepthMode));
     962    uiCode = (uiCode<<1)+uiSymbol;
     963    if (!uiSymbol)
     964    {
     965      uiCtxDepthMode = uiPuIdx*3 + 1;
     966      m_pcTDecBinIf->decodeBin(uiSymbol,m_cDepthModeModel.get(0,0,uiCtxDepthMode));
     967      uiCode = (uiCode<<1)+uiSymbol;
     968      if (uiSymbol)
     969      {
     970        uiCtxDepthMode = uiPuIdx*3 + 2;
     971        m_pcTDecBinIf->decodeBin(uiSymbol,m_cDepthModeModel.get(0,0,uiCtxDepthMode));
     972        uiCode = (uiCode<<1)+uiSymbol;
     973      }
     974    }
     975    else
     976    {
     977      uiCtxDepthMode = uiPuIdx*3 + 1;
     978      m_pcTDecBinIf->decodeBin(uiSymbol,m_cDepthModeModel.get(0,0,uiCtxDepthMode));
     979      uiCode = (uiCode<<1)+uiSymbol;
     980      if (!uiSymbol)
     981      {
     982        uiCtxDepthMode = uiPuIdx*3 + 2;
     983        m_pcTDecBinIf->decodeBin(uiSymbol,m_cDepthModeModel.get(0,0,uiCtxDepthMode));
     984        uiCode = (uiCode<<1)+uiSymbol;
     985      }
     986      else
     987      {
     988        uiBinNum = 0;
     989        while( uiSymbol && uiBinNum<3 )
     990        {
     991          uiCtxDepthMode = uiPuIdx*3 + 2;
     992          m_pcTDecBinIf->decodeBin(uiSymbol,m_cDepthModeModel.get(0,0,uiCtxDepthMode));
     993          uiCode = (uiCode<<1)+uiSymbol;
     994          uiBinNum++;
     995        }
     996      }
     997    }
     998    if (uiCode == 0)       { uiDir = PLANAR_IDX;              bSDCFlag = 1;}
     999    else if (uiCode == 2)  { uiDir = 5;                       bSDCFlag = 0;}
     1000    else if (uiCode == 3)  { uiDir = DMM_WEDGE_FULL_IDX;      bSDCFlag = 1;}
     1001    else if (uiCode == 4)  { uiDir = DMM_WEDGE_FULL_IDX;      bSDCFlag = 0;}
     1002    else if (uiCode == 5)  { uiDir = DMM_CONTOUR_PREDTEX_IDX; bSDCFlag = 0;}
     1003    else if (uiCode == 6)  { uiDir = DMM_WEDGE_PREDTEX_IDX;   bSDCFlag = 0;}
     1004    else if (uiCode == 14) { uiDir = DC_IDX;                  bSDCFlag = 1;}
     1005    else if (uiCode == 31) { uiDir = DMM_WEDGE_PREDDIR_IDX;   bSDCFlag = 0;}
     1006    else if (uiCode == 30) { uiDir = EDGE_INTRA_IDX;          bSDCFlag = 0;}
     1007  }
     1008  pcCU->setLumaIntraDirSubParts( (UChar)uiDir, uiAbsPartIdx, uiDepth );
     1009  pcCU->setSDCFlagSubParts(bSDCFlag, uiAbsPartIdx, 0, uiDepth);
     1010}
     1011Void TDecSbac::parseDepthModelingTable  ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth )
     1012{
     1013  parseDepthIntraMode(pcCU,uiAbsPartIdx,uiDepth);
     1014 
     1015  UInt uiDir = pcCU->getLumaIntraDir(uiAbsPartIdx);
     1016  Bool bSdcFlag =  pcCU->getSDCAvailable(uiAbsPartIdx) && pcCU->getSDCFlag(uiAbsPartIdx);
     1017  Bool bDmmFlag = (uiDir >= NUM_INTRA_MODE && uiDir < EDGE_INTRA_IDX &&(!bSdcFlag))? 1:0;
     1018  if (uiDir >= NUM_INTRA_MODE && uiDir < EDGE_INTRA_IDX)//DMM modes and SDC DMM1
     1019  {
     1020    if( uiDir == DMM_WEDGE_FULL_IDX )          { xParseWedgeFullInfo          ( pcCU, uiAbsPartIdx, uiDepth ); }
     1021    else if( uiDir == DMM_WEDGE_PREDTEX_IDX )  { xParseWedgePredTexInfo       ( pcCU, uiAbsPartIdx, uiDepth ); }
     1022    else if( uiDir == DMM_WEDGE_PREDDIR_IDX )  { xParseWedgePredDirInfo       ( pcCU, uiAbsPartIdx, uiDepth ); }
     1023  }
     1024  else if(uiDir >= EDGE_INTRA_IDX)//CCM mode
     1025  {
     1026    xParseEdgeIntraInfo( pcCU, uiAbsPartIdx, uiDepth );
     1027  }
    9211028 
    9221029  UInt uiSymbol;
     
    10781185        bCodeEdgeIntra = true;
    10791186    }
     1187#endif
    10801188#endif
    10811189    Int uiPreds[3] = {-1, -1, -1};
Note: See TracChangeset for help on using the changeset viewer.