📄 vopses.hpp
字号:
CoordI x, CoordI y,
Bool bSkipNonOBMC,
Bool bAlphaMB,
CRct *prctMVLimit
);
Void motionComp (
PixelC* ppxlcPred, // can be either Y or A
const PixelC* ppxlcRefLeftTop,
Int iSize, // either MB or BLOCK size
CoordI xRef, CoordI yRef, // x + mvX, in half pel unit
Int iRoundingControl,
CRct *prctMVLimit
);
// QuarterSample, mwi
Void motionCompQuarterSample (
PixelC* ppxlcPred, // can be either Y or A
const PixelC* ppxlcRefLeftTop, // point to left-top of the frame
Int iSize, // either MB or BLOCK size
CoordI xRef, CoordI yRef, // x + mvX in quarter pel unit
Int iRoundingControl,
CRct *prctMVLimit // extended bounding box
);
// ~QuarterSample, mwi
Void motionCompUV (
PixelC* ppxlcPredMBU, PixelC* ppxlcPredMBV,
const CVOPU8YUVBA* pvopcRef,
CoordI x, CoordI y,
CoordI xRefUV, CoordI yRefUV, Int iRoundingControl,
CRct *prctMVLimit
);
// INTERLACE
Void motionCompFieldUV (PixelC* ppxlcPredMBU, PixelC* ppxlcPredMBV,
const CVOPU8YUVBA* pvopcRef,CoordI x, CoordI y,
CoordI xRefUV, CoordI yRefUV, Int iRefFieldSelect,
CRct *prctMVLimit); // added by Y.Suzuki for the extended bounding box support
Void motionCompYField ( PixelC* ppxlcPred, const PixelC* ppxlcRefLeftTop,
CoordI xRef, CoordI yRef,
CRct *prctMVLimit); // added by Y.Suzuki for the extended bounding box support
Void motionCompDirectMode(CoordI x, CoordI y, CMBMode *pmbmd, const CMotionVector *pmvRef,
CRct *prctMVLimitFwd, CRct *prctMVLimitBak, Int plane);
Void motionCompOneBVOPReference(CVOPU8YUVBA *pvopcPred, MBType type, CoordI x, CoordI y,
const CMBMode *pmbmd, const CMotionVector *pmv, CRct *prctMVLimit);
// ~INTERLACE
Void motionCompOverLap (
PixelC* ppxlcPredMB,
const PixelC* ppxlcRefLeftTop,
const CMotionVector* pmv, // motion vector
const CMBMode* pmbmd, // macroblk mode
Int imbx, // current macroblk index
Int imby, // current macroblk index
CoordI x, // current coordinate system
CoordI y, // current coordinate system
CRct *prctMVLimit
);
Void motionCompBY (
PixelC* ppxlcPred,
const PixelC* ppxlcRefLeftTop,
CoordI iXRef, CoordI iYRef
);
// QuarterSample, mwi
Void blkInterpolateY (
const PixelC* ppxlcRefLeftTop,
// point to left-top of the frame
Int blkSize, // Blocksize (8,16)
Int xRef, Int yRef, // x + mvX in quarter pel unit
U8* ppxlcblk, // Pointer to quarter pel interpolated block
Int iRoundingControl
);
// ~QuarterSample, mwi
// B-VOP stuff
Void motionCompInterp (
const CMotionVector* pmvForward, const CMotionVector* pmvBackward,
CoordI x, CoordI y
);
Void bilnrMCVH (UInt* PredY, const PixelC* ppxliPrevYC, UInt* pMWght, UInt xlow, UInt xhigh, UInt ylow, UInt yhigh, Bool bAdd);
Void bilnrMCV (UInt* PredY, const PixelC* ppxliPrevYC, UInt* pMWght, UInt xlow, UInt xhigh, UInt ylow, UInt yhigh, Bool bAdd);
Void bilnrMCH (UInt* PredY, const PixelC* ppxliPrevYC, UInt* pMWght, UInt xlow, UInt xhigh, UInt ylow, UInt yhigh, Bool bAdd);
Void bilnrMC (UInt* PredY, const PixelC* ppxliPrevYC, UInt* pMWght, UInt xlow, UInt xhigh, UInt ylow, UInt yhigh, Bool bAdd);
Void assignPredToCurrQ (PixelC* ppxlcRefMBY, PixelC* ppxlcRefMBU, PixelC* ppxlcRefMBV);
Void assignAlphaPredToCurrQ (PixelC* ppxlcRefMBA, Int iAuxComp);
Void copyFromRefToCurrQ ( // zero motion case
const CVOPU8YUVBA* pvopcRef, // reference VOP
CoordI x, CoordI y,
PixelC* ppxlcCurrQMBY, PixelC* ppxlcCurrQMBU, PixelC* ppxlcCurrQMBV,
CRct *prctMVLimit
); // for non-obmc mode
Void copyFromRefToCurrQ_WithShape ( // zero motion case
const CVOPU8YUVBA* pvopcRef, // reference VOP
CoordI x, CoordI y,
PixelC* ppxlcCurrQMBY, PixelC* ppxlcCurrQMBU, PixelC* ppxlcCurrQMBV, PixelC* ppxlcCurrQMBBY
); // for non-obmc mode
Void copyAlphaFromRefToCurrQ (
const CVOPU8YUVBA* pvopcRef,
CoordI x, CoordI y,
PixelC** ppxlcCurrQMBA,
CRct *prctMVLimit
);
// MC padding
Void mcPadCurrMB (
PixelC* ppxlcRefMBY,
PixelC* ppxlcRefMBU, PixelC* ppxlcRefMBV,
PixelC** ppxlcRefMBA
);
Void mcPadCurr (
PixelC *ppxlcTextureBase, // (uiStride X ???)
const PixelC *ppxlcAlphaBase, // uiBlkSize X uiBlkSize
UInt uiBlkSize, UInt uiStride
);
Void padNeighborTranspMBs (
CoordI xb, CoordI yb,
CMBMode* pmbmd,
PixelC* ppxlcRefMBY, PixelC* ppxlcRefMBU, PixelC* ppxlcRefMBV,
PixelC** ppxlcRefMBA
);
Void padCurrAndTopTranspMBFromNeighbor (
CoordI xb, CoordI yb,
CMBMode* pmbmd,
PixelC* ppxlcRefMBY, PixelC* ppxlcRefMBU, PixelC* ppxlcRefMBV,
PixelC** ppxlcRefMBA
);
Void mcPadLeftMB (PixelC* ppxlcMBY, PixelC* ppxlcMBU, PixelC* ppxlcMBV, PixelC** pppxlcRefMBA);
Void mcPadTopMB (PixelC* ppxlcMBY, PixelC* ppxlcMBU, PixelC* ppxlcMBV, PixelC** pppxlcRefMBA);
Void mcPadCurrMBFromLeft (PixelC* ppxlcMBY, PixelC* ppxlcMBU, PixelC* ppxlcMBV, PixelC** pppxlcRefMBA);
Void mcPadCurrMBFromTop (PixelC* ppxlcMBY, PixelC* ppxlcMBU, PixelC* ppxlcMBV, PixelC** pppxlcRefMBA);
Void mcSetTopMBGray (PixelC* ppxlcMBY, PixelC* ppxlcMBU, PixelC* ppxlcMBV, PixelC** pppxlcRefMBA);
Void mcSetCurrMBGray (PixelC* ppxlcMBY, PixelC* ppxlcMBU, PixelC* ppxlcMBV, PixelC** pppxlcRefMBA);
Void mcSetLeftMBGray (PixelC* ppxlcMBY, PixelC* ppxlcMBU, PixelC* ppxlcMBV, PixelC** pppxlcRefMBA);
// Added for field based MC padding by Hyundai(1998-5-9)
Void fieldBasedMCPadding (
CMBMode* pmbmd,
CVOPU8YUVBA* pvopcCurrQ
);
Void mcPadCurrAndNeighborsMBFields (
Int iMBX,
Int iMBY,
CMBMode *pmbmd,
PixelC* ppxlcRefMBY,
PixelC* ppxlcRefMBU,
PixelC* ppxlcRefMBV,
PixelC* ppxlcRefMBBY,
PixelC* ppxlcRefMBBUV,
PixelC** pppxlcRefMBA
);
Void mcPadFieldsCurr (
Int iMBX,
Int iMBY,
CMBMode *pmbmd,
Int mode,
PixelC *ppxlcCurrMB1,
PixelC *ppxlcCurrMB2,
PixelC *ppxlcCurrMBB,
Int uiBlkXSize,
Int uiStride
);
Void mcPadOneField (
PixelC *ppxlcTextureBase,
const PixelC *ppxlcAlphaBase,
Int uiBlkXSize,
Int uiStride
);
Void padNeighborTranspMBFields (
CoordI xb,
CoordI yb,
CMBMode *pmbmd,
Int mode,
PixelC *ppxlcMBField1,
PixelC *ppxlcMBField2,
Int uiBlkXSize,
Int uiStride
);
Void padCurrAndTopTranspMBFieldsFromNeighbor (
CoordI xb,
CoordI yb,
CMBMode *pmbmd,
Int mode,
PixelC* ppxlcMBField1,
PixelC* ppxlcMBField2,
Int uiBlkXSize,
Int uiStride
);
Void mcPadLeftMBFields (
PixelC* ppxlcMBField1,
PixelC* ppxlcMBField2,
Int uiBlkXSize,
Int uiStride
);
Void mcPadTopMBFields (
PixelC* ppxlcMBField1,
PixelC* ppxlcMBField2,
Int uiBlkXSize,
Int uiStride
);
Void mcPadCurrMBFieldsFromLeft (
PixelC* ppxlcMBField1,
PixelC* ppxlcMBField2,
Int uiBlkXSize,
Int uiStride
);
Void mcPadCurrMBFieldsFromTop (
PixelC* ppxlcMBField1,
PixelC* ppxlcMBField2,
Int uiBlkXSize,
Int uiStride
);
Void mcSetTopMBFieldsGray (
PixelC* ppxlcMBField1,
PixelC* ppxlcMBField2,
Int uiBlkXSize,
Int uiStride
);
Void mcSetLeftMBFieldsGray (
PixelC* ppxlcMBField1,
PixelC* ppxlcMBField2,
Int uiBlkXSize,
Int uiStride
);
Void mcSetCurrMBFieldsGray (
PixelC* ppxlcMBField1,
PixelC* ppxlcMBField2,
Int uiBlkXSize,
Int uiStride
);
// End of Hyundai(1998-5-9)
// motion vector
Void find16x16MVpred (CVector& vctPred, const CMotionVector* pmv, Bool bLeftBndry, Bool bRightBndry, Bool bTopBndry) const;
Void find8x8MVpredAtBoundary (CVector& vctPred, const CMotionVector* pmv, Bool bLeftBndry, Bool bRightBndry, Bool bTopBndry, Int blknCurr) const;
Void find8x8MVpredInterior (CVector& vctPred, const CMotionVector* pmv, Int blknCurr) const;
Void findMVpredGeneric (CVector& vctPred, const CMotionVector* pmv, const CMBMode* pmbmd, Int iBlk, Int iXMB, Int iYMB) const;
Void findMVpredictorOfBVOP (CVector& vctPred, const CMotionVector* pmv, const CMBMode* pmbmd, Int iMBX) const; //for B-VOP only
Void mvLookupUV (const CMBMode* pmbmd, const CMotionVector* pmv, CoordI& xRefUV, CoordI& yRefUV,
CoordI& xRefUV1, CoordI& yRefUV1);
Void mvLookupUVWithShape (const CMBMode* pmbmd, const CMotionVector* pmv, CoordI& xRefUV, CoordI& yRefUV);
Bool validBlock (const CMBMode* pmbmdCurr, const CMBMode* pmbmd, Int blkn) const;
Void computeDirectDeltaMV (CVector& vctDiff, const CMotionVector* pmv, const CMotionVector* pmvRef, const CMBMode* pmbmdRef); //for B-VOP only
CVector averageOfRefMV (const CMotionVector* pmvRef, const CMBMode* pmbmdRef); //for B-VOP only
Void padMotionVectors(const CMBMode *pmbmd,CMotionVector *pmv);
Void backwardMVFromForwardMV ( //compute back mv from forward mv and ref mv for direct mode
CMotionVector& mvBackward, const CMotionVector& mvForward, const CMotionVector& mvRef,
CVector vctDirectDeltaMV);
// Added for error resilient mode by Toshiba(1997-11-14)
Bool bVPNoLeft(Int iMBnum, Int iMBX) const;
Bool bVPNoRightTop(Int iMBnum, Int iMBX) const;
Bool bVPNoTop(Int iMBnum) const;
Bool bVPNoLeftTop(Int iMBnum, Int iMBX) const;
//OBSS_SAIT_991015
Bool bVPNoRight(Int iMBX) const;
Bool bVPNoBottom(Int iMBY) const;
//~OBSS_SAIT_991015
Int VPMBnum(Int iMBX, Int iMBY) const;
// End Toshiba(1997-11-14)
// block level
Void inverseQuantizeIntraDc (Int* rgiCoefQ, Int iDcScaler);
Void inverseQuantizeDCTcoefH263 (Int* rgiCoefQ, Int iStart, Int iQP);
Void inverseQuantizeIntraDCTcoefMPEG (Int* rgiCoefQ, Int iStart, Int iQP, Bool bUseAlphaMatrix, Int iAuxComp);
Void inverseQuantizeInterDCTcoefMPEG (Int* rgiCoefQ, Int iStart, Int iQP, Bool bUseAlphaMatrix, Int iAuxComp);
const BlockMemory findPredictorBlock (
Int iBlk,
IntraPredDirection predDir,
const MacroBlockMemory* pmbmLeft,
const MacroBlockMemory* pmbmTop,
const MacroBlockMemory* pmbmLeftTop,
const MacroBlockMemory* pmbmCurr,
const CMBMode* pmbmdLeft,
const CMBMode* pmbmdTop,
const CMBMode* pmbmdLeftTop,
const CMBMode* pmbmdCurr,
Int& iQPpred
);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -