This avoids having to set a define indicating the endianness. This doesn't incur any significant measurable slowdown.
Showing the changes to codec/decoder/core/src/deblocking.cpp (1 of 3 files). Show all
Unified · Split
| @@ -145,34 +145,29 @@ static const uint8_t g_kuiTableBIdx[2][8] = { · 144 unmodified lines | |||
| 145 | 145 | ||
| 146 | void_t inline DeblockingBSInsideMBAvsbase (int8_t* pNnzTab, uint8_t nBS[2][4][4], int32_t iLShiftFactor) { | 146 | void_t inline DeblockingBSInsideMBAvsbase (int8_t* pNnzTab, uint8_t nBS[2][4][4], int32_t iLShiftFactor) { |
| 147 | uint32_t uiNnz32b0, uiNnz32b1, uiNnz32b2, uiNnz32b3; | 147 | uint32_t uiNnz32b0, uiNnz32b1, uiNnz32b2, uiNnz32b3; |
| 148 | ENFORCE_STACK_ALIGN_1D (uint8_t, uiBsx3, 4, 4); | ||
| 149 | 148 | ||
| 150 | uiNnz32b0 = * (uint32_t*) (pNnzTab + 0); | 149 | uiNnz32b0 = * (uint32_t*) (pNnzTab + 0); |
| 151 | uiNnz32b1 = * (uint32_t*) (pNnzTab + 4); | 150 | uiNnz32b1 = * (uint32_t*) (pNnzTab + 4); |
| 152 | uiNnz32b2 = * (uint32_t*) (pNnzTab + 8); | 151 | uiNnz32b2 = * (uint32_t*) (pNnzTab + 8); |
| 153 | uiNnz32b3 = * (uint32_t*) (pNnzTab + 12); | 152 | uiNnz32b3 = * (uint32_t*) (pNnzTab + 12); |
| 154 | 153 | ||
| 155 | * (uint32_t*)uiBsx3 = DEBLOCK_BS_SHIFTED (uiNnz32b0) << iLShiftFactor; | 154 | nBS[0][1][0] = (pNnzTab[0] | pNnzTab[1]) << iLShiftFactor; |
| 156 | nBS[0][1][0] = uiBsx3[0]; | 155 | nBS[0][2][0] = (pNnzTab[1] | pNnzTab[2]) << iLShiftFactor; |
| 157 | nBS[0][2][0] = uiBsx3[1]; | 156 | nBS[0][3][0] = (pNnzTab[2] | pNnzTab[3]) << iLShiftFactor; |
| 158 | nBS[0][3][0] = uiBsx3[2]; | ||
| 159 | 157 | ||
| 160 | * (uint32_t*)uiBsx3 = DEBLOCK_BS_SHIFTED (uiNnz32b1) << iLShiftFactor; | 158 | nBS[0][1][1] = (pNnzTab[4] | pNnzTab[5]) << iLShiftFactor; |
| 161 | nBS[0][1][1] = uiBsx3[0]; | 159 | nBS[0][2][1] = (pNnzTab[5] | pNnzTab[6]) << iLShiftFactor; |
| 162 | nBS[0][2][1] = uiBsx3[1]; | 160 | nBS[0][3][1] = (pNnzTab[6] | pNnzTab[7]) << iLShiftFactor; |
| 163 | nBS[0][3][1] = uiBsx3[2]; | ||
| 164 | * (uint32_t*)nBS[1][1] = (uiNnz32b0 | uiNnz32b1) << iLShiftFactor; | 161 | * (uint32_t*)nBS[1][1] = (uiNnz32b0 | uiNnz32b1) << iLShiftFactor; |
| 165 | 162 | ||
| 166 | * (uint32_t*)uiBsx3 = DEBLOCK_BS_SHIFTED (uiNnz32b2) << iLShiftFactor; | 163 | nBS[0][1][2] = (pNnzTab[8] | pNnzTab[9]) << iLShiftFactor; |
| 167 | nBS[0][1][2] = uiBsx3[0]; | 164 | nBS[0][2][2] = (pNnzTab[9] | pNnzTab[10]) << iLShiftFactor; |
| 168 | nBS[0][2][2] = uiBsx3[1]; | 165 | nBS[0][3][2] = (pNnzTab[10] | pNnzTab[11]) << iLShiftFactor; |
| 169 | nBS[0][3][2] = uiBsx3[2]; | ||
| 170 | * (uint32_t*)nBS[1][2] = (uiNnz32b1 | uiNnz32b2) << iLShiftFactor; | 166 | * (uint32_t*)nBS[1][2] = (uiNnz32b1 | uiNnz32b2) << iLShiftFactor; |
| 171 | 167 | ||
| 172 | * (uint32_t*)uiBsx3 = DEBLOCK_BS_SHIFTED (uiNnz32b3) << iLShiftFactor; | 168 | nBS[0][1][3] = (pNnzTab[12] | pNnzTab[13]) << iLShiftFactor; |
| 173 | nBS[0][1][3] = uiBsx3[0]; | 169 | nBS[0][2][3] = (pNnzTab[13] | pNnzTab[14]) << iLShiftFactor; |
| 174 | nBS[0][2][3] = uiBsx3[1]; | 170 | nBS[0][3][3] = (pNnzTab[14] | pNnzTab[15]) << iLShiftFactor; |
| 175 | nBS[0][3][3] = uiBsx3[2]; | ||
| 176 | * (uint32_t*)nBS[1][3] = (uiNnz32b2 | uiNnz32b3) << iLShiftFactor; | 171 | * (uint32_t*)nBS[1][3] = (uiNnz32b2 | uiNnz32b3) << iLShiftFactor; |
| 177 | 172 | ||
| 178 | } | 173 | } |
| @@ -188,22 +183,26 @@ void_t static inline DeblockingBSInsideMBNormal (PDqLayer pCurDqLayer, uint8_t n · 9 unmodified lines | |||
| 188 | uiNnz32b2 = * (uint32_t*) (pNnzTab + 8); | 183 | uiNnz32b2 = * (uint32_t*) (pNnzTab + 8); |
| 189 | uiNnz32b3 = * (uint32_t*) (pNnzTab + 12); | 184 | uiNnz32b3 = * (uint32_t*) (pNnzTab + 12); |
| 190 | 185 | ||
| 191 | * (uint32_t*)uiBsx4 = DEBLOCK_BS_SHIFTED (uiNnz32b0); | 186 | for (int i = 0; i < 3; i++) |
| 187 | uiBsx4[i] = pNnzTab[i] | pNnzTab[i + 1]; | ||
| 192 | nBS[0][1][0] = BS_EDGE (uiBsx4[0], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 1, 0); | 188 | nBS[0][1][0] = BS_EDGE (uiBsx4[0], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 1, 0); |
| 193 | nBS[0][2][0] = BS_EDGE (uiBsx4[1], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 2, 1); | 189 | nBS[0][2][0] = BS_EDGE (uiBsx4[1], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 2, 1); |
| 194 | nBS[0][3][0] = BS_EDGE (uiBsx4[2], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 3, 2); | 190 | nBS[0][3][0] = BS_EDGE (uiBsx4[2], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 3, 2); |
| 195 | 191 | ||
| 196 | * (uint32_t*)uiBsx4 = DEBLOCK_BS_SHIFTED (uiNnz32b1); | 192 | for (int i = 0; i < 3; i++) |
| 193 | uiBsx4[i] = pNnzTab[4 + i] | pNnzTab[4 + i + 1]; | ||
| 197 | nBS[0][1][1] = BS_EDGE (uiBsx4[0], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 5, 4); | 194 | nBS[0][1][1] = BS_EDGE (uiBsx4[0], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 5, 4); |
| 198 | nBS[0][2][1] = BS_EDGE (uiBsx4[1], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 6, 5); | 195 | nBS[0][2][1] = BS_EDGE (uiBsx4[1], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 6, 5); |
| 199 | nBS[0][3][1] = BS_EDGE (uiBsx4[2], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 7, 6); | 196 | nBS[0][3][1] = BS_EDGE (uiBsx4[2], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 7, 6); |
| 200 | 197 | ||
| 201 | * (uint32_t*)uiBsx4 = DEBLOCK_BS_SHIFTED (uiNnz32b2); | 198 | for (int i = 0; i < 3; i++) |
| 199 | uiBsx4[i] = pNnzTab[8 + i] | pNnzTab[8 + i + 1]; | ||
| 202 | nBS[0][1][2] = BS_EDGE (uiBsx4[0], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 9, 8); | 200 | nBS[0][1][2] = BS_EDGE (uiBsx4[0], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 9, 8); |
| 203 | nBS[0][2][2] = BS_EDGE (uiBsx4[1], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 10, 9); | 201 | nBS[0][2][2] = BS_EDGE (uiBsx4[1], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 10, 9); |
| 204 | nBS[0][3][2] = BS_EDGE (uiBsx4[2], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 11, 10); | 202 | nBS[0][3][2] = BS_EDGE (uiBsx4[2], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 11, 10); |
| 205 | 203 | ||
| 206 | * (uint32_t*)uiBsx4 = DEBLOCK_BS_SHIFTED (uiNnz32b3); | 204 | for (int i = 0; i < 3; i++) |
| 205 | uiBsx4[i] = pNnzTab[12 + i] | pNnzTab[12 + i + 1]; | ||
| 207 | nBS[0][1][3] = BS_EDGE (uiBsx4[0], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 13, 12); | 206 | nBS[0][1][3] = BS_EDGE (uiBsx4[0], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 13, 12); |
| 208 | nBS[0][2][3] = BS_EDGE (uiBsx4[1], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 14, 13); | 207 | nBS[0][2][3] = BS_EDGE (uiBsx4[1], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 14, 13); |
| 209 | nBS[0][3][3] = BS_EDGE (uiBsx4[2], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 15, 14); | 208 | nBS[0][3][3] = BS_EDGE (uiBsx4[2], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 15, 14); |