Make the library work on big endian
Showing the changes to codec/encoder/core/src/deblocking.cpp (1 of 4 files). Show all
Unified · Split
| @@ -163,24 +163,24 @@ void inline DeblockingBSInsideMBAvsbase (int8_t* pNnzTab, uint8_t uiBS[2][4][4], · 162 unmodified lines | ||
| 163 | 163 | uiNnz32b2 = * (uint32_t*) (pNnzTab + 8); |
| 164 | 164 | uiNnz32b3 = * (uint32_t*) (pNnzTab + 12); |
| 165 | 165 | |
| 166 | − * (uint32_t*)uiBsx3 = (uiNnz32b0 | (uiNnz32b0 >> 8)) << iLShiftFactor; | |
| 166 | + * (uint32_t*)uiBsx3 = DEBLOCK_BS_SHIFTED (uiNnz32b0) << iLShiftFactor; | |
| 167 | 167 | uiBS[0][1][0] = uiBsx3[0]; |
| 168 | 168 | uiBS[0][2][0] = uiBsx3[1]; |
| 169 | 169 | uiBS[0][3][0] = uiBsx3[2]; |
| 170 | 170 | |
| 171 | − * (uint32_t*)uiBsx3 = (uiNnz32b1 | (uiNnz32b1 >> 8)) << iLShiftFactor; | |
| 171 | + * (uint32_t*)uiBsx3 = DEBLOCK_BS_SHIFTED (uiNnz32b1) << iLShiftFactor; | |
| 172 | 172 | uiBS[0][1][1] = uiBsx3[0]; |
| 173 | 173 | uiBS[0][2][1] = uiBsx3[1]; |
| 174 | 174 | uiBS[0][3][1] = uiBsx3[2]; |
| 175 | 175 | * (uint32_t*)uiBS[1][1] = (uiNnz32b0 | uiNnz32b1) << iLShiftFactor; |
| 176 | 176 | |
| 177 | − * (uint32_t*)uiBsx3 = (uiNnz32b2 | (uiNnz32b2 >> 8)) << iLShiftFactor; | |
| 177 | + * (uint32_t*)uiBsx3 = DEBLOCK_BS_SHIFTED (uiNnz32b2) << iLShiftFactor; | |
| 178 | 178 | uiBS[0][1][2] = uiBsx3[0]; |
| 179 | 179 | uiBS[0][2][2] = uiBsx3[1]; |
| 180 | 180 | uiBS[0][3][2] = uiBsx3[2]; |
| 181 | 181 | * (uint32_t*)uiBS[1][2] = (uiNnz32b1 | uiNnz32b2) << iLShiftFactor; |
| 182 | 182 | |
| 183 | − * (uint32_t*)uiBsx3 = (uiNnz32b3 | (uiNnz32b3 >> 8)) << iLShiftFactor; | |
| 183 | + * (uint32_t*)uiBsx3 = DEBLOCK_BS_SHIFTED (uiNnz32b3) << iLShiftFactor; | |
| 184 | 184 | uiBS[0][1][3] = uiBsx3[0]; |
| 185 | 185 | uiBS[0][2][3] = uiBsx3[1]; |
| 186 | 186 | uiBS[0][3][3] = uiBsx3[2]; |
| @@ -197,22 +197,22 @@ void inline DeblockingBSInsideMBNormal (SMB* pCurMb, uint8_t uiBS[2][4][4], int8 · 10 unmodified lines | ||
| 197 | 197 | uiNnz32b2 = * (uint32_t*) (pNnzTab + 8); |
| 198 | 198 | uiNnz32b3 = * (uint32_t*) (pNnzTab + 12); |
| 199 | 199 | |
| 200 | − * (uint32_t*)uiBsx4 = (uiNnz32b0 | (uiNnz32b0 >> 8)); | |
| 200 | + * (uint32_t*)uiBsx4 = DEBLOCK_BS_SHIFTED (uiNnz32b0); | |
| 201 | 201 | uiBS[0][1][0] = BS_EDGE (uiBsx4[0], iRefIdx, pCurMb->sMv, 1, 0); |
| 202 | 202 | uiBS[0][2][0] = BS_EDGE (uiBsx4[1], iRefIdx, pCurMb->sMv, 2, 1); |
| 203 | 203 | uiBS[0][3][0] = BS_EDGE (uiBsx4[2], iRefIdx, pCurMb->sMv, 3, 2); |
| 204 | 204 | |
| 205 | − * (uint32_t*)uiBsx4 = (uiNnz32b1 | (uiNnz32b1 >> 8)); | |
| 205 | + * (uint32_t*)uiBsx4 = DEBLOCK_BS_SHIFTED (uiNnz32b1); | |
| 206 | 206 | uiBS[0][1][1] = BS_EDGE (uiBsx4[0], iRefIdx, pCurMb->sMv, 5, 4); |
| 207 | 207 | uiBS[0][2][1] = BS_EDGE (uiBsx4[1], iRefIdx, pCurMb->sMv, 6, 5); |
| 208 | 208 | uiBS[0][3][1] = BS_EDGE (uiBsx4[2], iRefIdx, pCurMb->sMv, 7, 6); |
| 209 | 209 | |
| 210 | − * (uint32_t*)uiBsx4 = (uiNnz32b2 | (uiNnz32b2 >> 8)); | |
| 210 | + * (uint32_t*)uiBsx4 = DEBLOCK_BS_SHIFTED (uiNnz32b2); | |
| 211 | 211 | uiBS[0][1][2] = BS_EDGE (uiBsx4[0], iRefIdx, pCurMb->sMv, 9, 8); |
| 212 | 212 | uiBS[0][2][2] = BS_EDGE (uiBsx4[1], iRefIdx, pCurMb->sMv, 10, 9); |
| 213 | 213 | uiBS[0][3][2] = BS_EDGE (uiBsx4[2], iRefIdx, pCurMb->sMv, 11, 10); |
| 214 | 214 | |
| 215 | − * (uint32_t*)uiBsx4 = (uiNnz32b3 | (uiNnz32b3 >> 8)); | |
| 215 | + * (uint32_t*)uiBsx4 = DEBLOCK_BS_SHIFTED (uiNnz32b3); | |
| 216 | 216 | uiBS[0][1][3] = BS_EDGE (uiBsx4[0], iRefIdx, pCurMb->sMv, 13, 12); |
| 217 | 217 | uiBS[0][2][3] = BS_EDGE (uiBsx4[1], iRefIdx, pCurMb->sMv, 14, 13); |
| 218 | 218 | uiBS[0][3][3] = BS_EDGE (uiBsx4[2], iRefIdx, pCurMb->sMv, 15, 14); |
| @@ -241,21 +241,22 @@ uint32_t DeblockingBSMarginalMBAvcbase (SMB* pCurMb, SMB* pNeighMb, int32_t iEdg · 22 unmodified lines | ||
| 241 | 241 | int32_t i; |
| 242 | 242 | uint32_t uiBSx4; |
| 243 | 243 | uint8_t* pBS = (uint8_t*) (&uiBSx4); |
| 244 | − uint32_t uiBIdx = * (uint32_t*) (&g_kuiTableBIdx[iEdge][0]); | |
| 245 | − uint32_t uiBnIdx = * (uint32_t*) (&g_kuiTableBIdx[iEdge][4]); | |
| 244 | + const uint8_t *pBIdx = &g_kuiTableBIdx[iEdge][0]; | |
| 245 | + const uint8_t *pBnIdx = &g_kuiTableBIdx[iEdge][4]; | |
| 246 | + | |
| 246 | 247 | |
| 247 | 248 | for (i = 0; i < 4; i++) { |
| 248 | − if (pCurMb->pNonZeroCount[uiBIdx & 0xff] | pNeighMb->pNonZeroCount[uiBnIdx & 0xff]) { | |
| 249 | + if (pCurMb->pNonZeroCount[*pBIdx] | pNeighMb->pNonZeroCount[*pBnIdx]) { | |
| 249 | 250 | pBS[i] = 2; |
| 250 | 251 | } else { |
| 251 | 252 | pBS[i] = |
| 252 | 253 | #ifndef SINGLE_REF_FRAME |
| 253 | 254 | (pCurMb->uiRefIndex[g_kiTableBlock8x8Idx[1][iEdge][i]] - pNeighMb->uiRefIndex[g_kiTableBlock8x8NIdx[1][iEdge][i]]) || |
| 254 | 255 | #endif |
| 255 | − MB_BS_MV (pCurMb->sMv, pNeighMb->sMv, (uiBIdx & 0xff), (uiBnIdx & 0xff)); | |
| 256 | + MB_BS_MV (pCurMb->sMv, pNeighMb->sMv, *pBIdx, *pBnIdx); | |
| 256 | 257 | } |
| 257 | − uiBIdx = uiBIdx >> 8; | |
| 258 | − uiBnIdx = uiBnIdx >> 8; | |
| 258 | + pBIdx++; | |
| 259 | + pBnIdx++; | |
| 259 | 260 | } |
| 260 | 261 | return uiBSx4; |
| 261 | 262 | } |