ref: 0bf74e7e9dd8edf49f7847ead08a1d2c9d7f2956
parent: db31c22789f6b5c7502124af2fa5e3432b80c397
parent: f567b310145b563e08d69fdddbeb6a672b6b2e98
author: ruil2 <ruil2@cisco.com>
date: Wed May 10 06:38:43 EDT 2017
Merge pull request #2745 from huili2/scc_quality_recover_bugfix add qpinfo update in I&P MD, and remove Inter from related names
--- a/codec/encoder/core/inc/svc_mode_decision.h
+++ b/codec/encoder/core/inc/svc_mode_decision.h
@@ -73,9 +73,9 @@
bool WelsMdInterJudgeBGDPskipFalse (sWelsEncCtx* pEnc, SWelsMD* pMd, SSlice* pSlice, SMB* pCurMb, SMbCache* pMbCache,
bool* bKeepSkip);
-void WelsMdInterUpdateBGDInfo (SDqLayer* pCurLayer, SMB* pCurMb, const bool kbCollocatedPredFlag,
+void WelsMdUpdateBGDInfo (SDqLayer* pCurLayer, SMB* pCurMb, const bool kbCollocatedPredFlag,
const int32_t kiRefPictureType);
-void WelsMdInterUpdateBGDInfoNULL (SDqLayer* pCurLayer, SMB* pCurMb, const bool kbCollocatedPredFlag,
+void WelsMdUpdateBGDInfoNULL (SDqLayer* pCurLayer, SMB* pCurMb, const bool kbCollocatedPredFlag,
const int32_t kiRefPictureType);
//////////////
--- a/codec/encoder/core/inc/wels_func_ptr_def.h
+++ b/codec/encoder/core/inc/wels_func_ptr_def.h
@@ -115,7 +115,7 @@
typedef bool (*PInterMdBackgroundDecisionFunc) (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SSlice* slice, SMB* pCurMb,
SMbCache* pMbCache, bool* pKeepPskip);
-typedef void (*PInterMdBackgroundInfoUpdateFunc) (SDqLayer* pCurLayer, SMB* pCurMb, const bool bFlag,
+typedef void (*PMdBackgroundInfoUpdateFunc) (SDqLayer* pCurLayer, SMB* pCurMb, const bool bFlag,
const int32_t kiRefPictureType);
typedef bool (*PInterMdScrollingPSkipDecisionFunc) (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SSlice* slice, SMB* pCurMb,
@@ -209,7 +209,7 @@
PInterMdFunc pfInterMd;
PInterMdBackgroundDecisionFunc pfInterMdBackgroundDecision;
- PInterMdBackgroundInfoUpdateFunc pfInterMdBackgroundInfoUpdate;
+ PMdBackgroundInfoUpdateFunc pfMdBackgroundInfoUpdate;
PInterMdScrollingPSkipDecisionFunc pfSCDPSkipDecision;
PSetScrollingMv pfSetScrollingMv;
--- a/codec/encoder/core/src/encoder.cpp
+++ b/codec/encoder/core/src/encoder.cpp
@@ -142,10 +142,10 @@
void WelsInitBGDFunc (SWelsFuncPtrList* pFuncList, const bool kbEnableBackgroundDetection) {
if (kbEnableBackgroundDetection) {
pFuncList->pfInterMdBackgroundDecision = WelsMdInterJudgeBGDPskip;
- pFuncList->pfInterMdBackgroundInfoUpdate = WelsMdInterUpdateBGDInfo;
+ pFuncList->pfMdBackgroundInfoUpdate = WelsMdUpdateBGDInfo;
} else {
pFuncList->pfInterMdBackgroundDecision = WelsMdInterJudgeBGDPskipFalse;
- pFuncList->pfInterMdBackgroundInfoUpdate = WelsMdInterUpdateBGDInfoNULL;
+ pFuncList->pfMdBackgroundInfoUpdate = WelsMdUpdateBGDInfoNULL;
}
}
--- a/codec/encoder/core/src/svc_encode_slice.cpp
+++ b/codec/encoder/core/src/svc_encode_slice.cpp
@@ -570,6 +570,7 @@
WelsCountMbType (pEncCtx->sPerInfo.iMbCount, I_SLICE, pCurMb);
#endif//MB_TYPES_CHECK
+ pEncCtx->pFuncList->pfMdBackgroundInfoUpdate (pCurLayer, pCurMb, pMbCache->bCollocatedPredFlag, I_SLICE);
pEncCtx->pFuncList->pfRc.pfWelsRcMbInfoUpdate (pEncCtx, pCurMb, sMd.iCostLuma, pSlice);
++iNumMbCoded;
@@ -1829,7 +1830,7 @@
//step (4): save from the MD process from future use
WelsMdInterSaveSadAndRefMbType ((pCurLayer->pDecPic->uiRefMbType), pMbCache, pCurMb, pMd);
- pEncCtx->pFuncList->pfInterMdBackgroundInfoUpdate (pCurLayer, pCurMb, pMbCache->bCollocatedPredFlag,
+ pEncCtx->pFuncList->pfMdBackgroundInfoUpdate (pCurLayer, pCurMb, pMbCache->bCollocatedPredFlag,
pEncCtx->pRefPic->iPictureType);
//step (5): update cache
@@ -1938,7 +1939,7 @@
//step (4): save from the MD process from future use
WelsMdInterSaveSadAndRefMbType ((pCurLayer->pDecPic->uiRefMbType), pMbCache, pCurMb, pMd);
- pEncCtx->pFuncList->pfInterMdBackgroundInfoUpdate (pCurLayer, pCurMb, pMbCache->bCollocatedPredFlag,
+ pEncCtx->pFuncList->pfMdBackgroundInfoUpdate (pCurLayer, pCurMb, pMbCache->bCollocatedPredFlag,
pEncCtx->pRefPic->iPictureType);
//step (5): update cache
--- a/codec/encoder/core/src/svc_mode_decision.cpp
+++ b/codec/encoder/core/src/svc_mode_decision.cpp
@@ -264,8 +264,8 @@
//////
// update BGD related info
//////
-void WelsMdInterUpdateBGDInfo (SDqLayer* pCurLayer, SMB* pCurMb, const bool bCollocatedPredFlag,
- const int32_t iRefPictureType) {
+void WelsMdUpdateBGDInfo (SDqLayer* pCurLayer, SMB* pCurMb, const bool bCollocatedPredFlag,
+ const int32_t iRefPictureType) {
uint8_t* pTargetRefMbQpList = (pCurLayer->pDecPic->pRefMbQp);
const int32_t kiMbXY = pCurMb->iMbXY;
@@ -281,8 +281,9 @@
}
}
-void WelsMdInterUpdateBGDInfoNULL (SDqLayer* pCurLayer, SMB* pCurMb, const bool bCollocatedPredFlag,
- const int32_t iRefPictureType) {
+void WelsMdUpdateBGDInfoNULL (SDqLayer* pCurLayer, SMB* pCurMb, const bool bCollocatedPredFlag,
+ const int32_t iRefPictureType) {
+ WelsMdUpdateBGDInfo (pCurLayer, pCurMb, bCollocatedPredFlag, iRefPictureType);
}