History

Make the deblocking handling endian independent

This avoids having to set a define indicating the endianness. This doesn't incur any significant measurable slowdown.

Martin Storsjö committed 12 years ago

Commit 0a14d4c1 parent 21687723 files · +40 −48Browse files

Showing the changes to codec/decoder/core/src/deblocking.cpp (1 of 3 files). Show all

Unified · Split

codec/decoder/core/src/deblocking.cpp+20−21
@@ -145,34 +145,29 @@ static const uint8_t g_kuiTableBIdx[2][8] = { · 144 unmodified lines
145145
146146 void_t inline DeblockingBSInsideMBAvsbase (int8_t* pNnzTab, uint8_t nBS[2][4][4], int32_t iLShiftFactor) {
147147 uint32_t uiNnz32b0, uiNnz32b1, uiNnz32b2, uiNnz32b3;
148− ENFORCE_STACK_ALIGN_1D (uint8_t, uiBsx3, 4, 4);
149148
150149 uiNnz32b0 = * (uint32_t*) (pNnzTab + 0);
151150 uiNnz32b1 = * (uint32_t*) (pNnzTab + 4);
152151 uiNnz32b2 = * (uint32_t*) (pNnzTab + 8);
153152 uiNnz32b3 = * (uint32_t*) (pNnzTab + 12);
154153
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;
159157
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;
164161 * (uint32_t*)nBS[1][1] = (uiNnz32b0 | uiNnz32b1) << iLShiftFactor;
165162
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;
170166 * (uint32_t*)nBS[1][2] = (uiNnz32b1 | uiNnz32b2) << iLShiftFactor;
171167
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;
176171 * (uint32_t*)nBS[1][3] = (uiNnz32b2 | uiNnz32b3) << iLShiftFactor;
177172
178173 }
@@ -188,22 +183,26 @@ void_t static inline DeblockingBSInsideMBNormal (PDqLayer pCurDqLayer, uint8_t n · 9 unmodified lines
188183 uiNnz32b2 = * (uint32_t*) (pNnzTab + 8);
189184 uiNnz32b3 = * (uint32_t*) (pNnzTab + 12);
190185
191− * (uint32_t*)uiBsx4 = DEBLOCK_BS_SHIFTED (uiNnz32b0);
186+ for (int i = 0; i < 3; i++)
187+ uiBsx4[i] = pNnzTab[i] | pNnzTab[i + 1];
192188 nBS[0][1][0] = BS_EDGE (uiBsx4[0], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 1, 0);
193189 nBS[0][2][0] = BS_EDGE (uiBsx4[1], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 2, 1);
194190 nBS[0][3][0] = BS_EDGE (uiBsx4[2], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 3, 2);
195191
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];
197194 nBS[0][1][1] = BS_EDGE (uiBsx4[0], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 5, 4);
198195 nBS[0][2][1] = BS_EDGE (uiBsx4[1], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 6, 5);
199196 nBS[0][3][1] = BS_EDGE (uiBsx4[2], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 7, 6);
200197
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];
202200 nBS[0][1][2] = BS_EDGE (uiBsx4[0], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 9, 8);
203201 nBS[0][2][2] = BS_EDGE (uiBsx4[1], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 10, 9);
204202 nBS[0][3][2] = BS_EDGE (uiBsx4[2], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 11, 10);
205203
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];
207206 nBS[0][1][3] = BS_EDGE (uiBsx4[0], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 13, 12);
208207 nBS[0][2][3] = BS_EDGE (uiBsx4[1], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 14, 13);
209208 nBS[0][3][3] = BS_EDGE (uiBsx4[2], iRefIndex, pCurDqLayer->pMv[LIST_0][iMbXy], 15, 14);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t