History

Merge pull request #510 from huili2/remove_basemb

remove BASE_MB related code

Licai Guo committed 12 years ago

Commit 2c796332 parents 1449c83 b1f596f5 files · +37 −70Browse files

Showing the changes to codec/decoder/core/src/decode_slice.cpp (1 of 5 files). Show all

Unified · Split

codec/decoder/core/src/decode_slice.cpp+25−32
@@ -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 DC591 //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;//abnormal594 return -1;//abnormal
597 }595 }
598 //step2: Luma AC596 //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;//abnormal602 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;//abnormal619 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 Cr637 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;//abnormal641 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;//abnormal654 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 it817 } 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 DC895 //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;//abnormal898 return -1;//abnormal
906 }899 }
907 //step2: Luma AC900 //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;//abnormal906 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;//abnormal923 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 Cr942 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;//abnormal946 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;//abnormal959 return -1;//abnormal
967 }960 }
968 iIndex++;961 iIndex++;

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t