Changeset 464 in 3DVCSoftware for branches/HTM-DEV-0.3-dev2a/source/Lib/TLibCommon
- Timestamp:
- 11 Jun 2013, 20:35:00 (12 years ago)
- Location:
- branches/HTM-DEV-0.3-dev2a/source/Lib/TLibCommon
- Files:
-
- 12 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-DEV-0.3-dev2a/source/Lib/TLibCommon/ContextTables.h
r324 r464 95 95 #define NUM_TRANSFORMSKIP_FLAG_CTX 1 ///< number of context models for transform skipping 96 96 #define NUM_CU_TRANSQUANT_BYPASS_FLAG_CTX 1 97 98 #if H_3D_ARP 99 #define NUM_ARPW_CTX 4 ///< number of context models for weighting factor index used by advanced residual prediction 100 #endif 101 97 102 #define CNU 154 ///< dummy initialization value for unused context models 'Context model Not Used' 98 103 … … 334 339 { 139, 139}, 335 340 }; 341 342 #if H_3D_ARP 343 static const UChar 344 INIT_ARPW[3][NUM_ARPW_CTX] = 345 { 346 { 154, 154, 154, 154 }, 347 { 154, 154, 154, 154 }, 348 { 154, 154, 154, 154 }, 349 }; 350 #endif 336 351 //! \} 337 352 -
branches/HTM-DEV-0.3-dev2a/source/Lib/TLibCommon/TComDataCU.cpp
r456 r464 115 115 m_pDvInfo = NULL; 116 116 #endif 117 118 #if H_3D_ARP 119 m_puhARPW = NULL; 120 #endif 117 121 } 118 122 … … 208 212 m_acCUMvField[1].create( uiNumPartition ); 209 213 214 #if H_3D_ARP 215 m_puhARPW = new UChar[ uiNumPartition]; 216 #endif 210 217 } 211 218 else … … 293 300 if ( m_pDvInfo ) { xFree(m_pDvInfo); m_pDvInfo = NULL; } 294 301 #endif 302 303 #if H_3D_ARP 304 if ( m_puhARPW ) { delete[] m_puhARPW; m_puhARPW = NULL; } 305 #endif 306 295 307 m_acCUMvField[0].destroy(); 296 308 m_acCUMvField[1].destroy(); … … 402 414 m_CUTransquantBypass[ui] = pcFrom->getCUTransquantBypass(ui); 403 415 m_puhDepth[ui] = pcFrom->getDepth(ui); 416 #if H_3D_ARP 417 m_puhARPW [ui] = pcFrom->getARPW( ui ); 418 #endif 404 419 m_puhWidth [ui] = pcFrom->getWidth(ui); 405 420 m_puhHeight [ui] = pcFrom->getHeight(ui); … … 455 470 memset( m_puhCbf[2] + firstElement, 0, numElements * sizeof( *m_puhCbf[2] ) ); 456 471 memset( m_pbIPCMFlag + firstElement, false, numElements * sizeof( *m_pbIPCMFlag ) ); 472 #if H_3D_ARP 473 memset( m_puhARPW + firstElement, 0, numElements * sizeof( UChar ) ); 474 #endif 457 475 } 458 476 … … 590 608 m_puhCbf[1][ui] = 0; 591 609 m_puhCbf[2][ui] = 0; 610 #if H_3D_ARP 611 m_puhARPW[ui] = 0; 612 #endif 592 613 } 593 614 } … … 662 683 #if H_3D_NBDV 663 684 m_pDvInfo->bDV = false; 685 #endif 686 #if H_3D_ARP 687 memset( m_puhARPW, 0, iSizeInUchar ); 664 688 #endif 665 689 UChar uhWidth = g_uiMaxCUWidth >> uiDepth; … … 706 730 m_puhCbf[2][ui]=pcCU->m_puhCbf[2][uiPartOffset+ui]; 707 731 732 #if H_3D_ARP 733 m_puhARPW [ui] = pcCU->getARPW( uiPartOffset+ui ); 734 #endif 708 735 } 709 736 } … … 816 843 m_puhMergeIndex = pcCU->getMergeIndex() + uiPart; 817 844 845 #if H_3D_ARP 846 m_puhARPW = pcCU->getARPW() + uiPart; 847 #endif 848 818 849 m_puhLumaIntraDir = pcCU->getLumaIntraDir() + uiPart; 819 850 m_puhChromaIntraDir = pcCU->getChromaIntraDir() + uiPart; … … 932 963 m_apiMVPNum[eRefPicList] = pcCU->getMVPNum(eRefPicList) + uiAbsPartIdx; 933 964 965 #if H_3D_ARP 966 m_puhARPW = pcCU->getARPW() + uiAbsPartIdx; 967 #endif 968 934 969 m_acCUMvField[ eRefPicList ].linkToWithOffset( pcCU->getCUMvField(eRefPicList), uiAbsPartIdx ); 935 970 … … 1019 1054 memcpy( m_sliceStartCU + uiOffset, pcCU->m_sliceStartCU, sizeof( UInt ) * uiNumPartition ); 1020 1055 memcpy( m_sliceSegmentStartCU + uiOffset, pcCU->m_sliceSegmentStartCU, sizeof( UInt ) * uiNumPartition ); 1056 1057 #if H_3D_ARP 1058 memcpy( m_puhARPW + uiOffset, pcCU->getARPW(), iSizeInUchar ); 1059 #endif 1021 1060 } 1022 1061 … … 1094 1133 memcpy( rpcCU->m_sliceStartCU + m_uiAbsIdxInLCU, m_sliceStartCU, sizeof( UInt ) * m_uiNumPartition ); 1095 1134 memcpy( rpcCU->m_sliceSegmentStartCU + m_uiAbsIdxInLCU, m_sliceSegmentStartCU, sizeof( UInt ) * m_uiNumPartition ); 1135 1136 #if H_3D_ARP 1137 memcpy( rpcCU->getARPW() + m_uiAbsIdxInLCU, m_puhARPW, iSizeInUchar ); 1138 #endif 1096 1139 } 1097 1140 … … 1166 1209 memcpy( rpcCU->m_sliceStartCU + uiPartOffset, m_sliceStartCU, sizeof( UInt ) * uiQNumPart ); 1167 1210 memcpy( rpcCU->m_sliceSegmentStartCU + uiPartOffset, m_sliceSegmentStartCU, sizeof( UInt ) * uiQNumPart ); 1211 1212 #if H_3D_ARP 1213 memcpy( rpcCU->getARPW() + uiPartOffset, m_puhARPW, iSizeInUchar ); 1214 #endif 1168 1215 } 1169 1216 … … 1807 1854 return uiCtx; 1808 1855 } 1856 1857 #if H_3D_ARP 1858 UInt TComDataCU::getCTXARPWFlag( UInt uiAbsPartIdx ) 1859 { 1860 TComDataCU* pcTempCU; 1861 UInt uiTempPartIdx; 1862 UInt uiCtx = 0; 1863 1864 pcTempCU = getPULeft( uiTempPartIdx, m_uiAbsIdxInLCU + uiAbsPartIdx ); 1865 uiCtx = ( pcTempCU ) ? ((pcTempCU->getARPW( uiTempPartIdx )==0)?0:1) : 0; 1866 1867 pcTempCU = getPUAbove( uiTempPartIdx, m_uiAbsIdxInLCU + uiAbsPartIdx ); 1868 uiCtx += ( pcTempCU ) ? ((pcTempCU->getARPW( uiTempPartIdx )==0)?0:1): 0; 1869 1870 return uiCtx; 1871 } 1872 #endif 1809 1873 1810 1874 UInt TComDataCU::getCtxInterDir( UInt uiAbsPartIdx ) … … 4246 4310 } 4247 4311 #endif 4312 #if H_3D_ARP 4313 Void TComDataCU::setARPWSubParts ( UChar w, UInt uiAbsPartIdx, UInt uiDepth ) 4314 { 4315 assert( sizeof( *m_puhARPW) == 1 ); 4316 memset( m_puhARPW + uiAbsPartIdx, w, m_pcPic->getNumPartInCU() >> ( 2 * uiDepth ) ); 4317 } 4318 #endif 4248 4319 //! \} -
branches/HTM-DEV-0.3-dev2a/source/Lib/TLibCommon/TComDataCU.h
r455 r464 49 49 #include "TComPattern.h" 50 50 51 #if H_3D_ARP 52 #include "TComYuv.h" 53 #endif 54 51 55 #include <algorithm> 52 56 #include <vector> … … 190 194 DisInfo* m_pDvInfo; 191 195 #endif 196 #if H_3D_ARP 197 UChar* m_puhARPW; 198 #endif 192 199 // ------------------------------------------------------------------------------------------------------------------- 193 200 // misc. variables … … 220 227 221 228 /// compute scaling factor from POC difference 229 #if !H_3D_ARP 222 230 Int xGetDistScaleFactor ( Int iCurrPOC, Int iCurrRefPOC, Int iColPOC, Int iColRefPOC ); 223 231 #endif 232 224 233 Void xDeriveCenterIdx( UInt uiPartIdx, UInt& ruiPartIdxCenter ); 225 234 … … 231 240 // create / destroy / initialize / copy 232 241 // ------------------------------------------------------------------------------------------------------------------- 233 242 #if H_3D_ARP 243 Int xGetDistScaleFactor ( Int iCurrPOC, Int iCurrRefPOC, Int iColPOC, Int iColRefPOC ); 244 #endif 234 245 Void create ( UInt uiNumPartition, UInt uiWidth, UInt uiHeight, Bool bDecSubCu, Int unitSize 235 246 #if ADAPTIVE_QP_SELECTION … … 434 445 435 446 #endif 447 448 #if H_3D_ARP 449 UChar* getARPW () { return m_puhARPW; } 450 UChar getARPW ( UInt uiIdx ) { return m_puhARPW[uiIdx]; } 451 Void setARPW ( UInt uiIdx, UChar w ) { m_puhARPW[uiIdx] = w; } 452 Void setARPWSubParts ( UChar w, UInt uiAbsPartIdx, UInt uiDepth ); 453 Double getARPWFactor ( UInt uiIdx ); 454 #endif 436 455 // ------------------------------------------------------------------------------------------------------------------- 437 456 // member functions for accessing partition information … … 539 558 UInt getCtxInterDir ( UInt uiAbsPartIdx ); 540 559 560 #if H_3D_ARP 561 UInt getCTXARPWFlag ( UInt uiAbsPartIdx ); 562 #endif 563 541 564 UInt getSliceStartCU ( UInt pos ) { return m_sliceStartCU[pos-m_uiAbsIdxInLCU]; } 542 565 UInt getSliceSegmentStartCU ( UInt pos ) { return m_sliceSegmentStartCU[pos-m_uiAbsIdxInLCU]; } -
branches/HTM-DEV-0.3-dev2a/source/Lib/TLibCommon/TComInterpolationFilter.cpp
r324 r464 73 73 }; 74 74 75 #if H_3D_ARP 76 const Short TComInterpolationFilter::m_lumaFilterARP[4][NTAPS_LUMA_ARP] = 77 { 78 {64, 0}, 79 {48, 16}, 80 {32, 32}, 81 {16, 48} 82 }; 83 const Short TComInterpolationFilter::m_chromaFilterARP[8][NTAPS_CHROMA_ARP] = 84 { 85 {64, 0}, 86 {56, 8}, 87 {48, 16}, 88 {40, 24}, 89 {32, 32}, 90 {24, 40}, 91 {16, 48}, 92 {8, 56} 93 }; 94 #endif 95 75 96 // ==================================================================================================================== 76 97 // Private member functions … … 325 346 * \param isLast Flag indicating whether it is the last filtering operation 326 347 */ 327 Void TComInterpolationFilter::filterHorLuma(Pel *src, Int srcStride, Short *dst, Int dstStride, Int width, Int height, Int frac, Bool isLast ) 348 Void TComInterpolationFilter::filterHorLuma(Pel *src, Int srcStride, Short *dst, Int dstStride, Int width, Int height, Int frac, Bool isLast 349 #if H_3D_ARP 350 , Bool filterType 351 #endif 352 ) 328 353 { 329 354 assert(frac >= 0 && frac < 4); … … 335 360 else 336 361 { 362 #if H_3D_ARP 363 if(filterType) 364 { 365 filterHor<NTAPS_LUMA_ARP>(g_bitDepthY, src, srcStride, dst, dstStride, width, height, isLast, m_lumaFilterARP[frac]); 366 } 367 else 368 { 369 #endif 337 370 filterHor<NTAPS_LUMA>(g_bitDepthY, src, srcStride, dst, dstStride, width, height, isLast, m_lumaFilter[frac]); 371 #if H_3D_ARP 372 } 373 #endif 338 374 } 339 375 } … … 352 388 * \param isLast Flag indicating whether it is the last filtering operation 353 389 */ 354 Void TComInterpolationFilter::filterVerLuma(Pel *src, Int srcStride, Short *dst, Int dstStride, Int width, Int height, Int frac, Bool isFirst, Bool isLast ) 390 Void TComInterpolationFilter::filterVerLuma(Pel *src, Int srcStride, Short *dst, Int dstStride, Int width, Int height, Int frac, Bool isFirst, Bool isLast 391 #if H_3D_ARP 392 , Bool filterType 393 #endif 394 ) 355 395 { 356 396 assert(frac >= 0 && frac < 4); … … 362 402 else 363 403 { 404 #if H_3D_ARP 405 if(filterType) 406 { 407 filterVer<NTAPS_LUMA_ARP>(g_bitDepthY, src, srcStride, dst, dstStride, width, height, isFirst, isLast, m_lumaFilterARP[frac]); 408 } 409 else 410 { 411 #endif 364 412 filterVer<NTAPS_LUMA>(g_bitDepthY, src, srcStride, dst, dstStride, width, height, isFirst, isLast, m_lumaFilter[frac]); 413 #if H_3D_ARP 414 } 415 #endif 365 416 } 366 417 } … … 378 429 * \param isLast Flag indicating whether it is the last filtering operation 379 430 */ 380 Void TComInterpolationFilter::filterHorChroma(Pel *src, Int srcStride, Short *dst, Int dstStride, Int width, Int height, Int frac, Bool isLast ) 431 Void TComInterpolationFilter::filterHorChroma(Pel *src, Int srcStride, Short *dst, Int dstStride, Int width, Int height, Int frac, Bool isLast 432 #if H_3D_ARP 433 , Bool filterType 434 #endif 435 ) 381 436 { 382 437 assert(frac >= 0 && frac < 8); … … 388 443 else 389 444 { 445 #if H_3D_ARP 446 if(filterType) 447 { 448 filterHor<NTAPS_CHROMA_ARP>(g_bitDepthC, src, srcStride, dst, dstStride, width, height, isLast, m_chromaFilterARP[frac]); 449 } 450 else 451 { 452 #endif 390 453 filterHor<NTAPS_CHROMA>(g_bitDepthC, src, srcStride, dst, dstStride, width, height, isLast, m_chromaFilter[frac]); 454 #if H_3D_ARP 455 } 456 #endif 391 457 } 392 458 } … … 405 471 * \param isLast Flag indicating whether it is the last filtering operation 406 472 */ 407 Void TComInterpolationFilter::filterVerChroma(Pel *src, Int srcStride, Short *dst, Int dstStride, Int width, Int height, Int frac, Bool isFirst, Bool isLast ) 473 Void TComInterpolationFilter::filterVerChroma(Pel *src, Int srcStride, Short *dst, Int dstStride, Int width, Int height, Int frac, Bool isFirst, Bool isLast 474 #if H_3D_ARP 475 , Bool filterType 476 #endif 477 ) 408 478 { 409 479 assert(frac >= 0 && frac < 8); … … 415 485 else 416 486 { 487 #if H_3D_ARP 488 if(filterType) 489 { 490 filterVer<NTAPS_CHROMA_ARP>(g_bitDepthC, src, srcStride, dst, dstStride, width, height, isFirst, isLast, m_chromaFilterARP[frac]); 491 } 492 else 493 { 494 #endif 417 495 filterVer<NTAPS_CHROMA>(g_bitDepthC, src, srcStride, dst, dstStride, width, height, isFirst, isLast, m_chromaFilter[frac]); 496 #if H_3D_ARP 497 } 498 #endif 418 499 } 419 500 } -
branches/HTM-DEV-0.3-dev2a/source/Lib/TLibCommon/TComInterpolationFilter.h
r324 r464 45 45 //! \{ 46 46 47 #if H_3D_ARP 48 #define NTAPS_LUMA_ARP 2 ///< Number of taps for luma 49 #define NTAPS_CHROMA_ARP 2 ///< Number of taps for chroma 50 #endif 51 47 52 #define NTAPS_LUMA 8 ///< Number of taps for luma 48 53 #define NTAPS_CHROMA 4 ///< Number of taps for chroma … … 58 63 static const Short m_lumaFilter[4][NTAPS_LUMA]; ///< Luma filter taps 59 64 static const Short m_chromaFilter[8][NTAPS_CHROMA]; ///< Chroma filter taps 60 65 #if H_3D_ARP 66 static const Short m_lumaFilterARP [4][NTAPS_LUMA_ARP]; ///< Luma filter taps for ARP 67 static const Short m_chromaFilterARP[8][NTAPS_CHROMA_ARP]; ///< Chroma filter taps for ARP 68 #endif 61 69 static Void filterCopy(Int bitDepth, const Pel *src, Int srcStride, Short *dst, Int dstStride, Int width, Int height, Bool isFirst, Bool isLast); 62 70 … … 73 81 ~TComInterpolationFilter() {} 74 82 75 Void filterHorLuma (Pel *src, Int srcStride, Short *dst, Int dstStride, Int width, Int height, Int frac, Bool isLast ); 76 Void filterVerLuma (Pel *src, Int srcStride, Short *dst, Int dstStride, Int width, Int height, Int frac, Bool isFirst, Bool isLast ); 77 Void filterHorChroma(Pel *src, Int srcStride, Short *dst, Int dstStride, Int width, Int height, Int frac, Bool isLast ); 78 Void filterVerChroma(Pel *src, Int srcStride, Short *dst, Int dstStride, Int width, Int height, Int frac, Bool isFirst, Bool isLast ); 83 Void filterHorLuma (Pel *src, Int srcStride, Short *dst, Int dstStride, Int width, Int height, Int frac, Bool isLast 84 #if H_3D_ARP 85 , Bool filterType = false 86 #endif 87 ); 88 Void filterVerLuma (Pel *src, Int srcStride, Short *dst, Int dstStride, Int width, Int height, Int frac, Bool isFirst, Bool isLast 89 #if H_3D_ARP 90 , Bool filterType = false 91 #endif 92 ); 93 Void filterHorChroma(Pel *src, Int srcStride, Short *dst, Int dstStride, Int width, Int height, Int frac, Bool isLast 94 #if H_3D_ARP 95 , Bool filterType = false 96 #endif 97 ); 98 Void filterVerChroma(Pel *src, Int srcStride, Short *dst, Int dstStride, Int width, Int height, Int frac, Bool isFirst, Bool isLast 99 #if H_3D_ARP 100 , Bool filterType = false 101 #endif 102 ); 79 103 }; 80 104 -
branches/HTM-DEV-0.3-dev2a/source/Lib/TLibCommon/TComPrediction.cpp
r446 r464 63 63 m_cYuvPredTemp.destroy(); 64 64 65 #if H_3D_ARP 66 m_acYuvPredBase[0].destroy(); 67 m_acYuvPredBase[1].destroy(); 68 #endif 69 65 70 if( m_pLumaRecBuffer ) 66 71 { … … 103 108 104 109 m_cYuvPredTemp.create( MAX_CU_SIZE, MAX_CU_SIZE ); 110 #if H_3D_ARP 111 m_acYuvPredBase[0] .create( g_uiMaxCUWidth, g_uiMaxCUHeight ); 112 m_acYuvPredBase[1] .create( g_uiMaxCUWidth, g_uiMaxCUHeight ); 113 #endif 105 114 } 106 115 … … 485 494 TComMv cMv = pcCU->getCUMvField( eRefPicList )->getMv( uiPartAddr ); 486 495 pcCU->clipMv(cMv); 496 #if H_3D_ARP 497 if( pcCU->getARPW( uiPartAddr ) > 0 498 && pcCU->getPartitionSize(uiPartAddr)==SIZE_2Nx2N 499 && pcCU->getSlice()->getRefPic( eRefPicList, iRefIdx )->getPOC()!= pcCU->getSlice()->getPOC() 500 ) 501 { 502 xPredInterUniARP( pcCU, uiPartAddr, iWidth, iHeight, eRefPicList, rpcYuvPred, bi ); 503 } 504 else 505 { 506 #endif 487 507 xPredInterLumaBlk ( pcCU, pcCU->getSlice()->getRefPic( eRefPicList, iRefIdx )->getPicYuvRec(), uiPartAddr, &cMv, iWidth, iHeight, rpcYuvPred, bi ); 488 508 xPredInterChromaBlk( pcCU, pcCU->getSlice()->getRefPic( eRefPicList, iRefIdx )->getPicYuvRec(), uiPartAddr, &cMv, iWidth, iHeight, rpcYuvPred, bi ); 489 } 509 #if H_3D_ARP 510 } 511 #endif 512 } 513 514 #if H_3D_ARP 515 Void TComPrediction::xPredInterUniARP( TComDataCU* pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, RefPicList eRefPicList, TComYuv*& rpcYuvPred, Bool bi, TComMvField * pNewMvFiled ) 516 { 517 Int iRefIdx = pNewMvFiled ? pNewMvFiled->getRefIdx() : pcCU->getCUMvField( eRefPicList )->getRefIdx( uiPartAddr ); 518 TComMv cMv = pNewMvFiled ? pNewMvFiled->getMv() : pcCU->getCUMvField( eRefPicList )->getMv( uiPartAddr ); 519 Bool bTobeScaled = false; 520 TComPic* pcPicYuvBaseCol = NULL; 521 TComPic* pcPicYuvBaseRef = NULL; 522 523 #if H_3D_NBDV 524 DisInfo cDistparity; 525 cDistparity.bDV = pcCU->getDvInfo(uiPartAddr).bDV; 526 if( cDistparity.bDV ) 527 { 528 cDistparity.m_acNBDV = pcCU->getDvInfo(0).m_acNBDV; 529 assert(pcCU->getDvInfo(uiPartAddr).bDV == pcCU->getDvInfo(0).bDV); 530 cDistparity.m_aVIdxCan = pcCU->getDvInfo(uiPartAddr).m_aVIdxCan; 531 } 532 #else 533 assert(0); // ARP can be applied only when a DV is available 534 #endif 535 536 UChar dW = cDistparity.bDV ? pcCU->getARPW ( uiPartAddr ) : 0; 537 538 if( cDistparity.bDV ) 539 { 540 if( dW > 0 && pcCU->getSlice()->getRefPic( eRefPicList, 0 )->getPOC()!= pcCU->getSlice()->getPOC() ) 541 { 542 bTobeScaled = true; 543 } 544 545 pcPicYuvBaseCol = pcCU->getSlice()->getBaseViewRefPic( pcCU->getSlice()->getPOC(), cDistparity.m_aVIdxCan ); 546 pcPicYuvBaseRef = pcCU->getSlice()->getBaseViewRefPic( pcCU->getSlice()->getRefPic( eRefPicList, 0 )->getPOC(), cDistparity.m_aVIdxCan ); 547 548 if( ( !pcPicYuvBaseCol || pcPicYuvBaseCol->getPOC() != pcCU->getSlice()->getPOC() ) || ( !pcPicYuvBaseRef || pcPicYuvBaseRef->getPOC() != pcCU->getSlice()->getRefPic( eRefPicList, 0 )->getPOC() ) ) 549 { 550 dW = 0; 551 bTobeScaled = false; 552 } 553 else 554 { 555 assert( pcPicYuvBaseCol->getPOC() == pcCU->getSlice()->getPOC() && pcPicYuvBaseRef->getPOC() == pcCU->getSlice()->getRefPic( eRefPicList, 0 )->getPOC() ); 556 } 557 558 if(bTobeScaled) 559 { 560 Int iCurrPOC = pcCU->getSlice()->getPOC(); 561 Int iColRefPOC = pcCU->getSlice()->getRefPOC( eRefPicList, iRefIdx ); 562 Int iCurrRefPOC = pcCU->getSlice()->getRefPOC( eRefPicList, 0); 563 Int iScale = pcCU-> xGetDistScaleFactor(iCurrPOC, iCurrRefPOC, iCurrPOC, iColRefPOC); 564 if ( iScale != 4096 ) 565 { 566 cMv = cMv.scaleMv( iScale ); 567 } 568 iRefIdx = 0; 569 } 570 } 571 572 pcCU->clipMv(cMv); 573 TComPicYuv* pcPicYuvRef = pcCU->getSlice()->getRefPic( eRefPicList, iRefIdx )->getPicYuvRec(); 574 xPredInterLumaBlk ( pcCU, pcPicYuvRef, uiPartAddr, &cMv, iWidth, iHeight, rpcYuvPred, bi, true ); 575 xPredInterChromaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cMv, iWidth, iHeight, rpcYuvPred, bi, true ); 576 577 if( dW > 0 ) 578 { 579 TComYuv * pYuvB0 = &m_acYuvPredBase[0]; 580 TComYuv * pYuvB1 = &m_acYuvPredBase[1]; 581 582 TComMv cMVwithDisparity = cMv + cDistparity.m_acNBDV; 583 pcCU->clipMv(cMVwithDisparity); 584 585 assert ( cDistparity.bDV ); 586 587 pcPicYuvRef = pcPicYuvBaseCol->getPicYuvRec(); 588 xPredInterLumaBlk ( pcCU, pcPicYuvRef, uiPartAddr, &cDistparity.m_acNBDV, iWidth, iHeight, pYuvB0, bi, true ); 589 xPredInterChromaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cDistparity.m_acNBDV, iWidth, iHeight, pYuvB0, bi, true ); 590 591 pcPicYuvRef = pcPicYuvBaseRef->getPicYuvRec(); 592 xPredInterLumaBlk ( pcCU, pcPicYuvRef, uiPartAddr, &cMVwithDisparity, iWidth, iHeight, pYuvB1, bi, true ); 593 xPredInterChromaBlk( pcCU, pcPicYuvRef, uiPartAddr, &cMVwithDisparity, iWidth, iHeight, pYuvB1, bi, true ); 594 595 pYuvB0->subtractARP( pYuvB0 , pYuvB1 , uiPartAddr , iWidth , iHeight ); 596 597 if( 2 == dW ) 598 { 599 pYuvB0->multiplyARP( uiPartAddr , iWidth , iHeight , dW ); 600 } 601 602 rpcYuvPred->addARP( rpcYuvPred , pYuvB0 , uiPartAddr , iWidth , iHeight , !bi ); 603 } 604 } 605 #endif 490 606 491 607 Void TComPrediction::xPredInterBi ( TComDataCU* pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, TComYuv*& rpcYuvPred ) … … 551 667 * \param bi Flag indicating whether bipred is used 552 668 */ 553 Void TComPrediction::xPredInterLumaBlk( TComDataCU *cu, TComPicYuv *refPic, UInt partAddr, TComMv *mv, Int width, Int height, TComYuv *&dstPic, Bool bi ) 669 Void TComPrediction::xPredInterLumaBlk( TComDataCU *cu, TComPicYuv *refPic, UInt partAddr, TComMv *mv, Int width, Int height, TComYuv *&dstPic, Bool bi 670 #if H_3D_ARP 671 , Bool filterType 672 #endif 673 ) 554 674 { 555 675 Int refStride = refPic->getStride(); … … 565 685 if ( yFrac == 0 ) 566 686 { 567 m_if.filterHorLuma( ref, refStride, dst, dstStride, width, height, xFrac, !bi ); 687 m_if.filterHorLuma( ref, refStride, dst, dstStride, width, height, xFrac, !bi 688 #if H_3D_ARP 689 , filterType 690 #endif 691 ); 568 692 } 569 693 else if ( xFrac == 0 ) 570 694 { 571 m_if.filterVerLuma( ref, refStride, dst, dstStride, width, height, yFrac, true, !bi ); 695 m_if.filterVerLuma( ref, refStride, dst, dstStride, width, height, yFrac, true, !bi 696 #if H_3D_ARP 697 , filterType 698 #endif 699 ); 572 700 } 573 701 else … … 579 707 Int halfFilterSize = ( filterSize >> 1 ); 580 708 581 m_if.filterHorLuma(ref - (halfFilterSize-1)*refStride, refStride, tmp, tmpStride, width, height+filterSize-1, xFrac, false ); 582 m_if.filterVerLuma(tmp + (halfFilterSize-1)*tmpStride, tmpStride, dst, dstStride, width, height, yFrac, false, !bi); 709 m_if.filterHorLuma(ref - (halfFilterSize-1)*refStride, refStride, tmp, tmpStride, width, height+filterSize-1, xFrac, false 710 #if H_3D_ARP 711 , filterType 712 #endif 713 ); 714 m_if.filterVerLuma(tmp + (halfFilterSize-1)*tmpStride, tmpStride, dst, dstStride, width, height, yFrac, false, !bi 715 #if H_3D_ARP 716 , filterType 717 #endif 718 ); 583 719 } 584 720 } … … 596 732 * \param bi Flag indicating whether bipred is used 597 733 */ 598 Void TComPrediction::xPredInterChromaBlk( TComDataCU *cu, TComPicYuv *refPic, UInt partAddr, TComMv *mv, Int width, Int height, TComYuv *&dstPic, Bool bi ) 734 Void TComPrediction::xPredInterChromaBlk( TComDataCU *cu, TComPicYuv *refPic, UInt partAddr, TComMv *mv, Int width, Int height, TComYuv *&dstPic, Bool bi 735 #if H_3D_ARP 736 , Bool filterType 737 #endif 738 ) 599 739 { 600 740 Int refStride = refPic->getCStride(); … … 623 763 if ( yFrac == 0 ) 624 764 { 625 m_if.filterHorChroma(refCb, refStride, dstCb, dstStride, cxWidth, cxHeight, xFrac, !bi); 626 m_if.filterHorChroma(refCr, refStride, dstCr, dstStride, cxWidth, cxHeight, xFrac, !bi); 765 m_if.filterHorChroma(refCb, refStride, dstCb, dstStride, cxWidth, cxHeight, xFrac, !bi 766 #if H_3D_ARP 767 , filterType 768 #endif 769 ); 770 m_if.filterHorChroma(refCr, refStride, dstCr, dstStride, cxWidth, cxHeight, xFrac, !bi 771 #if H_3D_ARP 772 , filterType 773 #endif 774 ); 627 775 } 628 776 else if ( xFrac == 0 ) 629 777 { 630 m_if.filterVerChroma(refCb, refStride, dstCb, dstStride, cxWidth, cxHeight, yFrac, true, !bi); 631 m_if.filterVerChroma(refCr, refStride, dstCr, dstStride, cxWidth, cxHeight, yFrac, true, !bi); 778 m_if.filterVerChroma(refCb, refStride, dstCb, dstStride, cxWidth, cxHeight, yFrac, true, !bi 779 #if H_3D_ARP 780 , filterType 781 #endif 782 ); 783 m_if.filterVerChroma(refCr, refStride, dstCr, dstStride, cxWidth, cxHeight, yFrac, true, !bi 784 #if H_3D_ARP 785 , filterType 786 #endif 787 ); 632 788 } 633 789 else 634 790 { 635 m_if.filterHorChroma(refCb - (halfFilterSize-1)*refStride, refStride, extY, extStride, cxWidth, cxHeight+filterSize-1, xFrac, false); 636 m_if.filterVerChroma(extY + (halfFilterSize-1)*extStride, extStride, dstCb, dstStride, cxWidth, cxHeight , yFrac, false, !bi); 791 m_if.filterHorChroma(refCb - (halfFilterSize-1)*refStride, refStride, extY, extStride, cxWidth, cxHeight+filterSize-1, xFrac, false 792 #if H_3D_ARP 793 , filterType 794 #endif 795 ); 796 m_if.filterVerChroma(extY + (halfFilterSize-1)*extStride, extStride, dstCb, dstStride, cxWidth, cxHeight , yFrac, false, !bi 797 #if H_3D_ARP 798 , filterType 799 #endif 800 ); 637 801 638 m_if.filterHorChroma(refCr - (halfFilterSize-1)*refStride, refStride, extY, extStride, cxWidth, cxHeight+filterSize-1, xFrac, false); 639 m_if.filterVerChroma(extY + (halfFilterSize-1)*extStride, extStride, dstCr, dstStride, cxWidth, cxHeight , yFrac, false, !bi); 802 m_if.filterHorChroma(refCr - (halfFilterSize-1)*refStride, refStride, extY, extStride, cxWidth, cxHeight+filterSize-1, xFrac, false 803 #if H_3D_ARP 804 , filterType 805 #endif 806 ); 807 m_if.filterVerChroma(extY + (halfFilterSize-1)*extStride, extStride, dstCr, dstStride, cxWidth, cxHeight , yFrac, false, !bi 808 #if H_3D_ARP 809 , filterType 810 #endif 811 ); 640 812 } 641 813 } -
branches/HTM-DEV-0.3-dev2a/source/Lib/TLibCommon/TComPrediction.h
r324 r464 65 65 TComYuv m_acYuvPred[2]; 66 66 TComYuv m_cYuvPredTemp; 67 #if H_3D_ARP 68 TComYuv m_acYuvPredBase[2]; 69 #endif 67 70 TComYuv m_filteredBlock[4][4]; 68 71 TComYuv m_filteredBlockTmp[4]; … … 77 80 78 81 // motion compensation functions 82 #if H_3D_ARP 83 Void xPredInterUniARP ( TComDataCU* pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, RefPicList eRefPicList, TComYuv*& rpcYuvPred, Bool bi=false, TComMvField * pNewMvFiled = NULL ); 84 #endif 79 85 Void xPredInterUni ( TComDataCU* pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, RefPicList eRefPicList, TComYuv*& rpcYuvPred, Bool bi=false ); 80 86 Void xPredInterBi ( TComDataCU* pcCU, UInt uiPartAddr, Int iWidth, Int iHeight, TComYuv*& rpcYuvPred ); 81 Void xPredInterLumaBlk ( TComDataCU *cu, TComPicYuv *refPic, UInt partAddr, TComMv *mv, Int width, Int height, TComYuv *&dstPic, Bool bi ); 82 Void xPredInterChromaBlk( TComDataCU *cu, TComPicYuv *refPic, UInt partAddr, TComMv *mv, Int width, Int height, TComYuv *&dstPic, Bool bi ); 87 Void xPredInterLumaBlk ( TComDataCU *cu, TComPicYuv *refPic, UInt partAddr, TComMv *mv, Int width, Int height, TComYuv *&dstPic, Bool bi 88 #if H_3D_ARP 89 , Bool filterType = false 90 #endif 91 ); 92 Void xPredInterChromaBlk( TComDataCU *cu, TComPicYuv *refPic, UInt partAddr, TComMv *mv, Int width, Int height, TComYuv *&dstPic, Bool bi 93 #if H_3D_ARP 94 , Bool filterType = false 95 #endif 96 ); 83 97 Void xWeightedAverage ( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, Int iRefIdx0, Int iRefIdx1, UInt uiPartAddr, Int iWidth, Int iHeight, TComYuv*& rpcYuvDst ); 84 98 -
branches/HTM-DEV-0.3-dev2a/source/Lib/TLibCommon/TComSlice.cpp
r446 r464 1486 1486 m_dimensionId[i][j] = 0; 1487 1487 } 1488 1489 #if H_3D_ARP 1490 m_uiUseAdvResPred[i] = 0; 1491 m_uiARPStepNum[i] = 1; 1492 #endif 1488 1493 } 1489 1494 #endif … … 2257 2262 } 2258 2263 } 2264 2265 #if H_3D_ARP 2266 Void TComSlice::setARPStepNum() 2267 { 2268 Bool bAllIvRef = true; 2269 2270 if(!getVPS()->getUseAdvRP(getLayerId())) 2271 { 2272 m_nARPStepNum = 0; 2273 } 2274 else 2275 { 2276 for( Int iRefListId = 0; iRefListId < 2; iRefListId++ ) 2277 { 2278 RefPicList eRefPicList = RefPicList( iRefListId ); 2279 Int iNumRefIdx = getNumRefIdx(eRefPicList); 2280 2281 if( iNumRefIdx <= 0 ) 2282 { 2283 continue; 2284 } 2285 2286 for ( Int i = 0; i < iNumRefIdx; i++ ) 2287 { 2288 if( getRefPic( eRefPicList, i)->getPOC() != getPOC() ) 2289 { 2290 bAllIvRef = false; 2291 break; 2292 } 2293 } 2294 2295 if( bAllIvRef == false ) { break; } 2296 } 2297 m_nARPStepNum = !bAllIvRef ? getVPS()->getARPStepNum(getLayerId()) : 0; 2298 } 2299 } 2300 #endif 2259 2301 #endif 2260 2302 /** get scaling matrix from RefMatrixID -
branches/HTM-DEV-0.3-dev2a/source/Lib/TLibCommon/TComSlice.h
r446 r464 524 524 #if H_3D 525 525 Int m_viewIndex [MAX_NUM_LAYERS ]; 526 #if H_3D_ARP 527 UInt m_uiUseAdvResPred [MAX_NUM_LAYERS ]; 528 UInt m_uiARPStepNum [MAX_NUM_LAYERS ]; 529 #endif 526 530 #endif 527 531 … … 642 646 Int getDepthId ( Int layerIdInVps ) { return getScalabilityId( layerIdInVps, DEPTH_ID ); } 643 647 Int getLayerIdInNuh( Int viewIndex, Bool depthFlag ); 648 #if H_3D_ARP 649 UInt getUseAdvRP ( Int layerIdInVps ) { return m_uiUseAdvResPred[layerIdInVps]; } 650 UInt getARPStepNum( Int layerIdInVps ) { return m_uiARPStepNum[layerIdInVps]; } 651 Void setUseAdvRP ( Int layerIdInVps, UInt val ) { m_uiUseAdvResPred[layerIdInVps] = val; } 652 Void setARPStepNum( Int layerIdInVps, UInt val ) { m_uiARPStepNum[layerIdInVps] = val; } 653 #endif 644 654 #endif 645 655 … … 1486 1496 Int m_aaiCodedScale [2][MAX_NUM_LAYERS]; 1487 1497 Int m_aaiCodedOffset[2][MAX_NUM_LAYERS]; 1498 #if H_3D_ARP 1499 TComList<TComPic*> * m_pBaseViewRefPicList[MAX_NUM_LAYERS]; 1500 UInt m_nARPStepNum; 1501 #endif 1488 1502 #endif 1489 1503 #endif … … 1611 1625 #endif 1612 1626 #endif 1627 1628 #if H_3D_ARP 1629 Void setBaseViewRefPicList( TComList<TComPic*> *pListPic, Int iViewIdx ) { m_pBaseViewRefPicList[iViewIdx] = pListPic; } 1630 Void setARPStepNum(); 1631 TComPic* getBaseViewRefPic ( UInt uiPOC , Int iViewIdx ) { return xGetRefPic( *m_pBaseViewRefPicList[iViewIdx], uiPOC ); } 1632 UInt getARPStepNum( ) { return m_nARPStepNum; } 1633 #endif 1634 1613 1635 Void setRefPOCList (); 1614 1636 Void setColFromL0Flag ( UInt colFromL0 ) { m_colFromL0Flag = colFromL0; } -
branches/HTM-DEV-0.3-dev2a/source/Lib/TLibCommon/TComYuv.cpp
r446 r464 661 661 } 662 662 } 663 664 #if H_3D_ARP 665 Void TComYuv::addARP( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, Bool bClip ) 666 { 667 addARPLuma ( pcYuvSrc0, pcYuvSrc1, uiAbsPartIdx, uiWidth , uiHeight , bClip ); 668 addARPChroma ( pcYuvSrc0, pcYuvSrc1, uiAbsPartIdx, uiWidth>>1, uiHeight>>1 , bClip ); 669 } 670 671 Void TComYuv::addARPLuma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, Bool bClip ) 672 { 673 Int x, y; 674 675 Pel* pSrc0 = pcYuvSrc0->getLumaAddr( uiAbsPartIdx ); 676 Pel* pSrc1 = pcYuvSrc1->getLumaAddr( uiAbsPartIdx ); 677 Pel* pDst = getLumaAddr( uiAbsPartIdx ); 678 679 UInt iSrc0Stride = pcYuvSrc0->getStride(); 680 UInt iSrc1Stride = pcYuvSrc1->getStride(); 681 UInt iDstStride = getStride(); 682 for ( y = uiHeight-1; y >= 0; y-- ) 683 { 684 for ( x = uiWidth-1; x >= 0; x-- ) 685 { 686 pDst[x] = pSrc0[x] + pSrc1[x]; 687 if( bClip ) 688 { 689 pDst[x] = ClipY( pDst[x] ); 690 } 691 } 692 pSrc0 += iSrc0Stride; 693 pSrc1 += iSrc1Stride; 694 pDst += iDstStride; 695 } 696 } 697 698 Void TComYuv::addARPChroma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, Bool bClip ) 699 { 700 Int x, y; 701 702 Pel* pSrcU0 = pcYuvSrc0->getCbAddr( uiAbsPartIdx ); 703 Pel* pSrcU1 = pcYuvSrc1->getCbAddr( uiAbsPartIdx ); 704 Pel* pSrcV0 = pcYuvSrc0->getCrAddr( uiAbsPartIdx ); 705 Pel* pSrcV1 = pcYuvSrc1->getCrAddr( uiAbsPartIdx ); 706 Pel* pDstU = getCbAddr( uiAbsPartIdx ); 707 Pel* pDstV = getCrAddr( uiAbsPartIdx ); 708 709 UInt iSrc0Stride = pcYuvSrc0->getCStride(); 710 UInt iSrc1Stride = pcYuvSrc1->getCStride(); 711 UInt iDstStride = getCStride(); 712 for ( y = uiHeight-1; y >= 0; y-- ) 713 { 714 for ( x = uiWidth-1; x >= 0; x-- ) 715 { 716 pDstU[x] = pSrcU0[x] + pSrcU1[x]; 717 pDstV[x] = pSrcV0[x] + pSrcV1[x]; 718 if( bClip ) 719 { 720 pDstU[x] = ClipC( pDstU[x] ); 721 pDstV[x] = ClipC( pDstV[x] ); 722 } 723 } 724 725 pSrcU0 += iSrc0Stride; 726 pSrcU1 += iSrc1Stride; 727 pSrcV0 += iSrc0Stride; 728 pSrcV1 += iSrc1Stride; 729 pDstU += iDstStride; 730 pDstV += iDstStride; 731 } 732 } 733 734 Void TComYuv::subtractARP( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth , UInt uiHeight ) 735 { 736 subtractARPLuma ( pcYuvSrc0, pcYuvSrc1, uiAbsPartIdx, uiWidth , uiHeight ); 737 subtractARPChroma( pcYuvSrc0, pcYuvSrc1, uiAbsPartIdx, uiWidth>>1 , uiHeight>>1 ); 738 } 739 740 Void TComYuv::subtractARPLuma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth , UInt uiHeight ) 741 { 742 Int x, y; 743 744 Pel* pSrc0 = pcYuvSrc0->getLumaAddr( uiAbsPartIdx ); 745 Pel* pSrc1 = pcYuvSrc1->getLumaAddr( uiAbsPartIdx ); 746 Pel* pDst = getLumaAddr( uiAbsPartIdx ); 747 748 Int iSrc0Stride = pcYuvSrc0->getStride(); 749 Int iSrc1Stride = pcYuvSrc1->getStride(); 750 Int iDstStride = getStride(); 751 for ( y = uiHeight-1; y >= 0; y-- ) 752 { 753 for ( x = uiWidth-1; x >= 0; x-- ) 754 { 755 pDst[x] = pSrc0[x] - pSrc1[x]; 756 } 757 pSrc0 += iSrc0Stride; 758 pSrc1 += iSrc1Stride; 759 pDst += iDstStride; 760 } 761 } 762 763 Void TComYuv::subtractARPChroma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth , UInt uiHeight ) 764 { 765 Int x, y; 766 767 Pel* pSrcU0 = pcYuvSrc0->getCbAddr( uiAbsPartIdx ); 768 Pel* pSrcU1 = pcYuvSrc1->getCbAddr( uiAbsPartIdx ); 769 Pel* pSrcV0 = pcYuvSrc0->getCrAddr( uiAbsPartIdx ); 770 Pel* pSrcV1 = pcYuvSrc1->getCrAddr( uiAbsPartIdx ); 771 Pel* pDstU = getCbAddr( uiAbsPartIdx ); 772 Pel* pDstV = getCrAddr( uiAbsPartIdx ); 773 774 Int iSrc0Stride = pcYuvSrc0->getCStride(); 775 Int iSrc1Stride = pcYuvSrc1->getCStride(); 776 Int iDstStride = getCStride(); 777 for ( y = uiHeight-1; y >= 0; y-- ) 778 { 779 for ( x = uiWidth-1; x >= 0; x-- ) 780 { 781 pDstU[x] = pSrcU0[x] - pSrcU1[x]; 782 pDstV[x] = pSrcV0[x] - pSrcV1[x]; 783 } 784 pSrcU0 += iSrc0Stride; 785 pSrcU1 += iSrc1Stride; 786 pSrcV0 += iSrc0Stride; 787 pSrcV1 += iSrc1Stride; 788 pDstU += iDstStride; 789 pDstV += iDstStride; 790 } 791 } 792 793 Void TComYuv::multiplyARP( UInt uiAbsPartIdx , UInt uiWidth , UInt uiHeight , UChar dW ) 794 { 795 multiplyARPLuma( uiAbsPartIdx , uiWidth , uiHeight , dW ); 796 multiplyARPChroma( uiAbsPartIdx , uiWidth >> 1 , uiHeight >> 1 , dW ); 797 } 798 799 Void TComYuv::xxMultiplyLine( Pel* pSrcDst , UInt uiWidth , UChar dW ) 800 { 801 assert( dW == 2 ); 802 for( UInt x = 0 ; x < uiWidth ; x++ ) 803 pSrcDst[x] = pSrcDst[x] >> 1; 804 } 805 806 Void TComYuv::multiplyARPLuma( UInt uiAbsPartIdx , UInt uiWidth , UInt uiHeight , UChar dW ) 807 { 808 Pel* pDst = getLumaAddr( uiAbsPartIdx ); 809 Int iDstStride = getStride(); 810 for ( Int y = uiHeight-1; y >= 0; y-- ) 811 { 812 xxMultiplyLine( pDst , uiWidth , dW ); 813 pDst += iDstStride; 814 } 815 } 816 817 Void TComYuv::multiplyARPChroma( UInt uiAbsPartIdx , UInt uiWidth , UInt uiHeight , UChar dW ) 818 { 819 Pel* pDstU = getCbAddr( uiAbsPartIdx ); 820 Pel* pDstV = getCrAddr( uiAbsPartIdx ); 821 822 Int iDstStride = getCStride(); 823 for ( Int y = uiHeight-1; y >= 0; y-- ) 824 { 825 xxMultiplyLine( pDstU , uiWidth , dW ); 826 xxMultiplyLine( pDstV , uiWidth , dW ); 827 pDstU += iDstStride; 828 pDstV += iDstStride; 829 } 830 } 831 #endif 663 832 #endif 664 833 //! \} -
branches/HTM-DEV-0.3-dev2a/source/Lib/TLibCommon/TComYuv.h
r446 r464 182 182 #if H_3D 183 183 Void addClipPartLuma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiTrUnitIdx, UInt uiPartSize ); 184 185 #if H_3D_ARP 186 Void addARP ( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth , UInt uiHeight , Bool bClip ); 187 Void addARPLuma ( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth , UInt uiHeight , Bool bClip ); 188 Void addARPChroma ( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth , UInt uiHeight , Bool bClip ); 189 Void subtractARP ( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth , UInt uiHeight ); 190 Void subtractARPLuma ( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth , UInt uiHeight ); 191 Void subtractARPChroma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth , UInt uiHeight ); 192 Void multiplyARP ( UInt uiAbsPartIdx , UInt uiWidth , UInt uiHeight , UChar dW ); 193 Void multiplyARPLuma ( UInt uiAbsPartIdx , UInt uiWidth , UInt uiHeight , UChar dW ); 194 Void multiplyARPChroma( UInt uiAbsPartIdx , UInt uiWidth , UInt uiHeight , UChar dW ); 195 private: 196 Void xxMultiplyLine( Pel * pSrcDst , UInt uiWidth , UChar dW ); 184 197 #endif 198 #endif 185 199 186 200 };// END CLASS DEFINITION TComYuv -
branches/HTM-DEV-0.3-dev2a/source/Lib/TLibCommon/TypeDef.h
r456 r464 89 89 // QC_CU_NBDV_D0181 90 90 // SEC_DEFAULT_DV_D0112 91 92 #define H_3D_ARP 1 // Advanced residual prediction (ARP), JCT3V-D0177 91 93 #endif 92 94 … … 115 117 #define DVFROM_ABOVELEFT 5 116 118 #endif 119 120 ///// ***** ADVANCED INTERVIEW RESIDUAL PREDICTION ********* 121 #if H_3D_ARP 122 #define H_3D_ARP_WFNR 3 123 #endif 124 117 125 ///////////////////////////////////////////////////////////////////////////////////////// 118 126 /////////////////////////////////// HM RELATED DEFINES ////////////////////////////////
Note: See TracChangeset for help on using the changeset viewer.