Showing the changes to codec/decoder/core/src/decode_slice.cpp (1 of 5 files). Show all
Unified · Split
| @@ -453,7 +453,7 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 452 unmodified lines | ||
| 453 | 453 | int32_t iMbX = pCurLayer->iMbX; |
| 454 | 454 | int32_t iMbY = pCurLayer->iMbY; |
| 455 | 455 | int32_t iMbXy = pCurLayer->iMbXyIndex; |
| 456 | − int32_t iNMbMode, i; | |
| 456 | + int32_t i; | |
| 457 | 457 | uint32_t uiMbType = 0, uiCbp = 0, uiCbpL = 0, uiCbpC = 0; |
| 458 | 458 | uint32_t uiCode; |
| 459 | 459 | int32_t iCode; |
| @@ -551,8 +551,6 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 91 unmodified lines | ||
| 551 | 551 | } |
| 552 | 552 | } |
| 553 | 553 | |
| 554 | − iNMbMode = BASE_MB; | |
| 555 | − | |
| 556 | 554 | memset (pCurLayer->pScaledTCoeff[iMbXy], 0, 384 * sizeof (pCurLayer->pScaledTCoeff[iMbXy][0])); |
| 557 | 555 | ST32 (&pCurLayer->pNzc[iMbXy][0], 0); |
| 558 | 556 | ST32 (&pCurLayer->pNzc[iMbXy][4], 0); |
| @@ -601,7 +599,7 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 42 unmodified lines | ||
| 601 | 599 | if (MB_TYPE_INTRA16x16 == pCurLayer->pMbType[iMbXy]) { |
| 602 | 600 | //step1: Luma DC |
| 603 | 601 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, 0, 16, |
| 604 | − g_kuiLumaDcZigzagScan, I16_LUMA_DC, pCurLayer->pScaledTCoeff[iMbXy], iNMbMode, pCurLayer->pLumaQp[iMbXy], pCtx)) { | |
| 602 | + g_kuiLumaDcZigzagScan, I16_LUMA_DC, pCurLayer->pScaledTCoeff[iMbXy], pCurLayer->pLumaQp[iMbXy], pCtx)) { | |
| 605 | 603 | return -1;//abnormal |
| 606 | 604 | } |
| 607 | 605 | //step2: Luma AC |
| @@ -609,7 +607,7 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 1 unmodified line | ||
| 609 | 607 | for (i = 0; i < 16; i++) { |
| 610 | 608 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, i, |
| 611 | 609 | iScanIdxEnd - WELS_MAX (iScanIdxStart, 1) + 1, g_kuiZigzagScan + WELS_MAX (iScanIdxStart, 1), |
| 612 | − I16_LUMA_AC, pCurLayer->pScaledTCoeff[iMbXy] + (i << 4), iNMbMode, pCurLayer->pLumaQp[iMbXy], pCtx)) { | |
| 610 | + I16_LUMA_AC, pCurLayer->pScaledTCoeff[iMbXy] + (i << 4), pCurLayer->pLumaQp[iMbXy], pCtx)) { | |
| 613 | 611 | return -1;//abnormal |
| 614 | 612 | } |
| 615 | 613 | } |
| @@ -626,7 +624,7 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 10 unmodified lines | ||
| 626 | 624 | //Luma (DC and AC decoding together) |
| 627 | 625 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, iIndex, |
| 628 | 626 | iScanIdxEnd - iScanIdxStart + 1, g_kuiZigzagScan + iScanIdxStart, |
| 629 | − LUMA_DC_AC, pCurLayer->pScaledTCoeff[iMbXy] + (iIndex << 4), iNMbMode, pCurLayer->pLumaQp[iMbXy], pCtx)) { | |
| 627 | + LUMA_DC_AC, pCurLayer->pScaledTCoeff[iMbXy] + (iIndex << 4), pCurLayer->pLumaQp[iMbXy], pCtx)) { | |
| 630 | 628 | return -1;//abnormal |
| 631 | 629 | } |
| 632 | 630 | iIndex++; |
| @@ -648,7 +646,7 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 15 unmodified lines | ||
| 648 | 646 | for (i = 0; i < 2; i++) { //Cb Cr |
| 649 | 647 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, |
| 650 | 648 | 16 + (i << 2), 4, g_kuiChromaDcScan, CHROMA_DC, pCurLayer->pScaledTCoeff[iMbXy] + 256 + (i << 6), |
| 651 | − iNMbMode, pCurLayer->pChromaQp[iMbXy], pCtx)) { | |
| 649 | + pCurLayer->pChromaQp[iMbXy], pCtx)) { | |
| 652 | 650 | return -1;//abnormal |
| 653 | 651 | } |
| 654 | 652 | } |
| @@ -661,7 +659,7 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 6 unmodified lines | ||
| 661 | 659 | for (iId4x4 = 0; iId4x4 < 4; iId4x4++) { |
| 662 | 660 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, iIndex, |
| 663 | 661 | iScanIdxEnd - WELS_MAX (iScanIdxStart, 1) + 1, g_kuiZigzagScan + WELS_MAX (iScanIdxStart, 1), |
| 664 | − CHROMA_AC, pCurLayer->pScaledTCoeff[iMbXy] + (iIndex << 4), iNMbMode, pCurLayer->pChromaQp[iMbXy], pCtx)) { | |
| 662 | + CHROMA_AC, pCurLayer->pScaledTCoeff[iMbXy] + (iIndex << 4), pCurLayer->pChromaQp[iMbXy], pCtx)) { | |
| 665 | 663 | return -1;//abnormal |
| 666 | 664 | } |
| 667 | 665 | iIndex++; |
| @@ -721,7 +719,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 53 unmodified lines | ||
| 721 | 719 | int32_t iMbY = pCurLayer->iMbY; |
| 722 | 720 | int32_t iMbXy = pCurLayer->iMbXyIndex; |
| 723 | 721 | |
| 724 | − int32_t iNMbMode, i; | |
| 722 | + int32_t i; | |
| 725 | 723 | uint32_t uiMbType = 0, uiCbp = 0, uiCbpL = 0, uiCbpC = 0; |
| 726 | 724 | uint32_t uiCode; |
| 727 | 725 | int32_t iCode; |
| @@ -749,7 +747,6 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 21 unmodified lines | ||
| 749 | 747 | } |
| 750 | 748 | |
| 751 | 749 | if (pCurLayer->pResidualPredFlag[iMbXy] == 0) { |
| 752 | − iNMbMode = BASE_MB; | |
| 753 | 750 | pCurLayer->pInterPredictionDoneFlag[iMbXy] = 0; |
| 754 | 751 | } else { |
| 755 | 752 | WelsLog (pCtx, WELS_LOG_WARNING, "residual_pred_flag = 1 not supported.\n"); |
| @@ -826,7 +823,6 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 70 unmodified lines | ||
| 826 | 823 | if (pCtx->pParseIntra4x4ModeFunc (&sNeighAvail, pIntraPredMode, pBs, pCurLayer)) { |
| 827 | 824 | return -1; |
| 828 | 825 | } |
| 829 | − iNMbMode = BASE_MB; | |
| 830 | 826 | } else { //I_PCM exclude, we can ignore it |
| 831 | 827 | pCurLayer->pMbType[iMbXy] = MB_TYPE_INTRA16x16; |
| 832 | 828 | pCurLayer->pIntraPredMode[iMbXy][7] = (uiMbType - 1) & 3; |
| @@ -837,7 +833,6 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 4 unmodified lines | ||
| 837 | 833 | if (pCtx->pParseIntra16x16ModeFunc (&sNeighAvail, pBs, pCurLayer)) { |
| 838 | 834 | return -1; |
| 839 | 835 | } |
| 840 | − iNMbMode = BASE_MB; | |
| 841 | 836 | } |
| 842 | 837 | } |
| 843 | 838 | } |
| @@ -860,22 +855,20 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 16 unmodified lines | ||
| 860 | 855 | uiCbpL = pCurLayer->pCbp[iMbXy] & 15; |
| 861 | 856 | } |
| 862 | 857 | |
| 863 | − if (iNMbMode == BASE_MB) { | |
| 864 | − pCtx->sBlockFunc.pWelsBlockZero16x16Func (pCurLayer->pScaledTCoeff[iMbXy], 16); | |
| 865 | − pCtx->sBlockFunc.pWelsBlockZero8x8Func (pCurLayer->pScaledTCoeff[iMbXy] + 256, 8); | |
| 866 | − pCtx->sBlockFunc.pWelsBlockZero8x8Func (pCurLayer->pScaledTCoeff[iMbXy] + 256 + 64, 8); | |
| 858 | + pCtx->sBlockFunc.pWelsBlockZero16x16Func (pCurLayer->pScaledTCoeff[iMbXy], 16); | |
| 859 | + pCtx->sBlockFunc.pWelsBlockZero8x8Func (pCurLayer->pScaledTCoeff[iMbXy] + 256, 8); | |
| 860 | + pCtx->sBlockFunc.pWelsBlockZero8x8Func (pCurLayer->pScaledTCoeff[iMbXy] + 256 + 64, 8); | |
| 867 | 861 | |
| 868 | − ST32 (&pCurLayer->pNzc[iMbXy][0], 0); | |
| 869 | − ST32 (&pCurLayer->pNzc[iMbXy][4], 0); | |
| 870 | − ST32 (&pCurLayer->pNzc[iMbXy][8], 0); | |
| 871 | − ST32 (&pCurLayer->pNzc[iMbXy][12], 0); | |
| 872 | − ST32 (&pCurLayer->pNzc[iMbXy][16], 0); | |
| 873 | − ST32 (&pCurLayer->pNzc[iMbXy][20], 0); | |
| 874 | − if (pCurLayer->pCbp[iMbXy] == 0 && !IS_INTRA16x16 (pCurLayer->pMbType[iMbXy]) && !IS_I_BL (pCurLayer->pMbType[iMbXy])) { | |
| 875 | − pCurLayer->pLumaQp[iMbXy] = pSlice->iLastMbQp; | |
| 876 | − pCurLayer->pChromaQp[iMbXy] = g_kuiChromaQp[WELS_CLIP3 (pCurLayer->pLumaQp[iMbXy] + | |
| 877 | − pSliceHeader->pPps->iChromaQpIndexOffset, 0, 51)]; | |
| 878 | − } | |
| 862 | + ST32 (&pCurLayer->pNzc[iMbXy][0], 0); | |
| 863 | + ST32 (&pCurLayer->pNzc[iMbXy][4], 0); | |
| 864 | + ST32 (&pCurLayer->pNzc[iMbXy][8], 0); | |
| 865 | + ST32 (&pCurLayer->pNzc[iMbXy][12], 0); | |
| 866 | + ST32 (&pCurLayer->pNzc[iMbXy][16], 0); | |
| 867 | + ST32 (&pCurLayer->pNzc[iMbXy][20], 0); | |
| 868 | + if (pCurLayer->pCbp[iMbXy] == 0 && !IS_INTRA16x16 (pCurLayer->pMbType[iMbXy]) && !IS_I_BL (pCurLayer->pMbType[iMbXy])) { | |
| 869 | + pCurLayer->pLumaQp[iMbXy] = pSlice->iLastMbQp; | |
| 870 | + pCurLayer->pChromaQp[iMbXy] = g_kuiChromaQp[WELS_CLIP3 (pCurLayer->pLumaQp[iMbXy] + | |
| 871 | + pSliceHeader->pPps->iChromaQpIndexOffset, 0, 51)]; | |
| 879 | 872 | } |
| 880 | 873 | |
| 881 | 874 | if (pCurLayer->pCbp[iMbXy] || MB_TYPE_INTRA16x16 == pCurLayer->pMbType[iMbXy]) { |
| @@ -910,7 +903,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 28 unmodified lines | ||
| 910 | 903 | if (MB_TYPE_INTRA16x16 == pCurLayer->pMbType[iMbXy]) { |
| 911 | 904 | //step1: Luma DC |
| 912 | 905 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, 0, 16, g_kuiLumaDcZigzagScan, |
| 913 | − I16_LUMA_DC, pCurLayer->pScaledTCoeff[iMbXy], iNMbMode, pCurLayer->pLumaQp[iMbXy], pCtx)) { | |
| 906 | + I16_LUMA_DC, pCurLayer->pScaledTCoeff[iMbXy], pCurLayer->pLumaQp[iMbXy], pCtx)) { | |
| 914 | 907 | return -1;//abnormal |
| 915 | 908 | } |
| 916 | 909 | //step2: Luma AC |
| @@ -918,7 +911,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 1 unmodified line | ||
| 918 | 911 | for (i = 0; i < 16; i++) { |
| 919 | 912 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, i, |
| 920 | 913 | iScanIdxEnd - WELS_MAX (iScanIdxStart, 1) + 1, g_kuiZigzagScan + WELS_MAX (iScanIdxStart, 1), |
| 921 | − I16_LUMA_AC, pCurLayer->pScaledTCoeff[iMbXy] + (i << 4), iNMbMode, pCurLayer->pLumaQp[iMbXy], pCtx)) { | |
| 914 | + I16_LUMA_AC, pCurLayer->pScaledTCoeff[iMbXy] + (i << 4), pCurLayer->pLumaQp[iMbXy], pCtx)) { | |
| 922 | 915 | return -1;//abnormal |
| 923 | 916 | } |
| 924 | 917 | } |
| @@ -935,7 +928,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 10 unmodified lines | ||
| 935 | 928 | //Luma (DC and AC decoding together) |
| 936 | 929 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, iIndex, |
| 937 | 930 | iScanIdxEnd - iScanIdxStart + 1, g_kuiZigzagScan + iScanIdxStart, LUMA_DC_AC, |
| 938 | − pCurLayer->pScaledTCoeff[iMbXy] + (iIndex << 4), iNMbMode, pCurLayer->pLumaQp[iMbXy], pCtx)) { | |
| 931 | + pCurLayer->pScaledTCoeff[iMbXy] + (iIndex << 4), pCurLayer->pLumaQp[iMbXy], pCtx)) { | |
| 939 | 932 | return -1;//abnormal |
| 940 | 933 | } |
| 941 | 934 | iIndex++; |
| @@ -958,7 +951,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 16 unmodified lines | ||
| 958 | 951 | for (i = 0; i < 2; i++) { //Cb Cr |
| 959 | 952 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, |
| 960 | 953 | 16 + (i << 2), 4, g_kuiChromaDcScan, CHROMA_DC, pCurLayer->pScaledTCoeff[iMbXy] + 256 + (i << 6), |
| 961 | − iNMbMode, pCurLayer->pChromaQp[iMbXy], pCtx)) { | |
| 954 | + pCurLayer->pChromaQp[iMbXy], pCtx)) { | |
| 962 | 955 | return -1;//abnormal |
| 963 | 956 | } |
| 964 | 957 | } |
| @@ -971,7 +964,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 6 unmodified lines | ||
| 971 | 964 | for (iId4x4 = 0; iId4x4 < 4; iId4x4++) { |
| 972 | 965 | if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, iIndex, |
| 973 | 966 | iScanIdxEnd - WELS_MAX (iScanIdxStart, 1) + 1, g_kuiZigzagScan + WELS_MAX (iScanIdxStart, 1), |
| 974 | − CHROMA_AC, pCurLayer->pScaledTCoeff[iMbXy] + (iIndex << 4), iNMbMode, pCurLayer->pChromaQp[iMbXy], pCtx)) { | |
| 967 | + CHROMA_AC, pCurLayer->pScaledTCoeff[iMbXy] + (iIndex << 4), pCurLayer->pChromaQp[iMbXy], pCtx)) { | |
| 975 | 968 | return -1;//abnormal |
| 976 | 969 | } |
| 977 | 970 | iIndex++; |