Changeset 1019 in 3DVCSoftware


Ignore:
Timestamp:
24 Jul 2014, 14:29:09 (10 years ago)
Author:
hhi
Message:

Integration of JCT3V-I0066: Encoder modification for DMM4, macro is HHI_DMM4_ENC_I0066.

Location:
branches/HTM-11.2-dev3-HHI/source/Lib
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-11.2-dev3-HHI/source/Lib/TLibCommon/TypeDef.h

    r1015 r1019  
    308308                                              // HHI_DEPTH_INTRA_SEARCH_RAU_C0160
    309309                                              // LG_ZEROINTRADEPTHRESI_A0087
     310#define HHI_DMM4_ENC_I0066                1
    310311#endif
    311312///// ***** VIEW SYNTHESIS PREDICTION *********
  • branches/HTM-11.2-dev3-HHI/source/Lib/TLibEncoder/TEncCu.cpp

    r1014 r1019  
    10281028          // speedup for inter frames
    10291029          if( rpcBestCU->getSlice()->getSliceType() == I_SLICE ||
    1030             rpcBestCU->getCbf( 0, TEXT_LUMA     ) != 0   ||
    1031             rpcBestCU->getCbf( 0, TEXT_CHROMA_U ) != 0   ||
     1030              rpcBestCU->getCbf( 0, TEXT_LUMA     ) != 0   ||
     1031              rpcBestCU->getCbf( 0, TEXT_CHROMA_U ) != 0   ||
    10321032              rpcBestCU->getCbf( 0, TEXT_CHROMA_V ) != 0     
    10331033#if H_3D_DIM_ENC
     1034#if HHI_DMM4_ENC_I0066
     1035              || rpcBestCU->getSlice()->getIsDepth()
     1036#else
    10341037            || ( rpcBestCU->getSlice()->getIsDepth() && rpcBestCU->getSlice()->isIRAP() )
     1038#endif
    10351039#endif
    10361040            ) // avoid very complex intra if it is unlikely
    10371041          {
     1042#if HHI_DMM4_ENC_I0066
     1043            Bool bOnlyIVP = false;
     1044            if( rpcBestCU->getSlice()->getIsDepth() && !(rpcBestCU->getSlice()->isIRAP()) &&
     1045                rpcBestCU->getSlice()->getSliceType() != I_SLICE &&
     1046                rpcBestCU->getCbf( 0, TEXT_LUMA     ) == 0 &&
     1047                rpcBestCU->getCbf( 0, TEXT_CHROMA_U ) == 0 &&
     1048                rpcBestCU->getCbf( 0, TEXT_CHROMA_V ) == 0
     1049              )
     1050            {
     1051              bOnlyIVP = true;
     1052            }
     1053            xCheckRDCostIntra( rpcBestCU, rpcTempCU, SIZE_2Nx2N, bOnlyIVP );
     1054#else
    10381055            xCheckRDCostIntra( rpcBestCU, rpcTempCU, SIZE_2Nx2N );
     1056#endif
    10391057
    10401058#if KWU_RC_MADPRED_E0227
     
    10551073                if( rpcTempCU->getWidth(0) > ( 1 << rpcTempCU->getSlice()->getSPS()->getQuadtreeTULog2MinSize() ) )
    10561074                {
     1075#if HHI_DMM4_ENC_I0066
     1076                  xCheckRDCostIntra( rpcBestCU, rpcTempCU, SIZE_NxN, bOnlyIVP );
     1077#else
    10571078                  xCheckRDCostIntra( rpcBestCU, rpcTempCU, SIZE_NxN   );
     1079#endif
    10581080                  rpcTempCU->initEstData( uiDepth, iQP, bIsLosslessMode );
    10591081                }
     
    26282650#endif
    26292651
     2652#if HHI_DMM4_ENC_I0066
     2653Void TEncCu::xCheckRDCostIntra( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize eSize, Bool bOnlyIVP )
     2654#else
    26302655Void TEncCu::xCheckRDCostIntra( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize eSize )
     2656#endif
    26312657{
    26322658  UInt uiDepth = rpcTempCU->getDepth( 0 );
     
    26562682    m_pcPredSearch->preestChromaPredMode( rpcTempCU, m_ppcOrigYuv[uiDepth], m_ppcPredYuvTemp[uiDepth] );
    26572683  }
     2684#if HHI_DMM4_ENC_I0066
     2685  m_pcPredSearch  ->estIntraPredQT      ( rpcTempCU, m_ppcOrigYuv[uiDepth], m_ppcPredYuvTemp[uiDepth], m_ppcResiYuvTemp[uiDepth], m_ppcRecoYuvTemp[uiDepth], uiPreCalcDistC, bSeparateLumaChroma, bOnlyIVP );
     2686#else
    26582687  m_pcPredSearch  ->estIntraPredQT      ( rpcTempCU, m_ppcOrigYuv[uiDepth], m_ppcPredYuvTemp[uiDepth], m_ppcResiYuvTemp[uiDepth], m_ppcRecoYuvTemp[uiDepth], uiPreCalcDistC, bSeparateLumaChroma );
    2659 
     2688#endif
    26602689  m_ppcRecoYuvTemp[uiDepth]->copyToPicLuma(rpcTempCU->getPic()->getPicYuvRec(), rpcTempCU->getAddr(), rpcTempCU->getZorderIdxInCU() );
    26612690 
  • branches/HTM-11.2-dev3-HHI/source/Lib/TLibEncoder/TEncCu.h

    r983 r1019  
    162162  Void  xCheckRDCostSingleDepth   ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize  );
    163163#endif
     164#if HHI_DMM4_ENC_I0066
     165  Void  xCheckRDCostIntra   ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize, Bool bOnlyIVP );
     166#else
    164167  Void  xCheckRDCostIntra   ( TComDataCU*& rpcBestCU, TComDataCU*& rpcTempCU, PartSize ePartSize  );
     168#endif
    165169  Void  xCheckDQP           ( TComDataCU*  pcCU );
    166170 
  • branches/HTM-11.2-dev3-HHI/source/Lib/TLibEncoder/TEncSearch.cpp

    r1015 r1019  
    29772977Void
    29782978TEncSearch::estIntraPredQT( TComDataCU* pcCU,
    2979                            TComYuv*    pcOrgYuv,
    2980                            TComYuv*    pcPredYuv,
    2981                            TComYuv*    pcResiYuv,
    2982                            TComYuv*    pcRecoYuv,
    2983                            UInt&       ruiDistC,
    2984                            Bool        bLumaOnly )
     2979                            TComYuv*    pcOrgYuv,
     2980                            TComYuv*    pcPredYuv,
     2981                            TComYuv*    pcResiYuv,
     2982                            TComYuv*    pcRecoYuv,
     2983                            UInt&       ruiDistC,
     2984                            Bool        bLumaOnly
     2985#if HHI_DMM4_ENC_I0066
     2986                          , Bool        bOnlyIVP
     2987#endif
     2988                          )
    29852989{
    29862990  UInt    uiDepth        = pcCU->getDepth(0);
     
    30283032    Int numModesForFullRD = g_aucIntraModeNumFast[ uiWidthBit ];
    30293033   
     3034#if HHI_DMM4_ENC_I0066
     3035    if( bOnlyIVP )
     3036    {
     3037      numModesForFullRD = 0;
     3038    }
     3039    else
     3040    {
     3041#endif
    30303042    Bool doFastSearch = (numModesForFullRD != numModesAvailable);
    30313043    if (doFastSearch)
     
    31193131      }
    31203132    }
    3121    
     3133#if HHI_DMM4_ENC_I0066
     3134    }
     3135#endif
     3136
    31223137#if H_3D_DIM
    31233138    //===== determine set of depth intra modes to be tested =====
    31243139    if( m_pcEncCfg->getIsDepth() && uiWidth >= DIM_MIN_SIZE && uiWidth <= DIM_MAX_SIZE && uiWidth == uiHeight )
    31253140    {
    3126 
     3141#if HHI_DMM4_ENC_I0066
     3142#if SEPARATE_FLAG_I0085
     3143      if( bOnlyIVP && m_pcEncCfg->getUseIVP() )
     3144#else
     3145      if( bOnlyIVP )
     3146#endif
     3147      {
     3148        TComWedgelet* dmm4Segmentation = new TComWedgelet( uiWidth, uiHeight );
     3149        xPredContourFromTex( pcCU, uiPartOffset, uiWidth, uiHeight, dmm4Segmentation );
     3150
     3151        Pel deltaDC1 = 0; Pel deltaDC2 = 0;
     3152        xSearchDmmDeltaDCs( pcCU, uiPartOffset, piOrg, piPred, uiStride, dmm4Segmentation->getPattern(), dmm4Segmentation->getStride(), uiWidth, uiHeight, deltaDC1, deltaDC2 );
     3153        pcCU->setDimDeltaDC( DMM4_IDX, 0, uiPartOffset, deltaDC1 );
     3154        pcCU->setDimDeltaDC( DMM4_IDX, 1, uiPartOffset, deltaDC2 );
     3155
     3156#if HS_DMM_SIGNALLING_I0120
     3157        uiRdModeList[ numModesForFullRD++ ] = (DMM4_IDX+DIM_OFFSET);
     3158#else
     3159        uiRdModeList[ numModesForFullRD++ ] = (2*DMM4_IDX  +DIM_OFFSET);
     3160        if( deltaDC1 != 0 || deltaDC2 != 0 )
     3161          uiRdModeList[ numModesForFullRD++ ] = (2*DMM4_IDX+1+DIM_OFFSET);
     3162#endif
     3163        dmm4Segmentation->destroy(); delete dmm4Segmentation;
     3164      }
     3165      else
     3166      {
     3167#endif
    31273168#if H_3D_FAST_DEPTH_INTRA
    31283169      Int  threshold    = max(((pcCU->getQP(0))>>3)-1,3);
     
    32233264#else
    32243265            uiRdModeList[ numModesForFullRD++ ] = (2*dmmType  +DIM_OFFSET);
     3266#if HHI_DMM4_ENC_I0066
     3267            if( deltaDC1 != 0 || deltaDC2 != 0 )
     3268#endif
    32253269            uiRdModeList[ numModesForFullRD++ ] = (2*dmmType+1+DIM_OFFSET);
    32263270#endif
     
    32303274        }
    32313275      }
     3276#if HHI_DMM4_ENC_I0066
     3277      }
     3278#endif
    32323279#endif
    32333280    }
  • branches/HTM-11.2-dev3-HHI/source/Lib/TLibEncoder/TEncSearch.h

    r983 r1019  
    180180                                  TComYuv*    pcRecoYuv,
    181181                                  UInt&       ruiDistC,
    182                                   Bool        bLumaOnly );
     182                                  Bool        bLumaOnly
     183#if HHI_DMM4_ENC_I0066
     184                                , Bool        bOnlyIVP
     185#endif
     186                                );
    183187  Void  estIntraPredChromaQT    ( TComDataCU* pcCU,
    184188                                  TComYuv*    pcOrgYuv,
Note: See TracChangeset for help on using the changeset viewer.