?? motioncompensation.h
字號:
RefFrameList& rcRefFrameList0,
RefFrameList& rcRefFrameList1,
IntYuvMbBuffer* pcRecBuffer,
Bool bCalcMv,
Bool bFaultTolerant );
#if JMVM_ONLY // JVT-W081
ErrVal compensateMbMotionSkip ( MbDataAccess& rcMbDataAccess,
YuvMbBuffer* pcRecBuffer,
Bool bFaultTolerant,
Bool bCalcMv = false );
ErrVal compensateMbMotionSkip ( MbDataAccess& rcMbDataAccess,
RefFrameList& rcRefFrameList0,
RefFrameList& rcRefFrameList1,
IntYuvMbBuffer* pcRecBuffer,
Bool bCalcMv );
#endif // JVT-W081
Void xAdjustResidualRefBlk ( XPel* piResidualRef,
UInt uiBlkWidth,
UInt uiBlkHeight,
Int iStride,
UChar* pucSigMap,
Bool bNonzeroBaseBlock,
Int iBcbpCtx,
UInt uiWeightZeroBlk,
UInt uiWeightZeroCoeff);
Void xAdjustResidualRefBlkSpatial ( XPel* piResidualRef,
UInt uiBlkWidth,
UInt uiBlkHeight,
Int iStride,
UInt uiWeightZeroBlk);
Void xAdjustResidualRefBlkFrequency ( XPel* piResidualRef,
UInt uiBlkWidth,
UInt uiBlkHeight,
Int iStride,
UChar* pucSigMap,
UInt uiWeightZeroCoeff);
Void xAdjustChromaResidualRefBlock ( XPel* piResidualRef,
Int iStride,
UChar* pusSigMap,
UInt uiWeightZeroCoeff);
ErrVal xCompensateMbAllModes ( MbDataAccess& rcMbDataAccess,
RefFrameList& rcRefFrameList0,
RefFrameList& rcRefFrameList1,
IntYuvMbBuffer* pcYuvMbBuffer);
ErrVal xAdjustMbResidual ( IntYuvMbBuffer& rcMbBufferDiff,
MbDataAccess* pcMbDataAccess,
FGSCoder* pcFGSCoder,
SliceHeader* pcSliceHeader );
ErrVal adaptiveMotionCompensationMb( IntYuvMbBuffer* pcMbBufferMC,
RefFrameList* pcRefFrameListDiff,
MbDataAccess* pcMbDataAccessMotion,
FGSCoder* pcFGSCoder );
ErrVal xAdaptiveMotionCompensation ( YuvBufferCtrl* pcYuvFullPelBufferCtrl,
IntFrame* pcMCFrame,
IntFrame* pcBaseFrame,
RefFrameList* pcRefFrameListBase,
MbDataCtrl* pcMbDataCtrl,
FGSCoder* pcFGSCoder,
SliceHeader* pcSliceHeader );
ErrVal loadAdaptiveRefPredictors ( YuvBufferCtrl* pcYuvFullPelBufferCtrl,
IntFrame* pcPredSignal,
IntFrame* pcBaseFrame,
RefFrameList* cRefListDiff,
MbDataCtrl* pcMbDataCtrl,
FGSCoder* pcFGSCoder,
SliceHeader* pcSliceHeader);
ErrVal updateMb(MbDataAccess& rcMbDataAccess,
IntFrame* pcMCFrame,
IntFrame* pcPrdFrame,
ListIdx eListPrd,
Int iRefIdx);
ErrVal updateSubMb( B8x8Idx c8x8Idx,
MbDataAccess& rcMbDataAccess,
IntFrame* pcMCFrame,
IntFrame* pcPrdFrame,
ListIdx eListPrd );
Void xUpdateMb8x8Mode( B8x8Idx c8x8Idx,
MbDataAccess& rcMbDataAccess,
IntFrame* pcMCFrame,
IntFrame* pcPrdFrame,
ListIdx eListPrd );
ErrVal updateDirectBlock( MbDataAccess& rcMbDataAccess,
IntFrame* pcMCFrame,
IntFrame* pcPrdFrame,
ListIdx eListPrd,
Int iRefIdx,
B8x8Idx c8x8Idx );
Void xUpdateBlk( IntFrame* pcPrdFrame, Int iSizeX, Int iSizeY, IntMC8x8D& rcMc8x8D );
Void xUpdateBlk( IntFrame* pcPrdFrame, Int iSizeX, Int iSizeY, IntMC8x8D& rcMc8x8D, SParIdx4x4 eSParIdx );
Void xUpdateLuma( IntFrame* pcPrdFrame, Int iSizeX, Int iSizeY, IntMC8x8D& rcMc8x8D, UShort *usWeight );
Void xUpdateLuma( IntFrame* pcPrdFrame, Int iSizeX, Int iSizeY, IntMC8x8D& rcMc8x8D, SParIdx4x4 eSParIdx, UShort *usWeight );
Void updateBlkAdapt( IntYuvPicBuffer* pcSrcBuffer, IntYuvPicBuffer* pcDesBuffer, LumaIdx cIdx, Mv cMv, Int iSizeY, Int iSizeX,
UShort *usWeight);
Void xUpdAdapt( XPel* pucDest, XPel* pucSrc, Int iDestStride, Int iSrcStride, Int iDx, Int iDy,
UInt uiSizeY, UInt uiSizeX, UShort weight, UShort wMax );
__inline Void xUpdateChroma( IntYuvPicBuffer* pcSrcBuffer, IntYuvPicBuffer* pcDesBuffer, LumaIdx cIdx, Mv cMv,
Int iSizeY, Int iSizeX, UShort *usWeight);
Void xUpdateChroma( IntFrame* pcSrcFrame, Int iSizeX, Int iSizeY, IntMC8x8D& rcMc8x8D, SParIdx4x4 eSParIdx, UShort *usWeight );
Void xUpdateChroma( IntFrame* pcSrcFrame, Int iSizeX, Int iSizeY, IntMC8x8D& rcMc8x8D, UShort *usWeight );
__inline Void xUpdateChromaPel( XPel* pucDest, Int iDestStride, XPel* pucSrc, Int iSrcStride, Mv cMv, Int iSizeY, Int iSizeX, UShort weight );
ErrVal calcMvMb ( MbDataAccess& rcMbDataAccess, MbDataAccess* pcMbDataAccessBase );
ErrVal calcMvSubMb( B8x8Idx c8x8Idx, MbDataAccess& rcMbDataAccess, MbDataAccess* pcMbDataAccessBase );
#if JMVM_ONLY // JVT-W081
ErrVal compensateDirectBlockMotionSkip( MbDataAccess& rcMbDataAccess, YuvMbBuffer *pcRecBuffer, B8x8Idx c8x8Idx, Bool& rbValid, Bool bFaultTolerant);
#endif // JVT-W081
ErrVal compensateDirectBlock( MbDataAccess& rcMbDataAccess, YuvMbBuffer *pcRecBuffer, B8x8Idx c8x8Idx, Bool& rbValid, Bool bFaultTolerant, Bool bCalcMv = true );
ErrVal compensateDirectBlock( MbDataAccess& rcMbDataAccess, IntYuvMbBuffer *pcRecBuffer, B8x8Idx c8x8Idx, RefFrameList& rcRefFrameListL0, RefFrameList& rcRefFrameListL1 );
ErrVal initMb( UInt uiMbY, UInt uiMbX);
protected:
Void xPredMb8x8Mode( MbDataAccess& rcMbDataAccess, YuvMbBuffer* pcRecBuffer );
Void xPredMb8x8Mode( B8x8Idx c8x8Idx, MbDataAccess& rcMbDataAccess, const IntFrame* pcRefFrame0, const IntFrame* pcRefFrame1, IntYuvMbBuffer* pcRecBuffer );
Void xPredLuma( YuvMbBuffer* pcRecBuffer, Int iSizeX, Int iSizeY, MC8x8D& rcMc8x8D );
Void xPredChroma( YuvMbBuffer* pcRecBuffer, Int iSizeX, Int iSizeY, MC8x8D& rcMc8x8D );
Void xPredLuma( YuvMbBuffer* apcTarBuffer[2], Int iSizeX, Int iSizeY, MC8x8D& rcMc8x8D, SParIdx4x4 eSParIdx );
Void xPredChroma( YuvMbBuffer* apcTarBuffer[2], Int iSizeX, Int iSizeY, MC8x8D& rcMc8x8D, SParIdx4x4 eSParIdx );
Void xPredLuma ( IntYuvMbBuffer* pcRecBuffer, Int iSizeX, Int iSizeY, IntMC8x8D& rcMc8x8D );
Void xPredLuma ( IntYuvMbBuffer* apcTarBuffer[2], Int iSizeX, Int iSizeY, IntMC8x8D& rcMc8x8D, SParIdx4x4 eSParIdx );
Void xPredChroma( IntYuvMbBuffer* pcRecBuffer, Int iSizeX, Int iSizeY, IntMC8x8D& rcMc8x8D );
Void xPredChroma( IntYuvMbBuffer* apcTarBuffer[2], Int iSizeX, Int iSizeY, IntMC8x8D& rcMc8x8D, SParIdx4x4 eSParIdx );
#if JMVM_ONLY // JVT-U052
Void xPredLuma( MbIcp cMbIcp, IntYuvMbBuffer* pcRecBuffer, Int iSizeX, Int iSizeY, IntMC8x8D& rcMc8x8D );
Void xPredLuma( MbIcp cMbIcp, YuvMbBuffer* pcRecBuffer, Int iSizeX, Int iSizeY, MC8x8D& rcMc8x8D );
Void xPredLuma( MbIcp cMbIcp, IntYuvMbBuffer* apcTarBuffer[2], Int iSizeX, Int iSizeY, IntMC8x8D& rcMc8x8D, SParIdx4x4 eSParIdx );
Void xPredLuma( MbIcp cMbIcp, YuvMbBuffer* apcTarBuffer[2], Int iSizeX, Int iSizeY, MC8x8D& rcMc8x8D, SParIdx4x4 eSParIdx );
Void xIcForPredLuma( MbIcp cMbIcp, IntYuvMbBuffer* pcDesBuffer, LumaIdx cIdx, Int iSizeY, Int iSizeX );
Void xIcForPredLuma( MbIcp cMbIcp, YuvMbBuffer* pcDesBuffer, LumaIdx cIdx, Int iSizeY, Int iSizeX );
Int xClip( bool bClip, Int iPel ) { return ( bClip ? gClip( iPel ) : iPel); };
Void xInverseDPCMIcp( MbDataAccess& rcMbDataAccess );
#endif
private:
__inline Void xGetMbPredData( MbDataAccess& rcMbDataAccess, MC8x8D& rcMC8x8D );
__inline Void xGetBlkPredData( MbDataAccess& rcMbDataAccess, MC8x8D& rcMC8x8D, BlkMode eBlkMode );
__inline Void xPredChromaPel( Pel* pucDest, Int iDestStride, Pel* pucSrc, Int iSrcStride, Mv cMv, Int iSizeY, Int iSizeX );
__inline Void xPredChroma( YuvMbBuffer* pcDesBuffer, YuvPicBuffer* pcSrcBuffer, LumaIdx cIdx, Mv cMv, Int iSizeY, Int iSizeX);
__inline Void xGetMbPredData ( MbDataAccess& rcMbDataAccess, const IntFrame* pcRefFrame, IntMC8x8D& rcMC8x8D );
__inline Void xGetBlkPredData ( MbDataAccess& rcMbDataAccess, const IntFrame* pcRefFrame, IntMC8x8D& rcMC8x8D, BlkMode eBlkMode );
__inline Void xPredChromaPel ( XPel* pucDest, Int iDestStride, XPel* pucSrc, Int iSrcStride, Mv cMv, Int iSizeY, Int iSizeX );
__inline Void xPredChroma ( IntYuvMbBuffer* pcDesBuffer, IntYuvPicBuffer* pcSrcBuffer, LumaIdx cIdx, Mv cMv, Int iSizeY, Int iSizeX);
__inline Void xGetMbPredData ( MbDataAccess& rcMbDataAccess, const IntFrame* pcRefFrame0, const IntFrame* pcRefFrame1, IntMC8x8D& rcMC8x8D );
__inline Void xGetBlkPredData ( MbDataAccess& rcMbDataAccess, const IntFrame* pcRefFrame0, const IntFrame* pcRefFrame1, IntMC8x8D& rcMC8x8D, BlkMode eBlkMode );
protected:
QuarterPelFilter* m_pcQuarterPelFilter;
Transform* m_pcTransform;
SampleWeighting* m_pcSampleWeighting;
Mv m_cMin;
Mv m_cMax;
UInt m_uiMbInFrameY;
UInt m_uiMbInFrameX;
int m_curMbX;
int m_curMbY;
};
#if defined( WIN32 )
# pragma warning( default: 4251 )
#endif
#define DMV_THRES 5
H264AVC_NAMESPACE_END
#endif // !defined(AFX_MOTIONCOMPENSATION_H__820D6942_007B_42EA_838B_AC025E866DBE__INCLUDED_)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -