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
483483 //second. lower than highest Dependency Layer, and for every Dependency Layer with one quality layer(single layer)
484484 int32_t WelsISliceMdEnc (sWelsEncCtx* pEncCtx, SSlice* pSlice) { //pMd + encoding
485485 SDqLayer* pCurLayer = pEncCtx->pCurDqLayer;
486− SSliceCtx* pSliceCtx = &pCurLayer->sSliceEncCtx;
487− SMbCache* pMbCache = &pSlice->sMbCacheInfo;
486+ SMbCache* pMbCache = &pSlice->sMbCacheInfo;
488487 SSliceHeaderExt* pSliceHdExt = &pSlice->sSliceHeaderExt;
489488 SMB* pMbList = pCurLayer->sMbDataP;
490489 SMB* pCurMb = NULL;
@@ -533,7 +532,7 @@ TRY_REENCODING: · 42 unmodified lines
533532 pEncCtx->pFuncList->pfRc.pfWelsRcMbInfoUpdate (pEncCtx, pCurMb, sMd.iCostLuma, pSlice);
534533
535534 ++iNumMbCoded;
536− iNextMbIdx = WelsGetNextMbOfSlice (pSliceCtx, iCurMbIdx);
535+ iNextMbIdx = WelsGetNextMbOfSlice (pCurLayer, iCurMbIdx);
537536 if (iNextMbIdx == -1 || iNextMbIdx >= kiTotalNumMb || iNumMbCoded >= kiTotalNumMb) {
538537 break;
539538 }
@@ -615,7 +614,7 @@ TRY_REENCODING: · 75 unmodified lines
615614
616615 ++iNumMbCoded;
617616
618− iNextMbIdx = WelsGetNextMbOfSlice (pSliceCtx, iCurMbIdx);
617+ iNextMbIdx = WelsGetNextMbOfSlice (pCurLayer, iCurMbIdx);
619618 //whether all of MB in current pSlice encoded or not
620619 if (iNextMbIdx == -1 || iNextMbIdx >= kiTotalNumMb || iNumMbCoded >= kiTotalNumMb) {
621620 pSliceCtx->pCountMbNumInSlice[kiSliceIdx] = iCurMbIdx - pCurLayer->pLastCodedMbIdxOfPartition[kiPartitionId];
@@ -759,10 +758,11 @@ int32_t WelsCodeOneSlice (sWelsEncCtx* pEncCtx, const int32_t kiSliceIdx, const · 137 unmodified lines
759758 }
760759
761760 //pFunc: UpdateMbNeighbourInfoForNextSlice()
762−void UpdateMbNeighbourInfoForNextSlice (SSliceCtx* pSliceCtx,
761+void UpdateMbNeighbourInfoForNextSlice (SDqLayer* pCurDq,
763762 SMB* pMbList,
764763 const int32_t kiFirstMbIdxOfNextSlice,
765764 const int32_t kiLastMbIdxInPartition) {
765+ SSliceCtx* pSliceCtx = &pCurDq->sSliceEncCtx;
766766 const int32_t kiMbWidth = pSliceCtx->iMbWidth;
767767 int32_t iIdx = kiFirstMbIdxOfNextSlice;
768768 int32_t iNextSliceFirstMbIdxRowStart = ((kiFirstMbIdxOfNextSlice % kiMbWidth) ? 1 : 0);
@@ -781,7 +781,7 @@ void UpdateMbNeighbourInfoForNextSlice (SSliceCtx* pSliceCtx, · 12 unmodified lines
781781 bool bLeftTop;
782782 bool bRightTop;
783783 int32_t iLeftXY, iTopXY, iLeftTopXY, iRightTopXY;
784− const uint16_t kuiSliceIdc = WelsMbToSliceIdc (pSliceCtx, kiMbXY);
784+ const uint16_t kuiSliceIdc = WelsMbToSliceIdc (pCurDq, kiMbXY);
785785
786786 pMb->uiSliceIdc = kuiSliceIdc;
787787 iLeftXY = kiMbXY - 1;
@@ -789,10 +789,10 @@ void UpdateMbNeighbourInfoForNextSlice (SSliceCtx* pSliceCtx, · 1 unmodified line
789789 iLeftTopXY = iTopXY - 1;
790790 iRightTopXY = iTopXY + 1;
791791
792− bLeft = (kiMbX > 0) && (kuiSliceIdc == WelsMbToSliceIdc (pSliceCtx, iLeftXY));
793− bTop = (kiMbY > 0) && (kuiSliceIdc == WelsMbToSliceIdc (pSliceCtx, iTopXY));
794− bLeftTop = (kiMbX > 0) && (kiMbY > 0) && (kuiSliceIdc == WelsMbToSliceIdc (pSliceCtx, iLeftTopXY));
795− bRightTop = (kiMbX < (kiMbWidth - 1)) && (kiMbY > 0) && (kuiSliceIdc == WelsMbToSliceIdc (pSliceCtx, iRightTopXY));
792+ bLeft = (kiMbX > 0) && (kuiSliceIdc == WelsMbToSliceIdc (pCurDq, iLeftXY));
793+ bTop = (kiMbY > 0) && (kuiSliceIdc == WelsMbToSliceIdc (pCurDq, iTopXY));
794+ bLeftTop = (kiMbX > 0) && (kiMbY > 0) && (kuiSliceIdc == WelsMbToSliceIdc (pCurDq, iLeftTopXY));
795+ bRightTop = (kiMbX < (kiMbWidth - 1)) && (kiMbY > 0) && (kuiSliceIdc == WelsMbToSliceIdc (pCurDq, iRightTopXY));
796796
797797 if (bLeft) {
798798 uiNeighborAvailFlag |= LEFT_MB_POS;
@@ -848,7 +848,7 @@ void AddSliceBoundary (sWelsEncCtx* pEncCtx, SSlice* pCurSlice, SSliceCtx* pSlic · 49 unmodified lines
848848 (kiLastMbIdxInPartition - iFirstMbIdxOfNextSlice + 1), sizeof (uint16_t));
849849
850850 //DYNAMIC_SLICING_ONE_THREAD: update pMbList slice_neighbor_info
851− UpdateMbNeighbourInfoForNextSlice (pSliceCtx, pMbList, iFirstMbIdxOfNextSlice, kiLastMbIdxInPartition);
851+ UpdateMbNeighbourInfoForNextSlice (pCurLayer, pMbList, iFirstMbIdxOfNextSlice, kiLastMbIdxInPartition);
852852 }
853853
854854 bool 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
942942 SWelsMD* pMd = (SWelsMD*)pWelsMd;
943943 SBitStringAux* pBs = pSlice->pSliceBsa;
944944 SDqLayer* pCurLayer = pEncCtx->pCurDqLayer;
945− SSliceCtx* pSliceCtx = &pCurLayer->sSliceEncCtx;
946945 SMbCache* pMbCache = &pSlice->sMbCacheInfo;
947946 SMB* pMbList = pCurLayer->sMbDataP;
948947 SMB* pCurMb = NULL;
@@ -1013,7 +1012,7 @@ TRY_REENCODING: · 64 unmodified lines
10131012
10141013 /*judge if all pMb in cur pSlice has been encoded*/
10151014 ++ iNumMbCoded;
1016− iNextMbIdx = WelsGetNextMbOfSlice (pSliceCtx, iCurMbIdx);
1015+ iNextMbIdx = WelsGetNextMbOfSlice (pCurLayer, iCurMbIdx);
10171016 //whether all of MB in current pSlice encoded or not
10181017 if (iNextMbIdx == -1 || iNextMbIdx >= kiTotalNumMb || iNumMbCoded >= kiTotalNumMb) {
10191018 break;
@@ -1130,7 +1129,7 @@ TRY_REENCODING: · 110 unmodified lines
11301129
11311130 /*judge if all pMb in cur pSlice has been encoded*/
11321131 ++ iNumMbCoded;
1133− iNextMbIdx = WelsGetNextMbOfSlice (pSliceCtx, iCurMbIdx);
1132+ iNextMbIdx = WelsGetNextMbOfSlice (pCurLayer, iCurMbIdx);
11341133 //whether all of MB in current pSlice encoded or not
11351134 if (iNextMbIdx == -1 || iNextMbIdx >= kiTotalNumMb || iNumMbCoded >= kiTotalNumMb) {
11361135 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