Showing the changes to codec/decoder/core/src/decode_slice.cpp (1 of 4 files). Show all
Unified · Split
| @@ -1415,16 +1415,25 @@ int32_t WelsDecodeMbCabacBSlice (PWelsDecoderContext pCtx, PNalUnit pNalCur, uin · 1414 unmodified lines | ||
| 1415 | 1415 | pCtx->bMbRefConcealed = pCtx->bRPLRError || pCtx->bMbRefConcealed || ! (ppRefPicL0[0] && ppRefPicL0[0]->bIsComplete) |
| 1416 | 1416 | || ! (ppRefPicL1[0] && ppRefPicL1[0]->bIsComplete); |
| 1417 | 1417 | |
| 1418 | + | |
| 1418 | 1419 | if (pSliceHeader->iDirectSpatialMvPredFlag) { |
| 1419 | 1420 | |
| 1420 | 1421 | //predict direct spatial mv |
| 1421 | − PredMvBDirectSpatial (pCtx, pMv, ref); | |
| 1422 | + SubMbType subMbType; | |
| 1423 | + int32_t ret = PredMvBDirectSpatial (pCtx, pMv, ref, subMbType); | |
| 1424 | + if (ret != ERR_NONE) { | |
| 1425 | + return ret; | |
| 1426 | + } | |
| 1422 | 1427 | } else { |
| 1423 | 1428 | //temporal direct mode |
| 1424 | 1429 | ComputeColocated (pCtx); |
| 1425 | − PredBDirectTemporal (pCtx, pMv, ref); | |
| 1430 | + int32_t ret = PredBDirectTemporal (pCtx, pMv, ref); | |
| 1431 | + if (ret != ERR_NONE) { | |
| 1432 | + return ret; | |
| 1433 | + } | |
| 1426 | 1434 | } |
| 1427 | 1435 | |
| 1436 | + | |
| 1428 | 1437 | //reset rS |
| 1429 | 1438 | pCurLayer->pLumaQp[iMbXy] = pSlice->iLastMbQp; //??????????????? dqaunt of previous mb |
| 1430 | 1439 | for (i = 0; i < 2; i++) { |