uint32_t DeblockingBsMarginalMBAvcbase (PDqLayer pCurDqLayer, int32_t iEdge, int32_t iNeighMb, int32_t iMbXy) { int32_t i; uint32_t uiBSx4; //uint8_t* bS = static_cast<uint8_t*>(&uiBSx4); uint8_t* pBS = (uint8_t*) (&uiBSx4); const uint8_t *pBIdx = &g_kuiTableBIdx[iEdge][0]; const uint8_t *pBnIdx = &g_kuiTableBIdx[iEdge][4]; for (i = 0; i < 4; i++) { if (pCurDqLayer->pNzc[iMbXy][*pBIdx] | pCurDqLayer->pNzc[iNeighMb][*pBnIdx]) { pBS[i] = 2; } else { pBS[i] = MB_BS_MV (pCurDqLayer->pRefIndex[LIST_0], pCurDqLayer->pMv[LIST_0], iMbXy, iNeighMb, *pBIdx, *pBnIdx); } pBIdx++; pBnIdx++; } return uiBSx4; }
uint32_t DeblockingBsMarginalMBAvcbase (PDqLayer pCurDqLayer, int32_t iEdge, int32_t iNeighMb, int32_t iMbXy) { int32_t i; uint32_t uiBSx4; //uint8_t* bS = static_cast<uint8_t*>(&uiBSx4); uint8_t* pBS = (uint8_t*) (&uiBSx4); uint32_t uiBIdx = * (uint32_t*) (&g_kuiTableBIdx[iEdge][0]); uint32_t uiBnIdx = * (uint32_t*) (&g_kuiTableBIdx[iEdge][4]); for (i = 0; i < 4; i++) { if (pCurDqLayer->pNzc[iMbXy][uiBIdx & 0xff] | pCurDqLayer->pNzc[iNeighMb][uiBnIdx & 0xff]) { pBS[i] = 2; } else { pBS[i] = MB_BS_MV (pCurDqLayer->pRefIndex[LIST_0], pCurDqLayer->pMv[LIST_0], iMbXy, iNeighMb, (uiBIdx & 0xff), (uiBnIdx & 0xff)); } uiBIdx = uiBIdx >> 8; uiBnIdx = uiBnIdx >> 8; } return uiBSx4; }
uint32_t DeblockingBSMarginalMBAvcbase (SMB* pCurMb, SMB* pNeighMb, int32_t iEdge) { int32_t i; uint32_t uiBSx4; uint8_t* pBS = (uint8_t*) (&uiBSx4); const uint8_t *pBIdx = &g_kuiTableBIdx[iEdge][0]; const uint8_t *pBnIdx = &g_kuiTableBIdx[iEdge][4]; for (i = 0; i < 4; i++) { if (pCurMb->pNonZeroCount[*pBIdx] | pNeighMb->pNonZeroCount[*pBnIdx]) { pBS[i] = 2; } else { pBS[i] = #ifndef SINGLE_REF_FRAME (pCurMb->uiRefIndex[g_kiTableBlock8x8Idx[1][iEdge][i]] - pNeighMb->uiRefIndex[g_kiTableBlock8x8NIdx[1][iEdge][i]]) || #endif MB_BS_MV (pCurMb->sMv, pNeighMb->sMv, *pBIdx, *pBnIdx); } pBIdx++; pBnIdx++; } return uiBSx4; }
uint32_t DeblockingBsMarginalMBAvcbase (PDqLayer pCurDqLayer, int32_t iEdge, int32_t iNeighMb, int32_t iMbXy) { int32_t i, j; uint32_t uiBSx4; uint8_t* pBS = (uint8_t*) (&uiBSx4); const uint8_t* pBIdx = &g_kuiTableBIdx[iEdge][0]; const uint8_t* pBnIdx = &g_kuiTableBIdx[iEdge][4]; const uint8_t* pB8x8Idx = &g_kuiTableB8x8Idx[iEdge][0]; const uint8_t* pBn8x8Idx = &g_kuiTableB8x8Idx[iEdge][8]; if (pCurDqLayer->pTransformSize8x8Flag[iMbXy] && pCurDqLayer->pTransformSize8x8Flag[iNeighMb]) { for (i = 0; i < 2; i++) { uint8_t uiNzc = 0; for (j = 0; uiNzc == 0 && j < 4; j++) { uiNzc |= (pCurDqLayer->pNzc[iMbXy][* (pB8x8Idx + j)] | pCurDqLayer->pNzc[iNeighMb][* (pBn8x8Idx + j)]); } if (uiNzc) { pBS[i << 1] = pBS[1 + (i << 1)] = 2; } else { pBS[i << 1] = pBS[1 + (i << 1)] = MB_BS_MV (pCurDqLayer->pRefIndex[LIST_0], pCurDqLayer->pMv[LIST_0], iMbXy, iNeighMb, *pB8x8Idx, *pBn8x8Idx); } pB8x8Idx += 4; pBn8x8Idx += 4; } } else if (pCurDqLayer->pTransformSize8x8Flag[iMbXy]) { for (i = 0; i < 2; i++) { uint8_t uiNzc = 0; for (j = 0; uiNzc == 0 && j < 4; j++) { uiNzc |= pCurDqLayer->pNzc[iMbXy][* (pB8x8Idx + j)]; } for (j = 0; j < 2; j++) { if (uiNzc | pCurDqLayer->pNzc[iNeighMb][*pBnIdx]) { pBS[j + (i << 1)] = 2; } else { pBS[j + (i << 1)] = MB_BS_MV (pCurDqLayer->pRefIndex[LIST_0], pCurDqLayer->pMv[LIST_0], iMbXy, iNeighMb, *pB8x8Idx, *pBnIdx); } pBnIdx++; } pB8x8Idx += 4; } } else if (pCurDqLayer->pTransformSize8x8Flag[iNeighMb]) { for (i = 0; i < 2; i++) { uint8_t uiNzc = 0; for (j = 0; uiNzc == 0 && j < 4; j++) { uiNzc |= pCurDqLayer->pNzc[iNeighMb][* (pBn8x8Idx + j)]; } for (j = 0; j < 2; j++) { if (uiNzc | pCurDqLayer->pNzc[iMbXy][*pBIdx]) { pBS[j + (i << 1)] = 2; } else { pBS[j + (i << 1)] = MB_BS_MV (pCurDqLayer->pRefIndex[LIST_0], pCurDqLayer->pMv[LIST_0], iMbXy, iNeighMb, *pBIdx, *pBn8x8Idx); } pBIdx++; } pBn8x8Idx += 4; } } else { // only 4x4 transform for (i = 0; i < 4; i++) { if (pCurDqLayer->pNzc[iMbXy][*pBIdx] | pCurDqLayer->pNzc[iNeighMb][*pBnIdx]) { pBS[i] = 2; } else { pBS[i] = MB_BS_MV (pCurDqLayer->pRefIndex[LIST_0], pCurDqLayer->pMv[LIST_0], iMbXy, iNeighMb, *pBIdx, *pBnIdx); } pBIdx++; pBnIdx++; } } return uiBSx4; }