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

📄 tvideocodeclibavcodec.h

📁 从FFMPEG转换而来的H264解码程序,VC下编译..
💻 H
字号:
#ifndef _TVIDEOCODECLIBAVCODEC_H_
#define _TVIDEOCODECLIBAVCODEC_H_

#include "TvideoCodec.h"
#include "Tlibavcodec.h"

struct Textradata;
class TccDecoder;
class TvideoCodecLibavcodec :public TvideoCodecDec,public TvideoCodecEnc,public TlibavcodecExt
{
private:
 void create(void);
 Tlibavcodec *libavcodec;
 AVCodec *avcodec;mutable char_t codecName[100];
 AVCodecContext *avctx;
 AVPaletteControl pal;
 AVFrame *frame;
 FOURCC fcc;
 FILE *statsfile;
 int cfgcomode;
 int psnr;
 bool isAdaptive;
 int threadcount;
 int neroavc,theorart;
 bool codecinited,ownmatrices;
 REFERENCE_TIME rtStart,rtStop,avgTimePerFrame,segmentTimeStart;
 struct
  {
   REFERENCE_TIME rtStart,rtStop;
   unsigned int srcSize;
  } b[2];int posB;
 Textradata *extradata;bool sendextradata;
 TffPict oldpict;
 unsigned int mb_width,mb_height,mb_count;
 static void line(unsigned char *dst,unsigned int _x0,unsigned int _y0,unsigned int _x1,unsigned int _y1,stride_t strideY);
 static void draw_arrow(uint8_t *buf, int sx, int sy, int ex, int ey, stride_t stride,int mulx,int muly,int dstdx,int dstdy);
 unsigned char *ffbuf;unsigned int ffbuflen;
 bool wasKey;
 virtual void handle_user_data(const uint8_t *buf,int buf_len);
 TccDecoder *ccDecoder;
 bool autoSkipingLoopFilter;
 enum AVDiscard initialSkipLoopFilter;
protected:
 virtual LRESULT beginCompress(int cfgcomode,int csp,const Trect &r);
 virtual bool beginDecompress(TffPictBase &pict,FOURCC infcc,const CMediaType &mt,int sourceFlags);
 virtual HRESULT flushDec(void);
public:
 TvideoCodecLibavcodec(IffdshowBase *Ideci,IdecVideoSink *IsinkD);
 TvideoCodecLibavcodec(IffdshowBase *Ideci,IencVideoSink *IsinkE);
 virtual ~TvideoCodecLibavcodec();

 virtual int getType(void) const {return IDFF_MOVIE_LAVC;}
 virtual const char_t* getName(void) const;
 virtual int caps(void) const {return CAPS::VIS_MV|CAPS::VIS_QUANTS;}

 virtual void end(void);

 virtual void getCompressColorspaces(Tcsps &csps,unsigned int outDx,unsigned int outDy);
 virtual bool supExtradata(void);
 virtual bool getExtradata(const void* *ptr,size_t *len);
 virtual HRESULT compress(const TffPict &pict,TencFrameParams &params);
 virtual HRESULT flushEnc(const TffPict &pict,TencFrameParams &params) {return compress(pict,params);}

 virtual HRESULT decompress(const unsigned char *src,size_t srcLen,IMediaSample *pIn);
 virtual void onGetBuffer(AVFrame *pic);
 virtual bool onSeek(REFERENCE_TIME segmentStart);
 virtual bool onDiscontinuity(void);
 virtual bool drawMV(unsigned char *dst,unsigned int dx,stride_t stride,unsigned int dy) const;
 virtual void getEncoderInfo(char_t *buf,size_t buflen) const;
 virtual const char* get_current_idct(void);
};

#endif

⌨️ 快捷键说明

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