📄 vopses.hpp
字号:
const CMBMode* pmbmdLeftTop, const CMBMode* pmbmdCurr, Int& iQPpred ); Int decideIntraPredDir ( Int* rgiCoefQ, Int blkn, const BlockMemory * pblkmRet, 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; Bool m_bCodedBaseRef; //OBSS_SAIT_991015 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 ShapeMode* m_rgBaseshpmd; // for saving lower reference shape mode //OBSS_SAIT_991015 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; // current VOP 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; Int m_ivolAspectRatio, m_ivolAspectHeight, m_ivolAspectWidth; // 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//OBSS_SAIT_991015 CMotionVector* m_rgmvBaseBY; //Motion vectors for Base BY plane CMBMode* m_rgmbmdEnhRef; CRct m_rctBase; Int m_iNumMBBaseXRef, m_iNumMBBaseYRef; Bool m_bVPNoRight; Bool m_bVPNoBottom;//~OBSS_SAIT_991015 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; const BlockMemory* m_rgblkmCurrMB; //predictor blocks for each current block Int* m_rgiQPpred; //QP from previous block for intra ac prediction // block data Int m_rgiDCTcoef [BLOCK_SQUARE_SIZE]; CInvBlockDCT* m_pidct; // HHI Schueuer: inserted for sadct Int **m_rgiCurrMBCoeffWidth; // contains the number of frequency // coefficients per row for each 8x8 block // end HHI // 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 // GMC Void FourSlashesShift(Int inum, Int idenom_pwr, Int *ipquot, Int *ipres); Void globalmv(Int& iXpel, Int& iYpel, Int& iXhalf, Int& iYhalf, CoordI iXCurr, CoordI iYCurr, Int iSearchRenge, Bool bQuarterSample); Void TranslationalWarpMotion(Int& iXpel, Int& iYpel, Int& iXhalf, Int& iYhalf, Int ifcode_area, Bool bQuarterSample); Void FastAffineWarpMotion(Int& iXpel, Int& iYpel, Int& iXhalf, Int& iYhalf, Int iXCurr, Int iYCurr, Int iSearchRenge, Bool bQuarterSample); Void FindGlobalPredForGMC (Int cx_curr, Int cy_curr, PixelC* ppxlcRef, const PixelC* puciRef); Void FindGlobalChromPredForGMC (Int cx_curr, Int cy_curr, PixelC* ppxlcRefU, PixelC* ppxlcRefV); Void StationalWarpForGMC(Int cx_curr, Int cy_curr, PixelC *ppxlcRef, const PixelC *puciRef); Void StationalWarpChromForGMC(Int cx_curry, Int cy_curry, PixelC *ppxlcRefU, PixelC *ppxlcRefV); Void TranslationalWarpForGMC(Int cx_curr, Int cy_curr, PixelC *ppxlcRef, const PixelC *puciRef); Void TranslationalWarpChromForGMC(Int cx_curr, Int cy_curr, PixelC *ppxlcRefU, PixelC *ppxlcRefV); Void FastAffineWarpForGMC(Int cx_curr, Int cy_curr, PixelC *ppxlcRef, const PixelC *puciRef); Void FastAffineWarpChromForGMC(Int cx_curry, Int cy_curry, PixelC *ppxlcRefU, PixelC *ppxlcRefV); // ~GMC// RRV insertion Void filterCodedPictureForRRV(PixelC*, PixelC*, PixelC*, Int isizex, Int isizey, Int inumMBx,Int inumMBy, Int iwidthY, Int iwidthUV);// ~RRV 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// RRV insertion Int m_iRRVScale;// ~RRV };#endif // __VOPSES_HPP_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -