Showing the changes to codec/decoder/core/src/decode_slice.cpp (1 of 14 files). Show all
Unified · Split
| @@ -90,7 +90,8 @@ int32_t WelsTargetSliceConstruction (PWelsDecoderContext pCtx) { · 89 unmodified lines | |||
| 90 | } | 90 | } |
| 91 | 91 | ||
| 92 | if (WelsTargetMbConstruction (pCtx)) { | 92 | if (WelsTargetMbConstruction (pCtx)) { |
| 93 | WelsLog (&(pCtx->sLogCtx), WELS_LOG_WARNING, "WelsTargetSliceConstruction():::MB(%d, %d) construction error. pCurSlice_type:%d\n", | 93 | WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, |
| 94 | "WelsTargetSliceConstruction():::MB(%d, %d) construction error. pCurSlice_type:%d\n", | ||
| 94 | pCurLayer->iMbX, pCurLayer->iMbY, pCurSlice->eSliceType); | 95 | pCurLayer->iMbX, pCurLayer->iMbY, pCurSlice->eSliceType); |
| 95 | 96 | ||
| 96 | return -1; | 97 | return -1; |
| @@ -103,7 +104,8 @@ int32_t WelsTargetSliceConstruction (PWelsDecoderContext pCtx) { · 6 unmodified lines | |||
| 103 | } | 104 | } |
| 104 | 105 | ||
| 105 | if (pCtx->iTotalNumMbRec > iTotalMbTargetLayer) { | 106 | if (pCtx->iTotalNumMbRec > iTotalMbTargetLayer) { |
| 106 | WelsLog (&(pCtx->sLogCtx), WELS_LOG_WARNING, "WelsTargetSliceConstruction():::pCtx->iTotalNumMbRec:%d, iTotalMbTargetLayer:%d\n", | 107 | WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, |
| 108 | "WelsTargetSliceConstruction():::pCtx->iTotalNumMbRec:%d, iTotalMbTargetLayer:%d\n", | ||
| 107 | pCtx->iTotalNumMbRec, iTotalMbTargetLayer); | 109 | pCtx->iTotalNumMbRec, iTotalMbTargetLayer); |
| 108 | 110 | ||
| 109 | return -1; | 111 | return -1; |
| @@ -285,7 +287,7 @@ int32_t WelsTargetMbConstruction (PWelsDecoderContext pCtx) { · 175 unmodified lines | |||
| 285 | WelsMbInterConstruction (pCtx, pCurLayer); | 287 | WelsMbInterConstruction (pCtx, pCurLayer); |
| 286 | } | 288 | } |
| 287 | } else { | 289 | } else { |
| 288 | WelsLog (&(pCtx->sLogCtx), WELS_LOG_WARNING, "WelsTargetMbConstruction():::::Unknown MB type: %d\n", | 290 | WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "WelsTargetMbConstruction():::::Unknown MB type: %d\n", |
| 289 | pCurLayer->pMbType[pCurLayer->iMbXyIndex]); | 291 | pCurLayer->pMbType[pCurLayer->iMbXyIndex]); |
| 290 | return -1; | 292 | return -1; |
| 291 | } | 293 | } |
| @@ -416,7 +418,7 @@ int32_t WelsDecodeSlice (PWelsDecoderContext pCtx, bool bFirstSliceInLayer, PNal · 124 unmodified lines | |||
| 416 | break; | 418 | break; |
| 417 | } | 419 | } |
| 418 | if (iUsedBits > pBs->iBits) { //When BS incomplete, as long as find it, SHOULD stop decoding to avoid mosaic or crash. | 420 | if (iUsedBits > pBs->iBits) { //When BS incomplete, as long as find it, SHOULD stop decoding to avoid mosaic or crash. |
| 419 | WelsLog (&(pCtx->sLogCtx), WELS_LOG_WARNING, | 421 | WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, |
| 420 | "WelsDecodeSlice()::::pBs incomplete, iUsedBits:%"PRId64" > pBs->iBits:%d, MUST stop decoding.\n", | 422 | "WelsDecodeSlice()::::pBs incomplete, iUsedBits:%"PRId64" > pBs->iBits:%d, MUST stop decoding.\n", |
| 421 | (int64_t) iUsedBits, pBs->iBits); | 423 | (int64_t) iUsedBits, pBs->iBits); |
| 422 | return -1; | 424 | return -1; |
| @@ -584,7 +586,8 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 161 unmodified lines | |||
| 584 | return ERR_INFO_INVALID_QP; | 586 | return ERR_INFO_INVALID_QP; |
| 585 | } | 587 | } |
| 586 | pSlice->iLastMbQp = pCurLayer->pLumaQp[iMbXy]; | 588 | pSlice->iLastMbQp = pCurLayer->pLumaQp[iMbXy]; |
| 587 | pCurLayer->pChromaQp[iMbXy] = g_kuiChromaQpTable[WELS_CLIP3 (pSlice->iLastMbQp + pSliceHeader->pPps->iChromaQpIndexOffset, 0, | 589 | pCurLayer->pChromaQp[iMbXy] = g_kuiChromaQpTable[WELS_CLIP3 (pSlice->iLastMbQp + |
| 590 | pSliceHeader->pPps->iChromaQpIndexOffset, 0, | ||
| 588 | 51)]; | 591 | 51)]; |
| 589 | 592 | ||
| 590 | 593 | ||
| @@ -687,7 +690,8 @@ int32_t WelsDecodeMbCavlcISlice (PWelsDecoderContext pCtx, PNalUnit pNalCur) { · 96 unmodified lines | |||
| 687 | if (!iBaseModeFlag) { | 690 | if (!iBaseModeFlag) { |
| 688 | iRet = WelsActualDecodeMbCavlcISlice (pCtx); | 691 | iRet = WelsActualDecodeMbCavlcISlice (pCtx); |
| 689 | } else { | 692 | } else { |
| 690 | WelsLog (&(pCtx->sLogCtx), WELS_LOG_WARNING, "iBaseModeFlag (%d) != 0, inter-layer prediction not supported.\n", iBaseModeFlag); | 693 | WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "iBaseModeFlag (%d) != 0, inter-layer prediction not supported.\n", |
| 694 | iBaseModeFlag); | ||
| 691 | return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_HEADER, ERR_INFO_UNSUPPORTED_ILP); | 695 | return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_HEADER, ERR_INFO_UNSUPPORTED_ILP); |
| 692 | } | 696 | } |
| 693 | if (iRet) { //occur error when parsing, MUST STOP decoding | 697 | if (iRet) { //occur error when parsing, MUST STOP decoding |
| @@ -743,7 +747,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 49 unmodified lines | |||
| 743 | if (pCurLayer->pResidualPredFlag[iMbXy] == 0) { | 747 | if (pCurLayer->pResidualPredFlag[iMbXy] == 0) { |
| 744 | pCurLayer->pInterPredictionDoneFlag[iMbXy] = 0; | 748 | pCurLayer->pInterPredictionDoneFlag[iMbXy] = 0; |
| 745 | } else { | 749 | } else { |
| 746 | WelsLog (&(pCtx->sLogCtx), WELS_LOG_WARNING, "residual_pred_flag = 1 not supported.\n"); | 750 | WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "residual_pred_flag = 1 not supported.\n"); |
| 747 | return -1; | 751 | return -1; |
| 748 | } | 752 | } |
| 749 | } else { //intra MB type | 753 | } else { //intra MB type |
| @@ -887,7 +891,8 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 137 unmodified lines | |||
| 887 | return ERR_INFO_INVALID_QP; | 891 | return ERR_INFO_INVALID_QP; |
| 888 | } | 892 | } |
| 889 | pSlice->iLastMbQp = pCurLayer->pLumaQp[iMbXy]; | 893 | pSlice->iLastMbQp = pCurLayer->pLumaQp[iMbXy]; |
| 890 | pCurLayer->pChromaQp[iMbXy] = g_kuiChromaQpTable[WELS_CLIP3 (pSlice->iLastMbQp + pSliceHeader->pPps->iChromaQpIndexOffset, 0, | 894 | pCurLayer->pChromaQp[iMbXy] = g_kuiChromaQpTable[WELS_CLIP3 (pSlice->iLastMbQp + |
| 895 | pSliceHeader->pPps->iChromaQpIndexOffset, 0, | ||
| 891 | 51)]; | 896 | 51)]; |
| 892 | 897 | ||
| 893 | BsStartCavlc (pBs); | 898 | BsStartCavlc (pBs); |
| @@ -1039,7 +1044,8 @@ int32_t WelsDecodeMbCavlcPSlice (PWelsDecoderContext pCtx, PNalUnit pNalCur) { · 145 unmodified lines | |||
| 1039 | if (!iBaseModeFlag) { | 1044 | if (!iBaseModeFlag) { |
| 1040 | iRet = WelsActualDecodeMbCavlcPSlice (pCtx); | 1045 | iRet = WelsActualDecodeMbCavlcPSlice (pCtx); |
| 1041 | } else { | 1046 | } else { |
| 1042 | WelsLog (&(pCtx->sLogCtx), WELS_LOG_WARNING, "iBaseModeFlag (%d) != 0, inter-layer prediction not supported.\n", iBaseModeFlag); | 1047 | WelsLog (& (pCtx->sLogCtx), WELS_LOG_WARNING, "iBaseModeFlag (%d) != 0, inter-layer prediction not supported.\n", |
| 1048 | iBaseModeFlag); | ||
| 1043 | return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_HEADER, ERR_INFO_UNSUPPORTED_ILP); | 1049 | return GENERATE_ERROR_NO (ERR_LEVEL_SLICE_HEADER, ERR_INFO_UNSUPPORTED_ILP); |
| 1044 | } | 1050 | } |
| 1045 | if (iRet) { //occur error when parsing, MUST STOP decoding | 1051 | if (iRet) { //occur error when parsing, MUST STOP decoding |