remove BASE_MB related code
Showing the changes to codec/decoder/core/src/decode_slice.cpp (1 of 5 files). Show all
Unified · Split
| @@ -444,7 +444,7 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 443 unmodified lines | |||
| 444 | int32_t iMbX = pCurLayer->iMbX; | 444 | int32_t iMbX = pCurLayer->iMbX; |
| 445 | int32_t iMbY = pCurLayer->iMbY; | 445 | int32_t iMbY = pCurLayer->iMbY; |
| 446 | int32_t iMbXy = pCurLayer->iMbXyIndex; | 446 | int32_t iMbXy = pCurLayer->iMbXyIndex; |
| 447 | int32_t iNMbMode, i; | 447 | int32_t i; |
| 448 | uint32_t uiMbType = 0, uiCbp = 0, uiCbpL = 0, uiCbpC = 0; | 448 | uint32_t uiMbType = 0, uiCbp = 0, uiCbpL = 0, uiCbpC = 0; |
| 449 | uint32_t uiCode; | 449 | uint32_t uiCode; |
| 450 | int32_t iCode; | 450 | int32_t iCode; |
| @@ -542,8 +542,6 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 91 unmodified lines | |||
| 542 | } | 542 | } |
| 543 | } | 543 | } |
| 544 | 544 | ||
| 545 | iNMbMode = BASE_MB; | ||
| 546 | |||
| 547 | memset (pCurLayer->pScaledTCoeff[iMbXy], 0, 384 * sizeof (pCurLayer->pScaledTCoeff[iMbXy][0])); | 545 | memset (pCurLayer->pScaledTCoeff[iMbXy], 0, 384 * sizeof (pCurLayer->pScaledTCoeff[iMbXy][0])); |
| 548 | ST32 (&pCurLayer->pNzc[iMbXy][0], 0); | 546 | ST32 (&pCurLayer->pNzc[iMbXy][0], 0); |
| 549 | ST32 (&pCurLayer->pNzc[iMbXy][4], 0); | 547 | ST32 (&pCurLayer->pNzc[iMbXy][4], 0); |
| @@ -592,7 +590,7 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 42 unmodified lines | |||
| 592 | if (MB_TYPE_INTRA16x16 == pCurLayer->pMbType[iMbXy]) { | 590 | if (MB_TYPE_INTRA16x16 == pCurLayer->pMbType[iMbXy]) { |
| 593 | //step1: Luma DC | 591 | //step1: Luma DC |
| 594 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, 0, 16, | 592 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, 0, 16, |
| 595 | g_kuiLumaDcZigzagScan, I16_LUMA_DC, pCurLayer->pScaledTCoeff[iMbXy], iNMbMode, pCurLayer->pLumaQp[iMbXy], pCtx)) { | 593 | g_kuiLumaDcZigzagScan, I16_LUMA_DC, pCurLayer->pScaledTCoeff[iMbXy], pCurLayer->pLumaQp[iMbXy], pCtx)) { |
| 596 | return -1;//abnormal | 594 | return -1;//abnormal |
| 597 | } | 595 | } |
| 598 | //step2: Luma AC | 596 | //step2: Luma AC |
| @@ -600,7 +598,7 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 1 unmodified line | |||
| 600 | for (i = 0; i < 16; i++) { | 598 | for (i = 0; i < 16; i++) { |
| 601 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, i, | 599 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, i, |
| 602 | iScanIdxEnd - WELS_MAX (iScanIdxStart, 1) + 1, g_kuiZigzagScan + WELS_MAX (iScanIdxStart, 1), | 600 | iScanIdxEnd - WELS_MAX (iScanIdxStart, 1) + 1, g_kuiZigzagScan + WELS_MAX (iScanIdxStart, 1), |
| 603 | I16_LUMA_AC, pCurLayer->pScaledTCoeff[iMbXy] + (i << 4), iNMbMode, pCurLayer->pLumaQp[iMbXy], pCtx)) { | 601 | I16_LUMA_AC, pCurLayer->pScaledTCoeff[iMbXy] + (i << 4), pCurLayer->pLumaQp[iMbXy], pCtx)) { |
| 604 | return -1;//abnormal | 602 | return -1;//abnormal |
| 605 | } | 603 | } |
| 606 | } | 604 | } |
| @@ -617,7 +615,7 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 10 unmodified lines | |||
| 617 | //Luma (DC and AC decoding together) | 615 | //Luma (DC and AC decoding together) |
| 618 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, iIndex, | 616 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, iIndex, |
| 619 | iScanIdxEnd - iScanIdxStart + 1, g_kuiZigzagScan + iScanIdxStart, | 617 | iScanIdxEnd - iScanIdxStart + 1, g_kuiZigzagScan + iScanIdxStart, |
| 620 | LUMA_DC_AC, pCurLayer->pScaledTCoeff[iMbXy] + (iIndex << 4), iNMbMode, pCurLayer->pLumaQp[iMbXy], pCtx)) { | 618 | LUMA_DC_AC, pCurLayer->pScaledTCoeff[iMbXy] + (iIndex << 4), pCurLayer->pLumaQp[iMbXy], pCtx)) { |
| 621 | return -1;//abnormal | 619 | return -1;//abnormal |
| 622 | } | 620 | } |
| 623 | iIndex++; | 621 | iIndex++; |
| @@ -639,7 +637,7 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 15 unmodified lines | |||
| 639 | for (i = 0; i < 2; i++) { //Cb Cr | 637 | for (i = 0; i < 2; i++) { //Cb Cr |
| 640 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, | 638 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, |
| 641 | 16 + (i << 2), 4, g_kuiChromaDcScan, CHROMA_DC, pCurLayer->pScaledTCoeff[iMbXy] + 256 + (i << 6), | 639 | 16 + (i << 2), 4, g_kuiChromaDcScan, CHROMA_DC, pCurLayer->pScaledTCoeff[iMbXy] + 256 + (i << 6), |
| 642 | iNMbMode, pCurLayer->pChromaQp[iMbXy], pCtx)) { | 640 | pCurLayer->pChromaQp[iMbXy], pCtx)) { |
| 643 | return -1;//abnormal | 641 | return -1;//abnormal |
| 644 | } | 642 | } |
| 645 | } | 643 | } |
| @@ -652,7 +650,7 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 6 unmodified lines | |||
| 652 | for (iId4x4 = 0; iId4x4 < 4; iId4x4++) { | 650 | for (iId4x4 = 0; iId4x4 < 4; iId4x4++) { |
| 653 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, iIndex, | 651 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, iIndex, |
| 654 | iScanIdxEnd - WELS_MAX (iScanIdxStart, 1) + 1, g_kuiZigzagScan + WELS_MAX (iScanIdxStart, 1), | 652 | iScanIdxEnd - WELS_MAX (iScanIdxStart, 1) + 1, g_kuiZigzagScan + WELS_MAX (iScanIdxStart, 1), |
| 655 | CHROMA_AC, pCurLayer->pScaledTCoeff[iMbXy] + (iIndex << 4), iNMbMode, pCurLayer->pChromaQp[iMbXy], pCtx)) { | 653 | CHROMA_AC, pCurLayer->pScaledTCoeff[iMbXy] + (iIndex << 4), pCurLayer->pChromaQp[iMbXy], pCtx)) { |
| 656 | return -1;//abnormal | 654 | return -1;//abnormal |
| 657 | } | 655 | } |
| 658 | iIndex++; | 656 | iIndex++; |
| @@ -712,7 +710,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 53 unmodified lines | |||
| 712 | int32_t iMbY = pCurLayer->iMbY; | 710 | int32_t iMbY = pCurLayer->iMbY; |
| 713 | int32_t iMbXy = pCurLayer->iMbXyIndex; | 711 | int32_t iMbXy = pCurLayer->iMbXyIndex; |
| 714 | 712 | ||
| 715 | int32_t iNMbMode, i; | 713 | int32_t i; |
| 716 | uint32_t uiMbType = 0, uiCbp = 0, uiCbpL = 0, uiCbpC = 0; | 714 | uint32_t uiMbType = 0, uiCbp = 0, uiCbpL = 0, uiCbpC = 0; |
| 717 | uint32_t uiCode; | 715 | uint32_t uiCode; |
| 718 | int32_t iCode; | 716 | int32_t iCode; |
| @@ -740,7 +738,6 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 21 unmodified lines | |||
| 740 | } | 738 | } |
| 741 | 739 | ||
| 742 | if (pCurLayer->pResidualPredFlag[iMbXy] == 0) { | 740 | if (pCurLayer->pResidualPredFlag[iMbXy] == 0) { |
| 743 | iNMbMode = BASE_MB; | ||
| 744 | pCurLayer->pInterPredictionDoneFlag[iMbXy] = 0; | 741 | pCurLayer->pInterPredictionDoneFlag[iMbXy] = 0; |
| 745 | } else { | 742 | } else { |
| 746 | WelsLog (pCtx, WELS_LOG_WARNING, "residual_pred_flag = 1 not supported.\n"); | 743 | WelsLog (pCtx, WELS_LOG_WARNING, "residual_pred_flag = 1 not supported.\n"); |
| @@ -817,7 +814,6 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 70 unmodified lines | |||
| 817 | if (pCtx->pParseIntra4x4ModeFunc (&sNeighAvail, pIntraPredMode, pBs, pCurLayer)) { | 814 | if (pCtx->pParseIntra4x4ModeFunc (&sNeighAvail, pIntraPredMode, pBs, pCurLayer)) { |
| 818 | return -1; | 815 | return -1; |
| 819 | } | 816 | } |
| 820 | iNMbMode = BASE_MB; | ||
| 821 | } else { //I_PCM exclude, we can ignore it | 817 | } else { //I_PCM exclude, we can ignore it |
| 822 | pCurLayer->pMbType[iMbXy] = MB_TYPE_INTRA16x16; | 818 | pCurLayer->pMbType[iMbXy] = MB_TYPE_INTRA16x16; |
| 823 | pCurLayer->pIntraPredMode[iMbXy][7] = (uiMbType - 1) & 3; | 819 | pCurLayer->pIntraPredMode[iMbXy][7] = (uiMbType - 1) & 3; |
| @@ -828,7 +824,6 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 4 unmodified lines | |||
| 828 | if (pCtx->pParseIntra16x16ModeFunc (&sNeighAvail, pBs, pCurLayer)) { | 824 | if (pCtx->pParseIntra16x16ModeFunc (&sNeighAvail, pBs, pCurLayer)) { |
| 829 | return -1; | 825 | return -1; |
| 830 | } | 826 | } |
| 831 | iNMbMode = BASE_MB; | ||
| 832 | } | 827 | } |
| 833 | } | 828 | } |
| 834 | } | 829 | } |
| @@ -851,22 +846,20 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 16 unmodified lines | |||
| 851 | uiCbpL = pCurLayer->pCbp[iMbXy] & 15; | 846 | uiCbpL = pCurLayer->pCbp[iMbXy] & 15; |
| 852 | } | 847 | } |
| 853 | 848 | ||
| 854 | if (iNMbMode == BASE_MB) { | 849 | pCtx->sBlockFunc.pWelsBlockZero16x16Func (pCurLayer->pScaledTCoeff[iMbXy], 16); |
| 855 | pCtx->sBlockFunc.pWelsBlockZero16x16Func (pCurLayer->pScaledTCoeff[iMbXy], 16); | 850 | pCtx->sBlockFunc.pWelsBlockZero8x8Func (pCurLayer->pScaledTCoeff[iMbXy] + 256, 8); |
| 856 | pCtx->sBlockFunc.pWelsBlockZero8x8Func (pCurLayer->pScaledTCoeff[iMbXy] + 256, 8); | 851 | pCtx->sBlockFunc.pWelsBlockZero8x8Func (pCurLayer->pScaledTCoeff[iMbXy] + 256 + 64, 8); |
| 857 | pCtx->sBlockFunc.pWelsBlockZero8x8Func (pCurLayer->pScaledTCoeff[iMbXy] + 256 + 64, 8); | ||
| 858 | 852 | ||
| 859 | ST32 (&pCurLayer->pNzc[iMbXy][0], 0); | 853 | ST32 (&pCurLayer->pNzc[iMbXy][0], 0); |
| 860 | ST32 (&pCurLayer->pNzc[iMbXy][4], 0); | 854 | ST32 (&pCurLayer->pNzc[iMbXy][4], 0); |
| 861 | ST32 (&pCurLayer->pNzc[iMbXy][8], 0); | 855 | ST32 (&pCurLayer->pNzc[iMbXy][8], 0); |
| 862 | ST32 (&pCurLayer->pNzc[iMbXy][12], 0); | 856 | ST32 (&pCurLayer->pNzc[iMbXy][12], 0); |
| 863 | ST32 (&pCurLayer->pNzc[iMbXy][16], 0); | 857 | ST32 (&pCurLayer->pNzc[iMbXy][16], 0); |
| 864 | ST32 (&pCurLayer->pNzc[iMbXy][20], 0); | 858 | ST32 (&pCurLayer->pNzc[iMbXy][20], 0); |
| 865 | if (pCurLayer->pCbp[iMbXy] == 0 && !IS_INTRA16x16 (pCurLayer->pMbType[iMbXy]) && !IS_I_BL (pCurLayer->pMbType[iMbXy])) { | 859 | if (pCurLayer->pCbp[iMbXy] == 0 && !IS_INTRA16x16 (pCurLayer->pMbType[iMbXy]) && !IS_I_BL (pCurLayer->pMbType[iMbXy])) { |
| 866 | pCurLayer->pLumaQp[iMbXy] = pSlice->iLastMbQp; | 860 | pCurLayer->pLumaQp[iMbXy] = pSlice->iLastMbQp; |
| 867 | pCurLayer->pChromaQp[iMbXy] = g_kuiChromaQp[WELS_CLIP3 (pCurLayer->pLumaQp[iMbXy] + | 861 | pCurLayer->pChromaQp[iMbXy] = g_kuiChromaQp[WELS_CLIP3 (pCurLayer->pLumaQp[iMbXy] + |
| 868 | pSliceHeader->pPps->iChromaQpIndexOffset, 0, 51)]; | 862 | pSliceHeader->pPps->iChromaQpIndexOffset, 0, 51)]; |
| 869 | } | ||
| 870 | } | 863 | } |
| 871 | 864 | ||
| 872 | if (pCurLayer->pCbp[iMbXy] || MB_TYPE_INTRA16x16 == pCurLayer->pMbType[iMbXy]) { | 865 | if (pCurLayer->pCbp[iMbXy] || MB_TYPE_INTRA16x16 == pCurLayer->pMbType[iMbXy]) { |
| @@ -901,7 +894,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 28 unmodified lines | |||
| 901 | if (MB_TYPE_INTRA16x16 == pCurLayer->pMbType[iMbXy]) { | 894 | if (MB_TYPE_INTRA16x16 == pCurLayer->pMbType[iMbXy]) { |
| 902 | //step1: Luma DC | 895 | //step1: Luma DC |
| 903 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, 0, 16, g_kuiLumaDcZigzagScan, | 896 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, 0, 16, g_kuiLumaDcZigzagScan, |
| 904 | I16_LUMA_DC, pCurLayer->pScaledTCoeff[iMbXy], iNMbMode, pCurLayer->pLumaQp[iMbXy], pCtx)) { | 897 | I16_LUMA_DC, pCurLayer->pScaledTCoeff[iMbXy], pCurLayer->pLumaQp[iMbXy], pCtx)) { |
| 905 | return -1;//abnormal | 898 | return -1;//abnormal |
| 906 | } | 899 | } |
| 907 | //step2: Luma AC | 900 | //step2: Luma AC |
| @@ -909,7 +902,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 1 unmodified line | |||
| 909 | for (i = 0; i < 16; i++) { | 902 | for (i = 0; i < 16; i++) { |
| 910 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, i, | 903 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, i, |
| 911 | iScanIdxEnd - WELS_MAX (iScanIdxStart, 1) + 1, g_kuiZigzagScan + WELS_MAX (iScanIdxStart, 1), | 904 | iScanIdxEnd - WELS_MAX (iScanIdxStart, 1) + 1, g_kuiZigzagScan + WELS_MAX (iScanIdxStart, 1), |
| 912 | I16_LUMA_AC, pCurLayer->pScaledTCoeff[iMbXy] + (i << 4), iNMbMode, pCurLayer->pLumaQp[iMbXy], pCtx)) { | 905 | I16_LUMA_AC, pCurLayer->pScaledTCoeff[iMbXy] + (i << 4), pCurLayer->pLumaQp[iMbXy], pCtx)) { |
| 913 | return -1;//abnormal | 906 | return -1;//abnormal |
| 914 | } | 907 | } |
| 915 | } | 908 | } |
| @@ -926,7 +919,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 10 unmodified lines | |||
| 926 | //Luma (DC and AC decoding together) | 919 | //Luma (DC and AC decoding together) |
| 927 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, iIndex, | 920 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, iIndex, |
| 928 | iScanIdxEnd - iScanIdxStart + 1, g_kuiZigzagScan + iScanIdxStart, LUMA_DC_AC, | 921 | iScanIdxEnd - iScanIdxStart + 1, g_kuiZigzagScan + iScanIdxStart, LUMA_DC_AC, |
| 929 | pCurLayer->pScaledTCoeff[iMbXy] + (iIndex << 4), iNMbMode, pCurLayer->pLumaQp[iMbXy], pCtx)) { | 922 | pCurLayer->pScaledTCoeff[iMbXy] + (iIndex << 4), pCurLayer->pLumaQp[iMbXy], pCtx)) { |
| 930 | return -1;//abnormal | 923 | return -1;//abnormal |
| 931 | } | 924 | } |
| 932 | iIndex++; | 925 | iIndex++; |
| @@ -949,7 +942,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 16 unmodified lines | |||
| 949 | for (i = 0; i < 2; i++) { //Cb Cr | 942 | for (i = 0; i < 2; i++) { //Cb Cr |
| 950 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, | 943 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, |
| 951 | 16 + (i << 2), 4, g_kuiChromaDcScan, CHROMA_DC, pCurLayer->pScaledTCoeff[iMbXy] + 256 + (i << 6), | 944 | 16 + (i << 2), 4, g_kuiChromaDcScan, CHROMA_DC, pCurLayer->pScaledTCoeff[iMbXy] + 256 + (i << 6), |
| 952 | iNMbMode, pCurLayer->pChromaQp[iMbXy], pCtx)) { | 945 | pCurLayer->pChromaQp[iMbXy], pCtx)) { |
| 953 | return -1;//abnormal | 946 | return -1;//abnormal |
| 954 | } | 947 | } |
| 955 | } | 948 | } |
| @@ -962,7 +955,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 6 unmodified lines | |||
| 962 | for (iId4x4 = 0; iId4x4 < 4; iId4x4++) { | 955 | for (iId4x4 = 0; iId4x4 < 4; iId4x4++) { |
| 963 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, iIndex, | 956 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, iIndex, |
| 964 | iScanIdxEnd - WELS_MAX (iScanIdxStart, 1) + 1, g_kuiZigzagScan + WELS_MAX (iScanIdxStart, 1), | 957 | iScanIdxEnd - WELS_MAX (iScanIdxStart, 1) + 1, g_kuiZigzagScan + WELS_MAX (iScanIdxStart, 1), |
| 965 | CHROMA_AC, pCurLayer->pScaledTCoeff[iMbXy] + (iIndex << 4), iNMbMode, pCurLayer->pChromaQp[iMbXy], pCtx)) { | 958 | CHROMA_AC, pCurLayer->pScaledTCoeff[iMbXy] + (iIndex << 4), pCurLayer->pChromaQp[iMbXy], pCtx)) { |
| 966 | return -1;//abnormal | 959 | return -1;//abnormal |
| 967 | } | 960 | } |
| 968 | iIndex++; | 961 | iIndex++; |