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