📄 vopseenc.hpp
字号:
CoordI x, CoordI y, CMBMode *pmbmd, const CMBMode *pmbmdRef, const CMotionVector *pmvRef ); Int directSADField( CoordI x, CoordI y, CMBMode *pmbmd, const CMBMode *pmbmdRef, const CMotionVector *pmvRef, const PixelC* ppxlcRef0MBY, const PixelC* ppxlcRef1MBY ); // block level encoding Int quantizeIntraBlockTexture ( PixelC* ppxlcBlkSrc, Int iWidthSrc, PixelC* ppxlcCurrQBlock, Int iWidthCurrQ, Int* rgiCoefQ, Int iQP, Int iDcScaler, Int iBlk, MacroBlockMemory* pmbmLeft, MacroBlockMemory* pmbmTop, MacroBlockMemory* pmbmLeftTop, MacroBlockMemory* pmbmCurr, CMBMode* pmbmdLeft, CMBMode* pmbmdTop, CMBMode* pmbmdLeftTop, CMBMode* pmbmdCurr ); Void quantizeTextureInterBlock ( PixelI* ppxliCurrQBlock, Int iWidthCurrQ, Int* rgiCoefQ, Int iQP, Bool bUseAlphaMatrix ); Void quantizeIntraDCcoef (Int* rgiCoefQ, Float fltDcScaler); Void quantizeIntraDCTcoefH263 (Int* rgiCoefQ, Int iStart, Int iQP); Void quantizeInterDCTcoefH263 (Int* rgiCoefQ, Int iStart, Int iQP); Void quantizeIntraDCTcoefMPEG (Int* rgiCoefQ, Int iStart, Int iQP, Bool bUseAlphaMatrix); Void quantizeInterDCTcoefMPEG (Int* rgiCoefQ, Int iStart, Int iQP, Bool bUseAlphaMatrix); Int findVLCtableIndexOfNonLastEvent (Bool bIsLastRun, UInt uiRun, UInt uiLevel); Int findVLCtableIndexOfLastEvent (Bool bIsLastRun,UInt uiRun, UInt uiLevel); Int findVLCtableIndexOfIntra (Bool bIsLastRun, UInt uiRun, UInt uiLevel); UInt sendIntraDC (const Int* rgiCoefQ, BlockNum blkn); UInt sendTCOEFIntra (const Int* rgiCoefQ, Int iStart, Int* rgiZigzag); UInt sendTCOEFInter (const Int* rgiCoefQ, Int iStart, Int* rgiZigzag); UInt putBitsOfTCOEFIntra (UInt uiRun, Int iLevel, Bool bIsLastRun); UInt putBitsOfTCOEFInter (UInt uiRun, Int iLevel, Bool bIsLastRun); typedef Int (CVideoObjectEncoder::*FIND_TABLE_INDEX)(Bool bIsLastRun, UInt uiRun, UInt uiLevel); //func ptr code escp. coding UInt escapeEncode (UInt uiRun, Int iLevel, Bool bIsLastRun, Int* rgiLMAX, Int* rgiRMAX, FIND_TABLE_INDEX findVLCtableIndex); UInt fixLengthCode (UInt uiRun, Int iLevel, Bool bIsLastRun); Void intraPred ( BlockNum blkn, const CMBMode* pmbmd, Int* rgiCoefQ, Int iQPcurr, Int iDcScaler, const BlockMemory pblkmPred, Int iQPpred ); // gray-scale alpha coding Void quantizeAlphaInterMB (CMBMode* pmbmd); Void codeMBAlphaHeadOfIVOP (const CMBMode* pmbmd); Void codeMBAlphaHeadOfPVOP (const CMBMode* pmbmd); Void codeMBAlphaHeadOfBVOP (const CMBMode* pmbmd); Void sendDCTCoefOfIntraMBAlpha (const CMBMode* pmbmd); Void sendDCTCoefOfInterMBAlpha (const CMBMode* pmbmd); // MB shape coding Int codeIntraShape (PixelC* ppxlcSrcFrm, CMBMode* pmbmd, Int iMBX, Int iMBY); Int codeInterShape ( PixelC* ppxlcSrc, CVOPU8YUVBA* pvopcRefQ, CMBMode* pmbmd, const ShapeMode& shpmdColocatedMB, const CMotionVector* pmv, CMotionVector* pmvBY, CoordI iX, CoordI iY, Int iMBX, Int IMBY ); UInt codeShapeModeIntra (ShapeMode shpmd, const CMBMode* pmbmd, Int iMBX, Int iMBY); UInt codeShapeModeInter (const ShapeMode& shpmd, const ShapeMode& shpmdColocatedMB); ShapeMode round (PixelC* ppxlcSrcFrm, const CMBMode* pmbmd); Int downSampleShape (const PixelC* ppxlcSrc, Int* rgiSrcSubBlk, PixelC* ppxlcDst, Int* piDstPxl, Int iRate, Int iThreshold, Int nSubBlk); Bool isErrorLarge (const PixelC* rgppxlcSrc, const Int* rgiSubBlkIndx, Int iWidthSrc, PixelC pxlcRecon, const CMBMode* pmbmd); Bool isErrorLarge (const PixelC* rgppxlcSrc, const Int* rgiSubBlkIndxSrc, const Int iSizeSrc, const PixelC* rgppxlcDst, const Int* rgiSubBlkIndxDst, const Int iSizeDst, const CMBMode* pmbmd); UInt encodeCAEIntra (ShapeMode shpmd, CAEScanDirection m_shpdir); UInt encodeCAEInter (ShapeMode shpmd, CAEScanDirection m_shpdir); UInt encodeMVDS (CMotionVector mvBYD); Bool sameBlockTranspStatus (const CMBMode* pmbmd, PixelC pxlcRecon); Bool sameBlockTranspStatus (const CMBMode* pmbmd, const PixelC* pxlcRecon, Int iSizeRecon); UInt codeCrAndSt (CAEScanDirection shpdir, Int iInverseCR); Void copyReconShapeToRef (PixelC* ppxlcRef, PixelC pxlcSrc); //no need to reset MB buffer Void copyReconShapeToRef (PixelC* ppxlcDstMB, const PixelC* ppxlcSrc, Int iSrcWidth, Int iBorder); Int sadForShape (const PixelC* ppxlcRefBY) const; Void blkmatchForShape (CVOPU8YUVBA* pvopcRefQ,CMotionVector* pmv, const CVector& mvPredHalfPel, CoordI iX, CoordI iY); Bool m_bNoShapeChg; Int *m_rgiSubBlkIndx16x16, *m_rgiSSubBlkIndx16x16, *m_rgiSubBlkIndx18x18, *m_rgiSubBlkIndx20x20; Int *m_rgiPxlIndx12x12, *m_rgiPxlIndx8x8; // motion estimation Void copyToCurrBuffWithShapeY ( const PixelC* ppxlcCurrY, const PixelC* ppxlcCurrBY ); Void copyToCurrBuffY (const PixelC* ppxlcCurrY); Void motionEstMB_PVOP (CoordI x, CoordI y, CMotionVector* pmv, CMBMode* pmbmd); //for spatial scalablity only Int motionEstMB_PVOP ( CoordI x, CoordI y, CMotionVector* pmv, CMBMode* pmbmd, const PixelC* ppxliRefMBY ); Int motionEstMB_PVOP_WithShape ( CoordI x, CoordI y, CMotionVector* pmv, CMBMode* pmbmd, const PixelC* ppxliRefMBY ); Int motionEstMB_BVOP_Interlaced ( CoordI x, CoordI y, CMotionVector* pmvForward, CMotionVector* pmvBackward, CMBMode* pmbmd, const CMBMode* pmbmdRef, const CMotionVector* pmvRef, const PixelC* ppxlcRef0MBY, const PixelC* ppxlcRef1MBY, Bool bColocatedMBExist ); Int motionEstMB_BVOP ( CoordI x, CoordI y, CMotionVector* pmvForward, CMotionVector* pmvBackward, CMBMode* pmbmd, const CMBMode* pmbmdRef, const CMotionVector* pmvRef, const PixelC* ppxlcRef0MBY, const PixelC* ppxlcRef1MBY, Bool bColocatedMBExist ); // for spatial scalability only Int CVideoObjectEncoder::motionEstMB_BVOP( CoordI x, CoordI y, CMotionVector* pmvForward, CMotionVector* pmvBackward, CMBMode* pmbmd, const PixelC* ppxlcRef0MBY, const PixelC* ppxlcRef1MBY ); Int motionEstMB_BVOP_WithShape ( CoordI x, CoordI y, CMotionVector* pmvForward, CMotionVector* pmvBackward, CMBMode* pmbmd, const CMBMode* pmbmdRef, const CMotionVector* pmvRef, const PixelC* ppxlcRef0MBY, const PixelC* ppxlcRef1MBY, Bool bColocatedMBExist );// new changes Int motionEstMB_BVOP_InterlacedWithShape ( CoordI x, CoordI y, CMotionVector* pmvForward, CMotionVector* pmvBackward, CMBMode* pmbmd, const CMBMode* pmbmdRef, const CMotionVector* pmvRef, const PixelC* ppxlcRef0MBY, const PixelC* ppxlcRef1MBY, Bool bColocatedMBExist ); Int blkmatch16 ( CMotionVector* pmv, CoordI iXRef, CoordI iYRef, CoordI iXCurr, CoordI iYCurr, Int iMinSAD, const PixelC* ppxlcRefMBY, const CU8Image* puciRefQZoomY, Int iSearchRange ); Int blkmatch16WithShape ( CMotionVector* pmv, CoordI iXRef, CoordI iYRef, CoordI iXCurr, CoordI iYCurr, Int iMinSAD, const PixelC* ppxlcRefMBY, const CU8Image* puciRefQZoomY, const CMBMode* pmbmd, Int iSearchRange, Int iDirection ); Int blockmatch8 ( const PixelC* ppxlcCodedBlkY, CMotionVector* pmv8, CoordI x, CoordI y, const CMotionVector* pmvPred, Int iSearchRange ); Int blockmatch8WithShape ( const PixelC* ppxlcCodedBlkY, const PixelC* ppxlcCodedBlkBY, CMotionVector* pmv8, CoordI x, CoordI y, const CMotionVector* pmvPred, Int iSearchRange, Int iDirection ); Int blkmatch16x8 ( CMotionVector* pmv, CoordI iXMB, CoordI iYMB, Int iFeildSelect, const PixelC* ppxlcRefMBY, const PixelC* ppxlcRefHalfPel, Int iSearchRange ); // new chnages Int blkmatch16x8WithShape ( CMotionVector* pmv, CoordI iXMB, CoordI iYMB, Int iFeildSelect, const PixelC* ppxlcRefMBY, const PixelC* ppxlcRefHalfPel, Int iSearchRange, Int iDirection ); Int sumDev () const; // compute sum of deviation of an MB Int sumDevWithShape (UInt uiNumTranspPels) const; // compute sum of deviation of an MB Int sad16x16At0 (const PixelC* ppxliRef0Y) const; Int sad16x16At0WithShape (const PixelC* ppxliRefY, const CMBMode* pmbmd) const; Int sad8x8At0 (const PixelC* ppxlcCurrY, const PixelC* ppxliRef0Y) const; // 0: predictor Int sad8x8At0WithShape (const PixelC* ppxlcCurrY, const PixelC* ppxlcCurrBY, const PixelC* ppxlcRefY) const; // motion compensation Void motionCompMBYEnc ( const CMotionVector* pmv, const CMBMode* pmbmd, Int imbX, Int imbY, CoordI x, CoordI y, CRct *prctMVLimit ); Void motionCompMBAEnc ( const CMotionVector* pmv, const CMBMode* pmbmd, PixelC * ppxlcPredMBA, CVOPU8YUVBA* pvopcRefQ, CoordI x, CoordI y, Int iRoundingControl, CRct *prctMVLimit, Int direction //12.22.98 ); Void motionCompEncY ( const PixelC* ppxlcRef, const PixelC* ppxlcRefZoom, PixelC* ppxlcPred, // can be either Y or A Int iSize, // either MB or BLOCK size const CMotionVector* pmv, // motion vector CoordI x, CoordI y, // current coordinate system CRct *prctMVLimit ); Void motionCompOverLapEncY ( const CMotionVector* pmv, // motion vector const CMBMode* pmbmd, // macroblk mode Bool bLeftBndry, Bool bRightBndry, Bool bTopBndry, CoordI x, // current coordinate system CoordI y, // current coordinate system CRct *prctMVLimit ); Void motionComp8Y (PixelC* ppxlcPredBlk, const CMotionVector* pmv, CoordI x, CoordI y); Void motionComp8A (PixelC* ppxlcPredBlk, const CMotionVector* pmv, CoordI x, CoordI y); // B-VOP MC Void motionCompAndDiff_BVOP_MB ( const CMotionVector* pmvForward, const CMotionVector* pmvBackward, CMBMode* pmbmd, // new change 02-19-99 CoordI x, CoordI y, CRct *prctMVLimitForward,CRct *prctMVLimitBackward ); Void motionCompAndDiff_BVOP_MB_WithShape ( const CMotionVector* pmvForward, const CMotionVector* pmvBackward, CMBMode* pmbmd, // new change 02-19-99 CoordI x, CoordI y, CRct *prctMVLimitForward,CRct *prctMVLimitBackward ); Void motionCompAndDiffAlpha_BVOP_MB ( const CMotionVector* pmvForward, const CMotionVector* pmvBackward, const CMBMode* pmbmd, CoordI x, CoordI y, CRct *prctMVLimitForward,CRct *prctMVLimitBackward ); Void motionCompInterpAndError ( const CMotionVector* pmvForward, const CMotionVector* pmvBackward, CoordI x, CoordI y, CRct *prctMVLimitForward,CRct *prctMVLimitBackward ); Void motionCompInterpAndError_WithShape ( const CMotionVector* pmvForward, const CMotionVector* pmvBackward, CoordI x, CoordI y, CRct *prctMVLimitForward,CRct *prctMVLimitBackward ); // error signal Void computeTextureErrorWithShape (); Void computeTextureError (); Void computeAlphaError (); // B-VOP stuff Int interpolateAndDiffY ( const CMotionVector* pmvForward, const CMotionVector* pmvBackward, CoordI x, CoordI y, // the coordinate of the MB CRct *prctMVLimitForward,CRct *prctMVLimitBackward ); Int interpolateAndDiffY_WithShape ( const CMotionVector* pmvForward, const CMotionVector* pmvBackward, CoordI x, CoordI y, // the coordinate of the MB CRct *prctMVLimitForward,CRct *prctMVLimitBackward ); Void averagePredAndComputeErrorUV (); Void averagePredAndComputeErrorUV_WithShape (); // MV UInt encodeMV ( const CMotionVector* pmv, const CMBMode* pmbmd, Bool bLeftMB, Bool bRightMB, Bool bTopMB,Int iMBX, Int iMBY); UInt encodeMVWithShape (const CMotionVector* pmv, const CMBMode* pmbmd, Int iXMB, Int iYMB); UInt encodeMVofBVOP (const CMotionVector* pmvForward, const CMotionVector* pmvBackward, const CMBMode* pmbmd, Int iMBX, Int iMBY, const CMotionVector* pmvRef, const CMBMode* pmbmdRef); // encode motion vectors for b-vop UInt sendDiffMV (const CVector& vctDiffMVHalfPel, const MVInfo *pmviDir); Void scaleMV (Int& iVLC, UInt& uiResidual, Int iDiffMVcomponent, const MVInfo *pmviDir); // direct mode Void computeDirectDeltaMV (CVector& vctDiff, const CMotionVector* pmv, const CMotionVector* pmvRef, const CMBMode* pmbmdRef); //for (progressive) B-VOP only // Statistics routines Void computeSNRs (const CVOPU8YUVBA* pvopcCurrQ); Void SNRYorA ( const PixelC* ppxlcOrig, const PixelC* ppxlcRef1, // these two should point to the left-top of the rctOrig's bounding box Double& dSNR ); Void SNRUV (const CVOPU8YUVBA* pvopcCurrQ); Void SNRYorAWithShape ( const PixelC* ppxlcOrig, const PixelC* ppxlcRef1, // these two should point to the left-top of the rctOrig's bounding box Double& dSNR ); Void SNRUVWithShape (const CVOPU8YUVBA* pvopcCurrQ); // Motion Vector I/O Int m_iMVLineNo, m_iMVFileUsage; FILE *m_fMVFile; Char *m_pchMVFileName; Void readPVOPMVs(), writePVOPMVs(), readBVOPMVs(), writeBVOPMVs(); Void decideMVInfo (); // Complexity Estimation syntax support - Marc Mongenet (EPFL) - 16 Jun 1998 Int codedDCECS (Int, // complexity estimation data to code before writing it into bitstream UInt); // number of bitstream bits for this data // error resilient tools added by Toshiba // Modified for error resilient mode by Toshiba(1997-11-14)// Bool bVPNoLeft(Int iMBnum, Int iMBX);// Bool bVPNoRightTop(Int iMBnum, Int iMBX);// Bool bVPNoTop(Int iMBnum);// Bool bVPNoLeftTop(Int iMBnum, Int iMBX); // End Toshiba(1997-11-14) Void codeVideoPacketHeader (Int iMBX, Int iMBY, Int iQuantScale); Int codeVideoPacketHeader (Int iQuantScale); // Added by Toshiba(1998-1-16) Void VideoPacketResetVOP ();//UInt nBitsModuloBase, Int iVopTimeIncr); UInt encodeMVVP (const CMotionVector* pmv, const CMBMode* pmbmd, Int iMBX, Int iMBY); // Added for Data partitioning mode by Toshiba(1998-1-16) Void encodeNSForPVOP_DP (); Void encodeNSForIVOP_DP (); Void encodeNSForIVOP_WithShape_DP (); Void encodeNSForPVOP_WithShape_DP (); Void DataPartitioningMotionCoding(Int iVPMBnum, Int iVPlastMBnum, CStatistics* m_statsVP, Int*** iCoefQ_DP); Void DataPartitioningTextureCoding(Int iVPMBnum, Int iVPlastMBnum, CStatistics* m_statsVP, Int*** iCoefQ_DP); // Added for RVLC by Toshiba UInt sendTCOEFIntraRVLC (const Int* rgiCoefQ, Int iStart, Int* rgiZigzag, Bool bDontSendBits); UInt putBitsOfTCOEFIntraRVLC (UInt uiRun, Int iLevel, Bool bIsLastRun, Bool bDontSendBits); Int findVLCtableIndexOfNonLastEventIntraRVLC (Bool bIsLastRun, UInt uiRun, UInt uiLevel); Int findVLCtableIndexOfLastEventIntraRVLC (Bool bIsLastRun, UInt uiRun, UInt uiLevel); UInt sendTCOEFInterRVLC (const Int* rgiCoefQ, Int iStart, Int* rgiZigzag, Bool bDontSendBits); UInt putBitsOfTCOEFInterRVLC (UInt uiRun, Int iLevel, Bool bIsLastRun, Bool bDontSendBits); Int findVLCtableIndexOfNonLastEventInterRVLC (Bool bIsLastRun, UInt uiRun, UInt uiLevel); Int findVLCtableIndexOfLastEventInterRVLC (Bool bIsLastRun, UInt uiRun, UInt uiLevel); UInt escapeEncodeRVLC (UInt uiRun, Int iLevel, Bool bIsLastRun, Bool bDontSendBits); // End Toshiba(1998-1-16) // begin: added by Sharp (98/2/10) Void setPredType(VOPpredType vopPredType); Void setRefSelectCode(Int refSelectCode); // end: added by Sharp (98/2/10)};#endif // __VOPSEENC_HPP_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -