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
444444 int32_t iMbX = pCurLayer->iMbX;
445445 int32_t iMbY = pCurLayer->iMbY;
446446 int32_t iMbXy = pCurLayer->iMbXyIndex;
447− int32_t iNMbMode, i;
447+ int32_t i;
448448 uint32_t uiMbType = 0, uiCbp = 0, uiCbpL = 0, uiCbpC = 0;
449449 uint32_t uiCode;
450450 int32_t iCode;
@@ -542,8 +542,6 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 91 unmodified lines
542542 }
543543 }
544544
545− iNMbMode = BASE_MB;
546−
547545 memset (pCurLayer->pScaledTCoeff[iMbXy], 0, 384 * sizeof (pCurLayer->pScaledTCoeff[iMbXy][0]));
548546 ST32 (&pCurLayer->pNzc[iMbXy][0], 0);
549547 ST32 (&pCurLayer->pNzc[iMbXy][4], 0);
@@ -592,7 +590,7 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 42 unmodified lines
592590 if (MB_TYPE_INTRA16x16 == pCurLayer->pMbType[iMbXy]) {
593591 //step1: Luma DC
594592 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)) {
596594 return -1;//abnormal
597595 }
598596 //step2: Luma AC
@@ -600,7 +598,7 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 1 unmodified line
600598 for (i = 0; i < 16; i++) {
601599 if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, i,
602600 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)) {
604602 return -1;//abnormal
605603 }
606604 }
@@ -617,7 +615,7 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 10 unmodified lines
617615 //Luma (DC and AC decoding together)
618616 if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, iIndex,
619617 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)) {
621619 return -1;//abnormal
622620 }
623621 iIndex++;
@@ -639,7 +637,7 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 15 unmodified lines
639637 for (i = 0; i < 2; i++) { //Cb Cr
640638 if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs,
641639 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)) {
643641 return -1;//abnormal
644642 }
645643 }
@@ -652,7 +650,7 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 6 unmodified lines
652650 for (iId4x4 = 0; iId4x4 < 4; iId4x4++) {
653651 if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, iIndex,
654652 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)) {
656654 return -1;//abnormal
657655 }
658656 iIndex++;
@@ -712,7 +710,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 53 unmodified lines
712710 int32_t iMbY = pCurLayer->iMbY;
713711 int32_t iMbXy = pCurLayer->iMbXyIndex;
714712
715− int32_t iNMbMode, i;
713+ int32_t i;
716714 uint32_t uiMbType = 0, uiCbp = 0, uiCbpL = 0, uiCbpC = 0;
717715 uint32_t uiCode;
718716 int32_t iCode;
@@ -740,7 +738,6 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 21 unmodified lines
740738 }
741739
742740 if (pCurLayer->pResidualPredFlag[iMbXy] == 0) {
743− iNMbMode = BASE_MB;
744741 pCurLayer->pInterPredictionDoneFlag[iMbXy] = 0;
745742 } else {
746743 WelsLog (pCtx, WELS_LOG_WARNING, "residual_pred_flag = 1 not supported.\n");
@@ -817,7 +814,6 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 70 unmodified lines
817814 if (pCtx->pParseIntra4x4ModeFunc (&sNeighAvail, pIntraPredMode, pBs, pCurLayer)) {
818815 return -1;
819816 }
820− iNMbMode = BASE_MB;
821817 } else { //I_PCM exclude, we can ignore it
822818 pCurLayer->pMbType[iMbXy] = MB_TYPE_INTRA16x16;
823819 pCurLayer->pIntraPredMode[iMbXy][7] = (uiMbType - 1) & 3;
@@ -828,7 +824,6 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 4 unmodified lines
828824 if (pCtx->pParseIntra16x16ModeFunc (&sNeighAvail, pBs, pCurLayer)) {
829825 return -1;
830826 }
831− iNMbMode = BASE_MB;
832827 }
833828 }
834829 }
@@ -851,22 +846,20 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 16 unmodified lines
851846 uiCbpL = pCurLayer->pCbp[iMbXy] & 15;
852847 }
853848
854− if (iNMbMode == BASE_MB) {
855− pCtx->sBlockFunc.pWelsBlockZero16x16Func (pCurLayer->pScaledTCoeff[iMbXy], 16);
856− pCtx->sBlockFunc.pWelsBlockZero8x8Func (pCurLayer->pScaledTCoeff[iMbXy] + 256, 8);
857− pCtx->sBlockFunc.pWelsBlockZero8x8Func (pCurLayer->pScaledTCoeff[iMbXy] + 256 + 64, 8);
849+ pCtx->sBlockFunc.pWelsBlockZero16x16Func (pCurLayer->pScaledTCoeff[iMbXy], 16);
850+ pCtx->sBlockFunc.pWelsBlockZero8x8Func (pCurLayer->pScaledTCoeff[iMbXy] + 256, 8);
851+ pCtx->sBlockFunc.pWelsBlockZero8x8Func (pCurLayer->pScaledTCoeff[iMbXy] + 256 + 64, 8);
858852
859− ST32 (&pCurLayer->pNzc[iMbXy][0], 0);
860− ST32 (&pCurLayer->pNzc[iMbXy][4], 0);
861− ST32 (&pCurLayer->pNzc[iMbXy][8], 0);
862− ST32 (&pCurLayer->pNzc[iMbXy][12], 0);
863− ST32 (&pCurLayer->pNzc[iMbXy][16], 0);
864− ST32 (&pCurLayer->pNzc[iMbXy][20], 0);
865− if (pCurLayer->pCbp[iMbXy] == 0 && !IS_INTRA16x16 (pCurLayer->pMbType[iMbXy]) && !IS_I_BL (pCurLayer->pMbType[iMbXy])) {
866− pCurLayer->pLumaQp[iMbXy] = pSlice->iLastMbQp;
867− pCurLayer->pChromaQp[iMbXy] = g_kuiChromaQp[WELS_CLIP3 (pCurLayer->pLumaQp[iMbXy] +
868− pSliceHeader->pPps->iChromaQpIndexOffset, 0, 51)];
869− }
853+ ST32 (&pCurLayer->pNzc[iMbXy][0], 0);
854+ ST32 (&pCurLayer->pNzc[iMbXy][4], 0);
855+ ST32 (&pCurLayer->pNzc[iMbXy][8], 0);
856+ ST32 (&pCurLayer->pNzc[iMbXy][12], 0);
857+ ST32 (&pCurLayer->pNzc[iMbXy][16], 0);
858+ ST32 (&pCurLayer->pNzc[iMbXy][20], 0);
859+ if (pCurLayer->pCbp[iMbXy] == 0 && !IS_INTRA16x16 (pCurLayer->pMbType[iMbXy]) && !IS_I_BL (pCurLayer->pMbType[iMbXy])) {
860+ pCurLayer->pLumaQp[iMbXy] = pSlice->iLastMbQp;
861+ pCurLayer->pChromaQp[iMbXy] = g_kuiChromaQp[WELS_CLIP3 (pCurLayer->pLumaQp[iMbXy] +
862+ pSliceHeader->pPps->iChromaQpIndexOffset, 0, 51)];
870863 }
871864
872865 if (pCurLayer->pCbp[iMbXy] || MB_TYPE_INTRA16x16 == pCurLayer->pMbType[iMbXy]) {
@@ -901,7 +894,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 28 unmodified lines
901894 if (MB_TYPE_INTRA16x16 == pCurLayer->pMbType[iMbXy]) {
902895 //step1: Luma DC
903896 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)) {
905898 return -1;//abnormal
906899 }
907900 //step2: Luma AC
@@ -909,7 +902,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 1 unmodified line
909902 for (i = 0; i < 16; i++) {
910903 if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, i,
911904 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)) {
913906 return -1;//abnormal
914907 }
915908 }
@@ -926,7 +919,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 10 unmodified lines
926919 //Luma (DC and AC decoding together)
927920 if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, iIndex,
928921 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)) {
930923 return -1;//abnormal
931924 }
932925 iIndex++;
@@ -949,7 +942,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 16 unmodified lines
949942 for (i = 0; i < 2; i++) { //Cb Cr
950943 if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs,
951944 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)) {
953946 return -1;//abnormal
954947 }
955948 }
@@ -962,7 +955,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 6 unmodified lines
962955 for (iId4x4 = 0; iId4x4 < 4; iId4x4++) {
963956 if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, iIndex,
964957 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)) {
966959 return -1;//abnormal
967960 }
968961 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