Showing the changes to codec/decoder/core/src/manage_dec_ref.cpp (1 of 2 files). Show all
Unified · Split
| @@ -131,14 +131,16 @@ int32_t WelsInitRefList (PWelsDecoderContext pCtx, int32_t iPoc) { · 130 unmodified lines | |||
| 131 | bCopyPrevious = bCopyPrevious && (pRef->iWidthInPixel == pCtx->pPreviousDecodedPictureInDpb->iWidthInPixel) | 131 | bCopyPrevious = bCopyPrevious && (pRef->iWidthInPixel == pCtx->pPreviousDecodedPictureInDpb->iWidthInPixel) |
| 132 | && (pRef->iHeightInPixel == pCtx->pPreviousDecodedPictureInDpb->iHeightInPixel); | 132 | && (pRef->iHeightInPixel == pCtx->pPreviousDecodedPictureInDpb->iHeightInPixel); |
| 133 | 133 | ||
| 134 | if (bCopyPrevious) { | 134 | if (!bCopyPrevious) { |
| 135 | memcpy (pRef->pData[0], pCtx->pPreviousDecodedPictureInDpb->pData[0], pRef->iLinesize[0] * pRef->iHeightInPixel); | ||
| 136 | memcpy (pRef->pData[1], pCtx->pPreviousDecodedPictureInDpb->pData[1], pRef->iLinesize[1] * pRef->iHeightInPixel / 2); | ||
| 137 | memcpy (pRef->pData[2], pCtx->pPreviousDecodedPictureInDpb->pData[2], pRef->iLinesize[2] * pRef->iHeightInPixel / 2); | ||
| 138 | } else { | ||
| 139 | memset (pRef->pData[0], 128, pRef->iLinesize[0] * pRef->iHeightInPixel); | 135 | memset (pRef->pData[0], 128, pRef->iLinesize[0] * pRef->iHeightInPixel); |
| 140 | memset (pRef->pData[1], 128, pRef->iLinesize[1] * pRef->iHeightInPixel / 2); | 136 | memset (pRef->pData[1], 128, pRef->iLinesize[1] * pRef->iHeightInPixel / 2); |
| 141 | memset (pRef->pData[2], 128, pRef->iLinesize[2] * pRef->iHeightInPixel / 2); | 137 | memset (pRef->pData[2], 128, pRef->iLinesize[2] * pRef->iHeightInPixel / 2); |
| 138 | } else if (pRef == pCtx->pPreviousDecodedPictureInDpb) { | ||
| 139 | WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "WelsInitRefList()::EC memcpy overlap."); | ||
| 140 | } else { | ||
| 141 | memcpy (pRef->pData[0], pCtx->pPreviousDecodedPictureInDpb->pData[0], pRef->iLinesize[0] * pRef->iHeightInPixel); | ||
| 142 | memcpy (pRef->pData[1], pCtx->pPreviousDecodedPictureInDpb->pData[1], pRef->iLinesize[1] * pRef->iHeightInPixel / 2); | ||
| 143 | memcpy (pRef->pData[2], pCtx->pPreviousDecodedPictureInDpb->pData[2], pRef->iLinesize[2] * pRef->iHeightInPixel / 2); | ||
| 142 | } | 144 | } |
| 143 | pRef->iFrameNum = 0; | 145 | pRef->iFrameNum = 0; |
| 144 | pRef->iFramePoc = 0; | 146 | pRef->iFramePoc = 0; |