History

change input parameters for UpdateMbNeighbourInfoForNextSlice etc.

huade committed 10 years ago

Commit b77b68f1 parent 54a194c6 files · +59 −56Browse files

Showing the changes to codec/encoder/core/src/encoder_ext.cpp (1 of 6 files). Show all

Unified · Split

codec/encoder/core/src/encoder_ext.cpp+13−15
@@ -764,7 +764,6 @@ static void InitMbInfo (sWelsEncCtx* pEnc, SMB* pList, SDqLayer* pLayer, con · 763 unmodified lines
764 int32_t iMbHeight = pLayer->iMbHeight;764 int32_t iMbHeight = pLayer->iMbHeight;
765 int32_t iIdx;765 int32_t iIdx;
766 int32_t iMbNum = iMbWidth * iMbHeight;766 int32_t iMbNum = iMbWidth * iMbHeight;
767 SSliceCtx* pSliceCtx = &pLayer->sSliceEncCtx;
768 uint32_t uiNeighborAvail;767 uint32_t uiNeighborAvail;
769 const int32_t kiOffset = (kiDlayerId & 0x01) * kiMaxMbNum;768 const int32_t kiOffset = (kiDlayerId & 0x01) * kiMaxMbNum;
770 SMVUnitXY (*pLayerMvUnitBlock4x4)[MB_BLOCK4x4_NUM] = (SMVUnitXY (*)[MB_BLOCK4x4_NUM]) (769 SMVUnitXY (*pLayerMvUnitBlock4x4)[MB_BLOCK4x4_NUM] = (SMVUnitXY (*)[MB_BLOCK4x4_NUM]) (
@@ -784,18 +783,18 @@ static void InitMbInfo (sWelsEncCtx* pEnc, SMB* pList, SDqLayer* pLayer, con · 13 unmodified lines
784 pList[iIdx].iMbY = pEnc->pStrideTab->pMbIndexY[kiDlayerId][iIdx];783 pList[iIdx].iMbY = pEnc->pStrideTab->pMbIndexY[kiDlayerId][iIdx];
785 pList[iIdx].iMbXY = iIdx;784 pList[iIdx].iMbXY = iIdx;
786 785
787 uiSliceIdc = WelsMbToSliceIdc (pSliceCtx, iIdx);786 uiSliceIdc = WelsMbToSliceIdc (pLayer, iIdx);
788 iLeftXY = iIdx - 1;787 iLeftXY = iIdx - 1;
789 iTopXY = iIdx - iMbWidth;788 iTopXY = iIdx - iMbWidth;
790 iLeftTopXY = iTopXY - 1;789 iLeftTopXY = iTopXY - 1;
791 iRightTopXY = iTopXY + 1;790 iRightTopXY = iTopXY + 1;
792 791
793 bLeft = (pList[iIdx].iMbX > 0) && (uiSliceIdc == WelsMbToSliceIdc (pSliceCtx, iLeftXY));792 bLeft = (pList[iIdx].iMbX > 0) && (uiSliceIdc == WelsMbToSliceIdc (pLayer, iLeftXY));
794 bTop = (pList[iIdx].iMbY > 0) && (uiSliceIdc == WelsMbToSliceIdc (pSliceCtx, iTopXY));793 bTop = (pList[iIdx].iMbY > 0) && (uiSliceIdc == WelsMbToSliceIdc (pLayer, iTopXY));
795 bLeftTop = (pList[iIdx].iMbX > 0) && (pList[iIdx].iMbY > 0) && (uiSliceIdc ==794 bLeftTop = (pList[iIdx].iMbX > 0) && (pList[iIdx].iMbY > 0) && (uiSliceIdc ==
796 WelsMbToSliceIdc (pSliceCtx, iLeftTopXY));795 WelsMbToSliceIdc (pLayer, iLeftTopXY));
797 bRightTop = (pList[iIdx].iMbX < (iMbWidth - 1)) && (pList[iIdx].iMbY > 0) && (uiSliceIdc ==796 bRightTop = (pList[iIdx].iMbX < (iMbWidth - 1)) && (pList[iIdx].iMbY > 0) && (uiSliceIdc ==
798 WelsMbToSliceIdc (pSliceCtx, iRightTopXY));797 WelsMbToSliceIdc (pLayer, iRightTopXY));
799 798
800 uiNeighborAvail = 0;799 uiNeighborAvail = 0;
801 if (bLeft) {800 if (bLeft) {
@@ -2682,7 +2681,8 @@ int32_t GetTemporalLevel (SSpatialLayerInternal* fDlp, const int32_t kiFrameNum, · 1880 unmodified lines
2682 return fDlp->uiCodingIdx2TemporalId[kiCodingIdx];2681 return fDlp->uiCodingIdx2TemporalId[kiCodingIdx];
2683}2682}
2684 2683
2685void DynslcUpdateMbNeighbourInfoListForAllSlices (SSliceCtx* pSliceCtx, SMB* pMbList) {2684void DynslcUpdateMbNeighbourInfoListForAllSlices (SDqLayer* pCurDq, SMB* pMbList) {
2685 SSliceCtx* pSliceCtx = &pCurDq->sSliceEncCtx;
2686 const int32_t kiMbWidth = pSliceCtx->iMbWidth;2686 const int32_t kiMbWidth = pSliceCtx->iMbWidth;
2687 const int32_t kiEndMbInSlice = pSliceCtx->iMbNumInFrame - 1;2687 const int32_t kiEndMbInSlice = pSliceCtx->iMbNumInFrame - 1;
2688 int32_t iIdx = 0;2688 int32_t iIdx = 0;
@@ -2700,17 +2700,17 @@ void DynslcUpdateMbNeighbourInfoListForAllSlices (SSliceCtx* pSliceCtx, SMB* pMb · 11 unmodified lines
2700 uint16_t uiSliceIdc;2700 uint16_t uiSliceIdc;
2701 int32_t iLeftXY, iTopXY, iLeftTopXY, iRightTopXY;2701 int32_t iLeftXY, iTopXY, iLeftTopXY, iRightTopXY;
2702 2702
2703 uiSliceIdc = WelsMbToSliceIdc (pSliceCtx, kiMbXY);2703 uiSliceIdc = WelsMbToSliceIdc (pCurDq, kiMbXY);
2704 pMb->uiSliceIdc = uiSliceIdc;2704 pMb->uiSliceIdc = uiSliceIdc;
2705 iLeftXY = kiMbXY - 1;2705 iLeftXY = kiMbXY - 1;
2706 iTopXY = kiMbXY - kiMbWidth;2706 iTopXY = kiMbXY - kiMbWidth;
2707 iLeftTopXY = iTopXY - 1;2707 iLeftTopXY = iTopXY - 1;
2708 iRightTopXY = iTopXY + 1;2708 iRightTopXY = iTopXY + 1;
2709 2709
2710 bLeft = (kiMbX > 0) && (uiSliceIdc == WelsMbToSliceIdc (pSliceCtx, iLeftXY));2710 bLeft = (kiMbX > 0) && (uiSliceIdc == WelsMbToSliceIdc (pCurDq, iLeftXY));
2711 bTop = (kiMbY > 0) && (uiSliceIdc == WelsMbToSliceIdc (pSliceCtx, iTopXY));2711 bTop = (kiMbY > 0) && (uiSliceIdc == WelsMbToSliceIdc (pCurDq, iTopXY));
2712 bLeftTop = (kiMbX > 0) && (kiMbY > 0) && (uiSliceIdc == WelsMbToSliceIdc (pSliceCtx, iLeftTopXY));2712 bLeftTop = (kiMbX > 0) && (kiMbY > 0) && (uiSliceIdc == WelsMbToSliceIdc (pCurDq, iLeftTopXY));
2713 bRightTop = (kiMbX < (kiMbWidth - 1)) && (kiMbY > 0) && (uiSliceIdc == WelsMbToSliceIdc (pSliceCtx, iRightTopXY));2713 bRightTop = (kiMbX < (kiMbWidth - 1)) && (kiMbY > 0) && (uiSliceIdc == WelsMbToSliceIdc (pCurDq, iRightTopXY));
2714 2714
2715 if (bLeft) {2715 if (bLeft) {
2716 uiNeighborAvailFlag |= LEFT_MB_POS;2716 uiNeighborAvailFlag |= LEFT_MB_POS;
@@ -2744,10 +2744,8 @@ int32_t PicPartitionNumDecision (sWelsEncCtx* pCtx) { · 27 unmodified lines
2744void WelsInitCurrentQBLayerMltslc (sWelsEncCtx* pCtx) {2744void WelsInitCurrentQBLayerMltslc (sWelsEncCtx* pCtx) {
2745 //pData init2745 //pData init
2746 SDqLayer* pCurDq = pCtx->pCurDqLayer;2746 SDqLayer* pCurDq = pCtx->pCurDqLayer;
2747 SSliceCtx* pSliceCtx = &(pCurDq->sSliceEncCtx);
2748
2749 //mb_neighbor2747 //mb_neighbor
2750 DynslcUpdateMbNeighbourInfoListForAllSlices (pSliceCtx, pCurDq->sMbDataP);2748 DynslcUpdateMbNeighbourInfoListForAllSlices (pCurDq, pCurDq->sMbDataP);
2751}2749}
2752 2750
2753void UpdateSlicepEncCtxWithPartition (SDqLayer* pCurDq, int32_t iPartitionNum) {2751void UpdateSlicepEncCtxWithPartition (SDqLayer* pCurDq, int32_t iPartitionNum) {

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