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
156 156
157void inline DeblockingBSInsideMBAvsbase (int8_t* pNnzTab, uint8_t uiBS[2][4][4], int32_t iLShiftFactor) {157void inline DeblockingBSInsideMBAvsbase (int8_t* pNnzTab, uint8_t uiBS[2][4][4], int32_t iLShiftFactor) {
158 uint32_t uiNnz32b0, uiNnz32b1, uiNnz32b2, uiNnz32b3;158 uint32_t uiNnz32b0, uiNnz32b1, uiNnz32b2, uiNnz32b3;
159 ENFORCE_STACK_ALIGN_1D (uint8_t, uiBsx3, 4, 4);
160 159
161 uiNnz32b0 = * (uint32_t*) (pNnzTab + 0);160 uiNnz32b0 = * (uint32_t*) (pNnzTab + 0);
162 uiNnz32b1 = * (uint32_t*) (pNnzTab + 4);161 uiNnz32b1 = * (uint32_t*) (pNnzTab + 4);
163 uiNnz32b2 = * (uint32_t*) (pNnzTab + 8);162 uiNnz32b2 = * (uint32_t*) (pNnzTab + 8);
164 uiNnz32b3 = * (uint32_t*) (pNnzTab + 12);163 uiNnz32b3 = * (uint32_t*) (pNnzTab + 12);
165 164
166 * (uint32_t*)uiBsx3 = DEBLOCK_BS_SHIFTED (uiNnz32b0) << iLShiftFactor;165 uiBS[0][1][0] = (pNnzTab[0] | pNnzTab[1]) << iLShiftFactor;
167 uiBS[0][1][0] = uiBsx3[0];166 uiBS[0][2][0] = (pNnzTab[1] | pNnzTab[2]) << iLShiftFactor;
168 uiBS[0][2][0] = uiBsx3[1];167 uiBS[0][3][0] = (pNnzTab[2] | pNnzTab[3]) << iLShiftFactor;
169 uiBS[0][3][0] = uiBsx3[2];
170 168
171 * (uint32_t*)uiBsx3 = DEBLOCK_BS_SHIFTED (uiNnz32b1) << iLShiftFactor;169 uiBS[0][1][1] = (pNnzTab[4] | pNnzTab[5]) << iLShiftFactor;
172 uiBS[0][1][1] = uiBsx3[0];170 uiBS[0][2][1] = (pNnzTab[5] | pNnzTab[6]) << iLShiftFactor;
173 uiBS[0][2][1] = uiBsx3[1];171 uiBS[0][3][1] = (pNnzTab[6] | pNnzTab[7]) << iLShiftFactor;
174 uiBS[0][3][1] = uiBsx3[2];
175 * (uint32_t*)uiBS[1][1] = (uiNnz32b0 | uiNnz32b1) << iLShiftFactor;172 * (uint32_t*)uiBS[1][1] = (uiNnz32b0 | uiNnz32b1) << iLShiftFactor;
176 173
177 * (uint32_t*)uiBsx3 = DEBLOCK_BS_SHIFTED (uiNnz32b2) << iLShiftFactor;174 uiBS[0][1][2] = (pNnzTab[8] | pNnzTab[9]) << iLShiftFactor;
178 uiBS[0][1][2] = uiBsx3[0];175 uiBS[0][2][2] = (pNnzTab[9] | pNnzTab[10]) << iLShiftFactor;
179 uiBS[0][2][2] = uiBsx3[1];176 uiBS[0][3][2] = (pNnzTab[10] | pNnzTab[11]) << iLShiftFactor;
180 uiBS[0][3][2] = uiBsx3[2];
181 * (uint32_t*)uiBS[1][2] = (uiNnz32b1 | uiNnz32b2) << iLShiftFactor;177 * (uint32_t*)uiBS[1][2] = (uiNnz32b1 | uiNnz32b2) << iLShiftFactor;
182 178
183 * (uint32_t*)uiBsx3 = DEBLOCK_BS_SHIFTED (uiNnz32b3) << iLShiftFactor;179 uiBS[0][1][3] = (pNnzTab[12] | pNnzTab[13]) << iLShiftFactor;
184 uiBS[0][1][3] = uiBsx3[0];180 uiBS[0][2][3] = (pNnzTab[13] | pNnzTab[14]) << iLShiftFactor;
185 uiBS[0][2][3] = uiBsx3[1];181 uiBS[0][3][3] = (pNnzTab[14] | pNnzTab[15]) << iLShiftFactor;
186 uiBS[0][3][3] = uiBsx3[2];
187 * (uint32_t*)uiBS[1][3] = (uiNnz32b2 | uiNnz32b3) << iLShiftFactor;182 * (uint32_t*)uiBS[1][3] = (uiNnz32b2 | uiNnz32b3) << iLShiftFactor;
188 183
189}184}
@@ -197,22 +192,26 @@ void inline DeblockingBSInsideMBNormal (SMB* pCurMb, uint8_t uiBS[2][4][4], int8 · 7 unmodified lines
197 uiNnz32b2 = * (uint32_t*) (pNnzTab + 8);192 uiNnz32b2 = * (uint32_t*) (pNnzTab + 8);
198 uiNnz32b3 = * (uint32_t*) (pNnzTab + 12);193 uiNnz32b3 = * (uint32_t*) (pNnzTab + 12);
199 194
200 * (uint32_t*)uiBsx4 = DEBLOCK_BS_SHIFTED (uiNnz32b0);195 for (int i = 0; i < 3; i++)
196 uiBsx4[i] = pNnzTab[i] | pNnzTab[i + 1];
201 uiBS[0][1][0] = BS_EDGE (uiBsx4[0], iRefIdx, pCurMb->sMv, 1, 0);197 uiBS[0][1][0] = BS_EDGE (uiBsx4[0], iRefIdx, pCurMb->sMv, 1, 0);
202 uiBS[0][2][0] = BS_EDGE (uiBsx4[1], iRefIdx, pCurMb->sMv, 2, 1);198 uiBS[0][2][0] = BS_EDGE (uiBsx4[1], iRefIdx, pCurMb->sMv, 2, 1);
203 uiBS[0][3][0] = BS_EDGE (uiBsx4[2], iRefIdx, pCurMb->sMv, 3, 2);199 uiBS[0][3][0] = BS_EDGE (uiBsx4[2], iRefIdx, pCurMb->sMv, 3, 2);
204 200
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];
206 uiBS[0][1][1] = BS_EDGE (uiBsx4[0], iRefIdx, pCurMb->sMv, 5, 4);203 uiBS[0][1][1] = BS_EDGE (uiBsx4[0], iRefIdx, pCurMb->sMv, 5, 4);
207 uiBS[0][2][1] = BS_EDGE (uiBsx4[1], iRefIdx, pCurMb->sMv, 6, 5);204 uiBS[0][2][1] = BS_EDGE (uiBsx4[1], iRefIdx, pCurMb->sMv, 6, 5);
208 uiBS[0][3][1] = BS_EDGE (uiBsx4[2], iRefIdx, pCurMb->sMv, 7, 6);205 uiBS[0][3][1] = BS_EDGE (uiBsx4[2], iRefIdx, pCurMb->sMv, 7, 6);
209 206
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];
211 uiBS[0][1][2] = BS_EDGE (uiBsx4[0], iRefIdx, pCurMb->sMv, 9, 8);209 uiBS[0][1][2] = BS_EDGE (uiBsx4[0], iRefIdx, pCurMb->sMv, 9, 8);
212 uiBS[0][2][2] = BS_EDGE (uiBsx4[1], iRefIdx, pCurMb->sMv, 10, 9);210 uiBS[0][2][2] = BS_EDGE (uiBsx4[1], iRefIdx, pCurMb->sMv, 10, 9);
213 uiBS[0][3][2] = BS_EDGE (uiBsx4[2], iRefIdx, pCurMb->sMv, 11, 10);211 uiBS[0][3][2] = BS_EDGE (uiBsx4[2], iRefIdx, pCurMb->sMv, 11, 10);
214 212
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];
216 uiBS[0][1][3] = BS_EDGE (uiBsx4[0], iRefIdx, pCurMb->sMv, 13, 12);215 uiBS[0][1][3] = BS_EDGE (uiBsx4[0], iRefIdx, pCurMb->sMv, 13, 12);
217 uiBS[0][2][3] = BS_EDGE (uiBsx4[1], iRefIdx, pCurMb->sMv, 14, 13);216 uiBS[0][2][3] = BS_EDGE (uiBsx4[1], iRefIdx, pCurMb->sMv, 14, 13);
218 uiBS[0][3][3] = BS_EDGE (uiBsx4[2], iRefIdx, pCurMb->sMv, 15, 14);217 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