History

refine pNzc set access

Licai Guo committed 12 years ago

Commit 669d7041 parent c5f04cf1 file · +55 −53Browse files

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

Unified · Split

codec/decoder/core/src/decode_slice.cpp+55−53
@@ -440,7 +440,8 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 439 unmodified lines
440440
441441 int32_t iMbX = pCurLayer->iMbX;
442442 int32_t iMbY = pCurLayer->iMbY;
443− int32_t iMbXy = pCurLayer->iMbXyIndex;
443+ const int32_t iMbXy = pCurLayer->iMbXyIndex;
444+ int8_t *pNzc = pCurLayer->pNzc[iMbXy];
444445 int32_t i;
445446 uint32_t uiMbType = 0, uiCbp = 0, uiCbpL = 0, uiCbpC = 0;
446447 uint32_t uiCode;
@@ -505,7 +506,7 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 58 unmodified lines
505506 //step 3: update QP and pNonZeroCount
506507 pCurLayer->pLumaQp[iMbXy] = 0;
507508 pCurLayer->pChromaQp[iMbXy] = 0;
508− memset (pCurLayer->pNzc[iMbXy], 16, sizeof (pCurLayer->pNzc[iMbXy])); //Rec. 9.2.1 for PCM, nzc=16
509+ memset (pNzc, 16, sizeof (pCurLayer->pNzc[iMbXy])); //Rec. 9.2.1 for PCM, nzc=16
509510 return 0;
510511 } else if (0 == uiMbType) { //reference to JM
511512 ENFORCE_STACK_ALIGN_1D (int8_t, pIntraPredMode, 48, 16);
@@ -540,12 +541,12 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 28 unmodified lines
540541 }
541542
542543 memset (pCurLayer->pScaledTCoeff[iMbXy], 0, 384 * sizeof (pCurLayer->pScaledTCoeff[iMbXy][0]));
543− ST32A4 (&pCurLayer->pNzc[iMbXy][0], 0);
544− ST32A4 (&pCurLayer->pNzc[iMbXy][4], 0);
545− ST32A4 (&pCurLayer->pNzc[iMbXy][8], 0);
546− ST32A4 (&pCurLayer->pNzc[iMbXy][12], 0);
547− ST32A4 (&pCurLayer->pNzc[iMbXy][16], 0);
548− ST32A4 (&pCurLayer->pNzc[iMbXy][20], 0);
544+ ST32A4 (&pNzc[0], 0);
545+ ST32A4 (&pNzc[4], 0);
546+ ST32A4 (&pNzc[8], 0);
547+ ST32A4 (&pNzc[12], 0);
548+ ST32A4 (&pNzc[16], 0);
549+ ST32A4 (&pNzc[20], 0);
549550
550551 if (pCurLayer->pCbp[iMbXy] == 0 && IS_INTRA4x4 (pCurLayer->pMbType[iMbXy])) {
551552 pCurLayer->pLumaQp[iMbXy] = pSlice->iLastMbQp;
@@ -599,10 +600,10 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 47 unmodified lines
599600 return -1;//abnormal
600601 }
601602 }
602− ST32A4 (&pCurLayer->pNzc[iMbXy][0], LD32 (&pNonZeroCount[1 + 8 * 1]));
603− ST32A4 (&pCurLayer->pNzc[iMbXy][4], LD32 (&pNonZeroCount[1 + 8 * 2]));
604− ST32A4 (&pCurLayer->pNzc[iMbXy][8], LD32 (&pNonZeroCount[1 + 8 * 3]));
605− ST32A4 (&pCurLayer->pNzc[iMbXy][12], LD32 (&pNonZeroCount[1 + 8 * 4]));
603+ ST32A4 (&pNzc[0], LD32 (&pNonZeroCount[1 + 8 * 1]));
604+ ST32A4 (&pNzc[4], LD32 (&pNonZeroCount[1 + 8 * 2]));
605+ ST32A4 (&pNzc[8], LD32 (&pNonZeroCount[1 + 8 * 3]));
606+ ST32A4 (&pNzc[12], LD32 (&pNonZeroCount[1 + 8 * 4]));
606607 }
607608 } else { //non-MB_TYPE_INTRA16x16
608609 for (iId8x8 = 0; iId8x8 < 4; iId8x8++) {
@@ -622,10 +623,10 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 13 unmodified lines
622623 ST16 (&pNonZeroCount[g_kuiCacheNzcScanIdx[ (iId8x8 << 2) + 2]], 0);
623624 }
624625 }
625− ST32A4 (&pCurLayer->pNzc[iMbXy][0], LD32 (&pNonZeroCount[1 + 8 * 1]));
626− ST32A4 (&pCurLayer->pNzc[iMbXy][4], LD32 (&pNonZeroCount[1 + 8 * 2]));
627− ST32A4 (&pCurLayer->pNzc[iMbXy][8], LD32 (&pNonZeroCount[1 + 8 * 3]));
628− ST32A4 (&pCurLayer->pNzc[iMbXy][12], LD32 (&pNonZeroCount[1 + 8 * 4]));
626+ ST32A4 (&pNzc[0], LD32 (&pNonZeroCount[1 + 8 * 1]));
627+ ST32A4 (&pNzc[4], LD32 (&pNonZeroCount[1 + 8 * 2]));
628+ ST32A4 (&pNzc[8], LD32 (&pNonZeroCount[1 + 8 * 3]));
629+ ST32A4 (&pNzc[12], LD32 (&pNonZeroCount[1 + 8 * 4]));
629630 }
630631
631632 //chroma
@@ -653,10 +654,10 @@ int32_t WelsActualDecodeMbCavlcISlice (PWelsDecoderContext pCtx) { · 21 unmodified lines
653654 iIndex++;
654655 }
655656 }
656− ST16 (&pCurLayer->pNzc[iMbXy][16], LD16 (&pNonZeroCount[6 + 8 * 1]));
657− ST16 (&pCurLayer->pNzc[iMbXy][20], LD16 (&pNonZeroCount[6 + 8 * 2]));
658− ST16 (&pCurLayer->pNzc[iMbXy][18], LD16 (&pNonZeroCount[6 + 8 * 4]));
659− ST16 (&pCurLayer->pNzc[iMbXy][22], LD16 (&pNonZeroCount[6 + 8 * 5]));
657+ ST16A2 (&pNzc[16], LD16A2 (&pNonZeroCount[6 + 8 * 1]));
658+ ST16A2 (&pNzc[20], LD16A2 (&pNonZeroCount[6 + 8 * 2]));
659+ ST16A2 (&pNzc[18], LD16A2 (&pNonZeroCount[6 + 8 * 4]));
660+ ST16A2 (&pNzc[22], LD16A2 (&pNonZeroCount[6 + 8 * 5]));
660661 }
661662 BsEndCavlc (pBs);
662663 }
@@ -705,8 +706,8 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 42 unmodified lines
705706
706707 int32_t iMbX = pCurLayer->iMbX;
707708 int32_t iMbY = pCurLayer->iMbY;
708− int32_t iMbXy = pCurLayer->iMbXyIndex;
709−
709+ const int32_t iMbXy = pCurLayer->iMbXyIndex;
710+ int8_t* pNzc = pCurLayer->pNzc[iMbXy];
710711 int32_t i;
711712 uint32_t uiMbType = 0, uiCbp = 0, uiCbpL = 0, uiCbpC = 0;
712713 uint32_t uiCode;
@@ -796,12 +797,12 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 83 unmodified lines
796797 pCurLayer->pLumaQp[iMbXy] = 0;
797798 pCurLayer->pChromaQp[iMbXy] = 0;
798799 //Rec. 9.2.1 for PCM, nzc=16
799− ST32A4 (&pCurLayer->pNzc[iMbXy][0], 0x10101010);
800− ST32A4 (&pCurLayer->pNzc[iMbXy][4], 0x10101010);
801− ST32A4 (&pCurLayer->pNzc[iMbXy][8], 0x10101010);
802− ST32A4 (&pCurLayer->pNzc[iMbXy][12], 0x10101010);
803− ST32A4 (&pCurLayer->pNzc[iMbXy][16], 0x10101010);
804− ST32A4 (&pCurLayer->pNzc[iMbXy][20], 0x10101010);
800+ ST32A4 (&pNzc[0], 0x10101010);
801+ ST32A4 (&pNzc[4], 0x10101010);
802+ ST32A4 (&pNzc[8], 0x10101010);
803+ ST32A4 (&pNzc[12], 0x10101010);
804+ ST32A4 (&pNzc[16], 0x10101010);
805+ ST32A4 (&pNzc[20], 0x10101010);
805806 return 0;
806807 } else {
807808 if (0 == uiMbType) {
@@ -845,12 +846,12 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 37 unmodified lines
845846
846847 memset(pCurLayer->pScaledTCoeff[iMbXy], 0, MB_COEFF_LIST_SIZE * sizeof(int16_t));
847848
848− ST32A4 (&pCurLayer->pNzc[iMbXy][0], 0);
849− ST32A4 (&pCurLayer->pNzc[iMbXy][4], 0);
850− ST32A4 (&pCurLayer->pNzc[iMbXy][8], 0);
851− ST32A4 (&pCurLayer->pNzc[iMbXy][12], 0);
852− ST32A4 (&pCurLayer->pNzc[iMbXy][16], 0);
853− ST32A4 (&pCurLayer->pNzc[iMbXy][20], 0);
849+ ST32A4 (&pNzc[0], 0);
850+ ST32A4 (&pNzc[4], 0);
851+ ST32A4 (&pNzc[8], 0);
852+ ST32A4 (&pNzc[12], 0);
853+ ST32A4 (&pNzc[16], 0);
854+ ST32A4 (&pNzc[20], 0);
854855 if (pCurLayer->pCbp[iMbXy] == 0 && !IS_INTRA16x16 (pCurLayer->pMbType[iMbXy]) && !IS_I_BL (pCurLayer->pMbType[iMbXy])) {
855856 pCurLayer->pLumaQp[iMbXy] = pSlice->iLastMbQp;
856857 pCurLayer->pChromaQp[iMbXy] = g_kuiChromaQp[WELS_CLIP3 (pCurLayer->pLumaQp[iMbXy] +
@@ -901,10 +902,10 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 44 unmodified lines
901902 return -1;//abnormal
902903 }
903904 }
904− ST32A4 (&pCurLayer->pNzc[iMbXy][0], LD32 (&pNonZeroCount[1 + 8 * 1]));
905− ST32A4 (&pCurLayer->pNzc[iMbXy][4], LD32 (&pNonZeroCount[1 + 8 * 2]));
906− ST32A4 (&pCurLayer->pNzc[iMbXy][8], LD32 (&pNonZeroCount[1 + 8 * 3]));
907− ST32A4 (&pCurLayer->pNzc[iMbXy][12], LD32 (&pNonZeroCount[1 + 8 * 4]));
905+ ST32A4 (&pNzc[0], LD32 (&pNonZeroCount[1 + 8 * 1]));
906+ ST32A4 (&pNzc[4], LD32 (&pNonZeroCount[1 + 8 * 2]));
907+ ST32A4 (&pNzc[8], LD32 (&pNonZeroCount[1 + 8 * 3]));
908+ ST32A4 (&pNzc[12], LD32 (&pNonZeroCount[1 + 8 * 4]));
908909 }
909910 } else { //non-MB_TYPE_INTRA16x16
910911 for (iId8x8 = 0; iId8x8 < 4; iId8x8++) {
@@ -924,10 +925,10 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 13 unmodified lines
924925 ST16 (&pNonZeroCount[g_kuiCacheNzcScanIdx[ (iId8x8 << 2) + 2]], 0);
925926 }
926927 }
927− ST32A4 (&pCurLayer->pNzc[iMbXy][0], LD32 (&pNonZeroCount[1 + 8 * 1]));
928− ST32A4 (&pCurLayer->pNzc[iMbXy][4], LD32 (&pNonZeroCount[1 + 8 * 2]));
929− ST32A4 (&pCurLayer->pNzc[iMbXy][8], LD32 (&pNonZeroCount[1 + 8 * 3]));
930− ST32A4 (&pCurLayer->pNzc[iMbXy][12], LD32 (&pNonZeroCount[1 + 8 * 4]));
928+ ST32A4 (&pNzc[0], LD32 (&pNonZeroCount[1 + 8 * 1]));
929+ ST32A4 (&pNzc[4], LD32 (&pNonZeroCount[1 + 8 * 2]));
930+ ST32A4 (&pNzc[8], LD32 (&pNonZeroCount[1 + 8 * 3]));
931+ ST32A4 (&pNzc[12], LD32 (&pNonZeroCount[1 + 8 * 4]));
931932 }
932933
933934
@@ -956,10 +957,10 @@ int32_t WelsActualDecodeMbCavlcPSlice (PWelsDecoderContext pCtx) { · 22 unmodified lines
956957 iIndex++;
957958 }
958959 }
959− ST16 (&pCurLayer->pNzc[iMbXy][16], LD16 (&pNonZeroCount[6 + 8 * 1]));
960− ST16 (&pCurLayer->pNzc[iMbXy][20], LD16 (&pNonZeroCount[6 + 8 * 2]));
961− ST16 (&pCurLayer->pNzc[iMbXy][18], LD16 (&pNonZeroCount[6 + 8 * 4]));
962− ST16 (&pCurLayer->pNzc[iMbXy][22], LD16 (&pNonZeroCount[6 + 8 * 5]));
960+ ST16A2 (&pNzc[16], LD16A2 (&pNonZeroCount[6 + 8 * 1]));
961+ ST16A2 (&pNzc[20], LD16A2 (&pNonZeroCount[6 + 8 * 2]));
962+ ST16A2 (&pNzc[18], LD16A2 (&pNonZeroCount[6 + 8 * 4]));
963+ ST16A2 (&pNzc[22], LD16A2 (&pNonZeroCount[6 + 8 * 5]));
963964 }
964965 BsEndCavlc (pBs);
965966 }
@@ -973,7 +974,8 @@ int32_t WelsDecodeMbCavlcPSlice (PWelsDecoderContext pCtx, PNalUnit pNalCur) { · 7 unmodified lines
973974 PSlice pSlice = &pCurLayer->sLayerInfo.sSliceInLayer;
974975 PSliceHeader pSliceHeader = &pSlice->sSliceHeaderExt.sSliceHeader;
975976
976− int32_t iMbXy = pCurLayer->iMbXyIndex;
977+ const int32_t iMbXy = pCurLayer->iMbXyIndex;
978+ int8_t *pNzc = pCurLayer->pNzc[iMbXy];
977979 int32_t iBaseModeFlag, i;
978980 int32_t iRet = 0; //should have the return value to indicate decoding error or not, It's NECESSARY--2010.4.15
979981 uint32_t uiCode;
@@ -990,12 +992,12 @@ int32_t WelsDecodeMbCavlcPSlice (PWelsDecoderContext pCtx, PNalUnit pNalCur) { · 10 unmodified lines
990992 int16_t iMv[2];
991993
992994 pCurLayer->pMbType[iMbXy] = MB_TYPE_SKIP;
993− ST32A4 (&pCurLayer->pNzc[iMbXy][0], 0);
994− ST32A4 (&pCurLayer->pNzc[iMbXy][4], 0);
995− ST32A4 (&pCurLayer->pNzc[iMbXy][8], 0);
996− ST32A4 (&pCurLayer->pNzc[iMbXy][12], 0);
997− ST32A4 (&pCurLayer->pNzc[iMbXy][16], 0);
998− ST32A4 (&pCurLayer->pNzc[iMbXy][20], 0);
995+ ST32A4 (&pNzc[0], 0);
996+ ST32A4 (&pNzc[4], 0);
997+ ST32A4 (&pNzc[8], 0);
998+ ST32A4 (&pNzc[12], 0);
999+ ST32A4 (&pNzc[16], 0);
1000+ ST32A4 (&pNzc[20], 0);
9991001
10001002 pCurLayer->pInterPredictionDoneFlag[iMbXy] = 0;
10011003 memset (pCurLayer->pRefIndex[0][iMbXy], 0, sizeof (int8_t) * 16);

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