Showing the changes to codec/decoder/core/src/decode_slice.cpp (1 of 2 files). Show all
Unified · Split
| @@ -614,6 +614,7 @@ int32_t WelsDecodeMbCabacISliceBaseMode0 (PWelsDecoderContext pCtx, uint32_t& ui · 613 unmodified lines | ||
| 614 | 614 | && uiMbType <= 24))) { |
| 615 | 615 | return GENERATE_ERROR_NO (ERR_LEVEL_MB_DATA, ERR_INFO_INVALID_MB_TYPE); |
| 616 | 616 | } else if (25 == uiMbType) { //I_PCM |
| 617 | + WelsLog (& (pCtx->sLogCtx), WELS_LOG_DEBUG, "I_PCM mode exists in I slice!"); | |
| 617 | 618 | WELS_READ_VERIFY (ParseIPCMInfoCabac (pCtx)); |
| 618 | 619 | pSlice->iLastDeltaQp = 0; |
| 619 | 620 | WELS_READ_VERIFY (ParseEndOfSliceCabac (pCtx, uiEosFlag)); |
| @@ -833,6 +834,7 @@ int32_t WelsDecodeMbCabacPSliceBaseMode0 (PWelsDecoderContext pCtx, PWelsNeighAv · 213 unmodified lines | ||
| 833 | 834 | return GENERATE_ERROR_NO (ERR_LEVEL_MB_DATA, ERR_INFO_INVALID_MB_TYPE); |
| 834 | 835 | |
| 835 | 836 | if (25 == uiMbType) { //I_PCM |
| 837 | + WelsLog (& (pCtx->sLogCtx), WELS_LOG_DEBUG, "I_PCM mode exists in P slice!"); | |
| 836 | 838 | WELS_READ_VERIFY (ParseIPCMInfoCabac (pCtx)); |
| 837 | 839 | pSlice->iLastDeltaQp = 0; |
| 838 | 840 | WELS_READ_VERIFY (ParseEndOfSliceCabac (pCtx, uiEosFlag)); |
| @@ -1265,6 +1267,7 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 426 unmodified lines | ||
| 1265 | 1267 | return GENERATE_ERROR_NO (ERR_LEVEL_MB_DATA, ERR_INFO_INVALID_MB_TYPE); |
| 1266 | 1268 | |
| 1267 | 1269 | if (25 == uiMbType) { |
| 1270 | + WelsLog (& (pCtx->sLogCtx), WELS_LOG_DEBUG, "I_PCM mode exists in I slice!"); | |
| 1268 | 1271 | int32_t iDecStrideL = pCurLayer->pDec->iLinesize[0]; |
| 1269 | 1272 | int32_t iDecStrideC = pCurLayer->pDec->iLinesize[1]; |
| 1270 | 1273 | |
| @@ -1291,20 +1294,22 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 20 unmodified lines | ||
| 1291 | 1294 | |
| 1292 | 1295 | //step 2: copy pixel from bit-stream into fdec [reconstruction] |
| 1293 | 1296 | pTmpBsBuf = pBs->pCurBuf; |
| 1294 | − for (i = 0; i < 16; i++) { //luma | |
| 1295 | − memcpy (pDecY , pTmpBsBuf, iCopySizeY); | |
| 1296 | − pDecY += iDecStrideL; | |
| 1297 | − pTmpBsBuf += 16; | |
| 1298 | − } | |
| 1299 | − for (i = 0; i < 8; i++) { //cb | |
| 1300 | − memcpy (pDecU, pTmpBsBuf, iCopySizeUV); | |
| 1301 | − pDecU += iDecStrideC; | |
| 1302 | − pTmpBsBuf += 8; | |
| 1303 | − } | |
| 1304 | − for (i = 0; i < 8; i++) { //cr | |
| 1305 | − memcpy (pDecV, pTmpBsBuf, iCopySizeUV); | |
| 1306 | − pDecV += iDecStrideC; | |
| 1307 | − pTmpBsBuf += 8; | |
| 1297 | + if (!pCtx->pParam->bParseOnly) { | |
| 1298 | + for (i = 0; i < 16; i++) { //luma | |
| 1299 | + memcpy (pDecY , pTmpBsBuf, iCopySizeY); | |
| 1300 | + pDecY += iDecStrideL; | |
| 1301 | + pTmpBsBuf += 16; | |
| 1302 | + } | |
| 1303 | + for (i = 0; i < 8; i++) { //cb | |
| 1304 | + memcpy (pDecU, pTmpBsBuf, iCopySizeUV); | |
| 1305 | + pDecU += iDecStrideC; | |
| 1306 | + pTmpBsBuf += 8; | |
| 1307 | + } | |
| 1308 | + for (i = 0; i < 8; i++) { //cr | |
| 1309 | + memcpy (pDecV, pTmpBsBuf, iCopySizeUV); | |
| 1310 | + pDecV += iDecStrideC; | |
| 1311 | + pTmpBsBuf += 8; | |
| 1312 | + } | |
| 1308 | 1313 | } |
| 1309 | 1314 | |
| 1310 | 1315 | pBs->pCurBuf += 384; |
| @@ -1603,6 +1608,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 292 unmodified lines | ||
| 1603 | 1608 | return GENERATE_ERROR_NO (ERR_LEVEL_MB_DATA, ERR_INFO_INVALID_MB_TYPE); |
| 1604 | 1609 | |
| 1605 | 1610 | if (25 == uiMbType) { |
| 1611 | + WelsLog (& (pCtx->sLogCtx), WELS_LOG_DEBUG, "I_PCM mode exists in P slice!"); | |
| 1606 | 1612 | int32_t iDecStrideL = pCurLayer->pDec->iLinesize[0]; |
| 1607 | 1613 | int32_t iDecStrideC = pCurLayer->pDec->iLinesize[1]; |
| 1608 | 1614 | |
| @@ -1628,21 +1634,23 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 19 unmodified lines | ||
| 1628 | 1634 | |
| 1629 | 1635 | //step 2: copy pixel from bit-stream into fdec [reconstruction] |
| 1630 | 1636 | pTmpBsBuf = pBs->pCurBuf; |
| 1631 | − for (i = 0; i < 16; i++) { //luma | |
| 1632 | − memcpy (pDecY , pTmpBsBuf, iCopySizeY); | |
| 1633 | − pDecY += iDecStrideL; | |
| 1634 | − pTmpBsBuf += 16; | |
| 1635 | − } | |
| 1637 | + if (!pCtx->pParam->bParseOnly) { | |
| 1638 | + for (i = 0; i < 16; i++) { //luma | |
| 1639 | + memcpy (pDecY, pTmpBsBuf, iCopySizeY); | |
| 1640 | + pDecY += iDecStrideL; | |
| 1641 | + pTmpBsBuf += 16; | |
| 1642 | + } | |
| 1636 | 1643 | |
| 1637 | − for (i = 0; i < 8; i++) { //cb | |
| 1638 | − memcpy (pDecU, pTmpBsBuf, iCopySizeUV); | |
| 1639 | − pDecU += iDecStrideC; | |
| 1640 | − pTmpBsBuf += 8; | |
| 1641 | − } | |
| 1642 | − for (i = 0; i < 8; i++) { //cr | |
| 1643 | − memcpy (pDecV, pTmpBsBuf, iCopySizeUV); | |
| 1644 | − pDecV += iDecStrideC; | |
| 1645 | − pTmpBsBuf += 8; | |
| 1644 | + for (i = 0; i < 8; i++) { //cb | |
| 1645 | + memcpy (pDecU, pTmpBsBuf, iCopySizeUV); | |
| 1646 | + pDecU += iDecStrideC; | |
| 1647 | + pTmpBsBuf += 8; | |
| 1648 | + } | |
| 1649 | + for (i = 0; i < 8; i++) { //cr | |
| 1650 | + memcpy (pDecV, pTmpBsBuf, iCopySizeUV); | |
| 1651 | + pDecV += iDecStrideC; | |
| 1652 | + pTmpBsBuf += 8; | |
| 1653 | + } | |
| 1646 | 1654 | } |
| 1647 | 1655 | |
| 1648 | 1656 | pBs->pCurBuf += 384; |