Changeset 1262 in 3DVCSoftware for branches/HTM-14.1-update-dev4-Qualcomm/source/Lib/TLibCommon/TComYuv.cpp
- Timestamp:
- 29 Jun 2015, 19:43:32 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-14.1-update-dev4-Qualcomm/source/Lib/TLibCommon/TComYuv.cpp
r1200 r1262 487 487 } 488 488 489 #if H_3D_ARP490 Void TComYuv::addARP( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, Bool bClip )491 { 492 addARPLuma ( pcYuvSrc0, pcYuvSrc1, uiAbsPartIdx, uiWidth , uiHeight , bClip );493 addARPChroma ( pcYuvSrc0, pcYuvSrc1, uiAbsPartIdx, uiWidth>>1, uiHeight>>1 , bClip );494 } 495 496 Void TComYuv::addARPLuma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, Bool bClip )489 #if NH_3D_ARP 490 Void TComYuv::addARP( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, Bool bClip, const BitDepths &clipBitDepths ) 491 { 492 addARPLuma ( pcYuvSrc0, pcYuvSrc1, uiAbsPartIdx, uiWidth , uiHeight , bClip , clipBitDepths); 493 addARPChroma ( pcYuvSrc0, pcYuvSrc1, uiAbsPartIdx, uiWidth>>1, uiHeight>>1 , bClip , clipBitDepths); 494 } 495 496 Void TComYuv::addARPLuma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, Bool bClip, const BitDepths &clipBitDepths ) 497 497 { 498 498 Int x, y; 499 499 500 Pel* pSrc0 = pcYuvSrc0->getLumaAddr( uiAbsPartIdx ); 501 Pel* pSrc1 = pcYuvSrc1->getLumaAddr( uiAbsPartIdx ); 502 Pel* pDst = getLumaAddr( uiAbsPartIdx ); 503 504 UInt iSrc0Stride = pcYuvSrc0->getStride(); 505 UInt iSrc1Stride = pcYuvSrc1->getStride(); 506 UInt iDstStride = getStride(); 507 Int iIFshift = IF_INTERNAL_PREC - g_bitDepthY; 500 Pel* pSrc0 = pcYuvSrc0->getAddr( COMPONENT_Y, uiAbsPartIdx ); 501 Pel* pSrc1 = pcYuvSrc1->getAddr( COMPONENT_Y, uiAbsPartIdx ); 502 Pel* pDst = getAddr( COMPONENT_Y, uiAbsPartIdx ); 503 504 UInt iSrc0Stride = pcYuvSrc0->getStride(COMPONENT_Y); 505 UInt iSrc1Stride = pcYuvSrc1->getStride(COMPONENT_Y); 506 UInt iDstStride = getStride(COMPONENT_Y); 507 const Int clipbd = clipBitDepths.recon[CHANNEL_TYPE_LUMA]; 508 Int iIFshift = IF_INTERNAL_PREC - clipbd; 508 509 Int iOffSet = ( 1 << ( iIFshift - 1 ) ) + IF_INTERNAL_OFFS; 510 509 511 for ( y = uiHeight-1; y >= 0; y-- ) 510 512 { … … 514 516 if( bClip ) 515 517 { 516 pDst[x] = ClipY( ( pDst[x] + iOffSet ) >> iIFshift);518 pDst[x] = Pel(ClipBD<Int>(Int( ( pDst[x] + iOffSet ) >> iIFshift ), clipbd)); 517 519 } 518 520 } … … 523 525 } 524 526 525 Void TComYuv::addARPChroma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, Bool bClip )527 Void TComYuv::addARPChroma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, Bool bClip, const BitDepths &clipBitDepths ) 526 528 { 527 529 Int x, y; 528 530 529 Pel* pSrcU0 = pcYuvSrc0->getCbAddr( uiAbsPartIdx ); 530 Pel* pSrcU1 = pcYuvSrc1->getCbAddr( uiAbsPartIdx ); 531 Pel* pSrcV0 = pcYuvSrc0->getCrAddr( uiAbsPartIdx ); 532 Pel* pSrcV1 = pcYuvSrc1->getCrAddr( uiAbsPartIdx ); 533 Pel* pDstU = getCbAddr( uiAbsPartIdx ); 534 Pel* pDstV = getCrAddr( uiAbsPartIdx ); 535 536 UInt iSrc0Stride = pcYuvSrc0->getCStride(); 537 UInt iSrc1Stride = pcYuvSrc1->getCStride(); 538 UInt iDstStride = getCStride(); 539 540 Int iIFshift = IF_INTERNAL_PREC - g_bitDepthC; 531 Pel* pSrcU0 = pcYuvSrc0->getAddr( COMPONENT_Cb, uiAbsPartIdx ); 532 Pel* pSrcU1 = pcYuvSrc1->getAddr( COMPONENT_Cb, uiAbsPartIdx ); 533 Pel* pSrcV0 = pcYuvSrc0->getAddr( COMPONENT_Cr, uiAbsPartIdx ); 534 Pel* pSrcV1 = pcYuvSrc1->getAddr( COMPONENT_Cr, uiAbsPartIdx ); 535 Pel* pDstU = getAddr( COMPONENT_Cb, uiAbsPartIdx ); 536 Pel* pDstV = getAddr( COMPONENT_Cr, uiAbsPartIdx ); 537 538 UInt iSrc0StrideCb = pcYuvSrc0->getStride(COMPONENT_Cb); 539 UInt iSrc1StrideCb = pcYuvSrc1->getStride(COMPONENT_Cb); 540 UInt iDstStrideCb = getStride(COMPONENT_Cb); 541 542 UInt iSrc0StrideCr = pcYuvSrc0->getStride(COMPONENT_Cr); 543 UInt iSrc1StrideCr = pcYuvSrc1->getStride(COMPONENT_Cr); 544 UInt iDstStrideCr = getStride(COMPONENT_Cr); 545 546 const Int clipbd = clipBitDepths.recon[CHANNEL_TYPE_CHROMA]; 547 Int iIFshift = IF_INTERNAL_PREC - clipbd; 541 548 Int iOffSet = ( 1 << ( iIFshift - 1 ) ) + IF_INTERNAL_OFFS; 542 549 … … 549 556 if( bClip ) 550 557 { 551 pDstU[x] = ClipC( ( pDstU[x] + iOffSet ) >> iIFshift ); 552 pDstV[x] = ClipC( ( pDstV[x] + iOffSet ) >> iIFshift ); 553 } 554 } 555 558 pDstU[x] = Pel(ClipBD<Int>( Int( ( pDstU[x] + iOffSet ) >> iIFshift ), clipbd)); 559 pDstV[x] = Pel(ClipBD<Int>( Int( ( pDstV[x] + iOffSet ) >> iIFshift ), clipbd)); 560 } 561 } 562 563 pSrcU0 += iSrc0StrideCb; 564 pSrcU1 += iSrc1StrideCb; 565 pSrcV0 += iSrc0StrideCr; 566 pSrcV1 += iSrc1StrideCr; 567 pDstU += iDstStrideCb; 568 pDstV += iDstStrideCr; 569 } 570 } 571 572 Void TComYuv::subtractARP( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth , UInt uiHeight ) 573 { 574 subtractARPLuma ( pcYuvSrc0, pcYuvSrc1, uiAbsPartIdx, uiWidth , uiHeight ); 575 576 if (uiWidth > 8 && pcYuvSrc1->getNumberValidComponents() > 1) 577 { 578 subtractARPChroma( pcYuvSrc0, pcYuvSrc1, uiAbsPartIdx, uiWidth>>1 , uiHeight>>1 ); 579 } 580 } 581 582 Void TComYuv::subtractARPLuma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth , UInt uiHeight ) 583 { 584 Int x, y; 585 586 Pel* pSrc0 = pcYuvSrc0->getAddr(COMPONENT_Y, uiAbsPartIdx ); 587 Pel* pSrc1 = pcYuvSrc1->getAddr(COMPONENT_Y, uiAbsPartIdx ); 588 Pel* pDst = getAddr (COMPONENT_Y, uiAbsPartIdx ); 589 590 Int iSrc0Stride = pcYuvSrc0->getStride(COMPONENT_Y); 591 Int iSrc1Stride = pcYuvSrc1->getStride(COMPONENT_Y); 592 Int iDstStride = getStride(COMPONENT_Y); 593 for ( y = uiHeight-1; y >= 0; y-- ) 594 { 595 for ( x = uiWidth-1; x >= 0; x-- ) 596 { 597 pDst[x] = pSrc0[x] - pSrc1[x]; 598 } 599 pSrc0 += iSrc0Stride; 600 pSrc1 += iSrc1Stride; 601 pDst += iDstStride; 602 } 603 } 604 605 Void TComYuv::subtractARPChroma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth , UInt uiHeight ) 606 { 607 Int x, y; 608 609 Pel* pSrcU0 = pcYuvSrc0->getAddr(COMPONENT_Cb, uiAbsPartIdx ); 610 Pel* pSrcU1 = pcYuvSrc1->getAddr(COMPONENT_Cb, uiAbsPartIdx ); 611 Pel* pSrcV0 = pcYuvSrc0->getAddr(COMPONENT_Cr, uiAbsPartIdx ); 612 Pel* pSrcV1 = pcYuvSrc1->getAddr(COMPONENT_Cr, uiAbsPartIdx ); 613 Pel* pDstU = getAddr(COMPONENT_Cb, uiAbsPartIdx ); 614 Pel* pDstV = getAddr(COMPONENT_Cr, uiAbsPartIdx ); 615 616 Int iSrc0Stride = pcYuvSrc0->getStride(COMPONENT_Cb); 617 Int iSrc1Stride = pcYuvSrc1->getStride(COMPONENT_Cb); 618 Int iDstStride = getStride( COMPONENT_Cb ); 619 for ( y = uiHeight-1; y >= 0; y-- ) 620 { 621 for ( x = uiWidth-1; x >= 0; x-- ) 622 { 623 pDstU[x] = pSrcU0[x] - pSrcU1[x]; 624 pDstV[x] = pSrcV0[x] - pSrcV1[x]; 625 } 556 626 pSrcU0 += iSrc0Stride; 557 627 pSrcU1 += iSrc1Stride; … … 563 633 } 564 634 565 Void TComYuv::subtractARP( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth , UInt uiHeight )566 {567 subtractARPLuma ( pcYuvSrc0, pcYuvSrc1, uiAbsPartIdx, uiWidth , uiHeight );568 569 if (uiWidth > 8)570 subtractARPChroma( pcYuvSrc0, pcYuvSrc1, uiAbsPartIdx, uiWidth>>1 , uiHeight>>1 );571 }572 573 Void TComYuv::subtractARPLuma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth , UInt uiHeight )574 {575 Int x, y;576 577 Pel* pSrc0 = pcYuvSrc0->getLumaAddr( uiAbsPartIdx );578 Pel* pSrc1 = pcYuvSrc1->getLumaAddr( uiAbsPartIdx );579 Pel* pDst = getLumaAddr( uiAbsPartIdx );580 581 Int iSrc0Stride = pcYuvSrc0->getStride();582 Int iSrc1Stride = pcYuvSrc1->getStride();583 Int iDstStride = getStride();584 for ( y = uiHeight-1; y >= 0; y-- )585 {586 for ( x = uiWidth-1; x >= 0; x-- )587 {588 pDst[x] = pSrc0[x] - pSrc1[x];589 }590 pSrc0 += iSrc0Stride;591 pSrc1 += iSrc1Stride;592 pDst += iDstStride;593 }594 }595 596 Void TComYuv::subtractARPChroma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth , UInt uiHeight )597 {598 Int x, y;599 600 Pel* pSrcU0 = pcYuvSrc0->getCbAddr( uiAbsPartIdx );601 Pel* pSrcU1 = pcYuvSrc1->getCbAddr( uiAbsPartIdx );602 Pel* pSrcV0 = pcYuvSrc0->getCrAddr( uiAbsPartIdx );603 Pel* pSrcV1 = pcYuvSrc1->getCrAddr( uiAbsPartIdx );604 Pel* pDstU = getCbAddr( uiAbsPartIdx );605 Pel* pDstV = getCrAddr( uiAbsPartIdx );606 607 Int iSrc0Stride = pcYuvSrc0->getCStride();608 Int iSrc1Stride = pcYuvSrc1->getCStride();609 Int iDstStride = getCStride();610 for ( y = uiHeight-1; y >= 0; y-- )611 {612 for ( x = uiWidth-1; x >= 0; x-- )613 {614 pDstU[x] = pSrcU0[x] - pSrcU1[x];615 pDstV[x] = pSrcV0[x] - pSrcV1[x];616 }617 pSrcU0 += iSrc0Stride;618 pSrcU1 += iSrc1Stride;619 pSrcV0 += iSrc0Stride;620 pSrcV1 += iSrc1Stride;621 pDstU += iDstStride;622 pDstV += iDstStride;623 }624 }625 626 635 Void TComYuv::multiplyARP( UInt uiAbsPartIdx , UInt uiWidth , UInt uiHeight , UChar dW ) 627 636 { 628 637 multiplyARPLuma( uiAbsPartIdx , uiWidth , uiHeight , dW ); 629 638 630 if (uiWidth > 8) 639 if ( uiWidth > 8 && getNumberValidComponents() > 1 ) 640 { 631 641 multiplyARPChroma( uiAbsPartIdx , uiWidth >> 1 , uiHeight >> 1 , dW ); 642 } 632 643 } 633 644 … … 641 652 Void TComYuv::multiplyARPLuma( UInt uiAbsPartIdx , UInt uiWidth , UInt uiHeight , UChar dW ) 642 653 { 643 Pel* pDst = get LumaAddr(uiAbsPartIdx );644 Int iDstStride = getStride( );654 Pel* pDst = getAddr(COMPONENT_Y, uiAbsPartIdx ); 655 Int iDstStride = getStride(COMPONENT_Y); 645 656 for ( Int y = uiHeight-1; y >= 0; y-- ) 646 657 { … … 652 663 Void TComYuv::multiplyARPChroma( UInt uiAbsPartIdx , UInt uiWidth , UInt uiHeight , UChar dW ) 653 664 { 654 Pel* pDstU = get CbAddr(uiAbsPartIdx );655 Pel* pDstV = get CrAddr(uiAbsPartIdx );656 657 Int iDstStride = get CStride();665 Pel* pDstU = getAddr( COMPONENT_Cb, uiAbsPartIdx ); 666 Pel* pDstV = getAddr( COMPONENT_Cr, uiAbsPartIdx ); 667 668 Int iDstStride = getStride( COMPONENT_Cb ); 658 669 for ( Int y = uiHeight-1; y >= 0; y-- ) 659 670 {
Note: See TracChangeset for help on using the changeset viewer.