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/error_concealment.cpp (1 of 29 files). Show all

Unified · Split

codec/decoder/core/src/error_concealment.cpp+33−33
@@ -83,7 +83,7 @@ void InitErrorCon (PWelsDecoderContext pCtx) { · 82 unmodified lines
8383 //Do error concealment using frame copy method
8484 void DoErrorConFrameCopy (PWelsDecoderContext pCtx) {
8585 PPicture pDstPic = pCtx->pDec;
86− PPicture pSrcPic = pCtx->pPreviousDecodedPictureInDpb;
86+ PPicture pSrcPic = pCtx->pLastDecPicInfo->pPreviousDecodedPictureInDpb;
8787 uint32_t uiHeightInPixelY = (pCtx->pSps->iMbHeight) << 4;
8888 int32_t iStrideY = pDstPic->iLinesize[0];
8989 int32_t iStrideUV = pDstPic->iLinesize[1];
@@ -109,7 +109,7 @@ void DoErrorConSliceCopy (PWelsDecoderContext pCtx) { · 19 unmodified lines
109109 int32_t iMbWidth = (int32_t) pCtx->pSps->iMbWidth;
110110 int32_t iMbHeight = (int32_t) pCtx->pSps->iMbHeight;
111111 PPicture pDstPic = pCtx->pDec;
112− PPicture pSrcPic = pCtx->pPreviousDecodedPictureInDpb;
112+ PPicture pSrcPic = pCtx->pLastDecPicInfo->pPreviousDecodedPictureInDpb;
113113 if ((pCtx->pParam->eEcActiveIdc == ERROR_CON_SLICE_COPY) && (pCtx->pCurDqLayer->sLayerInfo.sNalHeaderExt.bIdrFlag))
114114 pSrcPic = NULL; //no cross IDR method, should fill in data instead of copy
115115
@@ -266,40 +266,40 @@ void GetAvilInfoFromCorrectMb (PWelsDecoderContext pCtx) { · 150 unmodified lines
266266 for (int32_t iMbY = 0; iMbY < iMbHeight; ++iMbY) {
267267 for (int32_t iMbX = 0; iMbX < iMbWidth; ++iMbX) {
268268 iMbXyIndex = iMbY * iMbWidth + iMbX;
269− if (pMbCorrectlyDecodedFlag[iMbXyIndex] && IS_INTER (pCurDqLayer->pMbType[iMbXyIndex])) {
270− uint32_t iMBType = pCurDqLayer->pMbType[iMbXyIndex];
269+ if (pMbCorrectlyDecodedFlag[iMbXyIndex] && IS_INTER (pCurDqLayer->pDec->pMbType[iMbXyIndex])) {
270+ uint32_t iMBType = pCurDqLayer->pDec->pMbType[iMbXyIndex];
271271 switch (iMBType) {
272272 case MB_TYPE_SKIP:
273273 case MB_TYPE_16x16:
274− iRefIdx = pCurDqLayer->pRefIndex[0][iMbXyIndex][0];
275− pCtx->iECMVs[iRefIdx][0] += pCurDqLayer->pMv[0][iMbXyIndex][0][0];
276− pCtx->iECMVs[iRefIdx][1] += pCurDqLayer->pMv[0][iMbXyIndex][0][1];
274+ iRefIdx = pCurDqLayer->pDec->pRefIndex[0][iMbXyIndex][0];
275+ pCtx->iECMVs[iRefIdx][0] += pCurDqLayer->pDec->pMv[0][iMbXyIndex][0][0];
276+ pCtx->iECMVs[iRefIdx][1] += pCurDqLayer->pDec->pMv[0][iMbXyIndex][0][1];
277277 pCtx->pECRefPic[iRefIdx] = pCtx->sRefPic.pRefList[LIST_0][iRefIdx];
278278 iInterMbCorrectNum[iRefIdx]++;
279279 break;
280280 case MB_TYPE_16x8:
281− iRefIdx = pCurDqLayer->pRefIndex[0][iMbXyIndex][0];
282− pCtx->iECMVs[iRefIdx][0] += pCurDqLayer->pMv[0][iMbXyIndex][0][0];
283− pCtx->iECMVs[iRefIdx][1] += pCurDqLayer->pMv[0][iMbXyIndex][0][1];
281+ iRefIdx = pCurDqLayer->pDec->pRefIndex[0][iMbXyIndex][0];
282+ pCtx->iECMVs[iRefIdx][0] += pCurDqLayer->pDec->pMv[0][iMbXyIndex][0][0];
283+ pCtx->iECMVs[iRefIdx][1] += pCurDqLayer->pDec->pMv[0][iMbXyIndex][0][1];
284284 pCtx->pECRefPic[iRefIdx] = pCtx->sRefPic.pRefList[LIST_0][iRefIdx];
285285 iInterMbCorrectNum[iRefIdx]++;
286286
287− iRefIdx = pCurDqLayer->pRefIndex[0][iMbXyIndex][8];
288− pCtx->iECMVs[iRefIdx][0] += pCurDqLayer->pMv[0][iMbXyIndex][8][0];
289− pCtx->iECMVs[iRefIdx][1] += pCurDqLayer->pMv[0][iMbXyIndex][8][1];
287+ iRefIdx = pCurDqLayer->pDec->pRefIndex[0][iMbXyIndex][8];
288+ pCtx->iECMVs[iRefIdx][0] += pCurDqLayer->pDec->pMv[0][iMbXyIndex][8][0];
289+ pCtx->iECMVs[iRefIdx][1] += pCurDqLayer->pDec->pMv[0][iMbXyIndex][8][1];
290290 pCtx->pECRefPic[iRefIdx] = pCtx->sRefPic.pRefList[LIST_0][iRefIdx];
291291 iInterMbCorrectNum[iRefIdx]++;
292292 break;
293293 case MB_TYPE_8x16:
294− iRefIdx = pCurDqLayer->pRefIndex[0][iMbXyIndex][0];
295− pCtx->iECMVs[iRefIdx][0] += pCurDqLayer->pMv[0][iMbXyIndex][0][0];
296− pCtx->iECMVs[iRefIdx][1] += pCurDqLayer->pMv[0][iMbXyIndex][0][1];
294+ iRefIdx = pCurDqLayer->pDec->pRefIndex[0][iMbXyIndex][0];
295+ pCtx->iECMVs[iRefIdx][0] += pCurDqLayer->pDec->pMv[0][iMbXyIndex][0][0];
296+ pCtx->iECMVs[iRefIdx][1] += pCurDqLayer->pDec->pMv[0][iMbXyIndex][0][1];
297297 pCtx->pECRefPic[iRefIdx] = pCtx->sRefPic.pRefList[LIST_0][iRefIdx];
298298 iInterMbCorrectNum[iRefIdx]++;
299299
300− iRefIdx = pCurDqLayer->pRefIndex[0][iMbXyIndex][2];
301− pCtx->iECMVs[iRefIdx][0] += pCurDqLayer->pMv[0][iMbXyIndex][2][0];
302− pCtx->iECMVs[iRefIdx][1] += pCurDqLayer->pMv[0][iMbXyIndex][2][1];
300+ iRefIdx = pCurDqLayer->pDec->pRefIndex[0][iMbXyIndex][2];
301+ pCtx->iECMVs[iRefIdx][0] += pCurDqLayer->pDec->pMv[0][iMbXyIndex][2][0];
302+ pCtx->iECMVs[iRefIdx][1] += pCurDqLayer->pDec->pMv[0][iMbXyIndex][2][1];
303303 pCtx->pECRefPic[iRefIdx] = pCtx->sRefPic.pRefList[LIST_0][iRefIdx];
304304 iInterMbCorrectNum[iRefIdx]++;
305305 break;
@@ -311,39 +311,39 @@ void GetAvilInfoFromCorrectMb (PWelsDecoderContext pCtx) { · 5 unmodified lines
311311 for (i = 0; i < 4; i++) {
312312 iSubMBType = pCurDqLayer->pSubMbType[iMbXyIndex][i];
313313 iIIdx = ((i >> 1) << 3) + ((i & 1) << 1);
314− iRefIdx = pCurDqLayer->pRefIndex[0][iMbXyIndex][iIIdx];
314+ iRefIdx = pCurDqLayer->pDec->pRefIndex[0][iMbXyIndex][iIIdx];
315315 pCtx->pECRefPic[iRefIdx] = pCtx->sRefPic.pRefList[LIST_0][iRefIdx];
316316 switch (iSubMBType) {
317317 case SUB_MB_TYPE_8x8:
318− pCtx->iECMVs[iRefIdx][0] += pCurDqLayer->pMv[0][iMbXyIndex][iIIdx][0];
319− pCtx->iECMVs[iRefIdx][1] += pCurDqLayer->pMv[0][iMbXyIndex][iIIdx][1];
318+ pCtx->iECMVs[iRefIdx][0] += pCurDqLayer->pDec->pMv[0][iMbXyIndex][iIIdx][0];
319+ pCtx->iECMVs[iRefIdx][1] += pCurDqLayer->pDec->pMv[0][iMbXyIndex][iIIdx][1];
320320 iInterMbCorrectNum[iRefIdx]++;
321321
322322 break;
323323 case SUB_MB_TYPE_8x4:
324− pCtx->iECMVs[iRefIdx][0] += pCurDqLayer->pMv[0][iMbXyIndex][iIIdx][0];
325− pCtx->iECMVs[iRefIdx][1] += pCurDqLayer->pMv[0][iMbXyIndex][iIIdx][1];
324+ pCtx->iECMVs[iRefIdx][0] += pCurDqLayer->pDec->pMv[0][iMbXyIndex][iIIdx][0];
325+ pCtx->iECMVs[iRefIdx][1] += pCurDqLayer->pDec->pMv[0][iMbXyIndex][iIIdx][1];
326326
327327
328− pCtx->iECMVs[iRefIdx][0] += pCurDqLayer->pMv[0][iMbXyIndex][iIIdx + 4][0];
329− pCtx->iECMVs[iRefIdx][1] += pCurDqLayer->pMv[0][iMbXyIndex][iIIdx + 4][1];
328+ pCtx->iECMVs[iRefIdx][0] += pCurDqLayer->pDec->pMv[0][iMbXyIndex][iIIdx + 4][0];
329+ pCtx->iECMVs[iRefIdx][1] += pCurDqLayer->pDec->pMv[0][iMbXyIndex][iIIdx + 4][1];
330330 iInterMbCorrectNum[iRefIdx] += 2;
331331
332332 break;
333333 case SUB_MB_TYPE_4x8:
334− pCtx->iECMVs[iRefIdx][0] += pCurDqLayer->pMv[0][iMbXyIndex][iIIdx][0];
335− pCtx->iECMVs[iRefIdx][1] += pCurDqLayer->pMv[0][iMbXyIndex][iIIdx][1];
334+ pCtx->iECMVs[iRefIdx][0] += pCurDqLayer->pDec->pMv[0][iMbXyIndex][iIIdx][0];
335+ pCtx->iECMVs[iRefIdx][1] += pCurDqLayer->pDec->pMv[0][iMbXyIndex][iIIdx][1];
336336
337337
338− pCtx->iECMVs[iRefIdx][0] += pCurDqLayer->pMv[0][iMbXyIndex][iIIdx + 1][0];
339− pCtx->iECMVs[iRefIdx][1] += pCurDqLayer->pMv[0][iMbXyIndex][iIIdx + 1][1];
338+ pCtx->iECMVs[iRefIdx][0] += pCurDqLayer->pDec->pMv[0][iMbXyIndex][iIIdx + 1][0];
339+ pCtx->iECMVs[iRefIdx][1] += pCurDqLayer->pDec->pMv[0][iMbXyIndex][iIIdx + 1][1];
340340 iInterMbCorrectNum[iRefIdx] += 2;
341341 break;
342342 case SUB_MB_TYPE_4x4: {
343343 for (j = 0; j < 4; j++) {
344344 iJIdx = ((j >> 1) << 2) + (j & 1);
345− pCtx->iECMVs[iRefIdx][0] += pCurDqLayer->pMv[0][iMbXyIndex][iIIdx + iJIdx][0];
346− pCtx->iECMVs[iRefIdx][1] += pCurDqLayer->pMv[0][iMbXyIndex][iIIdx + iJIdx][1];
345+ pCtx->iECMVs[iRefIdx][0] += pCurDqLayer->pDec->pMv[0][iMbXyIndex][iIIdx + iJIdx][0];
346+ pCtx->iECMVs[iRefIdx][1] += pCurDqLayer->pDec->pMv[0][iMbXyIndex][iIIdx + iJIdx][1];
347347 }
348348 iInterMbCorrectNum[iRefIdx] += 4;
349349 }
@@ -372,7 +372,7 @@ void DoErrorConSliceMVCopy (PWelsDecoderContext pCtx) { · 22 unmodified lines
372372 int32_t iMbWidth = (int32_t) pCtx->pSps->iMbWidth;
373373 int32_t iMbHeight = (int32_t) pCtx->pSps->iMbHeight;
374374 PPicture pDstPic = pCtx->pDec;
375− PPicture pSrcPic = pCtx->pPreviousDecodedPictureInDpb;
375+ PPicture pSrcPic = pCtx->pLastDecPicInfo->pPreviousDecodedPictureInDpb;
376376
377377 bool* pMbCorrectlyDecodedFlag = pCtx->pCurDqLayer->pMbCorrectlyDecodedFlag;
378378 int32_t iMbXyIndex;

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