Use the correct types instead of void pointers in function signatures
This gets rid of 50 lines of code with just casts of void pointers, making the code shorter and clearer.
This commit is contained in:
parent
6f876d79a6
commit
f89780ddd8
@ -72,11 +72,11 @@ void WelsResetRefList (sWelsEncCtx* pCtx);
|
||||
/*
|
||||
* update reference picture list
|
||||
*/
|
||||
bool WelsUpdateRefList (void* pCtx);
|
||||
bool WelsUpdateRefList (sWelsEncCtx* pCtx);
|
||||
/*
|
||||
* build reference picture list
|
||||
*/
|
||||
bool WelsBuildRefList (void* pCtx, const int32_t kiPOC, int32_t iBestLtrRefIdx);
|
||||
bool WelsBuildRefList (sWelsEncCtx* pCtx, const int32_t kiPOC, int32_t iBestLtrRefIdx);
|
||||
|
||||
/*
|
||||
* update syntax for reference base related
|
||||
@ -91,7 +91,7 @@ bool CheckCurMarkFrameNumUsed (sWelsEncCtx* pCtx);
|
||||
/*
|
||||
* decide whether current frame include long term reference mark and update long term reference mark syntax
|
||||
*/
|
||||
void WelsMarkPic (void* pCtx);
|
||||
void WelsMarkPic (sWelsEncCtx* pCtx);
|
||||
|
||||
void InitRefListMgrFunc (SWelsFuncPtrList* pFuncList, const bool bEnableLongTermReference, const bool bScreenContent);
|
||||
|
||||
|
@ -48,30 +48,30 @@ void WelsMdIntraInit (sWelsEncCtx* pEncCtx, SMB* pCurMb, SMbCache* pMbCache, con
|
||||
int32_t WelsMdI16x16 (SWelsFuncPtrList* pFunc, SDqLayer* pCurDqLayer, SMbCache* pMbCache, int32_t iLambda);
|
||||
int32_t WelsMdIntraChroma (SWelsFuncPtrList* pFunc, SDqLayer* pCurDqLayer, SMbCache* pMbCache, int32_t iLambda);
|
||||
|
||||
int32_t WelsMdI4x4 (void* pEnc, void* pMd, SMB* pCurMb, SMbCache* pMbCache);
|
||||
int32_t WelsMdI4x4Fast (void* pEnc, void* pMd, SMB* pCurMb, SMbCache* pMbCache);
|
||||
int32_t WelsMdI4x4 (sWelsEncCtx* pEnc, SWelsMD* pMd, SMB* pCurMb, SMbCache* pMbCache);
|
||||
int32_t WelsMdI4x4Fast (sWelsEncCtx* pEnc, SWelsMD* pMd, SMB* pCurMb, SMbCache* pMbCache);
|
||||
|
||||
int32_t WelsMdIntraFinePartition (void* pEncCtx, void* pWelsMd, SMB* pCurMb, SMbCache* pMbCache);
|
||||
int32_t WelsMdIntraFinePartitionVaa (void* pEncCtx, void* pWelsMd, SMB* pCurMb, SMbCache* pMbCache);
|
||||
int32_t WelsMdIntraFinePartition (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SMB* pCurMb, SMbCache* pMbCache);
|
||||
int32_t WelsMdIntraFinePartitionVaa (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SMB* pCurMb, SMbCache* pMbCache);
|
||||
|
||||
void WelsMdIntraMb (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SMB* pCurMb, SMbCache* pMbCache);
|
||||
|
||||
void WelsMdBackgroundMbEnc (void* pEnc, void* pMd, SMB* pCurMb, SMbCache* pMbCache, SSlice* pSlice, bool bSkipMbFlag);
|
||||
bool WelsMdPSkipEnc (void* pEnc, void* pMd, SMB* pCurMb, SMbCache* pMbCache);
|
||||
void WelsMdBackgroundMbEnc (sWelsEncCtx* pEnc, SWelsMD* pMd, SMB* pCurMb, SMbCache* pMbCache, SSlice* pSlice, bool bSkipMbFlag);
|
||||
bool WelsMdPSkipEnc (sWelsEncCtx* pEnc, SWelsMD* pMd, SMB* pCurMb, SMbCache* pMbCache);
|
||||
int32_t WelsMdP16x16 (SWelsFuncPtrList* pFunc, SDqLayer* pCurDqLayer, SWelsMD* pWelsMd, SSlice* pSlice, SMB* pCurMb);
|
||||
|
||||
int32_t WelsMdP16x8 (SWelsFuncPtrList* pFunc, SDqLayer* pCurDqLayer, SWelsMD* pWelsMd, SSlice* pSlice);
|
||||
int32_t WelsMdP8x16 (SWelsFuncPtrList* pFunc, SDqLayer* pCurDqLayer, SWelsMD* pWelsMd, SSlice* pSlice);
|
||||
int32_t WelsMdP8x8 (SWelsFuncPtrList* pFunc, SDqLayer* pCurDqLayer, SWelsMD* pWelsMd, SSlice* pSlice);
|
||||
/*static*/ void WelsMdInterInit (sWelsEncCtx* pEncCtx, SSlice* pSlice, SMB* pCurMb, const int32_t kiSliceFirstMbXY);
|
||||
/*static*/ void WelsMdInterFinePartition (void* pEnc, void* pMd, SSlice* pSlice, SMB* pCurMb, int32_t bestCost);
|
||||
/*static*/ void WelsMdInterFinePartitionVaa (void* pEnc, void* pMd, SSlice* pSlice, SMB* pCurMb, int32_t bestCost);
|
||||
/*static*/ void WelsMdInterFinePartitionVaaOnScreen (void* pEnc, void* pMd, SSlice* pSlice, SMB* pCurMb,
|
||||
/*static*/ void WelsMdInterFinePartition (sWelsEncCtx* pEnc, SWelsMD* pMd, SSlice* pSlice, SMB* pCurMb, int32_t bestCost);
|
||||
/*static*/ void WelsMdInterFinePartitionVaa (sWelsEncCtx* pEnc, SWelsMD* pMd, SSlice* pSlice, SMB* pCurMb, int32_t bestCost);
|
||||
/*static*/ void WelsMdInterFinePartitionVaaOnScreen (sWelsEncCtx* pEnc, SWelsMD* pMd, SSlice* pSlice, SMB* pCurMb,
|
||||
int32_t bestCost);
|
||||
void WelsMdInterMbRefinement (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SMB* pCurMb, SMbCache* pMbCache);
|
||||
bool WelsMdFirstIntraMode (void* pEnc, void* pMd, SMB* pCurMb, SMbCache* pMbCache);
|
||||
//bool svc_md_first_intra_mode_constrained(void* pEnc, void* pMd, SMB* pCurMb, SMbCache *pMbCache);
|
||||
void WelsMdInterMb (void* pEncCtx, void* pWelsMd, SSlice* pSlice, SMB* pCurMb, SMbCache* pUnused);
|
||||
bool WelsMdFirstIntraMode (sWelsEncCtx* pEnc, SWelsMD* pMd, SMB* pCurMb, SMbCache* pMbCache);
|
||||
//bool svc_md_first_intra_mode_constrained(sWelsEncCtx* pEnc, SWelsMD* pMd, SMB* pCurMb, SMbCache *pMbCache);
|
||||
void WelsMdInterMb (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SSlice* pSlice, SMB* pCurMb, SMbCache* pUnused);
|
||||
|
||||
//both used in BL and EL
|
||||
//void wels_md_inter_init ( SWelsMD* pMd, const uint8_t ref_idx, const bool is_highest_dlayer_flag );
|
||||
|
@ -61,16 +61,16 @@ SCROLLED
|
||||
// NOILP ILFMD ENTRANCE
|
||||
void WelsMdSpatialelInterMbIlfmdNoilp (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SSlice* pSlice, SMB* pCurMb,
|
||||
const Mb_Type kuiRefMbType);
|
||||
void WelsMdInterMbEnhancelayer (void* pEnc, void* pMd, SSlice* pSlice, SMB* pCurMb, SMbCache* pMbCache);
|
||||
void WelsMdInterMbEnhancelayer (sWelsEncCtx* pEnc, SWelsMD* pMd, SSlice* pSlice, SMB* pCurMb, SMbCache* pMbCache);
|
||||
SMB* GetRefMb (SDqLayer* pCurLayer, SMB* pCurMb);
|
||||
void SetMvBaseEnhancelayer (SWelsMD* pMd, SMB* pCurMb, const SMB* kpRefMb);
|
||||
|
||||
//////////////
|
||||
// MD from background detection
|
||||
//////////////
|
||||
bool WelsMdInterJudgeBGDPskip (void* pEnc, void* pMd, SSlice* pSlice, SMB* pCurMb, SMbCache* pMbCache,
|
||||
bool WelsMdInterJudgeBGDPskip (sWelsEncCtx* pEnc, SWelsMD* pMd, SSlice* pSlice, SMB* pCurMb, SMbCache* pMbCache,
|
||||
bool* bKeepSkip);
|
||||
bool WelsMdInterJudgeBGDPskipFalse (void* pEnc, void* pMd, SSlice* pSlice, SMB* pCurMb, SMbCache* pMbCache,
|
||||
bool WelsMdInterJudgeBGDPskipFalse (sWelsEncCtx* pEnc, SWelsMD* pMd, SSlice* pSlice, SMB* pCurMb, SMbCache* pMbCache,
|
||||
bool* bKeepSkip);
|
||||
|
||||
void WelsMdInterUpdateBGDInfo (SDqLayer* pCurLayer, SMB* pCurMb, const bool kbCollocatedPredFlag,
|
||||
@ -87,8 +87,8 @@ typedef bool (*pJudgeSkipFun) (sWelsEncCtx* pEncCtx, SMB* pCurMb, SMbCache* pMbC
|
||||
void SetBlockStaticIdcToMd (void* pVaa, void* pMd, SMB* pCurMb, void* pDqLay);
|
||||
void WelsInitSCDPskipFunc (SWelsFuncPtrList* pFuncList, const bool bScrollingDetection);
|
||||
|
||||
void SetScrollingMvToMd (void* pVaa, void* pWelsMd);
|
||||
void SetScrollingMvToMdNull (void* pVaa, void* pWelsMd);
|
||||
void SetScrollingMvToMd (SVAAFrameInfo* pVaa, SWelsMD* pWelsMd);
|
||||
void SetScrollingMvToMdNull (SVAAFrameInfo* pVaa, SWelsMD* pWelsMd);
|
||||
}
|
||||
#endif //SVC_MODE_DECISION_H
|
||||
|
||||
|
@ -144,9 +144,9 @@ void WelsInitMeFunc (SWelsFuncPtrList* pFuncList, uint32_t uiCpuFlag, bool bScre
|
||||
*
|
||||
* \return NONE
|
||||
*/
|
||||
void WelsMotionEstimateSearch (SWelsFuncPtrList* pFuncList, void* pLplayer, void* pLpme, void* pLpslice);
|
||||
void WelsMotionEstimateSearchStatic (SWelsFuncPtrList* pFuncList, void* pLplayer, void* pLpme, void* pLpslice);
|
||||
void WelsMotionEstimateSearchScrolled (SWelsFuncPtrList* pFuncList, void* pLplayer, void* pLpme, void* pLpslice);
|
||||
void WelsMotionEstimateSearch (SWelsFuncPtrList* pFuncList, SDqLayer* pLplayer, SWelsME* pLpme, SSlice* pLpslice);
|
||||
void WelsMotionEstimateSearchStatic (SWelsFuncPtrList* pFuncList, SDqLayer* pLplayer, SWelsME* pLpme, SSlice* pLpslice);
|
||||
void WelsMotionEstimateSearchScrolled (SWelsFuncPtrList* pFuncList, SDqLayer* pLplayer, SWelsME* pLpme, SSlice* pLpslice);
|
||||
/*!
|
||||
* \brief BL mb motion estimate initial point testing
|
||||
*
|
||||
@ -188,13 +188,13 @@ void WelsDiamondSearch (SWelsFuncPtrList* pFuncList, SWelsME* pMe, SSlice* pSlic
|
||||
bool WelsMeSadCostSelect (int32_t* pSadCost, const uint16_t* kpMvdCost, int32_t* pBestCost, const int32_t kiDx,
|
||||
const int32_t kiDy, int32_t* pIx, int32_t* pIy);
|
||||
|
||||
void CalculateSatdCost (PSampleSadSatdCostFunc pSatd, void* vpMe, const int32_t kiEncStride, const int32_t kiRefStride);
|
||||
void NotCalculateSatdCost (PSampleSadSatdCostFunc pSatd, void* vpMe, const int32_t kiEncStride,
|
||||
void CalculateSatdCost (PSampleSadSatdCostFunc pSatd, SWelsME* pMe, const int32_t kiEncStride, const int32_t kiRefStride);
|
||||
void NotCalculateSatdCost (PSampleSadSatdCostFunc pSatd, SWelsME* pMe, const int32_t kiEncStride,
|
||||
const int32_t kiRefStride);
|
||||
bool CheckDirectionalMv (PSampleSadSatdCostFunc pSad, void* vpMe,
|
||||
bool CheckDirectionalMv (PSampleSadSatdCostFunc pSad, SWelsME* pMe,
|
||||
const SMVUnitXY ksMinMv, const SMVUnitXY ksMaxMv, const int32_t kiEncStride, const int32_t kiRefStride,
|
||||
int32_t& iBestSadCost);
|
||||
bool CheckDirectionalMvFalse (PSampleSadSatdCostFunc pSad, void* vpMe,
|
||||
bool CheckDirectionalMvFalse (PSampleSadSatdCostFunc pSad, SWelsME* pMe,
|
||||
const SMVUnitXY ksMinMv, const SMVUnitXY ksMaxMv, const int32_t kiEncStride, const int32_t kiRefStride,
|
||||
int32_t& iBestSadCost);
|
||||
|
||||
|
@ -62,7 +62,7 @@ void WelsInitSliceCabac(sWelsEncCtx* pEncCtx,SSlice* pSlice);
|
||||
void WelsCabacInit(void *pCtx);
|
||||
void WelsWriteSliceEndSyn(SSlice *pSlice,bool bEntropyCodingModeFlag);
|
||||
//for Base Layer CAVLC writing
|
||||
int32_t WelsSpatialWriteMbSyn (void* Ctx, SSlice* pSlice, SMB* pCurMb);
|
||||
int32_t WelsSpatialWriteMbSynCabac (void* pCtx, SSlice* pSlice, SMB* pCurMb);
|
||||
int32_t WelsSpatialWriteMbSyn (sWelsEncCtx* Ctx, SSlice* pSlice, SMB* pCurMb);
|
||||
int32_t WelsSpatialWriteMbSynCabac (sWelsEncCtx* pCtx, SSlice* pSlice, SMB* pCurMb);
|
||||
}
|
||||
#endif
|
||||
|
@ -47,9 +47,12 @@
|
||||
|
||||
namespace WelsEnc {
|
||||
|
||||
typedef struct TagWelsEncCtx sWelsEncCtx;
|
||||
typedef struct TagWelsFuncPointerList SWelsFuncPtrList;
|
||||
typedef struct TagVAAFrameInfo SVAAFrameInfo;
|
||||
|
||||
typedef struct TagWelsME SWelsME;
|
||||
typedef struct TagWelsMD SWelsMD;
|
||||
|
||||
typedef void (*PSetMemoryZero) (void* pDst, int32_t iSize);
|
||||
typedef void (*PDctFunc) (int16_t* pDct, uint8_t* pSample1, int32_t iStride1, uint8_t* pSample2, int32_t iStride2);
|
||||
@ -115,26 +118,26 @@ typedef struct tagDeblockingFunc {
|
||||
|
||||
typedef void (*PSetNoneZeroCountZeroFunc) (int8_t* pNonZeroCount);
|
||||
|
||||
typedef int32_t (*PIntraFineMdFunc) (void* pEncCtx, void* pWelsMd, SMB* pCurMb, SMbCache* pMbCache);
|
||||
typedef void (*PInterFineMdFunc) (void* pEncCtx, void* pWelsMd, SSlice* slice, SMB* pCurMb, int32_t bestCost);
|
||||
typedef bool (*PInterMdFirstIntraModeFunc) (void* pEncCtx, void* pWelsMd, SMB* pCurMb, SMbCache* pMbCache);
|
||||
typedef int32_t (*PIntraFineMdFunc) (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SMB* pCurMb, SMbCache* pMbCache);
|
||||
typedef void (*PInterFineMdFunc) (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SSlice* slice, SMB* pCurMb, int32_t bestCost);
|
||||
typedef bool (*PInterMdFirstIntraModeFunc) (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SMB* pCurMb, SMbCache* pMbCache);
|
||||
|
||||
typedef void (*PFillInterNeighborCacheFunc) (SMbCache* pMbCache, SMB* pCurMb, int32_t iMbWidth, int8_t* pVaaBgMbFlag);
|
||||
typedef void (*PAccumulateSadFunc) (uint32_t* pSumDiff, int32_t* pGomForegroundBlockNum, int32_t* iSad8x8,
|
||||
int8_t* pVaaBgMbFlag);//for RC
|
||||
typedef bool (*PDynamicSlicingStepBackFunc) (void* pEncCtx, void* pSlice, SSliceCtx* pSliceCtx, SMB* pCurMb,
|
||||
typedef bool (*PDynamicSlicingStepBackFunc) (sWelsEncCtx* pEncCtx, SSlice* pSlice, SSliceCtx* pSliceCtx, SMB* pCurMb,
|
||||
SDynamicSlicingStack* pDynamicSlicingStack); // 2010.8.17
|
||||
|
||||
typedef bool (*PInterMdBackgroundDecisionFunc) (void* pEncCtx, void* pWelsMd, SSlice* slice, SMB* pCurMb,
|
||||
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,
|
||||
const int32_t kiRefPictureType);
|
||||
|
||||
typedef bool (*PInterMdScrollingPSkipDecisionFunc) (void* pEncCtx, void* pWelsMd, SSlice* slice, SMB* pCurMb,
|
||||
typedef bool (*PInterMdScrollingPSkipDecisionFunc) (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SSlice* slice, SMB* pCurMb,
|
||||
SMbCache* pMbCache);
|
||||
typedef void (*PSetScrollingMv) (void* pVaa, void* pMd);
|
||||
typedef void (*PSetScrollingMv) (SVAAFrameInfo* pVaa, SWelsMD* pMd);
|
||||
|
||||
typedef void (*PInterMdFunc) (void* pEncCtx, void* pWelsMd, SSlice* slice, SMB* pCurMb, SMbCache* pMbCache);
|
||||
typedef void (*PInterMdFunc) (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SSlice* slice, SMB* pCurMb, SMbCache* pMbCache);
|
||||
|
||||
typedef int32_t (*PSampleSadSatdCostFunc) (uint8_t*, int32_t, uint8_t*, int32_t);
|
||||
typedef void (*PSample4SadCostFunc) (uint8_t*, int32_t, uint8_t*, int32_t, int32_t*);
|
||||
@ -145,13 +148,13 @@ typedef int32_t (*PIntraPred8x8Combined3Func) (uint8_t*, int32_t, uint8_t*, int3
|
||||
uint8_t*, uint8_t*);
|
||||
|
||||
typedef uint32_t (*PSampleSadHor8Func) (uint8_t*, int32_t, uint8_t*, int32_t, uint16_t*, int32_t*);
|
||||
typedef void (*PMotionSearchFunc) (SWelsFuncPtrList* pFuncList, void* pCurDqLayer, void* pMe,
|
||||
void* pSlice);
|
||||
typedef void (*PMotionSearchFunc) (SWelsFuncPtrList* pFuncList, SDqLayer* pCurDqLayer, SWelsME* pMe,
|
||||
SSlice* pSlice);
|
||||
typedef void (*PSearchMethodFunc) (SWelsFuncPtrList* pFuncList, SWelsME* pMe, SSlice* pSlice, const int32_t kiEncStride,
|
||||
const int32_t kiRefStride);
|
||||
typedef void (*PCalculateSatdFunc) (PSampleSadSatdCostFunc pSatd, void* vpMe, const int32_t kiEncStride,
|
||||
typedef void (*PCalculateSatdFunc) (PSampleSadSatdCostFunc pSatd, SWelsME* pMe, const int32_t kiEncStride,
|
||||
const int32_t kiRefStride);
|
||||
typedef bool (*PCheckDirectionalMv) (PSampleSadSatdCostFunc pSad, void* vpMe,
|
||||
typedef bool (*PCheckDirectionalMv) (PSampleSadSatdCostFunc pSad, SWelsME* pMe,
|
||||
const SMVUnitXY ksMinMv, const SMVUnitXY ksMaxMv, const int32_t kiEncStride, const int32_t kiRefStride,
|
||||
int32_t& iBestSadCost);
|
||||
typedef void (*PLineFullSearchFunc) (SWelsFuncPtrList* pFuncList, SWelsME* pMe,
|
||||
@ -193,15 +196,15 @@ typedef int32_t (*PGetVarianceFromIntraVaaFunc) (uint8_t* pSampelY, const int32_
|
||||
typedef uint8_t (*PGetMbSignFromInterVaaFunc) (int32_t* pSad8x8);
|
||||
typedef void (*PUpdateMbMvFunc) (SMVUnitXY* pMvUnit, const SMVUnitXY ksMv);
|
||||
|
||||
typedef bool (*PBuildRefListFunc) (void* pCtx, const int32_t iPOC, int32_t iBestLtrRefIdx);
|
||||
typedef void (*PMarkPicFunc) (void* pCtx);
|
||||
typedef bool (*PUpdateRefListFunc) (void* pCtx);
|
||||
typedef void (*PEndofUpdateRefListFunc) (void* pCtx);
|
||||
typedef void (*PAfterBuildRefListFunc) (void* pCtx);
|
||||
typedef bool (*PBuildRefListFunc) (sWelsEncCtx* pCtx, const int32_t iPOC, int32_t iBestLtrRefIdx);
|
||||
typedef void (*PMarkPicFunc) (sWelsEncCtx* pCtx);
|
||||
typedef bool (*PUpdateRefListFunc) (sWelsEncCtx* pCtx);
|
||||
typedef void (*PEndofUpdateRefListFunc) (sWelsEncCtx* pCtx);
|
||||
typedef void (*PAfterBuildRefListFunc) (sWelsEncCtx* pCtx);
|
||||
|
||||
typedef int32_t (*PCavlcParamCalFunc) (int16_t* pCoff, uint8_t* pRun, int16_t* pLevel, int32_t* pTotalCoeffs,
|
||||
int32_t iEndIdx);
|
||||
typedef int32_t (*PWelsSpatialWriteMbSyn) (void* pCtx, SSlice* pSlice, SMB* pCurMb);
|
||||
typedef int32_t (*PWelsSpatialWriteMbSyn) (sWelsEncCtx* pCtx, SSlice* pSlice, SMB* pCurMb);
|
||||
typedef void (*PStashMBStatus) (SDynamicSlicingStack* pDss, SSlice* pSlice, int32_t iMbSkipRun);
|
||||
typedef int32_t (*PStashPopMBStatus) (SDynamicSlicingStack* pDss, SSlice* pSlice);
|
||||
|
||||
|
@ -77,7 +77,7 @@ typedef struct {
|
||||
unsigned char* pBestBlockStaticIdc;
|
||||
} SRefInfoParam;
|
||||
|
||||
typedef struct {
|
||||
typedef struct TagVAAFrameInfo {
|
||||
SVAACalcResult sVaaCalcInfo;
|
||||
SAdaptiveQuantizationParam sAdaptiveQuantParam;
|
||||
SComplexityAnalysisParam sComplexityAnalysisParam;
|
||||
|
@ -320,8 +320,7 @@ static inline void LTRMarkProcessScreen (sWelsEncCtx* pCtx) {
|
||||
pLongRefList[iLtrIdx] = pCtx->pDecPic;
|
||||
}
|
||||
|
||||
static void PrefetchNextBuffer (void* pEncCtx) {
|
||||
sWelsEncCtx* pCtx = (sWelsEncCtx*)pEncCtx;
|
||||
static void PrefetchNextBuffer (sWelsEncCtx* pCtx) {
|
||||
SRefList* pRefList = pCtx->ppRefPicListExt[pCtx->uiDependencyId];
|
||||
const int32_t kiNumRef = pCtx->pSvcParam->iNumRefFrame;
|
||||
int32_t i;
|
||||
@ -345,8 +344,7 @@ static void PrefetchNextBuffer (void* pEncCtx) {
|
||||
/*
|
||||
* update reference picture list
|
||||
*/
|
||||
bool WelsUpdateRefList (void* pEncCtx) {
|
||||
sWelsEncCtx* pCtx = (sWelsEncCtx*)pEncCtx;
|
||||
bool WelsUpdateRefList (sWelsEncCtx* pCtx) {
|
||||
SRefList* pRefList = pCtx->ppRefPicListExt[pCtx->uiDependencyId];
|
||||
SLTRState* pLtr = &pCtx->pLtr[pCtx->uiDependencyId];
|
||||
SSpatialLayerInternal* pParamD = &pCtx->pSvcParam->sDependencyLayers[pCtx->uiDependencyId];
|
||||
@ -444,8 +442,7 @@ bool CheckCurMarkFrameNumUsed (sWelsEncCtx* pCtx) {
|
||||
|
||||
return true;
|
||||
}
|
||||
void WelsMarkPic (void* pEncCtx) {
|
||||
sWelsEncCtx* pCtx = (sWelsEncCtx*)pEncCtx;
|
||||
void WelsMarkPic (sWelsEncCtx* pCtx) {
|
||||
SLTRState* pLtr = &pCtx->pLtr[pCtx->uiDependencyId];
|
||||
const int32_t kiCountSliceNum = GetCurrentSliceNum (pCtx->pCurDqLayer->pSliceEncCtx);
|
||||
int32_t iGoPFrameNumInterval = ((pCtx->pSvcParam->uiGopSize >> 1) > 1) ? (pCtx->pSvcParam->uiGopSize >> 1) : (1);
|
||||
@ -555,8 +552,7 @@ void FilterLTRMarkingFeedback (sWelsEncCtx* pCtx, SLTRMarkingFeedback* pLTRMarki
|
||||
/*
|
||||
* build reference picture list
|
||||
*/
|
||||
bool WelsBuildRefList (void* pEncCtx, const int32_t iPOC, int32_t iBestLtrRefIdx) {
|
||||
sWelsEncCtx* pCtx = (sWelsEncCtx*)pEncCtx;
|
||||
bool WelsBuildRefList (sWelsEncCtx* pCtx, const int32_t iPOC, int32_t iBestLtrRefIdx) {
|
||||
SRefList* pRefList = pCtx->ppRefPicListExt[pCtx->uiDependencyId];
|
||||
SLTRState* pLtr = &pCtx->pLtr[pCtx->uiDependencyId];
|
||||
const int32_t kiNumRef = pCtx->pSvcParam->iNumRefFrame;
|
||||
@ -607,8 +603,7 @@ bool WelsBuildRefList (void* pEncCtx, const int32_t iPOC, int32_t iBestLtrRefIdx
|
||||
return (pCtx->iNumRef0 > 0 || pCtx->eSliceType == I_SLICE) ? (true) : (false);
|
||||
}
|
||||
|
||||
static void UpdateBlockStatic (void* pEncCtx) {
|
||||
sWelsEncCtx* pCtx = (sWelsEncCtx*)pEncCtx;
|
||||
static void UpdateBlockStatic (sWelsEncCtx* pCtx) {
|
||||
SVAAFrameInfoExt* pVaaExt = static_cast<SVAAFrameInfoExt*> (pCtx->pVaa);
|
||||
assert (pCtx->iNumRef0 == 1); //multi-ref is not support yet?
|
||||
for (int32_t idx = 0; idx < pCtx->iNumRef0; idx++) {
|
||||
@ -694,8 +689,7 @@ static inline void UpdateOriginalPicInfo (SPicture* pOrigPic, SPicture* pReconPi
|
||||
pOrigPic->iFrameAverageQp = pReconPic->iFrameAverageQp;
|
||||
}
|
||||
|
||||
static void UpdateSrcPicListLosslessScreenRefSelectionWithLtr (void* pEncCtx) {
|
||||
sWelsEncCtx* pCtx = (sWelsEncCtx*)pEncCtx;
|
||||
static void UpdateSrcPicListLosslessScreenRefSelectionWithLtr (sWelsEncCtx* pCtx) {
|
||||
int32_t iDIdx = pCtx->uiDependencyId;
|
||||
//update info in src list
|
||||
UpdateOriginalPicInfo (pCtx->pEncPic, pCtx->pDecPic);
|
||||
@ -704,8 +698,7 @@ static void UpdateSrcPicListLosslessScreenRefSelectionWithLtr (void* pEncCtx) {
|
||||
pCtx->ppRefPicListExt[iDIdx]->pLongRefList);
|
||||
}
|
||||
|
||||
static void UpdateSrcPicList (void* pEncCtx) {
|
||||
sWelsEncCtx* pCtx = (sWelsEncCtx*)pEncCtx;
|
||||
static void UpdateSrcPicList (sWelsEncCtx* pCtx) {
|
||||
int32_t iDIdx = pCtx->uiDependencyId;
|
||||
//update info in src list
|
||||
UpdateOriginalPicInfo (pCtx->pEncPic, pCtx->pDecPic);
|
||||
@ -714,8 +707,7 @@ static void UpdateSrcPicList (void* pEncCtx) {
|
||||
pCtx->ppRefPicListExt[iDIdx]->uiShortRefCount);
|
||||
}
|
||||
|
||||
bool WelsUpdateRefListScreen (void* pEncCtx) {
|
||||
sWelsEncCtx* pCtx = (sWelsEncCtx*)pEncCtx;
|
||||
bool WelsUpdateRefListScreen (sWelsEncCtx* pCtx) {
|
||||
SRefList* pRefList = pCtx->ppRefPicListExt[pCtx->uiDependencyId];
|
||||
SLTRState* pLtr = &pCtx->pLtr[pCtx->uiDependencyId];
|
||||
SSpatialLayerInternal* pParamD = &pCtx->pSvcParam->sDependencyLayers[pCtx->uiDependencyId];
|
||||
@ -763,8 +755,7 @@ bool WelsUpdateRefListScreen (void* pEncCtx) {
|
||||
pCtx->pFuncList->pEndofUpdateRefList (pCtx);
|
||||
return true;
|
||||
}
|
||||
bool WelsBuildRefListScreen (void* pEncCtx, const int32_t iPOC, int32_t iBestLtrRefIdx) {
|
||||
sWelsEncCtx* pCtx = (sWelsEncCtx*)pEncCtx;
|
||||
bool WelsBuildRefListScreen (sWelsEncCtx* pCtx, const int32_t iPOC, int32_t iBestLtrRefIdx) {
|
||||
SRefList* pRefList = pCtx->ppRefPicListExt[pCtx->uiDependencyId];
|
||||
SWelsSvcCodingParam* pParam = pCtx->pSvcParam;
|
||||
SVAAFrameInfoExt* pVaaExt = static_cast<SVAAFrameInfoExt*> (pCtx->pVaa);
|
||||
@ -847,9 +838,8 @@ static inline bool IsValidFrameNum (const int32_t kiFrameNum) {
|
||||
return (kiFrameNum < (1 << 30)); // TODO: use the original judge first, may be improved
|
||||
}
|
||||
|
||||
void WelsMarkPicScreen (void* pEncCtx) {
|
||||
void WelsMarkPicScreen (sWelsEncCtx* pCtx) {
|
||||
#define STR_ROOM 1
|
||||
sWelsEncCtx* pCtx = (sWelsEncCtx*)pEncCtx;
|
||||
SLTRState* pLtr = &pCtx->pLtr[pCtx->uiDependencyId];
|
||||
int32_t iMaxTid = WELS_LOG2 (pCtx->pSvcParam->uiGopSize);
|
||||
int32_t iMaxActualLtrIdx = -1;
|
||||
@ -942,7 +932,7 @@ void WelsMarkPicScreen (void* pEncCtx) {
|
||||
return;
|
||||
}
|
||||
|
||||
void DoNothing (void* pointer) {
|
||||
void DoNothing (sWelsEncCtx* pointer) {
|
||||
}
|
||||
|
||||
void InitRefListMgrFunc (SWelsFuncPtrList* pFuncList, const bool bWithLtr, const bool bScreenContent) {
|
||||
|
@ -415,10 +415,8 @@ int32_t WelsMdI16x16 (SWelsFuncPtrList* pFunc, SDqLayer* pCurDqLayer, SMbCache*
|
||||
pMbCache->uiLumaI16x16Mode = iBestMode;
|
||||
return iBestCost;
|
||||
}
|
||||
int32_t WelsMdI4x4 (void* pEnc, void* pMd, SMB* pCurMb, SMbCache* pMbCache) {
|
||||
sWelsEncCtx* pEncCtx = (sWelsEncCtx*)pEnc;
|
||||
int32_t WelsMdI4x4 (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SMB* pCurMb, SMbCache* pMbCache) {
|
||||
SWelsFuncPtrList* pFunc = pEncCtx->pFuncList;
|
||||
SWelsMD* pWelsMd = (SWelsMD*)pMd;
|
||||
SDqLayer* pCurDqLayer = pEncCtx->pCurDqLayer;
|
||||
int32_t iLambda = pWelsMd->iLambda;
|
||||
int32_t iBestCostLuma = pWelsMd->iCostLuma;
|
||||
@ -547,10 +545,8 @@ int32_t WelsMdI4x4 (void* pEnc, void* pMd, SMB* pCurMb, SMbCache* pMbCache) {
|
||||
return iCosti4x4;
|
||||
}
|
||||
|
||||
int32_t WelsMdI4x4Fast (void* pEnc, void* pMd, SMB* pCurMb, SMbCache* pMbCache) {
|
||||
sWelsEncCtx* pEncCtx = (sWelsEncCtx*)pEnc;
|
||||
int32_t WelsMdI4x4Fast (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SMB* pCurMb, SMbCache* pMbCache) {
|
||||
SWelsFuncPtrList* pFunc = pEncCtx->pFuncList;
|
||||
SWelsMD* pWelsMd = (SWelsMD*)pMd;
|
||||
SDqLayer* pCurDqLayer = pEncCtx->pCurDqLayer;
|
||||
int32_t iLambda = pWelsMd->iLambda;
|
||||
int32_t iBestCostLuma = pWelsMd->iCostLuma;
|
||||
@ -933,10 +929,7 @@ int32_t WelsMdIntraChroma (SWelsFuncPtrList* pFunc, SDqLayer* pCurDqLayer, SMbCa
|
||||
pMbCache->uiChmaI8x8Mode = iBestMode;
|
||||
return iBestCost;
|
||||
}
|
||||
int32_t WelsMdIntraFinePartition (void* pEnc, void* pMd, SMB* pCurMb, SMbCache* pMbCache) {
|
||||
sWelsEncCtx* pEncCtx = (sWelsEncCtx*)pEnc;
|
||||
SWelsMD* pWelsMd = (SWelsMD*)pMd;
|
||||
|
||||
int32_t WelsMdIntraFinePartition (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SMB* pCurMb, SMbCache* pMbCache) {
|
||||
int32_t iCosti4x4 = WelsMdI4x4 (pEncCtx, pWelsMd, pCurMb, pMbCache);
|
||||
|
||||
if (iCosti4x4 < pWelsMd->iCostLuma) {
|
||||
@ -946,9 +939,7 @@ int32_t WelsMdIntraFinePartition (void* pEnc, void* pMd, SMB* pCurMb, SMbCache*
|
||||
return pWelsMd->iCostLuma;
|
||||
}
|
||||
|
||||
int32_t WelsMdIntraFinePartitionVaa (void* pEnc, void* pMd, SMB* pCurMb, SMbCache* pMbCache) {
|
||||
sWelsEncCtx* pEncCtx = (sWelsEncCtx*)pEnc;
|
||||
SWelsMD* pWelsMd = (SWelsMD*)pMd;
|
||||
int32_t WelsMdIntraFinePartitionVaa (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SMB* pCurMb, SMbCache* pMbCache) {
|
||||
|
||||
if (MdIntraAnalysisVaaInfo (pEncCtx, pMbCache->SPicData.pEncMb[0])) {
|
||||
int32_t iCosti4x4 = WelsMdI4x4Fast (pEncCtx, pWelsMd, pCurMb, pMbCache);
|
||||
@ -1126,10 +1117,7 @@ int32_t WelsMdP8x8 (SWelsFuncPtrList* pFunc, SDqLayer* pCurDqLayer, SWelsMD* pWe
|
||||
return iCostP8x8;
|
||||
}
|
||||
|
||||
void WelsMdInterFinePartition (void* pEnc, void* pMd, SSlice* pSlice, SMB* pCurMb, int32_t iBestCost) {
|
||||
sWelsEncCtx* pEncCtx = (sWelsEncCtx*)pEnc;
|
||||
SWelsMD* pWelsMd = (SWelsMD*)pMd;
|
||||
|
||||
void WelsMdInterFinePartition (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SSlice* pSlice, SMB* pCurMb, int32_t iBestCost) {
|
||||
SDqLayer* pCurDqLayer = pEncCtx->pCurDqLayer;
|
||||
// SMbCache *pMbCache = &pSlice->sMbCacheInfo;
|
||||
int32_t iCost = 0;
|
||||
@ -1160,10 +1148,7 @@ void WelsMdInterFinePartition (void* pEnc, void* pMd, SSlice* pSlice, SMB* pCurM
|
||||
}
|
||||
}
|
||||
|
||||
void WelsMdInterFinePartitionVaa (void* pEnc, void* pMd, SSlice* pSlice, SMB* pCurMb, int32_t iBestCost) {
|
||||
sWelsEncCtx* pEncCtx = (sWelsEncCtx*)pEnc;
|
||||
SWelsMD* pWelsMd = (SWelsMD*)pMd;
|
||||
|
||||
void WelsMdInterFinePartitionVaa (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SSlice* pSlice, SMB* pCurMb, int32_t iBestCost) {
|
||||
SDqLayer* pCurDqLayer = pEncCtx->pCurDqLayer;
|
||||
// SMbCache *pMbCache = &pSlice->sMbCacheInfo;
|
||||
int32_t iCostP8x16, iCostP16x8, iCostP8x8;
|
||||
@ -1242,11 +1227,9 @@ inline void VaaBackgroundMbDataUpdate (SWelsFuncPtrList* pFunc, SVAAFrameInfo* p
|
||||
pFunc->pfCopy8x8Aligned (pVaaInfo->pCurV + kiOffsetUV, kiPicStrideUV, pVaaInfo->pRefV + kiOffsetUV, kiPicStrideUV);
|
||||
}
|
||||
|
||||
void WelsMdBackgroundMbEnc (void* pEnc, void* pMd, SMB* pCurMb, SMbCache* pMbCache, SSlice* pSlice,
|
||||
void WelsMdBackgroundMbEnc (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SMB* pCurMb, SMbCache* pMbCache, SSlice* pSlice,
|
||||
bool bSkipMbFlag) {
|
||||
sWelsEncCtx* pEncCtx = (sWelsEncCtx*)pEnc;
|
||||
SDqLayer* pCurDqLayer = pEncCtx->pCurDqLayer;
|
||||
SWelsMD* pWelsMd = (SWelsMD*)pMd;
|
||||
SWelsFuncPtrList* pFunc = pEncCtx->pFuncList;
|
||||
SMVUnitXY sMvp = { 0 };
|
||||
uint8_t* pRefLuma = pMbCache->SPicData.pRefMb[0];
|
||||
@ -1315,10 +1298,8 @@ void WelsMdBackgroundMbEnc (void* pEnc, void* pMd, SMB* pCurMb, SMbCache* pMbCac
|
||||
pFunc->pfCopy8x8Aligned (pMbCache->SPicData.pCsMb[2], pCurDqLayer->iCsStride[1], pMbCache->pMemPredChroma + 64, 8);
|
||||
}
|
||||
|
||||
bool WelsMdPSkipEnc (void* pEnc, void* pMd, SMB* pCurMb, SMbCache* pMbCache) {
|
||||
sWelsEncCtx* pEncCtx = (sWelsEncCtx*)pEnc;
|
||||
bool WelsMdPSkipEnc (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SMB* pCurMb, SMbCache* pMbCache) {
|
||||
SDqLayer* pCurLayer = pEncCtx->pCurDqLayer;
|
||||
SWelsMD* pWelsMd = (SWelsMD*)pMd;
|
||||
SWelsFuncPtrList* pFunc = pEncCtx->pFuncList;
|
||||
|
||||
uint8_t* pRefLuma = pMbCache->SPicData.pRefMb[0];
|
||||
@ -1594,10 +1575,8 @@ void WelsMdInterMbRefinement (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SMB* pCurM
|
||||
pWelsMd->iCostLuma = iBestSatdCost;
|
||||
|
||||
}
|
||||
bool WelsMdFirstIntraMode (void* pEnc, void* pMd, SMB* pCurMb, SMbCache* pMbCache) {
|
||||
sWelsEncCtx* pEncCtx = (sWelsEncCtx*)pEnc;
|
||||
bool WelsMdFirstIntraMode (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SMB* pCurMb, SMbCache* pMbCache) {
|
||||
SWelsFuncPtrList* pFunc = pEncCtx->pFuncList;
|
||||
SWelsMD* pWelsMd = (SWelsMD*)pMd;
|
||||
|
||||
int32_t iCostI16x16 = WelsMdI16x16 (pFunc, pEncCtx->pCurDqLayer, pMbCache, pWelsMd->iLambda);
|
||||
|
||||
@ -1625,9 +1604,7 @@ bool WelsMdFirstIntraMode (void* pEnc, void* pMd, SMB* pCurMb, SMbCache* pMbCach
|
||||
return false;
|
||||
}
|
||||
|
||||
void WelsMdInterMb (void* pEnc, void* pMd, SSlice* pSlice, SMB* pCurMb, SMbCache* pUnused) {
|
||||
sWelsEncCtx* pEncCtx = (sWelsEncCtx*)pEnc;
|
||||
SWelsMD* pWelsMd = (SWelsMD*)pMd;
|
||||
void WelsMdInterMb (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SSlice* pSlice, SMB* pCurMb, SMbCache* pUnused) {
|
||||
SDqLayer* pCurDqLayer = pEncCtx->pCurDqLayer;
|
||||
SMbCache* pMbCache = &pSlice->sMbCacheInfo;
|
||||
const uint32_t kuiNeighborAvail = pCurMb->uiNeighborAvail;
|
||||
|
@ -106,8 +106,7 @@ void WelsMdSpatialelInterMbIlfmdNoilp (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, S
|
||||
|
||||
|
||||
|
||||
void WelsMdInterMbEnhancelayer (void* pEnc, void* pMd, SSlice* pSlice, SMB* pCurMb, SMbCache* pMbCache) {
|
||||
sWelsEncCtx* pEncCtx = (sWelsEncCtx*)pEnc;
|
||||
void WelsMdInterMbEnhancelayer (sWelsEncCtx* pEncCtx, SWelsMD* pMd, SSlice* pSlice, SMB* pCurMb, SMbCache* pMbCache) {
|
||||
SDqLayer* pCurLayer = pEncCtx->pCurDqLayer;
|
||||
SWelsMD* pWelsMd = (SWelsMD*)pMd;
|
||||
const SMB* kpInterLayerRefMb = GetRefMb (pCurLayer, pCurMb);
|
||||
@ -215,11 +214,8 @@ bool CheckChromaCost (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SMbCache* pMbCache
|
||||
}
|
||||
|
||||
//01/17/2013. USE the NEW BGD Pskip with COLOR CHECK for screen content and camera because of color artifact seen in test
|
||||
bool WelsMdInterJudgeBGDPskip (void* pCtx, void* pMd, SSlice* pSlice, SMB* pCurMb, SMbCache* pMbCache,
|
||||
bool WelsMdInterJudgeBGDPskip (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SSlice* pSlice, SMB* pCurMb, SMbCache* pMbCache,
|
||||
bool* bKeepSkip) {
|
||||
sWelsEncCtx* pEncCtx = (sWelsEncCtx*)pCtx;
|
||||
SWelsMD* pWelsMd = (SWelsMD*)pMd;
|
||||
|
||||
SDqLayer* pCurDqLayer = pEncCtx->pCurDqLayer;
|
||||
|
||||
const int32_t kiRefMbQp = pCurDqLayer->pRefPic->pRefMbQp[pCurMb->iMbXY];
|
||||
@ -259,7 +255,7 @@ bool WelsMdInterJudgeBGDPskip (void* pCtx, void* pMd, SSlice* pSlice, SMB* pCurM
|
||||
return false;
|
||||
}
|
||||
|
||||
bool WelsMdInterJudgeBGDPskipFalse (void* pCtx, void* pMd, SSlice* pSlice, SMB* pCurMb, SMbCache* pMbCache,
|
||||
bool WelsMdInterJudgeBGDPskipFalse (sWelsEncCtx* pCtx, SWelsMD* pMd, SSlice* pSlice, SMB* pCurMb, SMbCache* pMbCache,
|
||||
bool* bKeepSkip) {
|
||||
return false;
|
||||
}
|
||||
@ -498,10 +494,8 @@ bool MdInterSCDPskipProcess (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SSlice* pSl
|
||||
return false;
|
||||
}
|
||||
|
||||
void SetBlockStaticIdcToMd (void* pVaa, void* pMd, SMB* pCurMb, void* pDqLay) {
|
||||
void SetBlockStaticIdcToMd (void* pVaa, SWelsMD* pWelsMd, SMB* pCurMb, SDqLayer* pDqLayer) {
|
||||
SVAAFrameInfoExt_t* pVaaExt = static_cast<SVAAFrameInfoExt_t*> (pVaa);
|
||||
SWelsMD* pWelsMd = static_cast<SWelsMD*> (pMd);
|
||||
SDqLayer* pDqLayer = static_cast<SDqLayer*> (pDqLay);
|
||||
|
||||
const int32_t kiMbX = pCurMb->iMbX;
|
||||
const int32_t kiMbY = pCurMb->iMbY;
|
||||
@ -522,9 +516,7 @@ void SetBlockStaticIdcToMd (void* pVaa, void* pMd, SMB* pCurMb, void* pDqLay) {
|
||||
///////////////////////
|
||||
// Scene Change Detection (SCD) PSkip Decision for screen content
|
||||
////////////////////////
|
||||
bool WelsMdInterJudgeSCDPskip (void* pCtx, void* pMd, SSlice* slice, SMB* pCurMb, SMbCache* pMbCache) {
|
||||
sWelsEncCtx* pEncCtx = (sWelsEncCtx*)pCtx;
|
||||
SWelsMD* pWelsMd = (SWelsMD*)pMd;
|
||||
bool WelsMdInterJudgeSCDPskip (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SSlice* slice, SMB* pCurMb, SMbCache* pMbCache) {
|
||||
SDqLayer* pCurDqLayer = pEncCtx->pCurDqLayer;
|
||||
|
||||
SetBlockStaticIdcToMd (pEncCtx->pVaa, pWelsMd, pCurMb, pCurDqLayer);
|
||||
@ -541,7 +533,7 @@ bool WelsMdInterJudgeSCDPskip (void* pCtx, void* pMd, SSlice* slice, SMB* pCurMb
|
||||
|
||||
return false;
|
||||
}
|
||||
bool WelsMdInterJudgeSCDPskipFalse (void* pEncCtx, void* pWelsMd, SSlice* slice, SMB* pCurMb, SMbCache* pMbCache) {
|
||||
bool WelsMdInterJudgeSCDPskipFalse (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SSlice* slice, SMB* pCurMb, SMbCache* pMbCache) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -615,9 +607,7 @@ bool TryModeMerge (SMbCache* pMbCache, SWelsMD* pWelsMd, SMB* pCurMb) {
|
||||
}
|
||||
|
||||
|
||||
void WelsMdInterFinePartitionVaaOnScreen (void* pEnc, void* pMd, SSlice* pSlice, SMB* pCurMb, int32_t iBestCost) {
|
||||
sWelsEncCtx* pEncCtx = (sWelsEncCtx*)pEnc;
|
||||
SWelsMD* pWelsMd = (SWelsMD*)pMd;
|
||||
void WelsMdInterFinePartitionVaaOnScreen (sWelsEncCtx* pEncCtx, SWelsMD* pWelsMd, SSlice* pSlice, SMB* pCurMb, int32_t iBestCost) {
|
||||
SMbCache* pMbCache = &pSlice->sMbCacheInfo;
|
||||
SDqLayer* pCurDqLayer = pEncCtx->pCurDqLayer;
|
||||
int32_t iCostP8x8;
|
||||
@ -644,9 +634,8 @@ void WelsMdInterFinePartitionVaaOnScreen (void* pEnc, void* pMd, SSlice* pSlice,
|
||||
//
|
||||
// SetScrollingMvToMd
|
||||
//
|
||||
void SetScrollingMvToMd (void* pVaa, void* pMd) {
|
||||
void SetScrollingMvToMd (SVAAFrameInfo* pVaa, SWelsMD* pWelsMd) {
|
||||
SVAAFrameInfoExt* pVaaExt = static_cast<SVAAFrameInfoExt*> (pVaa);
|
||||
SWelsMD* pWelsMd = static_cast<SWelsMD*> (pMd);
|
||||
|
||||
SMVUnitXY sTempMv;
|
||||
sTempMv.iMvX = pVaaExt->sScrollDetectInfo.iScrollMvX;
|
||||
@ -659,7 +648,7 @@ void SetScrollingMvToMd (void* pVaa, void* pMd) {
|
||||
(pWelsMd->sMe.sMe8x8[3]).sDirectionalMv = sTempMv;
|
||||
}
|
||||
|
||||
void SetScrollingMvToMdNull (void* pVaa, void* pWelsMd) {
|
||||
void SetScrollingMvToMdNull (SVAAFrameInfo* pVaa, SWelsMD* pWelsMd) {
|
||||
}
|
||||
|
||||
} // namespace WelsEnc
|
||||
|
@ -159,10 +159,7 @@ void WelsInitMeFunc (SWelsFuncPtrList* pFuncList, uint32_t uiCpuFlag, bool bScre
|
||||
* \return NONE
|
||||
*/
|
||||
|
||||
void WelsMotionEstimateSearch (SWelsFuncPtrList* pFuncList, void* pLplayer, void* pLpme, void* pLpslice) {
|
||||
SDqLayer* pCurDqLayer = (SDqLayer*)pLplayer;
|
||||
SWelsME* pMe = (SWelsME*)pLpme;
|
||||
SSlice* pSlice = (SSlice*)pLpslice;
|
||||
void WelsMotionEstimateSearch (SWelsFuncPtrList* pFuncList, SDqLayer* pCurDqLayer, SWelsME* pMe, SSlice* pSlice) {
|
||||
const int32_t kiStrideEnc = pCurDqLayer->iEncStride[0];
|
||||
const int32_t kiStrideRef = pCurDqLayer->pRefPic->iLineSize[0];
|
||||
|
||||
@ -176,9 +173,7 @@ void WelsMotionEstimateSearch (SWelsFuncPtrList* pFuncList, void* pLplayer, void
|
||||
kiStrideRef);
|
||||
}
|
||||
|
||||
void WelsMotionEstimateSearchStatic (SWelsFuncPtrList* pFuncList, void* pLplayer, void* pLpme, void* pLpslice) {
|
||||
SDqLayer* pCurDqLayer = (SDqLayer*)pLplayer;
|
||||
SWelsME* pMe = (SWelsME*)pLpme;
|
||||
void WelsMotionEstimateSearchStatic (SWelsFuncPtrList* pFuncList, SDqLayer* pCurDqLayer, SWelsME* pMe, SSlice* pLpslice) {
|
||||
const int32_t kiStrideEnc = pCurDqLayer->iEncStride[0];
|
||||
const int32_t kiStrideRef = pCurDqLayer->pRefPic->iLineSize[0];
|
||||
|
||||
@ -191,9 +186,7 @@ void WelsMotionEstimateSearchStatic (SWelsFuncPtrList* pFuncList, void* pLplayer
|
||||
kiStrideRef);
|
||||
}
|
||||
|
||||
void WelsMotionEstimateSearchScrolled (SWelsFuncPtrList* pFuncList, void* pLplayer, void* pLpme, void* pLpslice) {
|
||||
SDqLayer* pCurDqLayer = (SDqLayer*)pLplayer;
|
||||
SWelsME* pMe = (SWelsME*)pLpme;
|
||||
void WelsMotionEstimateSearchScrolled (SWelsFuncPtrList* pFuncList, SDqLayer* pCurDqLayer, SWelsME* pMe, SSlice* pSlice) {
|
||||
const int32_t kiStrideEnc = pCurDqLayer->iEncStride[0];
|
||||
const int32_t kiStrideRef = pCurDqLayer->pRefPic->iLineSize[0];
|
||||
|
||||
@ -280,14 +273,13 @@ bool WelsMotionEstimateInitialPoint (SWelsFuncPtrList* pFuncList, SWelsME* pMe,
|
||||
return false;
|
||||
}
|
||||
|
||||
void CalculateSatdCost (PSampleSadSatdCostFunc pSatd, void* vpMe,
|
||||
void CalculateSatdCost (PSampleSadSatdCostFunc pSatd, SWelsME* pMe,
|
||||
const int32_t kiEncStride, const int32_t kiRefStride) {
|
||||
SWelsME* pMe = static_cast<SWelsME*> (vpMe);
|
||||
pMe->uSadPredISatd.uiSatd = pSatd (pMe->pEncMb, kiEncStride, pMe->pRefMb, kiRefStride);
|
||||
pMe->uiSatdCost = pMe->uSadPredISatd.uiSatd + COST_MVD (pMe->pMvdCost, pMe->sMv.iMvX - pMe->sMvp.iMvX,
|
||||
pMe->sMv.iMvY - pMe->sMvp.iMvY);
|
||||
}
|
||||
void NotCalculateSatdCost (PSampleSadSatdCostFunc pSatd, void* vpMe,
|
||||
void NotCalculateSatdCost (PSampleSadSatdCostFunc pSatd, SWelsME* pMe,
|
||||
const int32_t kiEncStride, const int32_t kiRefStride) {
|
||||
}
|
||||
|
||||
@ -380,10 +372,9 @@ void WelsDiamondSearch (SWelsFuncPtrList* pFuncList, SWelsME* pMe, SSlice* pSlic
|
||||
/////////////////////////
|
||||
// DirectionalMv Basics
|
||||
/////////////////////////
|
||||
bool CheckDirectionalMv (PSampleSadSatdCostFunc pSad, void* vpMe,
|
||||
bool CheckDirectionalMv (PSampleSadSatdCostFunc pSad, SWelsME* pMe,
|
||||
const SMVUnitXY ksMinMv, const SMVUnitXY ksMaxMv, const int32_t kiEncStride, const int32_t kiRefStride,
|
||||
int32_t& iBestSadCost) {
|
||||
SWelsME* pMe = static_cast<SWelsME*> (vpMe);
|
||||
const int16_t kiMvX = pMe->sDirectionalMv.iMvX;
|
||||
const int16_t kiMvY = pMe->sDirectionalMv.iMvY;
|
||||
|
||||
@ -402,7 +393,7 @@ bool CheckDirectionalMv (PSampleSadSatdCostFunc pSad, void* vpMe,
|
||||
return false;
|
||||
}
|
||||
|
||||
bool CheckDirectionalMvFalse (PSampleSadSatdCostFunc pSad, void* vpMe,
|
||||
bool CheckDirectionalMvFalse (PSampleSadSatdCostFunc pSad, SWelsME* vpMe,
|
||||
const SMVUnitXY ksMinMv, const SMVUnitXY ksMaxMv, const int32_t kiEncStride, const int32_t kiRefStride,
|
||||
int32_t& iBestSadCost) {
|
||||
return false;
|
||||
|
@ -575,8 +575,7 @@ void WelsInitSliceCabac (sWelsEncCtx* pEncCtx, SSlice* pSlice) {
|
||||
WelsCabacEncodeInit (&pSlice->sCabacCtx, pBs->pBufPtr, pBs->pBufEnd);
|
||||
}
|
||||
|
||||
int32_t WelsSpatialWriteMbSynCabac (void* pCtx, SSlice* pSlice, SMB* pCurMb) {
|
||||
sWelsEncCtx* pEncCtx = (sWelsEncCtx*)pCtx;
|
||||
int32_t WelsSpatialWriteMbSynCabac (sWelsEncCtx* pEncCtx, SSlice* pSlice, SMB* pCurMb) {
|
||||
SCabacCtx* pCabacCtx = &pSlice->sCabacCtx;
|
||||
SMbCache* pMbCache = &pSlice->sMbCacheInfo;
|
||||
const uint16_t uiMbType = pCurMb->uiMbType;
|
||||
|
@ -220,8 +220,7 @@ int32_t CheckBitstreamBuffer (const uint32_t kuiSliceIdx, sWelsEncCtx* pEncCtx,
|
||||
}
|
||||
|
||||
//============================Base Layer CAVLC Writing===============================
|
||||
int32_t WelsSpatialWriteMbSyn (void* pCtx, SSlice* pSlice, SMB* pCurMb) {
|
||||
sWelsEncCtx* pEncCtx = (sWelsEncCtx*)pCtx;
|
||||
int32_t WelsSpatialWriteMbSyn (sWelsEncCtx* pEncCtx, SSlice* pSlice, SMB* pCurMb) {
|
||||
SBitStringAux* pBs = pSlice->pSliceBsa;
|
||||
SMbCache* pMbCache = &pSlice->sMbCacheInfo;
|
||||
const uint8_t kuiChromaQpIndexOffset = pEncCtx->pCurDqLayer->sLayerInfo.pPpsP->uiChromaQpIndexOffset;
|
||||
|
Loading…
Reference in New Issue
Block a user