Showing the changes to codec/encoder/core/src/deblocking.cpp (1 of 28 files). Show all
Unified · Split
| @@ -605,6 +605,23 @@ void DeblockingMbAvcbase (SWelsFuncPtrList* pFunc, SMB* pCurMb, SDeblockingFilte · 604 unmodified lines | ||
| 605 | 605 | DeblockingIntraMb (&pFunc->pfDeblocking, pCurMb, pFilter); |
| 606 | 606 | break; |
| 607 | 607 | default: |
| 608 | +#if (defined(HAVE_NEON) && defined(SINGLE_REF_FRAME)) | |
| 609 | + DeblockingBSCalcEnc_neon(pCurMb->pNonZeroCount, pCurMb->sMv, pCurMb->uiNeighborAvail, iMbStride, uiBS); | |
| 610 | + if (iLeftFlag){ | |
| 611 | + if (IS_INTRA((pCurMb-1)->uiMbType)) { | |
| 612 | + *(uint32_t*)uiBS[0][0] = 0x04040404; | |
| 613 | + } | |
| 614 | + } else { | |
| 615 | + *(uint32_t*)uiBS[0][0] = 0; | |
| 616 | + } | |
| 617 | + if (iTopFlag) { | |
| 618 | + if (IS_INTRA((pCurMb-iMbStride)->uiMbType)) { | |
| 619 | + *(uint32_t*)uiBS[1][0] = 0x04040404; | |
| 620 | + } | |
| 621 | + } else { | |
| 622 | + *(uint32_t*)uiBS[1][0] = 0; | |
| 623 | + } | |
| 624 | +#else | |
| 608 | 625 | if (iLeftFlag) { |
| 609 | 626 | * (uint32_t*)uiBS[0][0] = IS_INTRA ((pCurMb - 1)->uiMbType) ? 0x04040404 : DeblockingBSMarginalMBAvcbase (pCurMb, |
| 610 | 627 | pCurMb - 1, 0); |
| @@ -630,7 +647,7 @@ void DeblockingMbAvcbase (SWelsFuncPtrList* pFunc, SMB* pCurMb, SDeblockingFilte · 19 unmodified lines | ||
| 630 | 647 | * (uint32_t*)uiBS[0][1] = * (uint32_t*)uiBS[0][2] = * (uint32_t*)uiBS[0][3] = |
| 631 | 648 | * (uint32_t*)uiBS[1][1] = * (uint32_t*)uiBS[1][2] = * (uint32_t*)uiBS[1][3] = 0; |
| 632 | 649 | } |
| 633 | − | |
| 650 | +#endif | |
| 634 | 651 | DeblockingInterMb (&pFunc->pfDeblocking, pCurMb, pFilter, uiBS); |
| 635 | 652 | break; |
| 636 | 653 | } |
| @@ -768,10 +785,13 @@ void WelsNonZeroCount_c (int8_t* pNonZeroCount) { · 131 unmodified lines | ||
| 768 | 785 | } |
| 769 | 786 | void WelsBlockFuncInit (PSetNoneZeroCountZeroFunc* pfSetNZCZero, int32_t iCpu) { |
| 770 | 787 | *pfSetNZCZero = WelsNonZeroCount_c; |
| 788 | +#ifdef HAVE_NEON | |
| 789 | + if( iCpu & WELS_CPU_NEON ) { | |
| 790 | + *pfSetNZCZero = WelsNonZeroCount_neon; | |
| 791 | + } | |
| 792 | +#endif | |
| 771 | 793 | } |
| 772 | 794 | |
| 773 | − | |
| 774 | − | |
| 775 | 795 | void DeblockingInit (DeblockingFunc* pFunc, int32_t iCpu) { |
| 776 | 796 | pFunc->pfLumaDeblockingLT4Ver = DeblockLumaLt4V_c; |
| 777 | 797 | pFunc->pfLumaDeblockingEQ4Ver = DeblockLumaEq4V_c; |
| @@ -796,6 +816,20 @@ void DeblockingInit (DeblockingFunc* pFunc, int32_t iCpu) { · 18 unmodified lines | ||
| 796 | 816 | pFunc->pfChromaDeblockingEQ4Hor = DeblockChromaEq4H_ssse3; |
| 797 | 817 | } |
| 798 | 818 | #endif |
| 819 | + | |
| 820 | +#if defined(HAVE_NEON) | |
| 821 | + if (iCpu & WELS_CPU_NEON ) { | |
| 822 | + pFunc->pfLumaDeblockingLT4Ver = DeblockLumaLt4V_neon; | |
| 823 | + pFunc->pfLumaDeblockingEQ4Ver = DeblockLumaEq4V_neon; | |
| 824 | + pFunc->pfLumaDeblockingLT4Hor = DeblockLumaLt4H_neon; | |
| 825 | + pFunc->pfLumaDeblockingEQ4Hor = DeblockLumaEq4H_neon; | |
| 826 | + | |
| 827 | + pFunc->pfChromaDeblockingLT4Ver = DeblockChromaLt4V_neon; | |
| 828 | + pFunc->pfChromaDeblockingEQ4Ver = DeblockChromaEq4V_neon; | |
| 829 | + pFunc->pfChromaDeblockingLT4Hor = DeblockChromaLt4H_neon; | |
| 830 | + pFunc->pfChromaDeblockingEQ4Hor = DeblockChromaEq4H_neon; | |
| 831 | + } | |
| 832 | +#endif | |
| 799 | 833 | } |
| 800 | 834 | |
| 801 | 835 | |