This makes the code work properly on big endian. The MC case is similar to how it's done in the encoder. Neither of these should have any significant performance impact.
Showing the changes to codec/decoder/core/src/deblocking.cpp (1 of 3 files). Show all
Unified · Split
| @@ -233,18 +233,18 @@ uint32_t DeblockingBsMarginalMBAvcbase (PDqLayer pCurDqLayer, int32_t iEdge, int · 232 unmodified lines | |||
| 233 | uint32_t uiBSx4; | 233 | uint32_t uiBSx4; |
| 234 | //uint8_t* bS = static_cast<uint8_t*>(&uiBSx4); | 234 | //uint8_t* bS = static_cast<uint8_t*>(&uiBSx4); |
| 235 | uint8_t* pBS = (uint8_t*) (&uiBSx4); | 235 | uint8_t* pBS = (uint8_t*) (&uiBSx4); |
| 236 | uint32_t uiBIdx = * (uint32_t*) (&g_kuiTableBIdx[iEdge][0]); | 236 | const uint8_t *pBIdx = &g_kuiTableBIdx[iEdge][0]; |
| 237 | uint32_t uiBnIdx = * (uint32_t*) (&g_kuiTableBIdx[iEdge][4]); | 237 | const uint8_t *pBnIdx = &g_kuiTableBIdx[iEdge][4]; |
| 238 | 238 | ||
| 239 | for (i = 0; i < 4; i++) { | 239 | for (i = 0; i < 4; i++) { |
| 240 | if (pCurDqLayer->pNzc[iMbXy][uiBIdx & 0xff] | pCurDqLayer->pNzc[iNeighMb][uiBnIdx & 0xff]) { | 240 | if (pCurDqLayer->pNzc[iMbXy][*pBIdx] | pCurDqLayer->pNzc[iNeighMb][*pBnIdx]) { |
| 241 | pBS[i] = 2; | 241 | pBS[i] = 2; |
| 242 | } else { | 242 | } else { |
| 243 | pBS[i] = MB_BS_MV (pCurDqLayer->pRefIndex[LIST_0], pCurDqLayer->pMv[LIST_0], iMbXy, iNeighMb, (uiBIdx & 0xff), | 243 | pBS[i] = MB_BS_MV (pCurDqLayer->pRefIndex[LIST_0], pCurDqLayer->pMv[LIST_0], iMbXy, iNeighMb, *pBIdx, |
| 244 | (uiBnIdx & 0xff)); | 244 | *pBnIdx); |
| 245 | } | 245 | } |
| 246 | uiBIdx = uiBIdx >> 8; | 246 | pBIdx++; |
| 247 | uiBnIdx = uiBnIdx >> 8; | 247 | pBnIdx++; |
| 248 | } | 248 | } |
| 249 | return uiBSx4; | 249 | return uiBSx4; |
| 250 | } | 250 | } |