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/svc_encode_slice.cpp (1 of 6 files). Show all

Unified · Split

codec/encoder/core/src/svc_encode_slice.cpp+13−14
@@ -483,8 +483,7 @@ void UpdateQpForOverflow (SMB* pCurMb, uint8_t kuiChromaQpIndexOffset) { · 482 unmodified lines
483//second. lower than highest Dependency Layer, and for every Dependency Layer with one quality layer(single layer)483//second. lower than highest Dependency Layer, and for every Dependency Layer with one quality layer(single layer)
484int32_t WelsISliceMdEnc (sWelsEncCtx* pEncCtx, SSlice* pSlice) { //pMd + encoding484int32_t WelsISliceMdEnc (sWelsEncCtx* pEncCtx, SSlice* pSlice) { //pMd + encoding
485 SDqLayer* pCurLayer = pEncCtx->pCurDqLayer;485 SDqLayer* pCurLayer = pEncCtx->pCurDqLayer;
486 SSliceCtx* pSliceCtx = &pCurLayer->sSliceEncCtx;486 SMbCache* pMbCache = &pSlice->sMbCacheInfo;
487 SMbCache* pMbCache = &pSlice->sMbCacheInfo;
488 SSliceHeaderExt* pSliceHdExt = &pSlice->sSliceHeaderExt;487 SSliceHeaderExt* pSliceHdExt = &pSlice->sSliceHeaderExt;
489 SMB* pMbList = pCurLayer->sMbDataP;488 SMB* pMbList = pCurLayer->sMbDataP;
490 SMB* pCurMb = NULL;489 SMB* pCurMb = NULL;
@@ -533,7 +532,7 @@ TRY_REENCODING: · 42 unmodified lines
533 pEncCtx->pFuncList->pfRc.pfWelsRcMbInfoUpdate (pEncCtx, pCurMb, sMd.iCostLuma, pSlice);532 pEncCtx->pFuncList->pfRc.pfWelsRcMbInfoUpdate (pEncCtx, pCurMb, sMd.iCostLuma, pSlice);
534 533
535 ++iNumMbCoded;534 ++iNumMbCoded;
536 iNextMbIdx = WelsGetNextMbOfSlice (pSliceCtx, iCurMbIdx);535 iNextMbIdx = WelsGetNextMbOfSlice (pCurLayer, iCurMbIdx);
537 if (iNextMbIdx == -1 || iNextMbIdx >= kiTotalNumMb || iNumMbCoded >= kiTotalNumMb) {536 if (iNextMbIdx == -1 || iNextMbIdx >= kiTotalNumMb || iNumMbCoded >= kiTotalNumMb) {
538 break;537 break;
539 }538 }
@@ -615,7 +614,7 @@ TRY_REENCODING: · 75 unmodified lines
615 614
616 ++iNumMbCoded;615 ++iNumMbCoded;
617 616
618 iNextMbIdx = WelsGetNextMbOfSlice (pSliceCtx, iCurMbIdx);617 iNextMbIdx = WelsGetNextMbOfSlice (pCurLayer, iCurMbIdx);
619 //whether all of MB in current pSlice encoded or not618 //whether all of MB in current pSlice encoded or not
620 if (iNextMbIdx == -1 || iNextMbIdx >= kiTotalNumMb || iNumMbCoded >= kiTotalNumMb) {619 if (iNextMbIdx == -1 || iNextMbIdx >= kiTotalNumMb || iNumMbCoded >= kiTotalNumMb) {
621 pSliceCtx->pCountMbNumInSlice[kiSliceIdx] = iCurMbIdx - pCurLayer->pLastCodedMbIdxOfPartition[kiPartitionId];620 pSliceCtx->pCountMbNumInSlice[kiSliceIdx] = iCurMbIdx - pCurLayer->pLastCodedMbIdxOfPartition[kiPartitionId];
@@ -759,10 +758,11 @@ int32_t WelsCodeOneSlice (sWelsEncCtx* pEncCtx, const int32_t kiSliceIdx, const · 137 unmodified lines
759}758}
760 759
761//pFunc: UpdateMbNeighbourInfoForNextSlice()760//pFunc: UpdateMbNeighbourInfoForNextSlice()
762void UpdateMbNeighbourInfoForNextSlice (SSliceCtx* pSliceCtx,761void UpdateMbNeighbourInfoForNextSlice (SDqLayer* pCurDq,
763 SMB* pMbList,762 SMB* pMbList,
764 const int32_t kiFirstMbIdxOfNextSlice,763 const int32_t kiFirstMbIdxOfNextSlice,
765 const int32_t kiLastMbIdxInPartition) {764 const int32_t kiLastMbIdxInPartition) {
765 SSliceCtx* pSliceCtx = &pCurDq->sSliceEncCtx;
766 const int32_t kiMbWidth = pSliceCtx->iMbWidth;766 const int32_t kiMbWidth = pSliceCtx->iMbWidth;
767 int32_t iIdx = kiFirstMbIdxOfNextSlice;767 int32_t iIdx = kiFirstMbIdxOfNextSlice;
768 int32_t iNextSliceFirstMbIdxRowStart = ((kiFirstMbIdxOfNextSlice % kiMbWidth) ? 1 : 0);768 int32_t iNextSliceFirstMbIdxRowStart = ((kiFirstMbIdxOfNextSlice % kiMbWidth) ? 1 : 0);
@@ -781,7 +781,7 @@ void UpdateMbNeighbourInfoForNextSlice (SSliceCtx* pSliceCtx, · 12 unmodified lines
781 bool bLeftTop;781 bool bLeftTop;
782 bool bRightTop;782 bool bRightTop;
783 int32_t iLeftXY, iTopXY, iLeftTopXY, iRightTopXY;783 int32_t iLeftXY, iTopXY, iLeftTopXY, iRightTopXY;
784 const uint16_t kuiSliceIdc = WelsMbToSliceIdc (pSliceCtx, kiMbXY);784 const uint16_t kuiSliceIdc = WelsMbToSliceIdc (pCurDq, kiMbXY);
785 785
786 pMb->uiSliceIdc = kuiSliceIdc;786 pMb->uiSliceIdc = kuiSliceIdc;
787 iLeftXY = kiMbXY - 1;787 iLeftXY = kiMbXY - 1;
@@ -789,10 +789,10 @@ void UpdateMbNeighbourInfoForNextSlice (SSliceCtx* pSliceCtx, · 1 unmodified line
789 iLeftTopXY = iTopXY - 1;789 iLeftTopXY = iTopXY - 1;
790 iRightTopXY = iTopXY + 1;790 iRightTopXY = iTopXY + 1;
791 791
792 bLeft = (kiMbX > 0) && (kuiSliceIdc == WelsMbToSliceIdc (pSliceCtx, iLeftXY));792 bLeft = (kiMbX > 0) && (kuiSliceIdc == WelsMbToSliceIdc (pCurDq, iLeftXY));
793 bTop = (kiMbY > 0) && (kuiSliceIdc == WelsMbToSliceIdc (pSliceCtx, iTopXY));793 bTop = (kiMbY > 0) && (kuiSliceIdc == WelsMbToSliceIdc (pCurDq, iTopXY));
794 bLeftTop = (kiMbX > 0) && (kiMbY > 0) && (kuiSliceIdc == WelsMbToSliceIdc (pSliceCtx, iLeftTopXY));794 bLeftTop = (kiMbX > 0) && (kiMbY > 0) && (kuiSliceIdc == WelsMbToSliceIdc (pCurDq, iLeftTopXY));
795 bRightTop = (kiMbX < (kiMbWidth - 1)) && (kiMbY > 0) && (kuiSliceIdc == WelsMbToSliceIdc (pSliceCtx, iRightTopXY));795 bRightTop = (kiMbX < (kiMbWidth - 1)) && (kiMbY > 0) && (kuiSliceIdc == WelsMbToSliceIdc (pCurDq, iRightTopXY));
796 796
797 if (bLeft) {797 if (bLeft) {
798 uiNeighborAvailFlag |= LEFT_MB_POS;798 uiNeighborAvailFlag |= LEFT_MB_POS;
@@ -848,7 +848,7 @@ void AddSliceBoundary (sWelsEncCtx* pEncCtx, SSlice* pCurSlice, SSliceCtx* pSlic · 49 unmodified lines
848 (kiLastMbIdxInPartition - iFirstMbIdxOfNextSlice + 1), sizeof (uint16_t));848 (kiLastMbIdxInPartition - iFirstMbIdxOfNextSlice + 1), sizeof (uint16_t));
849 849
850 //DYNAMIC_SLICING_ONE_THREAD: update pMbList slice_neighbor_info850 //DYNAMIC_SLICING_ONE_THREAD: update pMbList slice_neighbor_info
851 UpdateMbNeighbourInfoForNextSlice (pSliceCtx, pMbList, iFirstMbIdxOfNextSlice, kiLastMbIdxInPartition);851 UpdateMbNeighbourInfoForNextSlice (pCurLayer, pMbList, iFirstMbIdxOfNextSlice, kiLastMbIdxInPartition);
852}852}
853 853
854bool DynSlcJudgeSliceBoundaryStepBack (void* pCtx, void* pSlice, SSliceCtx* pSliceCtx, SMB* pCurMb,854bool DynSlcJudgeSliceBoundaryStepBack (void* pCtx, void* pSlice, SSliceCtx* pSliceCtx, SMB* pCurMb,
@@ -942,7 +942,6 @@ int32_t WelsMdInterMbLoop (sWelsEncCtx* pEncCtx, SSlice* pSlice, void* pWelsMd, · 87 unmodified lines
942 SWelsMD* pMd = (SWelsMD*)pWelsMd;942 SWelsMD* pMd = (SWelsMD*)pWelsMd;
943 SBitStringAux* pBs = pSlice->pSliceBsa;943 SBitStringAux* pBs = pSlice->pSliceBsa;
944 SDqLayer* pCurLayer = pEncCtx->pCurDqLayer;944 SDqLayer* pCurLayer = pEncCtx->pCurDqLayer;
945 SSliceCtx* pSliceCtx = &pCurLayer->sSliceEncCtx;
946 SMbCache* pMbCache = &pSlice->sMbCacheInfo;945 SMbCache* pMbCache = &pSlice->sMbCacheInfo;
947 SMB* pMbList = pCurLayer->sMbDataP;946 SMB* pMbList = pCurLayer->sMbDataP;
948 SMB* pCurMb = NULL;947 SMB* pCurMb = NULL;
@@ -1013,7 +1012,7 @@ TRY_REENCODING: · 64 unmodified lines
1013 1012
1014 /*judge if all pMb in cur pSlice has been encoded*/1013 /*judge if all pMb in cur pSlice has been encoded*/
1015 ++ iNumMbCoded;1014 ++ iNumMbCoded;
1016 iNextMbIdx = WelsGetNextMbOfSlice (pSliceCtx, iCurMbIdx);1015 iNextMbIdx = WelsGetNextMbOfSlice (pCurLayer, iCurMbIdx);
1017 //whether all of MB in current pSlice encoded or not1016 //whether all of MB in current pSlice encoded or not
1018 if (iNextMbIdx == -1 || iNextMbIdx >= kiTotalNumMb || iNumMbCoded >= kiTotalNumMb) {1017 if (iNextMbIdx == -1 || iNextMbIdx >= kiTotalNumMb || iNumMbCoded >= kiTotalNumMb) {
1019 break;1018 break;
@@ -1130,7 +1129,7 @@ TRY_REENCODING: · 110 unmodified lines
1130 1129
1131 /*judge if all pMb in cur pSlice has been encoded*/1130 /*judge if all pMb in cur pSlice has been encoded*/
1132 ++ iNumMbCoded;1131 ++ iNumMbCoded;
1133 iNextMbIdx = WelsGetNextMbOfSlice (pSliceCtx, iCurMbIdx);1132 iNextMbIdx = WelsGetNextMbOfSlice (pCurLayer, iCurMbIdx);
1134 //whether all of MB in current pSlice encoded or not1133 //whether all of MB in current pSlice encoded or not
1135 if (iNextMbIdx == -1 || iNextMbIdx >= kiTotalNumMb || iNumMbCoded >= kiTotalNumMb) {1134 if (iNextMbIdx == -1 || iNextMbIdx >= kiTotalNumMb || iNumMbCoded >= kiTotalNumMb) {
1136 pCurLayer->pLastCodedMbIdxOfPartition[kiPartitionId] =1135 pCurLayer->pLastCodedMbIdxOfPartition[kiPartitionId] =

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