Merge pull request #510 from huili2/remove_basemb
remove BASE_MB related code
This commit is contained in:
@@ -444,7 +444,7 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) {
|
||||
int32_t iMbX = pCurLayer->iMbX;
|
||||
int32_t iMbY = pCurLayer->iMbY;
|
||||
int32_t iMbXy = pCurLayer->iMbXyIndex;
|
||||
int32_t iNMbMode, i;
|
||||
int32_t i;
|
||||
uint32_t uiMbType = 0, uiCbp = 0, uiCbpL = 0, uiCbpC = 0;
|
||||
uint32_t uiCode;
|
||||
int32_t iCode;
|
||||
@@ -542,8 +542,6 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) {
|
||||
}
|
||||
}
|
||||
|
||||
iNMbMode = BASE_MB;
|
||||
|
||||
memset (pCurLayer->pScaledTCoeff[iMbXy], 0, 384 * sizeof (pCurLayer->pScaledTCoeff[iMbXy][0]));
|
||||
ST32 (&pCurLayer->pNzc[iMbXy][0], 0);
|
||||
ST32 (&pCurLayer->pNzc[iMbXy][4], 0);
|
||||
@@ -592,7 +590,7 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) {
|
||||
if (MB_TYPE_INTRA16x16 == pCurLayer->pMbType[iMbXy]) {
|
||||
//step1: Luma DC
|
||||
if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, 0, 16,
|
||||
g_kuiLumaDcZigzagScan, I16_LUMA_DC, pCurLayer->pScaledTCoeff[iMbXy], iNMbMode, pCurLayer->pLumaQp[iMbXy], pCtx)) {
|
||||
g_kuiLumaDcZigzagScan, I16_LUMA_DC, pCurLayer->pScaledTCoeff[iMbXy], pCurLayer->pLumaQp[iMbXy], pCtx)) {
|
||||
return -1;//abnormal
|
||||
}
|
||||
//step2: Luma AC
|
||||
@@ -600,7 +598,7 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) {
|
||||
for (i = 0; i < 16; i++) {
|
||||
if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, i,
|
||||
iScanIdxEnd - WELS_MAX (iScanIdxStart, 1) + 1, g_kuiZigzagScan + WELS_MAX (iScanIdxStart, 1),
|
||||
I16_LUMA_AC, pCurLayer->pScaledTCoeff[iMbXy] + (i << 4), iNMbMode, pCurLayer->pLumaQp[iMbXy], pCtx)) {
|
||||
I16_LUMA_AC, pCurLayer->pScaledTCoeff[iMbXy] + (i << 4), pCurLayer->pLumaQp[iMbXy], pCtx)) {
|
||||
return -1;//abnormal
|
||||
}
|
||||
}
|
||||
@@ -617,7 +615,7 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) {
|
||||
//Luma (DC and AC decoding together)
|
||||
if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, iIndex,
|
||||
iScanIdxEnd - iScanIdxStart + 1, g_kuiZigzagScan + iScanIdxStart,
|
||||
LUMA_DC_AC, pCurLayer->pScaledTCoeff[iMbXy] + (iIndex << 4), iNMbMode, pCurLayer->pLumaQp[iMbXy], pCtx)) {
|
||||
LUMA_DC_AC, pCurLayer->pScaledTCoeff[iMbXy] + (iIndex << 4), pCurLayer->pLumaQp[iMbXy], pCtx)) {
|
||||
return -1;//abnormal
|
||||
}
|
||||
iIndex++;
|
||||
@@ -639,7 +637,7 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) {
|
||||
for (i = 0; i < 2; i++) { //Cb Cr
|
||||
if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs,
|
||||
16 + (i << 2), 4, g_kuiChromaDcScan, CHROMA_DC, pCurLayer->pScaledTCoeff[iMbXy] + 256 + (i << 6),
|
||||
iNMbMode, pCurLayer->pChromaQp[iMbXy], pCtx)) {
|
||||
pCurLayer->pChromaQp[iMbXy], pCtx)) {
|
||||
return -1;//abnormal
|
||||
}
|
||||
}
|
||||
@@ -652,7 +650,7 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) {
|
||||
for (iId4x4 = 0; iId4x4 < 4; iId4x4++) {
|
||||
if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, iIndex,
|
||||
iScanIdxEnd - WELS_MAX (iScanIdxStart, 1) + 1, g_kuiZigzagScan + WELS_MAX (iScanIdxStart, 1),
|
||||
CHROMA_AC, pCurLayer->pScaledTCoeff[iMbXy] + (iIndex << 4), iNMbMode, pCurLayer->pChromaQp[iMbXy], pCtx)) {
|
||||
CHROMA_AC, pCurLayer->pScaledTCoeff[iMbXy] + (iIndex << 4), pCurLayer->pChromaQp[iMbXy], pCtx)) {
|
||||
return -1;//abnormal
|
||||
}
|
||||
iIndex++;
|
||||
@@ -712,7 +710,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) {
|
||||
int32_t iMbY = pCurLayer->iMbY;
|
||||
int32_t iMbXy = pCurLayer->iMbXyIndex;
|
||||
|
||||
int32_t iNMbMode, i;
|
||||
int32_t i;
|
||||
uint32_t uiMbType = 0, uiCbp = 0, uiCbpL = 0, uiCbpC = 0;
|
||||
uint32_t uiCode;
|
||||
int32_t iCode;
|
||||
@@ -740,7 +738,6 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) {
|
||||
}
|
||||
|
||||
if (pCurLayer->pResidualPredFlag[iMbXy] == 0) {
|
||||
iNMbMode = BASE_MB;
|
||||
pCurLayer->pInterPredictionDoneFlag[iMbXy] = 0;
|
||||
} else {
|
||||
WelsLog (pCtx, WELS_LOG_WARNING, "residual_pred_flag = 1 not supported.\n");
|
||||
@@ -817,7 +814,6 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) {
|
||||
if (pCtx->pParseIntra4x4ModeFunc (&sNeighAvail, pIntraPredMode, pBs, pCurLayer)) {
|
||||
return -1;
|
||||
}
|
||||
iNMbMode = BASE_MB;
|
||||
} else { //I_PCM exclude, we can ignore it
|
||||
pCurLayer->pMbType[iMbXy] = MB_TYPE_INTRA16x16;
|
||||
pCurLayer->pIntraPredMode[iMbXy][7] = (uiMbType - 1) & 3;
|
||||
@@ -828,7 +824,6 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) {
|
||||
if (pCtx->pParseIntra16x16ModeFunc (&sNeighAvail, pBs, pCurLayer)) {
|
||||
return -1;
|
||||
}
|
||||
iNMbMode = BASE_MB;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -851,22 +846,20 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) {
|
||||
uiCbpL = pCurLayer->pCbp[iMbXy] & 15;
|
||||
}
|
||||
|
||||
if (iNMbMode == BASE_MB) {
|
||||
pCtx->sBlockFunc.pWelsBlockZero16x16Func (pCurLayer->pScaledTCoeff[iMbXy], 16);
|
||||
pCtx->sBlockFunc.pWelsBlockZero8x8Func (pCurLayer->pScaledTCoeff[iMbXy] + 256, 8);
|
||||
pCtx->sBlockFunc.pWelsBlockZero8x8Func (pCurLayer->pScaledTCoeff[iMbXy] + 256 + 64, 8);
|
||||
pCtx->sBlockFunc.pWelsBlockZero16x16Func (pCurLayer->pScaledTCoeff[iMbXy], 16);
|
||||
pCtx->sBlockFunc.pWelsBlockZero8x8Func (pCurLayer->pScaledTCoeff[iMbXy] + 256, 8);
|
||||
pCtx->sBlockFunc.pWelsBlockZero8x8Func (pCurLayer->pScaledTCoeff[iMbXy] + 256 + 64, 8);
|
||||
|
||||
ST32 (&pCurLayer->pNzc[iMbXy][0], 0);
|
||||
ST32 (&pCurLayer->pNzc[iMbXy][4], 0);
|
||||
ST32 (&pCurLayer->pNzc[iMbXy][8], 0);
|
||||
ST32 (&pCurLayer->pNzc[iMbXy][12], 0);
|
||||
ST32 (&pCurLayer->pNzc[iMbXy][16], 0);
|
||||
ST32 (&pCurLayer->pNzc[iMbXy][20], 0);
|
||||
if (pCurLayer->pCbp[iMbXy] == 0 && !IS_INTRA16x16 (pCurLayer->pMbType[iMbXy]) && !IS_I_BL (pCurLayer->pMbType[iMbXy])) {
|
||||
pCurLayer->pLumaQp[iMbXy] = pSlice->iLastMbQp;
|
||||
pCurLayer->pChromaQp[iMbXy] = g_kuiChromaQp[WELS_CLIP3 (pCurLayer->pLumaQp[iMbXy] +
|
||||
pSliceHeader->pPps->iChromaQpIndexOffset, 0, 51)];
|
||||
}
|
||||
ST32 (&pCurLayer->pNzc[iMbXy][0], 0);
|
||||
ST32 (&pCurLayer->pNzc[iMbXy][4], 0);
|
||||
ST32 (&pCurLayer->pNzc[iMbXy][8], 0);
|
||||
ST32 (&pCurLayer->pNzc[iMbXy][12], 0);
|
||||
ST32 (&pCurLayer->pNzc[iMbXy][16], 0);
|
||||
ST32 (&pCurLayer->pNzc[iMbXy][20], 0);
|
||||
if (pCurLayer->pCbp[iMbXy] == 0 && !IS_INTRA16x16 (pCurLayer->pMbType[iMbXy]) && !IS_I_BL (pCurLayer->pMbType[iMbXy])) {
|
||||
pCurLayer->pLumaQp[iMbXy] = pSlice->iLastMbQp;
|
||||
pCurLayer->pChromaQp[iMbXy] = g_kuiChromaQp[WELS_CLIP3 (pCurLayer->pLumaQp[iMbXy] +
|
||||
pSliceHeader->pPps->iChromaQpIndexOffset, 0, 51)];
|
||||
}
|
||||
|
||||
if (pCurLayer->pCbp[iMbXy] || MB_TYPE_INTRA16x16 == pCurLayer->pMbType[iMbXy]) {
|
||||
@@ -901,7 +894,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) {
|
||||
if (MB_TYPE_INTRA16x16 == pCurLayer->pMbType[iMbXy]) {
|
||||
//step1: Luma DC
|
||||
if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, 0, 16, g_kuiLumaDcZigzagScan,
|
||||
I16_LUMA_DC, pCurLayer->pScaledTCoeff[iMbXy], iNMbMode, pCurLayer->pLumaQp[iMbXy], pCtx)) {
|
||||
I16_LUMA_DC, pCurLayer->pScaledTCoeff[iMbXy], pCurLayer->pLumaQp[iMbXy], pCtx)) {
|
||||
return -1;//abnormal
|
||||
}
|
||||
//step2: Luma AC
|
||||
@@ -909,7 +902,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) {
|
||||
for (i = 0; i < 16; i++) {
|
||||
if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, i,
|
||||
iScanIdxEnd - WELS_MAX (iScanIdxStart, 1) + 1, g_kuiZigzagScan + WELS_MAX (iScanIdxStart, 1),
|
||||
I16_LUMA_AC, pCurLayer->pScaledTCoeff[iMbXy] + (i << 4), iNMbMode, pCurLayer->pLumaQp[iMbXy], pCtx)) {
|
||||
I16_LUMA_AC, pCurLayer->pScaledTCoeff[iMbXy] + (i << 4), pCurLayer->pLumaQp[iMbXy], pCtx)) {
|
||||
return -1;//abnormal
|
||||
}
|
||||
}
|
||||
@@ -926,7 +919,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) {
|
||||
//Luma (DC and AC decoding together)
|
||||
if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, iIndex,
|
||||
iScanIdxEnd - iScanIdxStart + 1, g_kuiZigzagScan + iScanIdxStart, LUMA_DC_AC,
|
||||
pCurLayer->pScaledTCoeff[iMbXy] + (iIndex << 4), iNMbMode, pCurLayer->pLumaQp[iMbXy], pCtx)) {
|
||||
pCurLayer->pScaledTCoeff[iMbXy] + (iIndex << 4), pCurLayer->pLumaQp[iMbXy], pCtx)) {
|
||||
return -1;//abnormal
|
||||
}
|
||||
iIndex++;
|
||||
@@ -949,7 +942,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) {
|
||||
for (i = 0; i < 2; i++) { //Cb Cr
|
||||
if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs,
|
||||
16 + (i << 2), 4, g_kuiChromaDcScan, CHROMA_DC, pCurLayer->pScaledTCoeff[iMbXy] + 256 + (i << 6),
|
||||
iNMbMode, pCurLayer->pChromaQp[iMbXy], pCtx)) {
|
||||
pCurLayer->pChromaQp[iMbXy], pCtx)) {
|
||||
return -1;//abnormal
|
||||
}
|
||||
}
|
||||
@@ -962,7 +955,7 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) {
|
||||
for (iId4x4 = 0; iId4x4 < 4; iId4x4++) {
|
||||
if (WelsResidualBlockCavlc (pVlcTable, pNonZeroCount, pBs, iIndex,
|
||||
iScanIdxEnd - WELS_MAX (iScanIdxStart, 1) + 1, g_kuiZigzagScan + WELS_MAX (iScanIdxStart, 1),
|
||||
CHROMA_AC, pCurLayer->pScaledTCoeff[iMbXy] + (iIndex << 4), iNMbMode, pCurLayer->pChromaQp[iMbXy], pCtx)) {
|
||||
CHROMA_AC, pCurLayer->pScaledTCoeff[iMbXy] + (iIndex << 4), pCurLayer->pChromaQp[iMbXy], pCtx)) {
|
||||
return -1;//abnormal
|
||||
}
|
||||
iIndex++;
|
||||
|
||||
Reference in New Issue
Block a user