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

📄 dh263class.h

📁 这是G.723和G.729的音频编解码的源代码
💻 H
字号:

#include "deblock.h"

class DH263Picture;
class DH263MB
{protected:
	int Width,Height;
	void idct(short *coeff,short *block);

 public:
	DH263Picture * m_pPic;
	short QCoeffData[388],*QCoeff;
	short BQCoeffData[388],*BQCoeff;
	PictureLayerInfo Pic;
	MBLayerInfo MBInfo;
	MBLayerBits MBBits;
	MB_Structure MBData;
	MB_Structure BData;
	MB_BYTE_Structure PredData;
	int QP,CBP,Mode,QP_B;

	DH263MB(int ww,int hh,DH263Picture * pPic);
	int  SACDecodeMBHeader(SAD *SADeco,int xpos,int ypos);
	int  SACDecodeCoeff(SAD *SADeco);
	int  DecodeMBHeader(DBitStream * InputStream,int xpos,int ypos);
	int  DecodeCoeff(DBitStream *InputStream);
	void DecodeMBData(void);
	void DeQuant(short *rcoeff,int BlockNo);
	void FillRecon(YUVData Loss,int y,int x);
	int  MotionDecode(int vec,int pmv);
	void MB_Recon_P(YUVData Loss,YUVData Inter,int xpos, int ypos);
	void MB_Recon_P4V(YUVData Loss,YUVData Inter,int xpos, int ypos);
	void FindAPPMV(int x,int y,int &pmvx,int &pmvy,int block);
	void FindPMV(int x, int y,int &pmvx, int &pmvy);

	int  SACDecodeBCoeff(SAD *SADeco);
	int  DecodeBCoeff(DBitStream *InputStream);
	void BDeQuant(short *rcoeff,int BlockNo);
	void DecodeBData(void);
	void Overlap_Pred(BYTE *PrevInter,int BlockNo,BYTE *Over_PredData,int x,int y);
	void MB_Recon_B(YUVData BLoss,YUVData PrevInter,YUVData CurLoss,
					   int x, int y,int TRD,int TRB);
	void MB_Recon_B4V(YUVData BLoss,YUVData PrevInter,YUVData CurLoss,
					   int x, int y,int TRD,int TRB);
	void BiDirLumPred(int ystart,int ystop,int xstart,int xstop,
		BYTE *CurLossPtr,MotionVector MVB);
	void BiDirCBPred(int ystart,int ystop,int xstart,int xstop,
		BYTE *CurLossPtr,MotionVector MVB);
	void BiDirCRPred(int ystart,int ystop,int xstart,int xstop,
		BYTE *CurLossPtr,MotionVector MVB);
	void AP_BiDirLumPred(int ystart,int ystop,int xstart,int xstop,
		BYTE *CurLossPtr,MotionVector MVB);
};

class DH263GOB
{public:
	GOBLayerInfo GOBInfo;
	GOBLayerBits GOBBits;

	DH263GOB();
	int DecodeGOBHeader(BOOL CPM,DBitStream *InputStream);
};

//H263 Picture Layer class;
class DH263Picture
{
	friend class DH263MB;
protected:
	AreaInt StrPrevInt;
	int Width,Height,ImageSize;
	PictureLayerBits PictureBits;
	DH263GOB *Group;
	DH263MB  *MB;
	MotionVector DMV[99*4],DMVAP[99*4][4],DMVPB[99*4];

	int DecodePictureHeader(DBitStream * InputStream);
	CDeblock * m_pDeblock;
public:    
	int nTotalFrame;
	int DataLength;
	BYTE CompressData[MAXLENGTH];
	PictureLayerInfo PictureInfo;
	YUVData PrevRecon,CurRecon,BRecon;

	DH263Picture(void);
	virtual ~DH263Picture(void);
	int DecodeINTRAPicture(YUVData Loss,DBitStream *DecodeStream);
	void DecodePicture(void);
//	BOOL OutputToFile(BOOL PB);
	int DecodeINTERPicture(YUVData CurLoss,YUVData PrevLoss,DBitStream *DecodeStream);
	void MakeEdgeData(YUVData src,YUVData dst, int width,
		   int height, int edge);
	void InterpolateImage(YUVData Reference,YUVData InterFrame,
					int pixels,int lines);
	int DecodePBPicture(YUVData CurLoss,YUVData PrevLoss,YUVData BLoss,DBitStream *DecodeStream);

	void SwapPtr(YUVData &Swap1,YUVData &Swap2);
};

⌨️ 快捷键说明

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