Changeset 1313 in 3DVCSoftware for trunk/source/Lib/TLibCommon/TComWedgelet.cpp


Ignore:
Timestamp:
13 Aug 2015, 17:38:13 (9 years ago)
Author:
tech
Message:

Merged 14.1-update-dev1@1312.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/Lib/TLibCommon/TComWedgelet.cpp

    r1196 r1313  
    4545using namespace std;
    4646
    47 #if H_3D_DIM_DMM
     47#if NH_3D_DMM
    4848TComWedgelet::TComWedgelet( UInt uiWidth, UInt uiHeight ) : m_uhXs     ( 0 ),
    4949                                                            m_uhYs     ( 0 ),
     
    6464                                                            m_eWedgeRes( rcWedge.m_eWedgeRes ),
    6565                                                            m_bIsCoarse( rcWedge.m_bIsCoarse ),
    66                                                             m_uiAng    ( rcWedge.m_uiAng     ),
    6766                                                            m_uiWidth  ( rcWedge.m_uiWidth   ),
    6867                                                            m_uiHeight ( rcWedge.m_uiHeight  ),
    69                                                             m_pbPattern( (Bool*)xMalloc( Bool, (m_uiWidth * m_uiHeight) ) )
    70                                                             ,m_pbScaledPattern( g_wedgePattern )
     68                                                            m_pbPattern( (Bool*)xMalloc( Bool, (m_uiWidth * m_uiHeight) ) ),
     69                                                            m_pbScaledPattern( g_wedgePattern )
    7170{
    7271  ::memcpy( m_pbPattern, rcWedge.m_pbPattern, sizeof(Bool) * (m_uiWidth * m_uiHeight));
     
    9796{
    9897  ::memset( m_pbPattern, 0, (m_uiWidth * m_uiHeight) * sizeof(Bool) );
    99 }
    100 
    101 Void TComWedgelet::findClosestAngle()
    102 {
    103   UInt uiAng=0,uiOptAng=0;
    104   UInt uiMinD=MAX_UINT;
    105   UInt uiTmpD=0;
    106   Int angTable[9]    = {0,    2,    5,   9,  13,  17,  21,  26,  32};
    107  
    108   UChar uhXs = m_uhXs;
    109   UChar uhYs = m_uhYs;
    110   UChar uhXe = m_uhXe;
    111   UChar uhYe = m_uhYe;
    112 
    113   for(uiAng=2; uiAng<=34; uiAng++)
    114   {
    115     Int iSign    = (uiAng<VER_IDX && uiAng>HOR_IDX ) ? -1 : 1;
    116     Int iVer     = uiAng>17 ? 32 : angTable[(uiAng>10) ? (uiAng-10) : (10-uiAng)];
    117     Int iHor     = uiAng<19 ? 32 : angTable[(uiAng>26) ? (uiAng-26) : (26-uiAng)];
    118 
    119     uiTmpD  = abs(iVer*iSign*(uhXs-uhXe) - iHor*(uhYe-uhYs));
    120    
    121     if( uiTmpD < uiMinD )
    122     {
    123       uiMinD = uiTmpD;
    124       uiOptAng = uiAng;
    125     }
    126   }
    127   m_uiAng = uiOptAng;
    12898}
    12999
     
    205175  m_eWedgeRes = rcWedge.m_eWedgeRes;
    206176  m_bIsCoarse = rcWedge.m_bIsCoarse;
    207   m_uiAng = rcWedge.m_uiAng;
    208177  m_uiWidth  = rcWedge.m_uiWidth;
    209178  m_uiHeight = rcWedge.m_uiHeight;
     
    295264}
    296265
    297 Bool* TComWedgelet::getScaledPattern(UInt uiDstSize)
     266Bool* TComWedgelet::getPatternScaled( UInt dstSize )
    298267{
    299268  Bool *pbSrcPat = this->getPattern();
    300269  UInt uiSrcSize = this->getStride();
    301270
    302   Int scale = (g_aucConvertToBit[uiDstSize] - g_aucConvertToBit[uiSrcSize]);
    303   assert(scale>=0);
    304   for (Int y=0; y<uiDstSize; y++)
    305   {
    306     for (Int x=0; x<uiDstSize; x++)
    307     {
    308       Int srcX = x>>scale;
    309       Int srcY = y>>scale;
    310       m_pbScaledPattern[y*uiDstSize + x] = pbSrcPat[ srcY*uiSrcSize + srcX ];
    311     }
    312   }
    313   return m_pbScaledPattern;
    314 }
     271  if( 16 >= dstSize )
     272  {
     273    assert( dstSize == uiSrcSize );
     274    return pbSrcPat;
     275  }
     276  else
     277  {
     278    Int scale = (g_aucConvertToBit[dstSize] - g_aucConvertToBit[uiSrcSize]);
     279    assert(scale>=0);
     280    for (Int y=0; y<dstSize; y++)
     281    {
     282      for (Int x=0; x<dstSize; x++)
     283      {
     284        Int srcX = x>>scale;
     285        Int srcY = y>>scale;
     286        m_pbScaledPattern[y*dstSize + x] = pbSrcPat[ srcY*uiSrcSize + srcX ];
     287      }
     288    }
     289    return m_pbScaledPattern;
     290  }
     291}
     292
     293Void TComWedgelet::getPatternScaledCopy( UInt dstSize, Bool* dstBuf )
     294{
     295  Bool *pbSrcPat = this->getPattern();
     296  UInt uiSrcSize = this->getStride();
     297
     298  if( 16 >= dstSize )
     299  {
     300    assert( dstSize == uiSrcSize );
     301    memcpy( dstBuf, pbSrcPat, (dstSize*dstSize) );
     302  }
     303  else
     304  {
     305    Int scale = (g_aucConvertToBit[dstSize] - g_aucConvertToBit[uiSrcSize]);
     306    assert(scale>=0);
     307    for (Int y=0; y<dstSize; y++)
     308    {
     309      for (Int x=0; x<dstSize; x++)
     310      {
     311        Int srcX = x>>scale;
     312        Int srcY = y>>scale;
     313        dstBuf[y*dstSize + x] = pbSrcPat[ srcY*uiSrcSize + srcX ];
     314      }
     315    }
     316  }
     317}
     318
    315319
    316320TComWedgeNode::TComWedgeNode()
    317321{
    318   m_uiPatternIdx = DMM_NO_WEDGEINDEX;
     322  m_uiPatternIdx = DMM_NO_WEDGE_IDX;
    319323  for( UInt uiPos = 0; uiPos < DMM_NUM_WEDGE_REFINES; uiPos++ )
    320324  {
    321     m_uiRefineIdx[uiPos] = DMM_NO_WEDGEINDEX;
     325    m_uiRefineIdx[uiPos] = DMM_NO_WEDGE_IDX;
    322326  }
    323327}
     
    341345  m_uiRefineIdx[uiPos] = uiIdx; 
    342346}
    343 #endif //H_3D_DIM_DMM
     347#endif //NH_3D_DMM
Note: See TracChangeset for help on using the changeset viewer.