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 | 146 | void_t inline DeblockingBSInsideMBAvsbase (int8_t* pNnzTab, uint8_t nBS[2][4][4], int32_t iLShiftFactor) { |
| 147 | 147 | uint32_t uiNnz32b0, uiNnz32b1, uiNnz32b2, uiNnz32b3; |
| 148 | − ENFORCE_STACK_ALIGN_1D (uint8_t, uiBsx3, 4, 4); | |
| 149 | 148 | |
| 150 | 149 | uiNnz32b0 = * (uint32_t*) (pNnzTab + 0); |
| 151 | 150 | uiNnz32b1 = * (uint32_t*) (pNnzTab + 4); |
| 152 | 151 | uiNnz32b2 = * (uint32_t*) (pNnzTab + 8); |
| 153 | 152 | uiNnz32b3 = * (uint32_t*) (pNnzTab + 12); |
| 154 | 153 | |
| 155 | − * (uint32_t*)uiBsx3 = DEBLOCK_BS_SHIFTED (uiNnz32b0) << iLShiftFactor; | |
| 156 | − nBS[0][1][0] = uiBsx3[0]; | |
| 157 | − nBS[0][2][0] = uiBsx3[1]; | |
| 158 | − nBS[0][3][0] = uiBsx3[2]; | |
| 154 | + nBS[0][1][0] = (pNnzTab[0] | pNnzTab[1]) << iLShiftFactor; | |
| 155 | + nBS[0][2][0] = (pNnzTab[1] | pNnzTab[2]) << iLShiftFactor; | |
| 156 | + nBS[0][3][0] = (pNnzTab[2] | pNnzTab[3]) << iLShiftFactor; | |
| 159 | 157 | |
| 160 | − * (uint32_t*)uiBsx3 = DEBLOCK_BS_SHIFTED (uiNnz32b1) << iLShiftFactor; | |
| 161 | − nBS[0][1][1] = uiBsx3[0]; | |
| 162 | − nBS[0][2][1] = uiBsx3[1]; | |
| 163 | − nBS[0][3][1] = uiBsx3[2]; | |
| 158 | + nBS[0][1][1] = (pNnzTab[4] | pNnzTab[5]) << iLShiftFactor; | |
| 159 | + nBS[0][2][1] = (pNnzTab[5] | pNnzTab[6]) << iLShiftFactor; | |
| 160 | + nBS[0][3][1] = (pNnzTab[6] | pNnzTab[7]) << iLShiftFactor; | |
| 164 | 161 | * (uint32_t*)nBS[1][1] = (uiNnz32b0 | uiNnz32b1) << iLShiftFactor; |
| 165 | 162 | |
| 166 | − * (uint32_t*)uiBsx3 = DEBLOCK_BS_SHIFTED (uiNnz32b2) << iLShiftFactor; | |
| 167 | − nBS[0][1][2] = uiBsx3[0]; | |
| 168 | − nBS[0][2][2] = uiBsx3[1]; | |
| 169 | − nBS[0][3][2] = uiBsx3[2]; | |
| 163 | + nBS[0][1][2] = (pNnzTab[8] | pNnzTab[9]) << iLShiftFactor; | |
| 164 | + nBS[0][2][2] = (pNnzTab[9] | pNnzTab[10]) << iLShiftFactor; | |
| 165 | + nBS[0][3][2] = (pNnzTab[10] | pNnzTab[11]) << iLShiftFactor; | |
| 170 | 166 | * (uint32_t*)nBS[1][2] = (uiNnz32b1 | uiNnz32b2) << iLShiftFactor; |
| 171 | 167 | |
| 172 | − * (uint32_t*)uiBsx3 = DEBLOCK_BS_SHIFTED (uiNnz32b3) << iLShiftFactor; | |
| 173 | − nBS[0][1][3] = uiBsx3[0]; | |
| 174 | − nBS[0][2][3] = uiBsx3[1]; | |
| 175 | − nBS[0][3][3] = uiBsx3[2]; | |
| 168 | + nBS[0][1][3] = (pNnzTab[12] | pNnzTab[13]) << iLShiftFactor; | |
| 169 | + nBS[0][2][3] = (pNnzTab[13] | pNnzTab[14]) << iLShiftFactor; | |
| 170 | + nBS[0][3][3] = (pNnzTab[14] | pNnzTab[15]) << iLShiftFactor; | |
| 176 | 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 | 183 | uiNnz32b2 = * (uint32_t*) (pNnzTab + 8); |
| 189 | 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 | 188 | nBS[0][1][0] = BS_EDGE (uiBsx4[0], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 1, 0); |
| 193 | 189 | nBS[0][2][0] = BS_EDGE (uiBsx4[1], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 2, 1); |
| 194 | 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 | 194 | nBS[0][1][1] = BS_EDGE (uiBsx4[0], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 5, 4); |
| 198 | 195 | nBS[0][2][1] = BS_EDGE (uiBsx4[1], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 6, 5); |
| 199 | 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 | 200 | nBS[0][1][2] = BS_EDGE (uiBsx4[0], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 9, 8); |
| 203 | 201 | nBS[0][2][2] = BS_EDGE (uiBsx4[1], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 10, 9); |
| 204 | 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 | 206 | nBS[0][1][3] = BS_EDGE (uiBsx4[0], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 13, 12); |
| 208 | 207 | nBS[0][2][3] = BS_EDGE (uiBsx4[1], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 14, 13); |
| 209 | 208 | nBS[0][3][3] = BS_EDGE (uiBsx4[2], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 15, 14); |