shithub: openh264

Download patch

ref: c2dd7df0f24fcd9b32b2349df0728fe99cb23112
parent: 68973981755a35c9cbb960b0273c6f6c32cf8522
parent: e5abbdcdab7fcbf98148a910050494e993450c10
author: huili2 <[email protected]>
date: Wed Jul 9 06:10:53 EDT 2014

Merge pull request #1110 from mstorsjo/neon-deblock-fix

Check left/top flag instead of uiNeighborAvail in neon deblocking

--- a/codec/encoder/core/src/deblocking.cpp
+++ b/codec/encoder/core/src/deblocking.cpp
@@ -555,7 +555,8 @@
 #if defined(HAVE_NEON) && defined(SINGLE_REF_FRAME)
 void DeblockingBSCalc_neon (SWelsFuncPtrList* pFunc, SMB* pCurMb, uint8_t uiBS[2][4][4], Mb_Type uiCurMbType,
                             int32_t iMbStride, int32_t iLeftFlag, int32_t iTopFlag) {
-  DeblockingBSCalcEnc_neon (pCurMb->pNonZeroCount, pCurMb->sMv, pCurMb->uiNeighborAvail, iMbStride, uiBS);
+  DeblockingBSCalcEnc_neon (pCurMb->pNonZeroCount, pCurMb->sMv,
+                            (iLeftFlag ? LEFT_MB_POS : 0) | (iTopFlag ? TOP_MB_POS : 0), iMbStride, uiBS);
   if (iLeftFlag) {
     if (IS_INTRA ((pCurMb - 1)->uiMbType)) {
       * (uint32_t*)uiBS[0][0] = 0x04040404;
@@ -576,7 +577,8 @@
 #if defined(HAVE_NEON_AARCH64) && defined(SINGLE_REF_FRAME)
 void DeblockingBSCalc_AArch64_neon (SWelsFuncPtrList* pFunc, SMB* pCurMb, uint8_t uiBS[2][4][4], Mb_Type uiCurMbType,
                                     int32_t iMbStride, int32_t iLeftFlag, int32_t iTopFlag) {
-  DeblockingBSCalcEnc_AArch64_neon (pCurMb->pNonZeroCount, pCurMb->sMv, pCurMb->uiNeighborAvail, iMbStride, uiBS);
+  DeblockingBSCalcEnc_AArch64_neon (pCurMb->pNonZeroCount, pCurMb->sMv,
+                                    (iLeftFlag ? LEFT_MB_POS : 0) | (iTopFlag ? TOP_MB_POS : 0), iMbStride, uiBS);
   if (iLeftFlag) {
     if (IS_INTRA ((pCurMb - 1)->uiMbType)) {
       * (uint32_t*)uiBS[0][0] = 0x04040404;