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

📄 ch263class.h

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

class CH263Picture;
#include "deblock.h"
class CH263MB
{
	friend class CH263Encoder;
	friend class CH263Picture;
protected:
	int Width,Height;
	short QCoeffData[384+4],*QCoeff;
	short BQCoeffData[384+4],*BQCoeff;

	void Dct(short *block,short *coeff);
	void idct(short *coeff,short *block);	

 public:
	PictureLayerInfo Pic;
	MBLayerInfo MBInfo;
	MBLayerBits MBBits;
	MB_Structure MBData,BData;
	MB_BYTE_Structure PredData;
	int QP,CBP,Mode,QP_B;
	CH263Picture * m_pPic;

	CH263MB(int ww,int hh,CH263Picture * pPic);
	void InitMB(void);
	void DecideMBHeader();
	int  SACEncodeMBHeader(SAC *SACode);
	int  SACEncodeCoeff(SAC *SACode);
	int  EncodeMBHeader(CBitStream *OutputStream);
	int  EncodeCoeff(CBitStream *OutputStream);
	int  CodeCoeff(int block,CBitStream *OutputStream);
	int  SACCodeCoeff(int block,SAC *SACode);
	void FillMBData(YUVData Source,int x,int y);
	void EncodeMBData(void);
	void DecodeMBData(void);
	void Quant(short *coeff,int BlockNo);
	void DeQuant(short *rcoeff,int BlockNo);
	void FillRecon(YUVData Loss,int x,int y);
	void Predict_P(YUVData Cur,YUVData Inter, int xpos, int ypos);
	void MB_Recon_P(YUVData Loss,int xpos, int ypos);
	void Predict_P4V(YUVData Cur,YUVData Inter, int xpos, int ypos);
	void MB_Recon_P4V(YUVData Loss,int xpos, int ypos);
	int  EncodeVectors(int x,int y,CBitStream *OutputStream);
	int  SACEncodeVectors(int x, int y,SAC *SACode);
	int  EncodeAPVectors(int x,int y,CBitStream *OutputStream);
	int  SACEncodeAPVectors(int x, int y,SAC *SACode);
	int  EncodePBVectors(int x,int y,CBitStream *OutputStream);
	int  SACEncodePBVectors(int x, int y,SAC *SACode);
	void FindAPPMV(int x,int y,int pmvx[4],int pmvy[4]);
	void Overlap_Pred(BYTE *PrevInter,int BlockNo,int x,int y);

	void EncodeBData(void);
	void BQuant(short *coeff,int BlockNo);
	void DecodeBData(void);
	void BDeQuant(short *rcoeff,int BlockNo);
	int  EncodeBCoeff(CBitStream *OutputStream);
	int  CodeBCoeff(int block,CBitStream *OutputStream);
	int  SACEncodeBCoeff(SAC *SACode);
	int  SACCodeBCoeff(int block,SAC *SACode);
	void Predict_B(YUVData BSrc,YUVData PrevInter,YUVData CurLoss,
			int x, int y,int TRD,int TRB);
	void MB_Recon_B(YUVData BLoss,int x, int y);
	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 CH263GOB
{public:
	GOBLayerInfo GOBInfo;
	GOBLayerBits GOBBits;

	CH263GOB();
	int EncodeGOBHeader(CBitStream *OutputStream);
};

//H263 Picture Layer class;
class CH263Picture
{
	friend class CH263MB;

protected:
	int Width,Height,ImageSize;
	PictureLayerInfo PictureInfo;
	PictureLayerBits PictureBits;
	//CFile WriteFile;
	CH263GOB *Group;
	CH263MB  *MB;
	MotionVector MV[99*4],MVAP[99*4][4],MVPB[99*4];
	AreaInt StrPrevInt;
	CDeblock * m_pDeblock;

public:
	int DataLength;
	BYTE CompressData[MAXLENGTH];

private:
	int EncodePictureHeader(CBitStream * OutputStream);

public:
	YUVData PrevRecon,CurImage,CurRecon,BImage,BRecon,TIData,SkipFrame;
	int TotalByte,BitHead,BitData,BitVector;

	void InitPicture(int nSourceFormat=SF_QCIF,int nCompressOption=CF_SAC,int nQuant=10);
	void FreePicture(void);
	CH263Picture(int SourceFormat=SF_QCIF,int nCompressOption=CF_SAC,int nQuant=10);
	virtual ~CH263Picture(void);
	int EncodeINTRAPicture(YUVData Source,YUVData Loss);
	int EncodePicture(int Mode,int nTotalFrame);
	BOOL OutputToFile(void);
	int EncodeINTERPicture(YUVData Source,YUVData Loss,YUVData PrevRec);
	void InterpolateImage(YUVData Reference,YUVData InterFrame,
					int pixels,int lines);
	int EncodePBPicture(YUVData Source,YUVData Loss,YUVData PrevRec,
					YUVData BSrc,YUVData BLoss);
	void MakeEdgeData(YUVData src,YUVData dst, int width,
		   int height, int edge);
	BOOL MotionEstimationPicture(BYTE *CurFrame,BYTE *ReferFrame,BYTE *InterFrame);
	void MotionEstimationBlock(int xx,int yy,int block,int VectorW,
					int VectorH,BYTE *CurFrame,BYTE *InterFrame);
	
	void SwapPtr(YUVData &Swap1,YUVData &Swap2);
};

⌨️ 快捷键说明

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