Changeset 712 in 3DVCSoftware for branches/HTM-8.2-dev0/source/Lib/TLibEncoder


Ignore:
Timestamp:
21 Nov 2013, 13:28:24 (11 years ago)
Author:
tech
Message:

Merged DEV3 ( branch HTM-8.2-dev3-Samsung@699 )

Location:
branches/HTM-8.2-dev0/source/Lib/TLibEncoder
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-8.2-dev0/source/Lib/TLibEncoder/TEncCavlc.cpp

    r696 r712  
    13961396    }
    13971397#if H_3D_IC
     1398#if SEC_ONLY_TEXTURE_IC_F0151
     1399    else if( pcSlice->getViewIndex() && ( pcSlice->getSliceType() == P_SLICE || pcSlice->getSliceType() == B_SLICE ) && !pcSlice->getIsDepth())
     1400#else
    13981401    else if( pcSlice->getViewIndex() && ( pcSlice->getSliceType() == P_SLICE || pcSlice->getSliceType() == B_SLICE ) )
     1402#endif
    13991403    {
    14001404      WRITE_FLAG( pcSlice->getApplyIC() ? 1 : 0, "slice_ic_enable_flag" );
  • branches/HTM-8.2-dev0/source/Lib/TLibEncoder/TEncCfg.h

    r696 r712  
    412412#if H_3D_DIM
    413413  Bool      m_useDMM;
     414#if !SEC_DMM3_RBC_F0147
    414415  Bool      m_useRBC;
     416#endif
    415417  Bool      m_useSDC;
    416418  Bool      m_useDLT;
     
    983985  Bool      getUseDMM                       ()        { return m_useDMM; }
    984986  Void      setUseDMM                       ( Bool b) { m_useDMM = b;    }
     987#if !SEC_DMM3_RBC_F0147
    985988  Bool      getUseRBC                       ()        { return m_useRBC; }
    986989  Void      setUseRBC                       ( Bool b) { m_useRBC = b;    }
     990#endif
    987991  Bool      getUseSDC                       ()        { return m_useSDC; }
    988992  Void      setUseSDC                       ( Bool b) { m_useSDC = b;    }
  • branches/HTM-8.2-dev0/source/Lib/TLibEncoder/TEncCu.cpp

    r711 r712  
    497497#endif
    498498#if H_3D_IC
     499#if SEC_ONLY_TEXTURE_IC_F0151
     500  Bool bICEnabled = rpcTempCU->getSlice()->getViewIndex() && ( rpcTempCU->getSlice()->getSliceType() == P_SLICE || rpcTempCU->getSlice()->getSliceType() == B_SLICE ) && !rpcTempCU->getSlice()->getIsDepth();
     501#else
    499502  Bool bICEnabled = rpcTempCU->getSlice()->getViewIndex() && ( rpcTempCU->getSlice()->getSliceType() == P_SLICE || rpcTempCU->getSlice()->getSliceType() == B_SLICE );
     503#endif
    500504  bICEnabled = bICEnabled && rpcTempCU->getSlice()->getApplyIC();
    501505#endif
  • branches/HTM-8.2-dev0/source/Lib/TLibEncoder/TEncEntropy.cpp

    r655 r712  
    160160Void TEncEntropy::encodeICFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD )
    161161{
     162#if SEC_ONLY_TEXTURE_IC_F0151
     163  if ( pcCU->isIntra( uiAbsPartIdx ) || ( pcCU->getSlice()->getViewIndex() == 0 ) || pcCU->getSlice()->getIsDepth() )
     164#else
    162165  if ( pcCU->isIntra( uiAbsPartIdx ) || ( pcCU->getSlice()->getViewIndex() == 0 ) )
     166#endif
    163167  {
    164168    return;
  • branches/HTM-8.2-dev0/source/Lib/TLibEncoder/TEncSbac.cpp

    r655 r712  
    9595#if H_3D_DIM_DMM
    9696, m_cDmm1DataSCModel          ( 1,             1,               NUM_DMM1_DATA_CTX             , m_contextModels + m_numContextModels, m_numContextModels)
     97#if !SEC_DMM3_RBC_F0147
    9798, m_cDmm3DataSCModel          ( 1,             1,               NUM_DMM3_DATA_CTX             , m_contextModels + m_numContextModels, m_numContextModels)
     99#endif
    98100#endif
    99101#if H_3D_DIM_RBC
     
    174176#if H_3D_DIM_DMM
    175177  m_cDmm1DataSCModel.initBuffer          ( eSliceType, iQp, (UChar*)INIT_DMM1_DATA );
     178#if !SEC_DMM3_RBC_F0147
    176179  m_cDmm3DataSCModel.initBuffer          ( eSliceType, iQp, (UChar*)INIT_DMM3_DATA );
     180#endif
    177181#endif
    178182#if H_3D_DIM_RBC
     
    262266#if H_3D_DIM_DMM
    263267      curCost += m_cDmm1DataSCModel.calcCost          ( curSliceType, qp, (UChar*)INIT_DMM1_DATA );
     268#if !SEC_DMM3_RBC_F0147
    264269      curCost += m_cDmm3DataSCModel.calcCost          ( curSliceType, qp, (UChar*)INIT_DMM3_DATA );
     270#endif
    265271#endif
    266272#if H_3D_DIM_RBC
     
    331337#if H_3D_DIM_DMM
    332338  m_cDmm1DataSCModel.initBuffer          ( eSliceType, iQp, (UChar*)INIT_DMM1_DATA );
     339#if !SEC_DMM3_RBC_F0147
    333340  m_cDmm3DataSCModel.initBuffer          ( eSliceType, iQp, (UChar*)INIT_DMM3_DATA );
     341#endif
    334342#endif
    335343#if H_3D_DIM_RBC
     
    518526}
    519527
     528#if QC_DIM_DELTADC_UNIFY_F0132
     529Void TEncSbac::xCodeDimDeltaDC( Pel valDeltaDC, UInt uiNumSeg )
     530{
     531  xWriteExGolombLevel( UInt( abs( valDeltaDC ) - ( uiNumSeg > 1 ? 0 : 1 ) ), m_cDdcDataSCModel.get(0, 0, 0) );
     532  if( valDeltaDC != 0 )
     533  {
     534    UInt uiSign = valDeltaDC > 0 ? 0 : 1;
     535    m_pcBinIf->encodeBinEP( uiSign );
     536  }
     537}
     538#else
    520539Void TEncSbac::xCodeDimDeltaDC( Pel valDeltaDC, UInt dimType )
    521540{
     
    527546  }
    528547}
     548#endif
    529549
    530550#if H_3D_DIM_DMM
     
    537557}
    538558
     559#if !SEC_DMM3_RBC_F0147
    539560Void TEncSbac::xCodeDmm3WedgeIdx( UInt uiIntraIdx, Int iNumBit )
    540561{
     
    544565  }
    545566}
     567#endif
    546568#endif
    547569#if H_3D_DIM_RBC
     
    12091231      xCodeDmm1WedgeIdx( pcCU->getDmmWedgeTabIdx( dimType, absPartIdx ), g_dmm1TabIdxBits[pcCU->getIntraSizeIdx(absPartIdx)] );
    12101232    } break;
     1233#if !SEC_DMM3_RBC_F0147
    12111234  case( DMM3_IDX ):
    12121235    {
    12131236      xCodeDmm3WedgeIdx( pcCU->getDmm3IntraTabIdx( absPartIdx ), g_dmm3IntraTabIdxBits[pcCU->getIntraSizeIdx(absPartIdx)] );
    12141237    } break;
     1238#endif
    12151239  case( DMM4_IDX ): break;
    12161240#endif
     
    12251249  }
    12261250
    1227 #if H_3D_DIM_SDC
     1251#if H_3D_DIM_SDC && !QC_DIM_DELTADC_UNIFY_F0132
    12281252  if( pcCU->getSDCFlag( absPartIdx ) )
    12291253  {
     
    12381262  {
    12391263#endif
     1264#if QC_DIM_DELTADC_UNIFY_F0132
     1265    if( dimType < DIM_NUM_TYPE || pcCU->getSDCFlag( absPartIdx ) )
     1266#else
    12401267    if( dimType < DIM_NUM_TYPE )
    1241     {
     1268#endif
     1269    {
     1270#if QC_DIM_DELTADC_UNIFY_F0132
     1271      UInt dimDeltaDC;
     1272      Pel  deltaDC;
     1273      UInt uiNumSegments = ( dir == PLANAR_IDX ) ? 1 : 2;
     1274      if( pcCU->getSDCFlag( absPartIdx ) )
     1275    {
     1276        if( uiNumSegments==1 )
     1277        {
     1278          dimDeltaDC = pcCU->getSDCSegmentDCOffset(0, absPartIdx) ? 1 : 0;
     1279        }
     1280        else
     1281        {
     1282          dimDeltaDC = ( pcCU->getSDCSegmentDCOffset(0, absPartIdx) || pcCU->getSDCSegmentDCOffset(1, absPartIdx) ) ? 1 : 0;
     1283        }
     1284      }
     1285      else
     1286      {
     1287        dimDeltaDC = isDimDeltaDC( dir );
     1288      }
     1289
     1290      m_pcBinIf->encodeBin( dimDeltaDC, m_cDdcFlagSCModel.get(0, 0, uiNumSegments-1) );
     1291
     1292      if( dimDeltaDC )
     1293      {
     1294        for( UInt segment = 0; segment < uiNumSegments; segment++ )
     1295        {
     1296          deltaDC = pcCU->getSDCFlag( absPartIdx ) ? pcCU->getSDCSegmentDCOffset(segment, absPartIdx) : pcCU->getDimDeltaDC( dimType, segment, absPartIdx );
     1297          xCodeDimDeltaDC( deltaDC, uiNumSegments );
     1298        }
     1299      }
     1300#else
    12421301      UInt dimDeltaDC = isDimDeltaDC( dir );
    12431302      m_pcBinIf->encodeBin( dimDeltaDC, m_cDdcFlagSCModel.get(0, 0, (RBC_IDX == dimType) ? 1 : 0) );
     
    12491308        }
    12501309      }
    1251     }
    1252 #if H_3D_DIM_SDC
     1310#endif
     1311    }
     1312#if H_3D_DIM_SDC && !QC_DIM_DELTADC_UNIFY_F0132
    12531313  }
    12541314#endif
     
    12571317Void TEncSbac::codeIntraDepthMode( TComDataCU* pcCU, UInt absPartIdx )
    12581318{
     1319#if SEC_DMM3_RBC_F0147
     1320  UInt codeWordTable[3][7] =    {{0, 0, 0, 1, 0, 0, 0},{0, 2, 6, 14, 15, 0, 0},{0, 1, 0, 0, 0, 0, 0}};
     1321  UInt codeWordLenTable[3][7] = {{0, 1, 0, 1, 0, 0, 0},{1, 2, 3,  4,  4, 0, 0},{1, 1, 0, 0, 0, 0, 0}};
     1322#else
    12591323    UInt codeWordTable[3][7] =    {{0, 0, 0, 2, 0,6, 7},{0, 0, 2, 7, 3, 6, 2},{0, 1, 0, 0, 0, 0, 0}};
    12601324    UInt codeWordLenTable[3][7] = {{0, 1, 0, 2, 0,3, 3},{1, 1, 2, 3, 2, 3, 2},{1, 1, 0, 0, 0, 0, 0}};
     1325#endif
    12611326  UInt dir = pcCU->getLumaIntraDir( absPartIdx );
    12621327  UInt puIdx = (pcCU->getWidth(absPartIdx) == 64) ? 2 : ( (pcCU->getPartitionSize(absPartIdx) == SIZE_NxN && pcCU->getWidth(absPartIdx) == 8) ? 0 : 1 );
     
    12731338    case DMM1_IDX: codeIdx = 3; break;
    12741339    case DMM4_IDX: codeIdx = 4; break;
     1340#if !SEC_DMM3_RBC_F0147
    12751341    case DMM3_IDX: codeIdx = 5; break;
    12761342    case  RBC_IDX: codeIdx = 6; break;
     1343#endif
    12771344    default:                    break;
    12781345    }
     
    12891356  }
    12901357#endif
     1358#if !SEC_DMM3_RBC_F0147
    12911359  if( puIdx==1 )
    12921360  {
     
    13001368      }
    13011369  }
     1370#endif
    13021371  //mode coding
    13031372  for( UInt i = 0; i < codeWordLenTable[puIdx][codeIdx]; i++ )
  • branches/HTM-8.2-dev0/source/Lib/TLibEncoder/TEncSbac.h

    r655 r712  
    118118  #if H_3D_DIM
    119119  Void  xWriteExGolombLevel  ( UInt uiSymbol, ContextModel& rcSCModel  );
     120#if QC_DIM_DELTADC_UNIFY_F0132
     121  Void  xCodeDimDeltaDC      ( Pel valDeltaDC, UInt uiNumSeg );
     122#else
    120123  Void  xCodeDimDeltaDC      ( Pel valDeltaDC, UInt dimType );
     124#endif
    121125#if H_3D_DIM_DMM
    122126  Void  xCodeDmm1WedgeIdx    ( UInt uiTabIdx, Int iNumBit );
     127#if !SEC_DMM3_RBC_F0147
    123128  Void  xCodeDmm3WedgeIdx    ( UInt uiIntraIdx, Int iNumBit );
     129#endif
    124130#endif
    125131#if H_3D_DIM_RBC
     
    253259#if H_3D_DIM_DMM
    254260  ContextModel3DBuffer m_cDmm1DataSCModel;
     261#if !SEC_DMM3_RBC_F0147
    255262  ContextModel3DBuffer m_cDmm3DataSCModel;
     263#endif
    256264#endif
    257265#if H_3D_DIM_RBC
  • branches/HTM-8.2-dev0/source/Lib/TLibEncoder/TEncSearch.cpp

    r708 r712  
    11261126      for( UInt uiX = 0; uiX < uiWidth; uiX++ )
    11271127      {
     1128#if LGE_PRED_RES_CODING_DLT_DOMAIN_F0159
     1129          if( (isDimMode( uiLumaPredMode ) || uiLumaPredMode == HOR_IDX || uiLumaPredMode == VER_IDX || uiLumaPredMode == DC_IDX) && pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->getVPS()->getUseDLTFlag(pcCU->getSlice()->getLayerIdInVps()) )
     1130          {
     1131              pResi[ uiX ] = pcCU->getSlice()->getVPS()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), pOrg[ uiX ] ) - pcCU->getSlice()->getVPS()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), pPred[ uiX ] );
     1132          }
     1133          else
     1134          {
     1135              pResi[ uiX ] = pOrg[ uiX ] - pPred[ uiX ];
     1136          }
     1137#else
    11281138        pResi[ uiX ] = pOrg[ uiX ] - pPred[ uiX ];
     1139#endif
    11291140      }
    11301141      pOrg  += uiStride;
     
    11901201      for( UInt uiX = 0; uiX < uiWidth; uiX++ )
    11911202      {
     1203#if LGE_PRED_RES_CODING_DLT_DOMAIN_F0159
     1204          if( (isDimMode( uiLumaPredMode ) || uiLumaPredMode == HOR_IDX || uiLumaPredMode == VER_IDX || uiLumaPredMode == DC_IDX) && pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->getVPS()->getUseDLTFlag(pcCU->getSlice()->getLayerIdInVps()) )
     1205          {
     1206              pReco    [ uiX ] = pcCU->getSlice()->getVPS()->idx2DepthValue( pcCU->getSlice()->getLayerIdInVps(), Clip3( 0, pcCU->getSlice()->getVPS()->getNumDepthValues( pcCU->getSlice()->getLayerIdInVps() ) - 1, pcCU->getSlice()->getVPS()->depthValue2idx( pcCU->getSlice()->getLayerIdInVps(), pPred[ uiX ] ) + pResi[ uiX ] ) );
     1207          }
     1208          else
     1209          {
     1210              pReco    [ uiX ] = ClipY( pPred[ uiX ] + pResi[ uiX ] );
     1211          }
     1212#else
    11921213        pReco    [ uiX ] = ClipY( pPred[ uiX ] + pResi[ uiX ] );
     1214#endif
    11931215        pRecQt   [ uiX ] = pReco[ uiX ];
    11941216        pRecIPred[ uiX ] = pReco[ uiX ];
     
    28762898              biSegmentation = &(g_dmmWedgeLists[(g_aucConvertToBit[uiWidth])][uiTabIdx]);
    28772899            } break;
     2900#if !SEC_DMM3_RBC_F0147
    28782901          case( DMM3_IDX ):
    28792902            {
     
    28932916              }
    28942917            } break;
     2918#endif
    28952919          case( DMM4_IDX ):
    28962920            {
     
    29282952        {
    29292953          Pel deltaDC1 = 0; Pel deltaDC2 = 0;
     2954#if QC_DIM_DELTADC_UNIFY_F0132
     2955          xSearchDmmDeltaDCs( pcCU, uiPartOffset, piOrg, piPred, uiStride, pcCU->getEdgePartition( uiPartOffset ), uiWidth, uiWidth, uiHeight, deltaDC1, deltaDC2 );
     2956#else
    29302957          xSearchRbcDeltaDCs( pcCU, uiPartOffset, piOrg, piPred, uiStride, pcCU->getEdgePartition( uiPartOffset ), uiWidth, uiWidth, uiHeight, deltaDC1, deltaDC2 );
     2958#endif
    29312959          pcCU->setDimDeltaDC( RBC_IDX, 0, uiPartOffset, deltaDC1 );
    29322960          pcCU->setDimDeltaDC( RBC_IDX, 1, uiPartOffset, deltaDC2 );
     
    29753003      Bool bTestZeroResi = false;
    29763004#if H_3D_DIM_ENC
     3005#if LGE_BUGFIX_F0158
     3006      bTestZeroResi |= pcCU->getSlice()->getIsDepth() && !pcCU->getSlice()->isIRAP();
     3007#else
    29773008      bTestZeroResi |= pcCU->getSlice()->getIsDepth() && pcCU->getSlice()->isIRAP();
     3009#endif
    29783010#endif
    29793011#if H_3D_DIM_SDC
     
    73247356}
    73257357
     7358#if !SEC_DMM3_RBC_F0147
    73267359Void TEncSearch::xSearchDmm3Wedge( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx, UInt& ruiIntraTabIdx, UInt colTexIntraDir )
    73277360{
     
    73607393  cPredYuv.destroy();
    73617394}
    7362 
     7395#endif
    73637396#endif
    73647397#if H_3D_DIM_RBC
  • branches/HTM-8.2-dev0/source/Lib/TLibEncoder/TEncSearch.h

    r655 r712  
    351351  Void xSearchDmmDeltaDCs         ( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piOrig, Pel* piPredic, UInt uiStride, Bool* biSegPattern, Int patternStride, UInt uiWidth, UInt uiHeight, Pel& rDeltaDC1, Pel& rDeltaDC2 );
    352352  Void xSearchDmm1Wedge           ( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx );
     353#if !SEC_DMM3_RBC_F0147
    353354  Void xSearchDmm3Wedge           ( TComDataCU* pcCU, UInt uiAbsPtIdx, Pel* piRef, UInt uiRefStride, UInt uiWidth, UInt uiHeight, UInt& ruiTabIdx, UInt& ruiIntraTabIdx, UInt colTexIntraDir );
     355#endif
    354356#endif
    355357#if H_3D_DIM_RBC
Note: See TracChangeset for help on using the changeset viewer.