History

re-structure SWelsDecoderContext and others and prepare for the support of multi-threading support.

xiaotiansf committed 7 years ago

Commit 2f5ecec1 parent 9ed97c729 files · +2285 −1568Browse files

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

Unified · Split

codec/decoder/core/src/deblocking.cpp+109−93
@@ -201,11 +201,12 @@ void inline DeblockingBSInsideMBAvsbase8x8 (int8_t* pNnzTab, uint8_t nBS[2][4][4 · 200 unmodified lines
201201 nBS[1][2][2] = nBS[1][2][3] = (i8x8NnzTab[1] | i8x8NnzTab[3]) << iLShiftFactor;
202202 }
203203
204−void static inline DeblockingBSInsideMBNormal (PDeblockingFilter pFilter, PDqLayer pCurDqLayer, uint8_t nBS[2][4][4], int8_t* pNnzTab,
204+void static inline DeblockingBSInsideMBNormal (PDeblockingFilter pFilter, PDqLayer pCurDqLayer, uint8_t nBS[2][4][4],
205+ int8_t* pNnzTab,
205206 int32_t iMbXy) {
206207 uint32_t uiNnz32b0, uiNnz32b1, uiNnz32b2, uiNnz32b3;
207− int8_t* iRefIdx = pCurDqLayer->pRefIndex[LIST_0][iMbXy];
208− void *iRefs[MB_BLOCK4x4_NUM];
208+ int8_t* iRefIdx = pCurDqLayer->pDec->pRefIndex[LIST_0][iMbXy];
209+ void* iRefs[MB_BLOCK4x4_NUM];
209210 int i;
210211 ENFORCE_STACK_ALIGN_1D (uint8_t, uiBsx4, 4, 4);
211212
@@ -226,15 +227,15 @@ void static inline DeblockingBSInsideMBNormal (PDeblockingFilter pFilter, PDqLa · 14 unmodified lines
226227 pNnzTab[g_kuiMbCountScan4Idx[iBlkIdx + 2]] | pNnzTab[g_kuiMbCountScan4Idx[iBlkIdx + 3]]);
227228 }
228229 //vertical
229− nBS[0][2][0] = nBS[0][2][1] = BS_EDGE ((i8x8NnzTab[0] | i8x8NnzTab[1]), iRefs, pCurDqLayer->pMv[LIST_0][iMbXy],
230+ nBS[0][2][0] = nBS[0][2][1] = BS_EDGE ((i8x8NnzTab[0] | i8x8NnzTab[1]), iRefs, pCurDqLayer->pDec->pMv[LIST_0][iMbXy],
230231 g_kuiMbCountScan4Idx[1 << 2], g_kuiMbCountScan4Idx[0]);
231− nBS[0][2][2] = nBS[0][2][3] = BS_EDGE ((i8x8NnzTab[2] | i8x8NnzTab[3]), iRefs, pCurDqLayer->pMv[LIST_0][iMbXy],
232+ nBS[0][2][2] = nBS[0][2][3] = BS_EDGE ((i8x8NnzTab[2] | i8x8NnzTab[3]), iRefs, pCurDqLayer->pDec->pMv[LIST_0][iMbXy],
232233 g_kuiMbCountScan4Idx[3 << 2], g_kuiMbCountScan4Idx[2 << 2]);
233234
234235 //horizontal
235− nBS[1][2][0] = nBS[1][2][1] = BS_EDGE ((i8x8NnzTab[0] | i8x8NnzTab[2]), iRefs, pCurDqLayer->pMv[LIST_0][iMbXy],
236+ nBS[1][2][0] = nBS[1][2][1] = BS_EDGE ((i8x8NnzTab[0] | i8x8NnzTab[2]), iRefs, pCurDqLayer->pDec->pMv[LIST_0][iMbXy],
236237 g_kuiMbCountScan4Idx[2 << 2], g_kuiMbCountScan4Idx[0]);
237− nBS[1][2][2] = nBS[1][2][3] = BS_EDGE ((i8x8NnzTab[1] | i8x8NnzTab[3]), iRefs, pCurDqLayer->pMv[LIST_0][iMbXy],
238+ nBS[1][2][2] = nBS[1][2][3] = BS_EDGE ((i8x8NnzTab[1] | i8x8NnzTab[3]), iRefs, pCurDqLayer->pDec->pMv[LIST_0][iMbXy],
238239 g_kuiMbCountScan4Idx[3 << 2], g_kuiMbCountScan4Idx[1 << 2]);
239240 } else {
240241 uiNnz32b0 = * (uint32_t*) (pNnzTab + 0);
@@ -244,60 +245,61 @@ void static inline DeblockingBSInsideMBNormal (PDeblockingFilter pFilter, PDqLa · 3 unmodified lines
244245
245246 for (int i = 0; i < 3; i++)
246247 uiBsx4[i] = pNnzTab[i] | pNnzTab[i + 1];
247− nBS[0][1][0] = BS_EDGE (uiBsx4[0], iRefs, pCurDqLayer->pMv[LIST_0][iMbXy], 1, 0);
248− nBS[0][2][0] = BS_EDGE (uiBsx4[1], iRefs, pCurDqLayer->pMv[LIST_0][iMbXy], 2, 1);
249− nBS[0][3][0] = BS_EDGE (uiBsx4[2], iRefs, pCurDqLayer->pMv[LIST_0][iMbXy], 3, 2);
248+ nBS[0][1][0] = BS_EDGE (uiBsx4[0], iRefs, pCurDqLayer->pDec->pMv[LIST_0][iMbXy], 1, 0);
249+ nBS[0][2][0] = BS_EDGE (uiBsx4[1], iRefs, pCurDqLayer->pDec->pMv[LIST_0][iMbXy], 2, 1);
250+ nBS[0][3][0] = BS_EDGE (uiBsx4[2], iRefs, pCurDqLayer->pDec->pMv[LIST_0][iMbXy], 3, 2);
250251
251252 for (int i = 0; i < 3; i++)
252253 uiBsx4[i] = pNnzTab[4 + i] | pNnzTab[4 + i + 1];
253− nBS[0][1][1] = BS_EDGE (uiBsx4[0], iRefs, pCurDqLayer->pMv[LIST_0][iMbXy], 5, 4);
254− nBS[0][2][1] = BS_EDGE (uiBsx4[1], iRefs, pCurDqLayer->pMv[LIST_0][iMbXy], 6, 5);
255− nBS[0][3][1] = BS_EDGE (uiBsx4[2], iRefs, pCurDqLayer->pMv[LIST_0][iMbXy], 7, 6);
254+ nBS[0][1][1] = BS_EDGE (uiBsx4[0], iRefs, pCurDqLayer->pDec->pMv[LIST_0][iMbXy], 5, 4);
255+ nBS[0][2][1] = BS_EDGE (uiBsx4[1], iRefs, pCurDqLayer->pDec->pMv[LIST_0][iMbXy], 6, 5);
256+ nBS[0][3][1] = BS_EDGE (uiBsx4[2], iRefs, pCurDqLayer->pDec->pMv[LIST_0][iMbXy], 7, 6);
256257
257258 for (int i = 0; i < 3; i++)
258259 uiBsx4[i] = pNnzTab[8 + i] | pNnzTab[8 + i + 1];
259− nBS[0][1][2] = BS_EDGE (uiBsx4[0], iRefs, pCurDqLayer->pMv[LIST_0][iMbXy], 9, 8);
260− nBS[0][2][2] = BS_EDGE (uiBsx4[1], iRefs, pCurDqLayer->pMv[LIST_0][iMbXy], 10, 9);
261− nBS[0][3][2] = BS_EDGE (uiBsx4[2], iRefs, pCurDqLayer->pMv[LIST_0][iMbXy], 11, 10);
260+ nBS[0][1][2] = BS_EDGE (uiBsx4[0], iRefs, pCurDqLayer->pDec->pMv[LIST_0][iMbXy], 9, 8);
261+ nBS[0][2][2] = BS_EDGE (uiBsx4[1], iRefs, pCurDqLayer->pDec->pMv[LIST_0][iMbXy], 10, 9);
262+ nBS[0][3][2] = BS_EDGE (uiBsx4[2], iRefs, pCurDqLayer->pDec->pMv[LIST_0][iMbXy], 11, 10);
262263
263264 for (int i = 0; i < 3; i++)
264265 uiBsx4[i] = pNnzTab[12 + i] | pNnzTab[12 + i + 1];
265− nBS[0][1][3] = BS_EDGE (uiBsx4[0], iRefs, pCurDqLayer->pMv[LIST_0][iMbXy], 13, 12);
266− nBS[0][2][3] = BS_EDGE (uiBsx4[1], iRefs, pCurDqLayer->pMv[LIST_0][iMbXy], 14, 13);
267− nBS[0][3][3] = BS_EDGE (uiBsx4[2], iRefs, pCurDqLayer->pMv[LIST_0][iMbXy], 15, 14);
266+ nBS[0][1][3] = BS_EDGE (uiBsx4[0], iRefs, pCurDqLayer->pDec->pMv[LIST_0][iMbXy], 13, 12);
267+ nBS[0][2][3] = BS_EDGE (uiBsx4[1], iRefs, pCurDqLayer->pDec->pMv[LIST_0][iMbXy], 14, 13);
268+ nBS[0][3][3] = BS_EDGE (uiBsx4[2], iRefs, pCurDqLayer->pDec->pMv[LIST_0][iMbXy], 15, 14);
268269
269270 // horizontal
270271 * (uint32_t*)uiBsx4 = (uiNnz32b0 | uiNnz32b1);
271− nBS[1][1][0] = BS_EDGE (uiBsx4[0], iRefs, pCurDqLayer->pMv[LIST_0][iMbXy], 4, 0);
272− nBS[1][1][1] = BS_EDGE (uiBsx4[1], iRefs, pCurDqLayer->pMv[LIST_0][iMbXy], 5, 1);
273− nBS[1][1][2] = BS_EDGE (uiBsx4[2], iRefs, pCurDqLayer->pMv[LIST_0][iMbXy], 6, 2);
274− nBS[1][1][3] = BS_EDGE (uiBsx4[3], iRefs, pCurDqLayer->pMv[LIST_0][iMbXy], 7, 3);
272+ nBS[1][1][0] = BS_EDGE (uiBsx4[0], iRefs, pCurDqLayer->pDec->pMv[LIST_0][iMbXy], 4, 0);
273+ nBS[1][1][1] = BS_EDGE (uiBsx4[1], iRefs, pCurDqLayer->pDec->pMv[LIST_0][iMbXy], 5, 1);
274+ nBS[1][1][2] = BS_EDGE (uiBsx4[2], iRefs, pCurDqLayer->pDec->pMv[LIST_0][iMbXy], 6, 2);
275+ nBS[1][1][3] = BS_EDGE (uiBsx4[3], iRefs, pCurDqLayer->pDec->pMv[LIST_0][iMbXy], 7, 3);
275276
276277 * (uint32_t*)uiBsx4 = (uiNnz32b1 | uiNnz32b2);
277− nBS[1][2][0] = BS_EDGE (uiBsx4[0], iRefs, pCurDqLayer->pMv[LIST_0][iMbXy], 8, 4);
278− nBS[1][2][1] = BS_EDGE (uiBsx4[1], iRefs, pCurDqLayer->pMv[LIST_0][iMbXy], 9, 5);
279− nBS[1][2][2] = BS_EDGE (uiBsx4[2], iRefs, pCurDqLayer->pMv[LIST_0][iMbXy], 10, 6);
280− nBS[1][2][3] = BS_EDGE (uiBsx4[3], iRefs, pCurDqLayer->pMv[LIST_0][iMbXy], 11, 7);
278+ nBS[1][2][0] = BS_EDGE (uiBsx4[0], iRefs, pCurDqLayer->pDec->pMv[LIST_0][iMbXy], 8, 4);
279+ nBS[1][2][1] = BS_EDGE (uiBsx4[1], iRefs, pCurDqLayer->pDec->pMv[LIST_0][iMbXy], 9, 5);
280+ nBS[1][2][2] = BS_EDGE (uiBsx4[2], iRefs, pCurDqLayer->pDec->pMv[LIST_0][iMbXy], 10, 6);
281+ nBS[1][2][3] = BS_EDGE (uiBsx4[3], iRefs, pCurDqLayer->pDec->pMv[LIST_0][iMbXy], 11, 7);
281282
282283 * (uint32_t*)uiBsx4 = (uiNnz32b2 | uiNnz32b3);
283− nBS[1][3][0] = BS_EDGE (uiBsx4[0], iRefs, pCurDqLayer->pMv[LIST_0][iMbXy], 12, 8);
284− nBS[1][3][1] = BS_EDGE (uiBsx4[1], iRefs, pCurDqLayer->pMv[LIST_0][iMbXy], 13, 9);
285− nBS[1][3][2] = BS_EDGE (uiBsx4[2], iRefs, pCurDqLayer->pMv[LIST_0][iMbXy], 14, 10);
286− nBS[1][3][3] = BS_EDGE (uiBsx4[3], iRefs, pCurDqLayer->pMv[LIST_0][iMbXy], 15, 11);
284+ nBS[1][3][0] = BS_EDGE (uiBsx4[0], iRefs, pCurDqLayer->pDec->pMv[LIST_0][iMbXy], 12, 8);
285+ nBS[1][3][1] = BS_EDGE (uiBsx4[1], iRefs, pCurDqLayer->pDec->pMv[LIST_0][iMbXy], 13, 9);
286+ nBS[1][3][2] = BS_EDGE (uiBsx4[2], iRefs, pCurDqLayer->pDec->pMv[LIST_0][iMbXy], 14, 10);
287+ nBS[1][3][3] = BS_EDGE (uiBsx4[3], iRefs, pCurDqLayer->pDec->pMv[LIST_0][iMbXy], 15, 11);
287288 }
288289 }
289290
290−void static inline DeblockingBSliceBSInsideMBNormal (PDeblockingFilter pFilter, PDqLayer pCurDqLayer, uint8_t nBS[2][4][4], int8_t* pNnzTab,
291+void static inline DeblockingBSliceBSInsideMBNormal (PDeblockingFilter pFilter, PDqLayer pCurDqLayer,
292+ uint8_t nBS[2][4][4], int8_t* pNnzTab,
291293 int32_t iMbXy) {
292294 uint32_t uiNnz32b0, uiNnz32b1, uiNnz32b2, uiNnz32b3;
293− void *iRefs[LIST_A][MB_BLOCK4x4_NUM];
295+ void* iRefs[LIST_A][MB_BLOCK4x4_NUM];
294296
295297 ENFORCE_STACK_ALIGN_1D (uint8_t, uiBsx4, 4, 4);
296298 int8_t i8x8NnzTab[4];
297299 int l;
298300
299301 for (l = 0; l < LIST_A; l++) {
300− int8_t* iRefIdx = pCurDqLayer->pRefIndex[l][iMbXy];
302+ int8_t* iRefIdx = pCurDqLayer->pDec->pRefIndex[l][iMbXy];
301303 int i;
302304 /* Look up each reference picture based on indices */
303305 for (i = 0; i < MB_BLOCK4x4_NUM; i++) {
@@ -321,7 +323,7 @@ void static inline DeblockingBSliceBSInsideMBNormal (PDeblockingFilter pFilter, · 17 unmodified lines
321323 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
322324 if (iRefs[listIdx][iIndex] && iRefs[listIdx][iNeigborIndex]) {
323325 nBS[0][2][0] = nBS[0][2][1] = BS_EDGE ((i8x8NnzTab[0] | i8x8NnzTab[1]), iRefs[listIdx],
324− pCurDqLayer->pMv[listIdx][iMbXy],
326+ pCurDqLayer->pDec->pMv[listIdx][iMbXy],
325327 iIndex, iNeigborIndex);
326328 break;
327329 }
@@ -332,7 +334,7 @@ void static inline DeblockingBSliceBSInsideMBNormal (PDeblockingFilter pFilter, · 4 unmodified lines
332334 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
333335 if (iRefs[listIdx][iIndex] && iRefs[listIdx][iNeigborIndex]) {
334336 nBS[0][2][2] = nBS[0][2][3] = BS_EDGE ((i8x8NnzTab[2] | i8x8NnzTab[3]), iRefs[listIdx],
335− pCurDqLayer->pMv[listIdx][iMbXy],
337+ pCurDqLayer->pDec->pMv[listIdx][iMbXy],
336338 iIndex, iNeigborIndex);
337339 break;
338340 }
@@ -345,7 +347,7 @@ void static inline DeblockingBSliceBSInsideMBNormal (PDeblockingFilter pFilter, · 6 unmodified lines
345347 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
346348 if (iRefs[listIdx][iIndex] && iRefs[listIdx][iNeigborIndex]) {
347349 nBS[1][2][0] = nBS[1][2][1] = BS_EDGE ((i8x8NnzTab[0] | i8x8NnzTab[2]), iRefs[listIdx],
348− pCurDqLayer->pMv[listIdx][iMbXy],
350+ pCurDqLayer->pDec->pMv[listIdx][iMbXy],
349351 iIndex, iNeigborIndex);
350352 break;
351353 }
@@ -357,7 +359,7 @@ void static inline DeblockingBSliceBSInsideMBNormal (PDeblockingFilter pFilter, · 5 unmodified lines
357359 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
358360 if (iRefs[listIdx][iIndex] && iRefs[listIdx][iNeigborIndex]) {
359361 nBS[1][2][2] = nBS[1][2][3] = BS_EDGE ((i8x8NnzTab[1] | i8x8NnzTab[3]), iRefs[listIdx],
360− pCurDqLayer->pMv[listIdx][iMbXy],
362+ pCurDqLayer->pDec->pMv[listIdx][iMbXy],
361363 iIndex, iNeigborIndex);
362364 break;
363365 }
@@ -373,21 +375,21 @@ void static inline DeblockingBSliceBSInsideMBNormal (PDeblockingFilter pFilter, · 9 unmodified lines
373375 nBS[0][1][0] = 1;
374376 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
375377 if (iRefs[listIdx][1] && iRefs[listIdx][0]) {
376− nBS[0][1][0] = BS_EDGE (uiBsx4[0], iRefs[listIdx], pCurDqLayer->pMv[listIdx][iMbXy], 1, 0);
378+ nBS[0][1][0] = BS_EDGE (uiBsx4[0], iRefs[listIdx], pCurDqLayer->pDec->pMv[listIdx][iMbXy], 1, 0);
377379 break;
378380 }
379381 }
380382 nBS[0][2][0] = 1;
381383 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
382384 if (iRefs[listIdx][2] && iRefs[listIdx][1]) {
383− nBS[0][2][0] = BS_EDGE (uiBsx4[1], iRefs[listIdx], pCurDqLayer->pMv[listIdx][iMbXy], 2, 1);
385+ nBS[0][2][0] = BS_EDGE (uiBsx4[1], iRefs[listIdx], pCurDqLayer->pDec->pMv[listIdx][iMbXy], 2, 1);
384386 break;
385387 }
386388 }
387389 nBS[0][3][0] = 1;
388390 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
389391 if (iRefs[listIdx][3] && iRefs[listIdx][2]) {
390− nBS[0][3][0] = BS_EDGE (uiBsx4[2], iRefs[listIdx], pCurDqLayer->pMv[listIdx][iMbXy], 3, 2);
392+ nBS[0][3][0] = BS_EDGE (uiBsx4[2], iRefs[listIdx], pCurDqLayer->pDec->pMv[listIdx][iMbXy], 3, 2);
391393 break;
392394 }
393395 }
@@ -397,21 +399,21 @@ void static inline DeblockingBSliceBSInsideMBNormal (PDeblockingFilter pFilter, · 3 unmodified lines
397399 nBS[0][1][1] = 1;
398400 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
399401 if (iRefs[listIdx][5] && iRefs[listIdx][4]) {
400− nBS[0][1][1] = BS_EDGE (uiBsx4[0], iRefs[listIdx], pCurDqLayer->pMv[listIdx][iMbXy], 5, 4);
402+ nBS[0][1][1] = BS_EDGE (uiBsx4[0], iRefs[listIdx], pCurDqLayer->pDec->pMv[listIdx][iMbXy], 5, 4);
401403 break;
402404 }
403405 }
404406 nBS[0][2][1] = 1;
405407 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
406408 if (iRefs[listIdx][6] && iRefs[listIdx][5]) {
407− nBS[0][2][1] = BS_EDGE (uiBsx4[1], iRefs[listIdx], pCurDqLayer->pMv[listIdx][iMbXy], 6, 5);
409+ nBS[0][2][1] = BS_EDGE (uiBsx4[1], iRefs[listIdx], pCurDqLayer->pDec->pMv[listIdx][iMbXy], 6, 5);
408410 break;
409411 }
410412 }
411413 nBS[0][3][1] = 1;
412414 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
413415 if (iRefs[listIdx][7] && iRefs[listIdx][6]) {
414− nBS[0][3][1] = BS_EDGE (uiBsx4[2], iRefs[listIdx], pCurDqLayer->pMv[listIdx][iMbXy], 7, 6);
416+ nBS[0][3][1] = BS_EDGE (uiBsx4[2], iRefs[listIdx], pCurDqLayer->pDec->pMv[listIdx][iMbXy], 7, 6);
415417 break;
416418 }
417419 }
@@ -421,21 +423,21 @@ void static inline DeblockingBSliceBSInsideMBNormal (PDeblockingFilter pFilter, · 3 unmodified lines
421423 nBS[0][1][2] = 1;
422424 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
423425 if (iRefs[listIdx][9] && iRefs[listIdx][8]) {
424− nBS[0][1][2] = BS_EDGE (uiBsx4[0], iRefs[listIdx], pCurDqLayer->pMv[listIdx][iMbXy], 9, 8);
426+ nBS[0][1][2] = BS_EDGE (uiBsx4[0], iRefs[listIdx], pCurDqLayer->pDec->pMv[listIdx][iMbXy], 9, 8);
425427 break;
426428 }
427429 }
428430 nBS[0][2][2] = 1;
429431 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
430432 if (iRefs[listIdx][10] && iRefs[listIdx][9]) {
431− nBS[0][2][2] = BS_EDGE (uiBsx4[1], iRefs[listIdx], pCurDqLayer->pMv[listIdx][iMbXy], 10, 9);
433+ nBS[0][2][2] = BS_EDGE (uiBsx4[1], iRefs[listIdx], pCurDqLayer->pDec->pMv[listIdx][iMbXy], 10, 9);
432434 break;
433435 }
434436 }
435437 nBS[0][3][2] = 1;
436438 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
437439 if (iRefs[listIdx][11] && iRefs[listIdx][10]) {
438− nBS[0][3][2] = BS_EDGE (uiBsx4[2], iRefs[listIdx], pCurDqLayer->pMv[listIdx][iMbXy], 11, 10);
440+ nBS[0][3][2] = BS_EDGE (uiBsx4[2], iRefs[listIdx], pCurDqLayer->pDec->pMv[listIdx][iMbXy], 11, 10);
439441 break;
440442 }
441443 }
@@ -445,21 +447,21 @@ void static inline DeblockingBSliceBSInsideMBNormal (PDeblockingFilter pFilter, · 3 unmodified lines
445447 nBS[0][1][3] = 1;
446448 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
447449 if (iRefs[listIdx][13] && iRefs[listIdx][12]) {
448− nBS[0][1][3] = BS_EDGE (uiBsx4[0], iRefs[listIdx], pCurDqLayer->pMv[listIdx][iMbXy], 13, 12);
450+ nBS[0][1][3] = BS_EDGE (uiBsx4[0], iRefs[listIdx], pCurDqLayer->pDec->pMv[listIdx][iMbXy], 13, 12);
449451 break;
450452 }
451453 }
452454 nBS[0][2][3] = 1;
453455 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
454456 if (iRefs[listIdx][14] && iRefs[listIdx][13]) {
455− nBS[0][2][3] = BS_EDGE (uiBsx4[1], iRefs[listIdx], pCurDqLayer->pMv[listIdx][iMbXy], 14, 13);
457+ nBS[0][2][3] = BS_EDGE (uiBsx4[1], iRefs[listIdx], pCurDqLayer->pDec->pMv[listIdx][iMbXy], 14, 13);
456458 break;
457459 }
458460 }
459461 nBS[0][3][3] = 1;
460462 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
461463 if (iRefs[listIdx][15] && iRefs[listIdx][14]) {
462− nBS[0][3][3] = BS_EDGE (uiBsx4[2], iRefs[listIdx], pCurDqLayer->pMv[listIdx][iMbXy], 15, 14);
464+ nBS[0][3][3] = BS_EDGE (uiBsx4[2], iRefs[listIdx], pCurDqLayer->pDec->pMv[listIdx][iMbXy], 15, 14);
463465 break;
464466 }
465467 }
@@ -469,28 +471,28 @@ void static inline DeblockingBSliceBSInsideMBNormal (PDeblockingFilter pFilter, · 3 unmodified lines
469471 nBS[1][1][0] = 1;
470472 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
471473 if (iRefs[listIdx][4] && iRefs[listIdx][0]) {
472− nBS[1][1][0] = BS_EDGE (uiBsx4[0], iRefs[listIdx], pCurDqLayer->pMv[listIdx][iMbXy], 4, 0);
474+ nBS[1][1][0] = BS_EDGE (uiBsx4[0], iRefs[listIdx], pCurDqLayer->pDec->pMv[listIdx][iMbXy], 4, 0);
473475 break;
474476 }
475477 }
476478 nBS[1][1][1] = 1;
477479 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
478480 if (iRefs[listIdx][5] && iRefs[listIdx][1]) {
479− nBS[1][1][1] = BS_EDGE (uiBsx4[1], iRefs[listIdx], pCurDqLayer->pMv[listIdx][iMbXy], 5, 1);
481+ nBS[1][1][1] = BS_EDGE (uiBsx4[1], iRefs[listIdx], pCurDqLayer->pDec->pMv[listIdx][iMbXy], 5, 1);
480482 break;
481483 }
482484 }
483485 nBS[1][1][2] = 1;
484486 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
485487 if (iRefs[listIdx][6] && iRefs[listIdx][2]) {
486− nBS[1][1][2] = BS_EDGE (uiBsx4[2], iRefs[listIdx], pCurDqLayer->pMv[listIdx][iMbXy], 6, 2);
488+ nBS[1][1][2] = BS_EDGE (uiBsx4[2], iRefs[listIdx], pCurDqLayer->pDec->pMv[listIdx][iMbXy], 6, 2);
487489 break;
488490 }
489491 }
490492 nBS[1][1][3] = 1;
491493 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
492494 if (iRefs[listIdx][7] && iRefs[listIdx][3]) {
493− nBS[1][1][3] = BS_EDGE (uiBsx4[3], iRefs[listIdx], pCurDqLayer->pMv[listIdx][iMbXy], 7, 3);
495+ nBS[1][1][3] = BS_EDGE (uiBsx4[3], iRefs[listIdx], pCurDqLayer->pDec->pMv[listIdx][iMbXy], 7, 3);
494496 break;
495497 }
496498 }
@@ -499,28 +501,28 @@ void static inline DeblockingBSliceBSInsideMBNormal (PDeblockingFilter pFilter, · 2 unmodified lines
499501 nBS[1][2][0] = 1;
500502 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
501503 if (iRefs[listIdx][8] && iRefs[listIdx][4]) {
502− nBS[1][2][0] = BS_EDGE (uiBsx4[0], iRefs[listIdx], pCurDqLayer->pMv[listIdx][iMbXy], 8, 4);
504+ nBS[1][2][0] = BS_EDGE (uiBsx4[0], iRefs[listIdx], pCurDqLayer->pDec->pMv[listIdx][iMbXy], 8, 4);
503505 break;
504506 }
505507 }
506508 nBS[1][2][1] = 1;
507509 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
508510 if (iRefs[listIdx][9] && iRefs[listIdx][5]) {
509− nBS[1][2][1] = BS_EDGE (uiBsx4[1], iRefs[listIdx], pCurDqLayer->pMv[listIdx][iMbXy], 9, 5);
511+ nBS[1][2][1] = BS_EDGE (uiBsx4[1], iRefs[listIdx], pCurDqLayer->pDec->pMv[listIdx][iMbXy], 9, 5);
510512 break;
511513 }
512514 }
513515 nBS[1][2][2] = 1;
514516 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
515517 if (iRefs[listIdx][10] && iRefs[listIdx][6]) {
516− nBS[1][2][2] = BS_EDGE (uiBsx4[2], iRefs[listIdx], pCurDqLayer->pMv[listIdx][iMbXy], 10, 6);
518+ nBS[1][2][2] = BS_EDGE (uiBsx4[2], iRefs[listIdx], pCurDqLayer->pDec->pMv[listIdx][iMbXy], 10, 6);
517519 break;
518520 }
519521 }
520522 nBS[1][2][3] = 1;
521523 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
522524 if (iRefs[listIdx][11] && iRefs[listIdx][7]) {
523− nBS[1][2][3] = BS_EDGE (uiBsx4[3], iRefs[listIdx], pCurDqLayer->pMv[listIdx][iMbXy], 11, 7);
525+ nBS[1][2][3] = BS_EDGE (uiBsx4[3], iRefs[listIdx], pCurDqLayer->pDec->pMv[listIdx][iMbXy], 11, 7);
524526 break;
525527 }
526528 }
@@ -529,28 +531,28 @@ void static inline DeblockingBSliceBSInsideMBNormal (PDeblockingFilter pFilter, · 2 unmodified lines
529531 nBS[1][3][0] = 1;
530532 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
531533 if (iRefs[listIdx][12] && iRefs[listIdx][8]) {
532− nBS[1][3][0] = BS_EDGE (uiBsx4[0], iRefs[listIdx], pCurDqLayer->pMv[listIdx][iMbXy], 12, 8);
534+ nBS[1][3][0] = BS_EDGE (uiBsx4[0], iRefs[listIdx], pCurDqLayer->pDec->pMv[listIdx][iMbXy], 12, 8);
533535 break;
534536 }
535537 }
536538 nBS[1][3][1] = 1;
537539 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
538540 if (iRefs[listIdx][13] && iRefs[listIdx][9]) {
539− nBS[1][3][1] = BS_EDGE (uiBsx4[1], iRefs[listIdx], pCurDqLayer->pMv[listIdx][iMbXy], 13, 9);
541+ nBS[1][3][1] = BS_EDGE (uiBsx4[1], iRefs[listIdx], pCurDqLayer->pDec->pMv[listIdx][iMbXy], 13, 9);
540542 break;
541543 }
542544 }
543545 nBS[1][3][2] = 1;
544546 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
545547 if (iRefs[listIdx][14] && iRefs[listIdx][10]) {
546− nBS[1][3][2] = BS_EDGE (uiBsx4[2], iRefs[listIdx], pCurDqLayer->pMv[listIdx][iMbXy], 14, 10);
548+ nBS[1][3][2] = BS_EDGE (uiBsx4[2], iRefs[listIdx], pCurDqLayer->pDec->pMv[listIdx][iMbXy], 14, 10);
547549 break;
548550 }
549551 }
550552 nBS[1][3][3] = 1;
551553 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
552554 if (iRefs[listIdx][15] && iRefs[listIdx][11]) {
553− nBS[1][3][3] = BS_EDGE (uiBsx4[3], iRefs[listIdx], pCurDqLayer->pMv[listIdx][iMbXy], 15, 11);
555+ nBS[1][3][3] = BS_EDGE (uiBsx4[3], iRefs[listIdx], pCurDqLayer->pDec->pMv[listIdx][iMbXy], 15, 11);
554556 break;
555557 }
556558 }
@@ -558,7 +560,8 @@ void static inline DeblockingBSliceBSInsideMBNormal (PDeblockingFilter pFilter, · 1 unmodified line
558560 }
559561
560562
561−uint32_t DeblockingBsMarginalMBAvcbase (PDeblockingFilter pFilter, PDqLayer pCurDqLayer, int32_t iEdge, int32_t iNeighMb, int32_t iMbXy) {
563+uint32_t DeblockingBsMarginalMBAvcbase (PDeblockingFilter pFilter, PDqLayer pCurDqLayer, int32_t iEdge,
564+ int32_t iNeighMb, int32_t iMbXy) {
562565 int32_t i, j;
563566 uint32_t uiBSx4;
564567 uint8_t* pBS = (uint8_t*) (&uiBSx4);
@@ -566,7 +569,8 @@ uint32_t DeblockingBsMarginalMBAvcbase (PDeblockingFilter pFilter, PDqLayer pCu · 1 unmodified line
566569 const uint8_t* pBnIdx = &g_kuiTableBIdx[iEdge][4];
567570 const uint8_t* pB8x8Idx = &g_kuiTableB8x8Idx[iEdge][0];
568571 const uint8_t* pBn8x8Idx = &g_kuiTableB8x8Idx[iEdge][8];
569− int8_t (*iRefIdx)[MB_BLOCK4x4_NUM] = pCurDqLayer->pRefIndex[LIST_0];
572+ int8_t (*iRefIdx)[MB_BLOCK4x4_NUM] = pCurDqLayer->pDec != NULL ? pCurDqLayer->pDec->pRefIndex[LIST_0] :
573+ pCurDqLayer->pRefIndex[LIST_0];
570574
571575 if (pCurDqLayer->pTransformSize8x8Flag[iMbXy] && pCurDqLayer->pTransformSize8x8Flag[iNeighMb]) {
572576 for (i = 0; i < 2; i++) {
@@ -579,8 +583,9 @@ uint32_t DeblockingBsMarginalMBAvcbase (PDeblockingFilter pFilter, PDqLayer pCu · 6 unmodified lines
579583 } else {
580584 PPicture ref0, ref1;
581585 ref0 = (iRefIdx[iMbXy][*pB8x8Idx] > REF_NOT_IN_LIST) ? pFilter->pRefPics[LIST_0][iRefIdx[iMbXy][*pB8x8Idx]] : NULL;
582− ref1 = (iRefIdx[iNeighMb][*pBn8x8Idx] > REF_NOT_IN_LIST) ? pFilter->pRefPics[LIST_0][iRefIdx[iNeighMb][*pBn8x8Idx]] : NULL;
583− pBS[i << 1] = pBS[1 + (i << 1)] = MB_BS_MV (ref0, ref1, pCurDqLayer->pMv[LIST_0], iMbXy, iNeighMb,
586+ ref1 = (iRefIdx[iNeighMb][*pBn8x8Idx] > REF_NOT_IN_LIST) ? pFilter->pRefPics[LIST_0][iRefIdx[iNeighMb][*pBn8x8Idx]] :
587+ NULL;
588+ pBS[i << 1] = pBS[1 + (i << 1)] = MB_BS_MV (ref0, ref1, pCurDqLayer->pDec->pMv[LIST_0], iMbXy, iNeighMb,
584589 *pB8x8Idx, *pBn8x8Idx);
585590 }
586591 pB8x8Idx += 4;
@@ -599,7 +604,8 @@ uint32_t DeblockingBsMarginalMBAvcbase (PDeblockingFilter pFilter, PDqLayer pCu · 12 unmodified lines
599604 PPicture ref0, ref1;
600605 ref0 = (iRefIdx[iMbXy][*pB8x8Idx] > REF_NOT_IN_LIST) ? pFilter->pRefPics[LIST_0][iRefIdx[iMbXy][*pB8x8Idx]] : NULL;
601606 ref1 = (iRefIdx[iNeighMb][*pBnIdx] > REF_NOT_IN_LIST) ? pFilter->pRefPics[LIST_0][iRefIdx[iNeighMb][*pBnIdx]] : NULL;
602− pBS[j + (i << 1)] = MB_BS_MV (ref0, ref1, pCurDqLayer->pMv[LIST_0], iMbXy, iNeighMb, *pB8x8Idx,
607+ pBS[j + (i << 1)] = MB_BS_MV (ref0, ref1,
608+ (pCurDqLayer->pDec != NULL ? pCurDqLayer->pDec->pMv[LIST_0] : pCurDqLayer->pMv[LIST_0]), iMbXy, iNeighMb, *pB8x8Idx,
603609 *pBnIdx);
604610 }
605611 pBnIdx++;
@@ -618,8 +624,10 @@ uint32_t DeblockingBsMarginalMBAvcbase (PDeblockingFilter pFilter, PDqLayer pCu · 12 unmodified lines
618624 } else {
619625 PPicture ref0, ref1;
620626 ref0 = (iRefIdx[iMbXy][*pBIdx] > REF_NOT_IN_LIST) ? pFilter->pRefPics[LIST_0][iRefIdx[iMbXy][*pBIdx]] : NULL;
621− ref1 = (iRefIdx[iNeighMb][*pBn8x8Idx] > REF_NOT_IN_LIST) ? pFilter->pRefPics[LIST_0][iRefIdx[iNeighMb][*pBn8x8Idx]] : NULL;
622− pBS[j + (i << 1)] = MB_BS_MV (ref0, ref1, pCurDqLayer->pMv[LIST_0], iMbXy, iNeighMb, *pBIdx,
627+ ref1 = (iRefIdx[iNeighMb][*pBn8x8Idx] > REF_NOT_IN_LIST) ? pFilter->pRefPics[LIST_0][iRefIdx[iNeighMb][*pBn8x8Idx]] :
628+ NULL;
629+ pBS[j + (i << 1)] = MB_BS_MV (ref0, ref1,
630+ (pCurDqLayer->pDec != NULL ? pCurDqLayer->pDec->pMv[LIST_0] : pCurDqLayer->pMv[LIST_0]), iMbXy, iNeighMb, *pBIdx,
623631 *pBn8x8Idx);
624632 }
625633 pBIdx++;
@@ -635,7 +643,8 @@ uint32_t DeblockingBsMarginalMBAvcbase (PDeblockingFilter pFilter, PDqLayer pCu · 9 unmodified lines
635643 PPicture ref0, ref1;
636644 ref0 = (iRefIdx[iMbXy][*pBIdx] > REF_NOT_IN_LIST) ? pFilter->pRefPics[LIST_0][iRefIdx[iMbXy][*pBIdx]] : NULL;
637645 ref1 = (iRefIdx[iNeighMb][*pBnIdx] > REF_NOT_IN_LIST) ? pFilter->pRefPics[LIST_0][iRefIdx[iNeighMb][*pBnIdx]] : NULL;
638− pBS[i] = MB_BS_MV (ref0, ref1, pCurDqLayer->pMv[LIST_0], iMbXy, iNeighMb, *pBIdx, *pBnIdx);
646+ pBS[i] = MB_BS_MV (ref0, ref1, (pCurDqLayer->pDec != NULL ? pCurDqLayer->pDec->pMv[LIST_0] : pCurDqLayer->pMv[LIST_0]),
647+ iMbXy, iNeighMb, *pBIdx, *pBnIdx);
639648 }
640649 pBIdx++;
641650 pBnIdx++;
@@ -644,7 +653,8 @@ uint32_t DeblockingBsMarginalMBAvcbase (PDeblockingFilter pFilter, PDqLayer pCu · 2 unmodified lines
644653
645654 return uiBSx4;
646655 }
647−uint32_t DeblockingBSliceBsMarginalMBAvcbase (PDeblockingFilter pFilter, PDqLayer pCurDqLayer, int32_t iEdge, int32_t iNeighMb, int32_t iMbXy) {
656+uint32_t DeblockingBSliceBsMarginalMBAvcbase (PDeblockingFilter pFilter, PDqLayer pCurDqLayer, int32_t iEdge,
657+ int32_t iNeighMb, int32_t iMbXy) {
648658 int32_t i, j;
649659 uint32_t uiBSx4;
650660 uint8_t* pBS = (uint8_t*) (&uiBSx4);
@@ -665,12 +675,12 @@ uint32_t DeblockingBSliceBsMarginalMBAvcbase (PDeblockingFilter pFilter, PDqLay · 14 unmodified lines
665675 } else {
666676 pBS[i << 1] = pBS[1 + (i << 1)] = 1;
667677 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
668− if (pCurDqLayer->pRefIndex[listIdx][iMbXy][*pB8x8Idx] > REF_NOT_IN_LIST
669− && pCurDqLayer->pRefIndex[listIdx][iMbXy][*pBn8x8Idx] > REF_NOT_IN_LIST) {
670− int8_t (*iRefIdx)[MB_BLOCK4x4_NUM] = pCurDqLayer->pRefIndex[listIdx];
678+ if (pCurDqLayer->pDec->pRefIndex[listIdx][iMbXy][*pB8x8Idx] > REF_NOT_IN_LIST
679+ && pCurDqLayer->pDec->pRefIndex[listIdx][iMbXy][*pBn8x8Idx] > REF_NOT_IN_LIST) {
680+ int8_t (*iRefIdx)[MB_BLOCK4x4_NUM] = pCurDqLayer->pDec->pRefIndex[listIdx];
671681 ref0 = pFilter->pRefPics[listIdx][iRefIdx[iMbXy][*pB8x8Idx]];
672682 ref1 = pFilter->pRefPics[listIdx][iRefIdx[iNeighMb][*pBn8x8Idx]];
673− pBS[i << 1] = pBS[1 + (i << 1)] = MB_BS_MV (ref0, ref1, pCurDqLayer->pMv[listIdx], iMbXy, iNeighMb,
683+ pBS[i << 1] = pBS[1 + (i << 1)] = MB_BS_MV (ref0, ref1, pCurDqLayer->pDec->pMv[listIdx], iMbXy, iNeighMb,
674684 *pB8x8Idx, *pBn8x8Idx);
675685 break;
676686 }
@@ -691,12 +701,12 @@ uint32_t DeblockingBSliceBsMarginalMBAvcbase (PDeblockingFilter pFilter, PDqLay · 14 unmodified lines
691701 } else {
692702 pBS[j + (i << 1)] = 1;
693703 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
694− if (pCurDqLayer->pRefIndex[listIdx][iMbXy][*pB8x8Idx] > REF_NOT_IN_LIST
695− && pCurDqLayer->pRefIndex[listIdx][iMbXy][*pBnIdx] > REF_NOT_IN_LIST) {
696− int8_t (*iRefIdx)[MB_BLOCK4x4_NUM] = pCurDqLayer->pRefIndex[listIdx];
704+ if (pCurDqLayer->pDec->pRefIndex[listIdx][iMbXy][*pB8x8Idx] > REF_NOT_IN_LIST
705+ && pCurDqLayer->pDec->pRefIndex[listIdx][iMbXy][*pBnIdx] > REF_NOT_IN_LIST) {
706+ int8_t (*iRefIdx)[MB_BLOCK4x4_NUM] = pCurDqLayer->pDec->pRefIndex[listIdx];
697707 ref0 = pFilter->pRefPics[listIdx][iRefIdx[iMbXy][*pB8x8Idx]];
698708 ref1 = pFilter->pRefPics[listIdx][iRefIdx[iNeighMb][*pBnIdx]];
699− pBS[j + (i << 1)] = MB_BS_MV (ref0, ref1, pCurDqLayer->pMv[listIdx], iMbXy, iNeighMb, *pB8x8Idx,
709+ pBS[j + (i << 1)] = MB_BS_MV (ref0, ref1, pCurDqLayer->pDec->pMv[listIdx], iMbXy, iNeighMb, *pB8x8Idx,
700710 *pBnIdx);
701711 break;
702712 }
@@ -718,12 +728,12 @@ uint32_t DeblockingBSliceBsMarginalMBAvcbase (PDeblockingFilter pFilter, PDqLay · 15 unmodified lines
718728 } else {
719729 pBS[j + (i << 1)] = 1;
720730 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
721− if (pCurDqLayer->pRefIndex[listIdx][iMbXy][*pBIdx] > REF_NOT_IN_LIST
722− && pCurDqLayer->pRefIndex[listIdx][iMbXy][*pBn8x8Idx] > REF_NOT_IN_LIST) {
723− int8_t (*iRefIdx)[MB_BLOCK4x4_NUM] = pCurDqLayer->pRefIndex[listIdx];
731+ if (pCurDqLayer->pDec->pRefIndex[listIdx][iMbXy][*pBIdx] > REF_NOT_IN_LIST
732+ && pCurDqLayer->pDec->pRefIndex[listIdx][iMbXy][*pBn8x8Idx] > REF_NOT_IN_LIST) {
733+ int8_t (*iRefIdx)[MB_BLOCK4x4_NUM] = pCurDqLayer->pDec->pRefIndex[listIdx];
724734 ref0 = pFilter->pRefPics[listIdx][iRefIdx[iMbXy][*pBIdx]];
725735 ref1 = pFilter->pRefPics[listIdx][iRefIdx[iNeighMb][*pBn8x8Idx]];
726− pBS[j + (i << 1)] = MB_BS_MV (ref0, ref1, pCurDqLayer->pMv[listIdx], iMbXy, iNeighMb, *pBIdx, *pBn8x8Idx);
736+ pBS[j + (i << 1)] = MB_BS_MV (ref0, ref1, pCurDqLayer->pDec->pMv[listIdx], iMbXy, iNeighMb, *pBIdx, *pBn8x8Idx);
727737 break;
728738 }
729739 }
@@ -740,12 +750,12 @@ uint32_t DeblockingBSliceBsMarginalMBAvcbase (PDeblockingFilter pFilter, PDqLay · 10 unmodified lines
740750 } else {
741751 pBS[i] = 1;
742752 for (int32_t listIdx = LIST_0; listIdx < LIST_A; ++listIdx) {
743− if (pCurDqLayer->pRefIndex[listIdx][iMbXy][*pBIdx] > REF_NOT_IN_LIST
744− && pCurDqLayer->pRefIndex[listIdx][iMbXy][*pBnIdx] > REF_NOT_IN_LIST) {
745− int8_t (*iRefIdx)[MB_BLOCK4x4_NUM] = pCurDqLayer->pRefIndex[listIdx];
753+ if (pCurDqLayer->pDec->pRefIndex[listIdx][iMbXy][*pBIdx] > REF_NOT_IN_LIST
754+ && pCurDqLayer->pDec->pRefIndex[listIdx][iMbXy][*pBnIdx] > REF_NOT_IN_LIST) {
755+ int8_t (*iRefIdx)[MB_BLOCK4x4_NUM] = pCurDqLayer->pDec->pRefIndex[listIdx];
746756 ref0 = pFilter->pRefPics[listIdx][iRefIdx[iMbXy][*pBIdx]];
747757 ref1 = pFilter->pRefPics[listIdx][iRefIdx[iNeighMb][*pBnIdx]];
748− pBS[i] = MB_BS_MV (ref0, ref1, pCurDqLayer->pMv[listIdx], iMbXy, iNeighMb, *pBIdx, *pBnIdx);
758+ pBS[i] = MB_BS_MV (ref0, ref1, pCurDqLayer->pDec->pMv[listIdx], iMbXy, iNeighMb, *pBIdx, *pBnIdx);
749759 break;
750760 }
751761 }
@@ -972,7 +982,7 @@ void FilteringEdgeChromaIntraV (SDeblockingFilter* pFilter, uint8_t* pPixCb, uin · 220 unmodified lines
972982
973983
974984 static void DeblockingInterMb (PDqLayer pCurDqLayer, PDeblockingFilter pFilter, uint8_t nBS[2][4][4],
975− int32_t iBoundryFlag) {
985+ int32_t iBoundryFlag) {
976986 int32_t iMbXyIndex = pCurDqLayer->iMbXyIndex;
977987 int32_t iMbX = pCurDqLayer->iMbX;
978988 int32_t iMbY = pCurDqLayer->iMbY;
@@ -1224,7 +1234,8 @@ void WelsDeblockingMb (PDqLayer pCurDqLayer, PDeblockingFilter pFilter, int32_t · 245 unmodified lines
12241234 uint8_t nBS[2][4][4] = {{{ 0 }}};
12251235
12261236 int32_t iMbXyIndex = pCurDqLayer->iMbXyIndex;
1227− uint32_t iCurMbType = pCurDqLayer->pMbType[iMbXyIndex];
1237+ uint32_t iCurMbType = pCurDqLayer->pDec != NULL ? pCurDqLayer->pDec->pMbType[iMbXyIndex] :
1238+ pCurDqLayer->pMbType[iMbXyIndex];
12281239 int32_t iMbNb;
12291240
12301241 PSlice pSlice = &pCurDqLayer->sLayerInfo.sSliceInLayer;
@@ -1242,11 +1253,13 @@ void WelsDeblockingMb (PDqLayer pCurDqLayer, PDeblockingFilter pFilter, int32_t · 11 unmodified lines
12421253
12431254 if (iBoundryFlag & LEFT_FLAG_MASK) {
12441255 iMbNb = iMbXyIndex - 1;
1256+ uint32_t uiMbType = pCurDqLayer->pDec != NULL ? pCurDqLayer->pDec->pMbType[iMbNb] : pCurDqLayer->pMbType[iMbNb];
12451257 if (bBSlice) {
1246− * (uint32_t*)nBS[0][0] = IS_INTRA (pCurDqLayer->pMbType[iMbNb]) ? 0x04040404 : DeblockingBSliceBsMarginalMBAvcbase (
1258+ * (uint32_t*)nBS[0][0] = IS_INTRA (uiMbType) ? 0x04040404 :
1259+ DeblockingBSliceBsMarginalMBAvcbase (
12471260 pFilter, pCurDqLayer, 0, iMbNb, iMbXyIndex);
12481261 } else {
1249− * (uint32_t*)nBS[0][0] = IS_INTRA (pCurDqLayer->pMbType[iMbNb]) ? 0x04040404 : DeblockingBsMarginalMBAvcbase (
1262+ * (uint32_t*)nBS[0][0] = IS_INTRA (uiMbType) ? 0x04040404 : DeblockingBsMarginalMBAvcbase (
12501263 pFilter, pCurDqLayer, 0, iMbNb, iMbXyIndex);
12511264 }
12521265 } else {
@@ -1254,11 +1267,13 @@ void WelsDeblockingMb (PDqLayer pCurDqLayer, PDeblockingFilter pFilter, int32_t · 1 unmodified line
12541267 }
12551268 if (iBoundryFlag & TOP_FLAG_MASK) {
12561269 iMbNb = iMbXyIndex - pCurDqLayer->iMbWidth;
1270+ uint32_t uiMbType = pCurDqLayer->pDec != NULL ? pCurDqLayer->pDec->pMbType[iMbNb] : pCurDqLayer->pMbType[iMbNb];
12571271 if (bBSlice) {
1258− * (uint32_t*)nBS[1][0] = IS_INTRA (pCurDqLayer->pMbType[iMbNb]) ? 0x04040404 : DeblockingBSliceBsMarginalMBAvcbase (
1272+ * (uint32_t*)nBS[1][0] = IS_INTRA (uiMbType) ? 0x04040404 :
1273+ DeblockingBSliceBsMarginalMBAvcbase (
12591274 pFilter, pCurDqLayer, 1, iMbNb, iMbXyIndex);
12601275 } else {
1261− * (uint32_t*)nBS[1][0] = IS_INTRA (pCurDqLayer->pMbType[iMbNb]) ? 0x04040404 : DeblockingBsMarginalMBAvcbase (
1276+ * (uint32_t*)nBS[1][0] = IS_INTRA (uiMbType) ? 0x04040404 : DeblockingBsMarginalMBAvcbase (
12621277 pFilter, pCurDqLayer, 1, iMbNb, iMbXyIndex);
12631278 }
12641279 } else {
@@ -1360,6 +1375,7 @@ void WelsDeblockingFilterSlice (PWelsDecoderContext pCtx, PDeblockingFilterMbFun · 95 unmodified lines
13601375 } while (1);
13611376 }
13621377 }
1378+
13631379 /*!
13641380 * \brief deblocking module initialize
13651381 *

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