📄 ch263class.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 + -