History

Check left/top flag instead of uiNeighborAvail in neon deblocking

When deblocking over slice edges (in single threaded sliced encoding), uiNeighborAvail might say that a MB isn't available, even though it is available for deblocking here. This fixes the encoder test of dynamic slicing, with neon optimizations enabled.

Martin Storsjö committed 12 years ago

Commit e5abbdc1 parent c228c511 file · +4 −2Browse files

Showing the changes to codec/encoder/core/src/deblocking.cpp (1 of 1 file). Show all

Unified · Split

codec/encoder/core/src/deblocking.cpp+4−2
@@ -555,7 +555,8 @@ void DeblockingIntraMb (DeblockingFunc* pfDeblocking, SMB* pCurMb, SDeblockingFi · 554 unmodified lines
555#if defined(HAVE_NEON) && defined(SINGLE_REF_FRAME)555#if defined(HAVE_NEON) && defined(SINGLE_REF_FRAME)
556void DeblockingBSCalc_neon (SWelsFuncPtrList* pFunc, SMB* pCurMb, uint8_t uiBS[2][4][4], Mb_Type uiCurMbType,556void DeblockingBSCalc_neon (SWelsFuncPtrList* pFunc, SMB* pCurMb, uint8_t uiBS[2][4][4], Mb_Type uiCurMbType,
557 int32_t iMbStride, int32_t iLeftFlag, int32_t iTopFlag) {557 int32_t iMbStride, int32_t iLeftFlag, int32_t iTopFlag) {
558 DeblockingBSCalcEnc_neon (pCurMb->pNonZeroCount, pCurMb->sMv, pCurMb->uiNeighborAvail, iMbStride, uiBS);558 DeblockingBSCalcEnc_neon (pCurMb->pNonZeroCount, pCurMb->sMv,
559 (iLeftFlag ? LEFT_MB_POS : 0) | (iTopFlag ? TOP_MB_POS : 0), iMbStride, uiBS);
559 if (iLeftFlag) {560 if (iLeftFlag) {
560 if (IS_INTRA ((pCurMb - 1)->uiMbType)) {561 if (IS_INTRA ((pCurMb - 1)->uiMbType)) {
561 * (uint32_t*)uiBS[0][0] = 0x04040404;562 * (uint32_t*)uiBS[0][0] = 0x04040404;
@@ -576,7 +577,8 @@ void DeblockingBSCalc_neon (SWelsFuncPtrList* pFunc, SMB* pCurMb, uint8_t uiBS[2 · 14 unmodified lines
576#if defined(HAVE_NEON_AARCH64) && defined(SINGLE_REF_FRAME)577#if defined(HAVE_NEON_AARCH64) && defined(SINGLE_REF_FRAME)
577void DeblockingBSCalc_AArch64_neon (SWelsFuncPtrList* pFunc, SMB* pCurMb, uint8_t uiBS[2][4][4], Mb_Type uiCurMbType,578void DeblockingBSCalc_AArch64_neon (SWelsFuncPtrList* pFunc, SMB* pCurMb, uint8_t uiBS[2][4][4], Mb_Type uiCurMbType,
578 int32_t iMbStride, int32_t iLeftFlag, int32_t iTopFlag) {579 int32_t iMbStride, int32_t iLeftFlag, int32_t iTopFlag) {
579 DeblockingBSCalcEnc_AArch64_neon (pCurMb->pNonZeroCount, pCurMb->sMv, pCurMb->uiNeighborAvail, iMbStride, uiBS);580 DeblockingBSCalcEnc_AArch64_neon (pCurMb->pNonZeroCount, pCurMb->sMv,
581 (iLeftFlag ? LEFT_MB_POS : 0) | (iTopFlag ? TOP_MB_POS : 0), iMbStride, uiBS);
580 if (iLeftFlag) {582 if (iLeftFlag) {
581 if (IS_INTRA ((pCurMb - 1)->uiMbType)) {583 if (IS_INTRA ((pCurMb - 1)->uiMbType)) {
582 * (uint32_t*)uiBS[0][0] = 0x04040404;584 * (uint32_t*)uiBS[0][0] = 0x04040404;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t