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/encoder/core/src/deblocking.cpp (1 of 3 files). Show all

Unified · Split

codec/encoder/core/src/deblocking.cpp+20−21
@@ -156,34 +156,29 @@ static const ALIGNED_DECLARE (int32_t, g_kiTableBlock8x8NIdx[2][4][4], 16) = { · 155 unmodified lines
156156
157157 void inline DeblockingBSInsideMBAvsbase (int8_t* pNnzTab, uint8_t uiBS[2][4][4], int32_t iLShiftFactor) {
158158 uint32_t uiNnz32b0, uiNnz32b1, uiNnz32b2, uiNnz32b3;
159− ENFORCE_STACK_ALIGN_1D (uint8_t, uiBsx3, 4, 4);
160159
161160 uiNnz32b0 = * (uint32_t*) (pNnzTab + 0);
162161 uiNnz32b1 = * (uint32_t*) (pNnzTab + 4);
163162 uiNnz32b2 = * (uint32_t*) (pNnzTab + 8);
164163 uiNnz32b3 = * (uint32_t*) (pNnzTab + 12);
165164
166− * (uint32_t*)uiBsx3 = DEBLOCK_BS_SHIFTED (uiNnz32b0) << iLShiftFactor;
167− uiBS[0][1][0] = uiBsx3[0];
168− uiBS[0][2][0] = uiBsx3[1];
169− uiBS[0][3][0] = uiBsx3[2];
165+ uiBS[0][1][0] = (pNnzTab[0] | pNnzTab[1]) << iLShiftFactor;
166+ uiBS[0][2][0] = (pNnzTab[1] | pNnzTab[2]) << iLShiftFactor;
167+ uiBS[0][3][0] = (pNnzTab[2] | pNnzTab[3]) << iLShiftFactor;
170168
171− * (uint32_t*)uiBsx3 = DEBLOCK_BS_SHIFTED (uiNnz32b1) << iLShiftFactor;
172− uiBS[0][1][1] = uiBsx3[0];
173− uiBS[0][2][1] = uiBsx3[1];
174− uiBS[0][3][1] = uiBsx3[2];
169+ uiBS[0][1][1] = (pNnzTab[4] | pNnzTab[5]) << iLShiftFactor;
170+ uiBS[0][2][1] = (pNnzTab[5] | pNnzTab[6]) << iLShiftFactor;
171+ uiBS[0][3][1] = (pNnzTab[6] | pNnzTab[7]) << iLShiftFactor;
175172 * (uint32_t*)uiBS[1][1] = (uiNnz32b0 | uiNnz32b1) << iLShiftFactor;
176173
177− * (uint32_t*)uiBsx3 = DEBLOCK_BS_SHIFTED (uiNnz32b2) << iLShiftFactor;
178− uiBS[0][1][2] = uiBsx3[0];
179− uiBS[0][2][2] = uiBsx3[1];
180− uiBS[0][3][2] = uiBsx3[2];
174+ uiBS[0][1][2] = (pNnzTab[8] | pNnzTab[9]) << iLShiftFactor;
175+ uiBS[0][2][2] = (pNnzTab[9] | pNnzTab[10]) << iLShiftFactor;
176+ uiBS[0][3][2] = (pNnzTab[10] | pNnzTab[11]) << iLShiftFactor;
181177 * (uint32_t*)uiBS[1][2] = (uiNnz32b1 | uiNnz32b2) << iLShiftFactor;
182178
183− * (uint32_t*)uiBsx3 = DEBLOCK_BS_SHIFTED (uiNnz32b3) << iLShiftFactor;
184− uiBS[0][1][3] = uiBsx3[0];
185− uiBS[0][2][3] = uiBsx3[1];
186− uiBS[0][3][3] = uiBsx3[2];
179+ uiBS[0][1][3] = (pNnzTab[12] | pNnzTab[13]) << iLShiftFactor;
180+ uiBS[0][2][3] = (pNnzTab[13] | pNnzTab[14]) << iLShiftFactor;
181+ uiBS[0][3][3] = (pNnzTab[14] | pNnzTab[15]) << iLShiftFactor;
187182 * (uint32_t*)uiBS[1][3] = (uiNnz32b2 | uiNnz32b3) << iLShiftFactor;
188183
189184 }
@@ -197,22 +192,26 @@ void inline DeblockingBSInsideMBNormal (SMB* pCurMb, uint8_t uiBS[2][4][4], int8 · 7 unmodified lines
197192 uiNnz32b2 = * (uint32_t*) (pNnzTab + 8);
198193 uiNnz32b3 = * (uint32_t*) (pNnzTab + 12);
199194
200− * (uint32_t*)uiBsx4 = DEBLOCK_BS_SHIFTED (uiNnz32b0);
195+ for (int i = 0; i < 3; i++)
196+ uiBsx4[i] = pNnzTab[i] | pNnzTab[i + 1];
201197 uiBS[0][1][0] = BS_EDGE (uiBsx4[0], iRefIdx, pCurMb->sMv, 1, 0);
202198 uiBS[0][2][0] = BS_EDGE (uiBsx4[1], iRefIdx, pCurMb->sMv, 2, 1);
203199 uiBS[0][3][0] = BS_EDGE (uiBsx4[2], iRefIdx, pCurMb->sMv, 3, 2);
204200
205− * (uint32_t*)uiBsx4 = DEBLOCK_BS_SHIFTED (uiNnz32b1);
201+ for (int i = 0; i < 3; i++)
202+ uiBsx4[i] = pNnzTab[4 + i] | pNnzTab[4 + i + 1];
206203 uiBS[0][1][1] = BS_EDGE (uiBsx4[0], iRefIdx, pCurMb->sMv, 5, 4);
207204 uiBS[0][2][1] = BS_EDGE (uiBsx4[1], iRefIdx, pCurMb->sMv, 6, 5);
208205 uiBS[0][3][1] = BS_EDGE (uiBsx4[2], iRefIdx, pCurMb->sMv, 7, 6);
209206
210− * (uint32_t*)uiBsx4 = DEBLOCK_BS_SHIFTED (uiNnz32b2);
207+ for (int i = 0; i < 3; i++)
208+ uiBsx4[i] = pNnzTab[8 + i] | pNnzTab[8 + i + 1];
211209 uiBS[0][1][2] = BS_EDGE (uiBsx4[0], iRefIdx, pCurMb->sMv, 9, 8);
212210 uiBS[0][2][2] = BS_EDGE (uiBsx4[1], iRefIdx, pCurMb->sMv, 10, 9);
213211 uiBS[0][3][2] = BS_EDGE (uiBsx4[2], iRefIdx, pCurMb->sMv, 11, 10);
214212
215− * (uint32_t*)uiBsx4 = DEBLOCK_BS_SHIFTED (uiNnz32b3);
213+ for (int i = 0; i < 3; i++)
214+ uiBsx4[i] = pNnzTab[12 + i] | pNnzTab[12 + i + 1];
216215 uiBS[0][1][3] = BS_EDGE (uiBsx4[0], iRefIdx, pCurMb->sMv, 13, 12);
217216 uiBS[0][2][3] = BS_EDGE (uiBsx4[1], iRefIdx, pCurMb->sMv, 14, 13);
218217 uiBS[0][3][3] = BS_EDGE (uiBsx4[2], iRefIdx, pCurMb->sMv, 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