📄 vopses.hpp
字号:
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, BlockNum blknCurr) const; Void find8x8MVpredInterior (CVector& vctPred, const CMotionVector* pmv, BlockNum 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, BlockNum 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; 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); Void inverseQuantizeInterDCTcoefMPEG (Int* rgiCoefQ, Int iStart, Int iQP, Bool bUseAlphaMatrix); const BlockMemory findPredictorBlock ( BlockNum 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 ); Int decideIntraPredDir ( Int* rgiCoefQ, BlockNum blkn, const BlockMemory* blkmRet, const MacroBlockMemory* pmbmLeft, const MacroBlockMemory* pmbmTop, const MacroBlockMemory* pmbmLeftTop, const MacroBlockMemory* pmbmCurr, const CMBMode* pmbmdLeft, const CMBMode* pmbmdTop, const CMBMode* pmbmdLeftTop, CMBMode* pmbmdCurr, Int& iQPpred, Int iQPcurr, Bool bDecideDCOnly = FALSE ); Time m_t; // current time Time m_tPastRef; // time of reference frame in past (for P/B) Time m_tFutureRef; // time of reference frame in future (for B) Int m_iBCount; // counts 1,2,3 with B frames, used to pad ref vop once. Bool m_bCodedFutureRef; CRct m_rctDisplayWindow; //display windoew position Int m_iNumBitsTimeIncr; Time m_tDistanceBetwIPVOP; //no. of frms betw. I/PVOP = PeriodOfPVOP except for at irregular period (end of sequence) Time m_tPrevIorPVOPCounter; //frm. no of previous encoded I/PVOP Time m_tModuloBaseDisp; //of the most recently displayed I/Pvop Time m_tModuloBaseDecd; //of the most recently decoded I/Pvop/*Added by SONY (98/03/30)*/ Bool m_bUseGOV ; Bool m_bLinkisBroken;/*Added by SONY (98/03/30)*/ // MB buffer data CVOPU8YUVBA* m_pvopcPredMB; PixelC *m_ppxlcPredMBY, *m_ppxlcPredMBU, *m_ppxlcPredMBV, *m_ppxlcPredMBA; CVOPIntYUVBA* m_pvopiErrorMB; PixelI *m_ppxliErrorMBY, *m_ppxliErrorMBU, *m_ppxliErrorMBV, *m_ppxliErrorMBA; // B-VOP MB buffer CVOPU8YUVBA* m_pvopcPredMBBack; // backward buffer data PixelC *m_ppxlcPredMBBackY, *m_ppxlcPredMBBackU, *m_ppxlcPredMBBackV, *m_ppxlcPredMBBackA; // MB shape data ArCodec* m_parcodec; //arithmatic coder CU8Image* m_puciPredBAB; //motion compensated binary shape PixelC *m_ppxlcPredBABDown2, *m_ppxlcPredBABDown4; PixelC* m_ppxlcReconCurrBAB; Int m_iWidthCurrBAB; PixelC* m_rgpxlcCaeSymbol; PixelC *m_ppxlcCurrMBBYDown4, *m_ppxlcCurrMBBYDown2; ShapeMode* m_rgshpmd; // for saving reference shape mode Int m_iRefShpNumMBX; Int m_iRefShpNumMBY; CVOPU8YUVBA* m_pvopcCurrMB; PixelC *m_ppxlcCurrMBY, *m_ppxlcCurrMBU, *m_ppxlcCurrMBV, *m_ppxlcCurrMBBY, *m_ppxlcCurrMBBUV, *m_ppxlcCurrMBA; /*BBM// Added for Boundary by Hyundai(1998-5-9) Void boundaryMacroBlockMerge (CMBMode* pmbmd); Void isBoundaryMacroBlockMerged (CMBMode* pmbmd); Void isBoundaryMacroBlockMerged (CMBMode* pmbmd, PixelC* ppxlcRightMBBY); Void overlayBlocks (UInt x1, UInt x2, UInt y1, UInt y2, DCTMode dctMd); Void overlayBlocks (PixelC* SB2, PixelI* ppxlcB1, PixelI* ppxlcB2); Void overlayBlocks (PixelC* SB1, PixelC* SB2, PixelC* ppxlcB1, PixelC* ppxlcB2); Bool checkMergedStatus (UInt x1, UInt x2, UInt y1, UInt y2); Bool checkMergedStatus (UInt x1, UInt x2, UInt y1, UInt y2, PixelC* ppxlcBY); Void mergedMacroBlockSplit (CMBMode* pmbmd, PixelC* ppxlcRefMBY = NULL, PixelC* ppxlcRefMBA = NULL); Void splitTwoMergedBlocks (UInt x1, UInt x2, UInt y1, UInt y2, PixelC* ppxlcIn1, PixelC* ppxlcIn2 = NULL); Void splitTwoMergedBlocks (UInt x1, UInt x2, UInt y1, UInt y2, PixelI* ppxlcIn1, PixelI* ppxlcIn2 = NULL); Void swapTransparentModes (CMBMode* pmbmd, Bool mode); Void setMergedTransparentModes (CMBMode* pmbmd); Void initMergedMode (CMBMode* pmbmd); // End of Hyundai(1998-5-9)*/ // for MC-padding Bool* m_pbEmptyRowArray; Bool* m_pbEmptyColArray; // VOP mode VOLMode m_volmd; // vol mode VOPMode m_vopmd; // vop mode UInt m_uiVOId; // VOP ID // sprite info UInt m_uiSprite; // whether this is a sprite VOP: 1 - yes; other - no UInt m_uiWarpingAccuracy; // accuracy for sprite warping Int m_iNumOfPnts; // for sprite warping own CSiteD* m_rgstSrcQ; // quantized src sts for sprite warping own CSiteD* m_rgstDstQ; // quantized dst sts for sprite warping own CVOPU8YUVBA* m_pvopcSptQ; // Loaded first as original sprite and then become quantized sprite. CRct m_rctSpt; // rct of m_pvopcSptQ CRct m_rctSptDisp; //rct to display sprite (decoder side) SptMode m_sptMode; // sprite reconstruction mode : 0 -- basic sprite , 1 -- Object piece only, 2 -- Update piece only, 3 -- intermingled own MBSptMode* m_rgsptmd; // sprite mode 0: untransmitted; 1: transmitted; 2: updated; 3: done // internal data own CVOPU8YUVBA* m_pvopcRefQ0; // original reference VOP in a previous time own CVOPU8YUVBA* m_pvopcRefQ1; // original reference VOP in a later time own CVOPU8YUVBA* m_pvopcCurrQ; // original reference VOP in a later time Int m_iStartInRefToCurrRctY, m_iStartInRefToCurrRctUV; // motion data own CDirectModeData* m_pdrtmdRef1; // for direct mode CVector m_vctForwardMvPredBVOP[2]; // motion vector predictors for B-VOP CVector m_vctBackwardMvPredBVOP[2]; // [2] added for interlace (top & bottom fields) // some fixed variables (VOL) CRct m_rctRefFrameY, m_rctRefFrameUV; Int m_iFrameWidthYxMBSize, m_iFrameWidthYxBlkSize, m_iFrameWidthUVxBlkSize; Int m_iFrameWidthY, m_iFrameWidthUV; Int m_ivolWidth, m_ivolHeight; // VOP variables CRct m_rctCurrVOPY, m_rctCurrVOPUV; CRct m_rctRefVOPY0, m_rctRefVOPUV0; CRct m_rctRefVOPY1, m_rctRefVOPUV1; Int m_iOffsetForPadY, m_iOffsetForPadUV; CRct m_rctPrevNoExpandY, m_rctPrevNoExpandUV;////// 97/12/22 start CRct m_rctBVOPRefVOPY1, m_rctBVOPRefVOPUV1; Int m_iBVOPOffsetForPadY, m_iBVOPOffsetForPadUV; CRct m_rctBVOPPrevNoExpandY, m_rctBVOPPrevNoExpandUV;///// 97/12/22 end Int m_iVOPWidthY, m_iVOPWidthUV; Int m_iNumMB, m_iNumMBX, m_iNumMBY; Int m_iNumOfTotalMVPerRow; Int m_iSessNumMB; CMBMode* m_rgmbmd; // VOP size. need to renew every VOP CMotionVector* m_rgmv; // VOP size. need to renew every VOP CMotionVector* m_rgmvBackward; // VOP size. need to renew every VOP CMotionVector* m_rgmvBY; //Motion vectors for BY plane CMBMode* m_rgmbmdRef; CMotionVector* m_rgmvRef; // VOP size. need to renew every VOP Int m_iNumMBRef, m_iNumMBXRef, m_iNumMBYRef; // clipping tables/* NBIT: change U8 to PixelC U8* m_rgiClipTab; // clapping the reconstructed pixels*/ PixelC* m_rgiClipTab; // clapping the reconstructed pixels Int m_iOffset; // NBIT Void setClipTab(); // NBIT// Added for error resilient mode by Toshiba(1997-11-14) Bool m_bVPNoLeft; Bool m_bVPNoRightTop; Bool m_bVPNoTop; Bool m_bVPNoLeftTop; Int m_iVPMBnum; // start MB in a VP// End Toshiba(1997-11-14) // MB data Int** m_rgpiCoefQ; MacroBlockMemory** m_rgpmbmAbove; MacroBlockMemory** m_rgpmbmCurr; BlockMemory* m_rgblkmCurrMB; //predictor blocks for each current block Int* m_rgiQPpred; //QP from previous block for intra ac prediction Int m_rgiDcScalerY [32]; //intra dc quantization scaler; qp dependent Int m_rgiDcScalerC [32]; //[0] elem never used // block data Int m_rgiDCTcoef [BLOCK_SQUARE_SIZE]; CInvBlockDCT* m_pidct; // Sprite routines Void warpYA (const CPerspective2D& persp, const CRct& rctWarpedBound, UInt accuracy); Void warpUV (const CPerspective2D& persp, const CRct& rctWarpedBound, UInt accuracy); // Fast Affine Warping Void FastAffineWarp (const CRct& rctWarpedBound, const CRct& rctWarpedBoundUV, UInt accuracy, UInt pntNum); PixelC CInterpolatePixelValue (PixelC* F, Int pos, Int width, Int rx, Int ry, Int wpc, Int bias, Int pow_denom); Int LinearExtrapolation(Int x0, Int x1, Int x0p, Int x1p, Int W, Int VW); Void FourSlashes(Int num, Int denom, Int *quot, Int *res); // tentative solution for indicating the first Sprite VOP Int tentativeFirstSpriteVop; // Low-latency sprite info Bool m_bFirstSpriteVop ;// flag for indicating the first Sprite VOP MacroBlockMemory*** m_rgpmbmCurr_Spt; // save MB data to be used as holes SptMBstatus** m_ppPieceMBstatus; // MB transmission status (done or not-done) SptMBstatus** m_ppUpdateMBstatus; CMBMode* m_rgmbmdSprite; // dshu: [v071] added to store mbmd array for sprite CMBMode** m_rgmbmdSpt; // Sprite size. Bool m_bSptMB_NOT_HOLE; // Current MB is not a hole own CSiteD* m_rgstSrcQP; // for sprite piece warping Time m_tPiece; // current sprite piece encode time Time m_tUpdate; // current sprite update encode time own CVOPU8YUVBA* m_pvopcSptP; // sprite piece CRct m_rctSptQ; // rct of m_pvopcSptQ CRct m_rctOrg; // Frame size CRct m_rctPieceQ; // Region of pieces which have been encoded CRct m_rctUpdateQ; // Region of updates which have been encoded CRct m_rctSptPieceY; // piece of sprite which is currently been encoded CRct m_rctSptPieceUV; // piece of sprite which is currently been encoded Int m_iStepI; Int m_iStep; Int m_iStep_VOP; Int m_iPieceXoffset; Int m_iPieceYoffset; Int m_iPieceWidth; Int m_iPieceHeight; Bool m_bSptZoom; // the type of sprite warping(zoom/pan) Bool m_bSptHvPan; // the type of sprite warping(Horizontal or vertical panning) Bool m_bSptRightPiece; //direction (up/down or right/left) for encoding sprite piece Int *m_pSptmbBits; // bits used by a sprite macroblock CRct m_rctSptExp; // Extend the sprite size to multiples of MBSize};#endif // __VOPSES_HPP_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -