Changeset 1013 in 3DVCSoftware


Ignore:
Timestamp:
24 Jul 2014, 06:22:37 (10 years ago)
Author:
samsung-htm
Message:

Integration of JCT3V-I0076: Simplification of threshold derivation for DBBP and DMM4

Location:
branches/HTM-11.2-dev3-Samsung
Files:
2 added
2 edited

Legend:

Unmodified
Added
Removed
  • branches/HTM-11.2-dev3-Samsung/source/Lib/TLibCommon/TComPrediction.cpp

    r1001 r1013  
    739739  Int uiMinDepth = MAX_INT;
    740740  Int uiMaxDepth = 0;
     741#if SEC_DBBP_DMM4_THRESHOLD_I0076
     742  iSumDepth  = pDepthPels[ 0 ];
     743  iSumDepth += pDepthPels[ uiWidth - 1 ];
     744  iSumDepth += pDepthPels[ uiDepthStride * (uiHeight - 1) ];
     745  iSumDepth += pDepthPels[ uiDepthStride * (uiHeight - 1) + uiWidth - 1 ];
     746
     747  uiMinDepth = pDepthPels[ 0 ];
     748  uiMinDepth = std::min( uiMinDepth, (Int)pDepthPels[ uiWidth - 1 ]);
     749  uiMinDepth = std::min( uiMinDepth, (Int)pDepthPels[ uiDepthStride * (uiHeight - 1) ]);
     750  uiMinDepth = std::min( uiMinDepth, (Int)pDepthPels[ uiDepthStride * (uiHeight - 1) + uiWidth - 1 ]);
     751
     752  uiMaxDepth = pDepthPels[ 0 ];
     753  uiMaxDepth = std::max( uiMaxDepth, (Int)pDepthPels[ uiWidth - 1 ]);
     754  uiMaxDepth = std::max( uiMaxDepth, (Int)pDepthPels[ uiDepthStride * (uiHeight - 1) ]);
     755  uiMaxDepth = std::max( uiMaxDepth, (Int)pDepthPels[ uiDepthStride * (uiHeight - 1) + uiWidth - 1 ]);
     756#else
    741757  for (Int y=0; y<uiHeight; y++)
    742758  {
     
    759775    pDepthPels += uiDepthStride;
    760776  }
     777#endif
    761778 
    762779  // don't generate mask for blocks with small depth range (encoder decision)
     
    767784 
    768785  AOF(uiWidth==uiHeight);
     786#if SEC_DBBP_DMM4_THRESHOLD_I0076
     787  Int iMean = iSumDepth >> 2;
     788#else
    769789  Int iSizeInBits = g_aucConvertToBit[uiWidth]+2;
    770790  Int iMean = iSumDepth >> iSizeInBits*2;       // iMean /= (uiWidth*uiHeight);
     791#endif
    771792 
    772793  // start again for segmentation
     
    22022223  // find contour for texture luma block
    22032224  UInt iDC = 0;
     2225#if SEC_DBBP_DMM4_THRESHOLD_I0076
     2226  iDC  = piRefBlkY[ 0 ];
     2227  iDC += piRefBlkY[ uiWidth - 1 ];
     2228  iDC += piRefBlkY[ uiWidth * (uiHeight - 1) ];
     2229  iDC += piRefBlkY[ uiWidth * (uiHeight - 1) + uiWidth - 1 ];
     2230  iDC = iDC >> 2;
     2231#else
    22042232  for( UInt k = 0; k < (uiWidth*uiHeight); k++ )
    22052233  {
     
    22092237  Int cuMaxLog2Size = g_aucConvertToBit[g_uiMaxCUWidth]+2;   //
    22102238  iDC = iDC >> (cuMaxLog2Size - pcCU->getDepth(0))*2;        //  iDC /= (uiWidth*uiHeight);
     2239#endif
    22112240
    22122241  piRefBlkY = cTempYuv.getLumaAddr();
  • branches/HTM-11.2-dev3-Samsung/source/Lib/TLibCommon/TypeDef.h

    r1001 r1013  
    236236                                              // MTK_DBBP_SIGNALING_H0094   
    237237                                              // H_3D_FIX_DBBP_IVMP        Fix . Enable IVMP is always disabled, when DBBP is enabled. The original intention is to disable Sub-PU IVMP when DBBP is enabled, not to disable IVMP itself.
     238
     239#define SEC_DBBP_DMM4_THRESHOLD_I0076     1   // Simplification of threshold derivation for DBBP and DMM4, JCT3V-I0076
    238240
    239241
Note: See TracChangeset for help on using the changeset viewer.