⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mb.hpp

📁 网络MPEG4IP流媒体开发源代码
💻 HPP
字号:
/*************************************************************************This software module was originally developed by 	Ming-Chieh Lee (mingcl@microsoft.com), Microsoft Corporation	Wei-ge Chen (wchen@microsoft.com), Microsoft Corporation	Bruce Lin (blin@microsoft.com), Microsoft Corporation	Chuang Gu (chuanggu@microsoft.com), Microsoft Corporation	(date: March, 1996)in the course of development of the MPEG-4 Video (ISO/IEC 14496-2). This software module is an implementation of a part of one or more MPEG-4 Video tools as specified by the MPEG-4 Video. ISO/IEC gives users of the MPEG-4 Video free license to this software module or modifications thereof for use in hardware or software products claiming conformance to the MPEG-4 Video. Those intending to use this software module in hardware or software products are advised that its use may infringe existing patents. The original developer of this software module and his/her company, the subsequent editors and their companies, and ISO/IEC have no liability for use of this software module or modifications thereof in an implementation. Copyright is not released for non MPEG-4 Video conforming products. Microsoft retains full right to use the code for his/her own purpose, assign or donate the code to a third party and to inhibit third parties from using the code for non <MPEG standard> conforming products. This copyright notice must be included in all copies or derivative works. Copyright (c) 1996, 1997.Module Name:	MB.hppAbstract:	MacroBlock base class Revision History:NOTE:		For encoder:				m_pvopfCurrQ holds the original data until it is texture quantized*************************************************************************/#ifndef __MB_HPP_#define __MB_HPP_class CBlock;Class CMacroBlock{friend class CVOPofMBs;public:	// Constructors	virtual ~CMacroBlock ();	CMacroBlock (		const VOLMode& volmd, // VOP mode		const VOPMode& vopmd, // VOP mode		const CVOPIntYUVBA* pvopfRef0, // reference VOP in a previous time		const CVOPIntYUVBA* pvopfRef1 // reference VOP in a later time	);	// Attributes	virtual const CMotionVector* rgMVForward () const {return m_rgmvForward;} // motion vector(s), 4 MV's for advanced mode	virtual const CMotionVector* rgMVBackward () const {return m_rgmvBackward;} // motion vector(s), 4 MV's for advanced mode	virtual CMotionVector mvForwardOfBlock (UInt iblk) const;  // motion vector(s), 4 MV's for advanced mode	virtual CMotionVector mvBackwardOfBlock (UInt iblk) const;  // motion vector(s), 4 MV's for advanced mode	virtual CMotionVector mvDirectDelta (UInt iblk) const;  // motion vector(s), 4 MV's for advanced mode	virtual CMotionVector mvBY () const {return m_mvBY;}	//shape motion vector	virtual const CVOPIntYUVBA* pvopfQOfMB () const {return m_pvopfCurrQ;}	virtual const CMBMode& mode () const {return *m_pmbmd;}	virtual const CRct& whereY () const {return m_pvopfCurrQ -> whereY ();}	virtual const CRct& whereUV () const {return m_pvopfCurrQ -> whereUV ();}	virtual CBlock** ppBlock () const {return m_ppblk;}	virtual Bool bTranspAveraged () const {return m_bTranspAveraged;} 	// Operations	virtual own CVOPIntYUVBA* motionComp (MBType mbType = FORWARD) const; // non-overlapped motion compensation, overlapped MC is done at the vopmb level	Void setMVForward (const CMotionVector& mvSrc, const BlockNum blkn) 		{m_rgmvForward [(UInt) blkn] = mvSrc;} // set motion vectors	Void setMVBackward (const CMotionVector& mvSrc, const BlockNum blkn) 		{m_rgmvBackward [(UInt) blkn] = mvSrc;} // set motion vectors	Void setMVBY (const CMotionVector& mvSrc)	{m_mvBY = mvSrc;} //set shape mv	Void zeroPadCurrQ ();	Void repeatPadCurrQ ();	Void averagePadCurrQ ();	Void repeatPadCurrQFromRight (const CMacroBlock& pmb);	Void repeatPadCurrQFromBottom (const CMacroBlock& pmb);	Void repeatPadCurrQFromLeft (const CMacroBlock& pmb);	Void repeatPadCurrQFromTop (const CMacroBlock& pmb);	// Resultant	Bool isBlockAllTransparent (const BlockNum blkn) const;	Bool isAllBlocksAllValue (PixelI pxlf, BlockNum blkn)	const;///////////////// implementation /////////////////protected:	const CVOPIntYUVBA* m_pvopfRef0; // reference VOP in a previous time	const CVOPIntYUVBA* m_pvopfRef1; // reference VOP in a later time	own CVOPIntYUVBA* m_pvopfCurrQ; // macroblock	own CMotionVector* m_rgmvForward; // forward motion vectors	own CMotionVector* m_rgmvBackward; // backward motion vectors	own CMotionVector* m_rgmvDirectDelta; // delta motion vectors for direct mode	CMotionVector m_mvBY;					//mv for binary shape	const VOLMode& m_volmd; // VOL mode	const VOPMode& m_vopmd; // VOP mode	CMBMode* m_pmbmd;	CBlock** m_ppblk; // block objects	UInt m_uiNumBlks; // number of blocks for texture coding.  10 for gray-scale alpha and 6 otherwise	// for padding	Bool m_bTranspAveraged;		Void clapQuant (); // clap the pixel value to be within 0 and 255	own CVOPIntYUVBA* motionCompFB (MBType mbType) const;	// motion comp, Forward and Backward	own CIntImage* motionCompYBA (MBType mbType, PlaneType plnType) const; // non-oevrlapped MC for Y, B, and A plane	own CIntImage* motionCompForCAE () const;		//only one MV, 18x18 motion comp, forward only	Void motionCompUV (MBType mbType, CVOPIntYUVBA* pvopf, const CVector2D& mv, const CVector2D& mvBW = CVector2D ()) const; // non-overlapped motion compensation, overlapped MC is done at the vopmb level	CVector2D mvDivideY (const CVector2D& mv, UInt divisor) const;	CVector2D mvLookupUV (const CVector2D& mv, UInt uiNumNonTranspBlocks) const;	Void backwardMVFromForwardMV (Bool bInBoundRef1, Bool bhas4MVRef1, const CMotionVector* rgmvRef1);	Void decideTransparencyStatus (); //also change mvs of trasnparent blocks to NOT_MV to be consistent	Void setQuantizedBinary (const CIntImage* pfiB);	const CBlock* findPredictorBlock (BlockNum iBlk, 									  IntraPredDirection predDir,									  const CMacroBlock* pmbPredLeft, 									  const CMacroBlock* pmbPredTop, 									  const CMacroBlock* pmbPredLeftTop = NULL);	Void decideIntraPrediction (const CMacroBlock* pmbPredLeft, 								const CMacroBlock* pmbPredTop, 								const CMacroBlock* pmbPredLeftTop,								Bool bDecideDCOnly = FALSE,								BlockNum blkn = ALL_Y_BLOCKS);};#endif // __MENCB_HPP_ 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -