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

📄 vopsedec.hpp

📁 jpeg and mpeg 编解码技术源代码
💻 HPP
📖 第 1 页 / 共 2 页
字号:
	Void decodeMBTextureHeadOfBVOP (CMBMode* pmbmd, Int& iCurrQP);
	Void decodeMBAlphaHeadOfBVOP (CMBMode* pmbmd, Int iCurrQP, Int iCurrQPA);
	
	Void setCBPYandC (CMBMode* pmbmd, Int iCBPC, Int iCBPY, Int cNonTrnspBlk);

	// motion compensation
	Void motionCompTexture (
		const CMotionVector* pmv, const CMBMode* pmbmd, 
		Int imbX, Int imbY,
		CoordI x, CoordI y
	);
	Void motionCompAlpha (
		const CMotionVector* pmv, const CMBMode* pmbmd, 
		Int imbX, Int imbY,
		CoordI x, CoordI y
	);
	// B-VOP
	Void motionCompAndAddErrorMB_BVOP (
		const CMotionVector* pmvForward, const CMotionVector* pmvBackward,
		 CMBMode* pmbmd,		// new change 02-19-99
		Int iMBX, Int iMBY, 
		CoordI x, CoordI y,
		PixelC* ppxlcCurrQMBY, PixelC* ppxlcCurrQMBU, PixelC* ppxlcCurrQMBV,
		CRct *prctMVLimitForward,CRct *prctMVLimitBackward
	); 
	Void motionCompAlphaMB_BVOP(
		const CMotionVector* pmvForward, const CMotionVector* pmvBackward,
		 CMBMode* pmbmd,		// new change 02-19-99
		Int iMBX, Int iMBY, 
		CoordI x, CoordI y,
		PixelC* ppxlcCurrQMBA,
		CRct *prctMVLimitForward,CRct *prctMVLimitBackward
	);
	Void copyFromRefToCurrQ_BVOP (
		const CMBMode* pmbmd,
		CoordI x, CoordI y, 
		PixelC* ppxlcCurrQMBY, PixelC* ppxlcCurrQMBU, PixelC* ppxlcCurrQMBV,
		CRct *prctMVLimitForward, CRct *prctMVLimitBackward
	);
	Void motionCompSkipMB_BVOP (
		const CMBMode* pmbmd, const CMotionVector* pmvForward, const CMotionVector* pmvBackward,
		CoordI x, CoordI y, 
		PixelC* ppxlcCurrQMBY, PixelC* ppxlcCurrQMBU, PixelC* ppxlcCurrQMBV,
		CRct *prctMVLimitForward,CRct *prctMVLimitBackward
	);

	Void copyFromPredForYAndRefForCToCurrQ (
		CoordI x, CoordI y, 
		PixelC* ppxlcCurrQMBY, PixelC* ppxlcCurrQMBU, PixelC* ppxlcCurrQMBV,
		CRct *prctMVLimit
	); // for obmc mode
	Void copyAlphaFromPredToCurrQ (
		CoordI x, CoordI y, 
		PixelC* ppxlcCurrQMBA
	);

	// error signal for B-VOP MB
	Void averagePredAndAddErrorToCurrQ (
		PixelC* ppxlcCurrQMBY, PixelC* ppxlcCurrQMBU, PixelC* ppxlcCurrQMBV
	);
	Void averagePredAndAssignToCurrQ (
		PixelC* ppxlcCurrQMBY, PixelC* ppxlcCurrQMBU, PixelC* ppxlcCurrQMBV
	);

	// motion vector
	Void decodeMV (const CMBMode* pmbmd, CMotionVector* pmv, Bool bLeftBndry, Bool bRightBndry, Bool bTopBndry, Bool bZeroMV, Int iMBX, Int iMBY);
	Void decodeMVWithShape (const CMBMode* pmbmd, CoordI iMBX, CoordI iMBY, CMotionVector* pmv);
	Void getDiffMV (CVector& vctDiffMV, MVInfo mvinfo);		//get half pel
	Int  deScaleMV (Int iVLC, Int iResidual, Int iScaleFactor);
	Void fitMvInRange (CVector& vctSrc, MVInfo mvinfo);
	Void decodeMVofBVOP (CMotionVector* pmvForward, CMotionVector* pmvBackward, CMBMode* pmbmd, 
						 Int iMBX, Int iMBY, const CMotionVector* pmvRef, const CMBMode* pmbmdRef);
	Void computeDirectForwardMV (CVector vctDiff, CMotionVector* pmv, const CMotionVector* pmvRef, const CMBMode* pmbmdRef);

	// shape decoding functions
	Void swapCurrAndRightMBForShape ();
	Void decodeIntraShape (CMBMode* pmbmd, Int iMBX, Int iMBY, PixelC* ppxlcCurrMBBY, PixelC* ppxlcCurrMBBYFrm);
	Void decodeInterShape (CVOPU8YUVBA* pvopcRefQ,CMBMode* pmbmd, CoordI iMBX, CoordI iMBY, CoordI iX, CoordI iY, CMotionVector* pmv, CMotionVector* pmvBY, 
						   PixelC* ppxlcMBBY, PixelC* ppxlcMBBYFrm, const ShapeMode& shpmdColocatedMB);
	Int  shpMdTableIndex (const CMBMode* pmbmd, Int iMBX, Int iMBY);
	Void decodeIntraCaeBAB (PixelC* ppxlcCurrMBBY, PixelC* ppxlcCurrMBBYFrm);
	Void decodeIntraCAEH ();
	Void decodeIntraCAEV ();
	Void decodeInterCAEH (const PixelC *);
	Void decodeInterCAEV (const PixelC *);
	Void decodeMVDS (CMotionVector& mvDiff);

	//for temporal scalability	Added by Sharp(1998-02-10)
	void updateBuffVOPsBase (CVideoObjectDecoder* pvodecEnhc);
	void updateRefVOPsEnhc ();
	void updateBuffVOPsEnhc ();
	void copyRefQ1ToQ0 ();
	void copyTobfShape ();
	Void decode_IShape (); // for back/forward shape
//	Void compute_bfShapeMembers ();
	Void BackgroundComposition(char* argv[], Bool bScalability, Int width, Int height, FILE *pfYUV); // for background composition // modified by Sharp (98/10/26)
	Void dumpDataOneFrame(char* argv[], Bool bScalability, CRct& rctDisplay); // write pvopcReconCurr () with Sharp's format
	Void dumpDataAllFrame(FILE* pfReconYUV, FILE* pfReconSeg, CRct& rctDisplay);
	// I/O
	Time senseTime ();
	Time getTime ();
	int getPredType ();
	// bufferControl
	void set_enh_display_size(CRct rctDisplay, CRct *rctDisplay_SSenh);
	void bufferP1flush ();
	void bufferB1flush ();
	void bufferB2flush ();
	void copyBufP2ToB1 ();
	//for temporal scalability	End	 Sharp(1998-02-10)
	void setClockRateScale ( CVideoObjectDecoder *pvopdec ); // added by Sharp (98/6/26)

	// INTERLACE
	Void fieldDCTtoFrameC(PixelC* ppxlcRefMBY);
	Void fieldDCTtoFrameI(PixelI* ppxlcCurrMBY);
	// ~INTRELACE

	// Block decoding functions
	Void decodeIntraBlockTexture (PixelC* rgchBlkDst,
								 Int iWidthDst,
								 Int iQP, 
								 Int iDcScaler,
								 Bool bIsYBlock,
								 MacroBlockMemory* pmbmCurr,
								 CMBMode* pmbmd,
 								 const BlockMemory blkmPred,
								 Int iQPPred);
	Void decideIntraPred (const BlockMemory& blkmRet, 
						   CMBMode* pmbmdCurr,
						   Int&	iQPpred,
						   BlockNum blkn,									   
						   const MacroBlockMemory* pmbmLeft, 
  						   const MacroBlockMemory* pmbmTop, 
						   const MacroBlockMemory* pmbmLeftTop,
						   const MacroBlockMemory* pmbmCurr,
						   const CMBMode* pmbmdLeft,
						   const CMBMode* pmbmdTop,
						   const CMBMode* pmbmdLeftTop);
	Void decodeTextureInterBlock (Int* rgiBlkCurrQ, Int iWidthCurrQ, Int iQP, Bool bAlphaBlock);
	Void decodeIntraTCOEF (Int* rgiCoefQ, Int iCoefStart, Int* rgiZigzag);
	Void decodeInterTCOEF (Int* rgiCoefQ, Int iCoefStart, Int* rgiZigzag);
	Int decodeIntraDCmpeg (Bool bIsYBlk);					//decode the intra-dc: mpeg2 method
	Void decodeInterVLCtableIndex (Int iIndex, Int&  iLevel, Int&  iRun, Bool& bIsLastRun);  // return islastrun, run and level
	Void decodeIntraVLCtableIndex (Int iIndex, Int&  iLevel, Int&  iRun, Bool& bIsLastRun);  // return islastrun, run and level
	typedef Void (CVideoObjectDecoder::*DECODE_TABLE_INDEX)(Int iIndex, Bool& bIsLastRun, Int&  iRun, Int&  iLevel);	//func ptr code escp. decoding
	Void decodeEscape (Int& iLevel, Int& iRun, Int& bIsLastRun, const Int* rgiLMAX, const Int* rgiRMAX, 
					   CEntropyDecoder* pentrdec, DECODE_TABLE_INDEX decodeVLCtableIndex);
	Void inverseDCACPred (const CMBMode* pmbmd, Int iBlkIdx, Int* rgiCoefQ, Int iQP, Int iDcScaler, const BlockMemory blkmPred, Int iQpPred);

	// sprite decoding
	Int decodeSpt ();
	Void decodeWarpPoints ();

	// added for error resilience mode By Toshiba
	Int	checkResyncMarker();
	Bool	decodeVideoPacketHeader(Int& iCurrentQP);

 	// added for error resilience mode(DP+RVLC) By Toshiba(1998-1-16:DP+RVLC)
 	Int	checkMotionMarker();
 	Int	checkDCMarker();
 	// I-VOP
 	Void decodeMBTextureDCOfIVOP_DataPartitioning (CMBMode* pmbmd, Int& iCurrentQP,
		Int* piIntraDC, Bool &bUseNewQPForVlcThr);
 	Void decodeMBTextureHeadOfIVOP_DataPartitioning (CMBMode* pmbmd, Int* piMCBPC);
 	Void decodeTextureIntraMB_DataPartitioning (CMBMode* pmbmd, CoordI iMBX, CoordI iMBY,
 			PixelC* ppxlcCurrFrmQY, PixelC* ppxlcCurrFrmQU, PixelC* ppxlcCurrFrmQV, Int* piIntraDC);
 	
 	// P-VOP
 	Void decodeMBTextureHeadOfPVOP_DataPartitioning (CMBMode* pmbmd, Int& iCurrentQP, Int* piMCBPC,
		Int* piIntraDC, Bool &bUseNewQPForVlcThr);
 	Void decodeTextureInterMB_DataPartitioning (CMBMode* pmbmd);
 	
 	// B-VOP
 	Void decodeMBTextureHeadOfBVOP_DataPartitioning (CMBMode* pmbmd, Int& iCurrQP);
 	
 	Void setCBPYandC_DataPartitioning (CMBMode* pmbmd, Int iCBPC, Int iCBPY, Int cNonTrnspBlk);
 
 	Void decodeIntraBlockTexture_DataPartitioning (Int iBlk, CMBMode* pmbmd, Int* piINtraDC);
 	Void decodeIntraBlockTextureTcoef_DataPartitioning (PixelC* rgchBlkDst,
 								 Int iWidthDst,
 								 Int iQP, 
 								 Int iDcScaler,
 								 Bool bIsYBlock,
 								 MacroBlockMemory* pmbmCurr,
 								 CMBMode* pmbmd,
 								 const BlockMemory blkmPred,
 								 Int iQPPred,
 								 Int* piIntraDC);
 
 	Void decodeIntraRVLCTCOEF (Int* rgiCoefQ, Int iCoefStart, Int* rgiZigzag);
 	Void decodeInterRVLCTCOEF (Int* rgiCoefQ, Int iCoefStart, Int* rgiZigzag);
 	Void decodeInterRVLCtableIndex (Int iIndex, Int&  iLevel, Int&  iRun, Int& bIsLastRun);  // return islastrun, run and level
 	Void decodeIntraRVLCtableIndex (Int iIndex, Int&  iLevel, Int&  iRun, Bool& bIsLastRun);  // return islastrun, run and level
 	Void decodeRVLCEscape (Int& iLevel, Int& iRun, Int& bIsLastRun, const Int* rgiLMAX, const Int* rgiRMAX, 
 					   CEntropyDecoder* pentrdec, DECODE_TABLE_INDEX decodeVLCtableIndex);
 	//	End Toshiba(DP+RVLC)(1998-1-16:DP+RVLC)
};

#endif // __VOPSEDEC_HPP_

⌨️ 快捷键说明

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