Changeset 1313 in 3DVCSoftware for trunk/source/Lib/TLibCommon/TComWedgelet.cpp
- Timestamp:
- 13 Aug 2015, 17:38:13 (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/Lib/TLibCommon/TComWedgelet.cpp
r1196 r1313 45 45 using namespace std; 46 46 47 #if H_3D_DIM_DMM47 #if NH_3D_DMM 48 48 TComWedgelet::TComWedgelet( UInt uiWidth, UInt uiHeight ) : m_uhXs ( 0 ), 49 49 m_uhYs ( 0 ), … … 64 64 m_eWedgeRes( rcWedge.m_eWedgeRes ), 65 65 m_bIsCoarse( rcWedge.m_bIsCoarse ), 66 m_uiAng ( rcWedge.m_uiAng ),67 66 m_uiWidth ( rcWedge.m_uiWidth ), 68 67 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 ) 71 70 { 72 71 ::memcpy( m_pbPattern, rcWedge.m_pbPattern, sizeof(Bool) * (m_uiWidth * m_uiHeight)); … … 97 96 { 98 97 ::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;128 98 } 129 99 … … 205 175 m_eWedgeRes = rcWedge.m_eWedgeRes; 206 176 m_bIsCoarse = rcWedge.m_bIsCoarse; 207 m_uiAng = rcWedge.m_uiAng;208 177 m_uiWidth = rcWedge.m_uiWidth; 209 178 m_uiHeight = rcWedge.m_uiHeight; … … 295 264 } 296 265 297 Bool* TComWedgelet::get ScaledPattern(UInt uiDstSize)266 Bool* TComWedgelet::getPatternScaled( UInt dstSize ) 298 267 { 299 268 Bool *pbSrcPat = this->getPattern(); 300 269 UInt uiSrcSize = this->getStride(); 301 270 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 293 Void 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 315 319 316 320 TComWedgeNode::TComWedgeNode() 317 321 { 318 m_uiPatternIdx = DMM_NO_WEDGE INDEX;322 m_uiPatternIdx = DMM_NO_WEDGE_IDX; 319 323 for( UInt uiPos = 0; uiPos < DMM_NUM_WEDGE_REFINES; uiPos++ ) 320 324 { 321 m_uiRefineIdx[uiPos] = DMM_NO_WEDGE INDEX;325 m_uiRefineIdx[uiPos] = DMM_NO_WEDGE_IDX; 322 326 } 323 327 } … … 341 345 m_uiRefineIdx[uiPos] = uiIdx; 342 346 } 343 #endif // H_3D_DIM_DMM347 #endif //NH_3D_DMM
Note: See TracChangeset for help on using the changeset viewer.