timgfilters.h

来自「从FFMPEG转换而来的H264解码程序,VC下编译..」· C头文件 代码 · 共 89 行

H
89
字号
#ifndef _TIMGFILTERS_H_
#define _TIMGFILTERS_H_

#include "Tfilters.h"
#include "TexpandSettings.h"

struct TffPict;
DECLARE_INTERFACE(IprocVideoSink)
{
 STDMETHOD (deliverProcessedSample)(TffPict &pict) PURE;
};

struct TglobalSettingsDecVideo;
struct TpresetVideo;
class TimgFilterSubtitles;
class TimgFilterOutput;
struct TsubtitlesSettings;
struct TffPictBase;
struct IimgFilterGrab;
struct ToutputVideoSettings;
struct IOSDprovider;
class TimgFilters :public Tfilters
{
private:
 IprocVideoSink *sink;
 IimgFilterGrab *grab;
 TimgFilterOutput *output;
 bool firstprocess;
protected:
 TimgFilters(IffdshowBase *Ideci,IprocVideoSink *Isink);
 comptrQ<IffdshowDecVideo> deciV;
 virtual void onFirstProcess(const TpresetVideo *cfg) {}
 TimgFilterSubtitles *subtitles;
public:
 virtual ~TimgFilters();

 virtual void getOutputFmt(TffPictBase &pict,const TpresetVideo *cfg);
 virtual HRESULT process(TffPict &pict,const TpresetVideo *cfg);
 HRESULT deliverSample(TfilterQueue::iterator it,TffPict &pict);
 HRESULT convertOutputSample(const TffPict &pict,int dstcsp,unsigned char *dst[4],int dstStride[4],LONG &dstSize,const ToutputVideoSettings *cfg);

 int dirtyBorder;
 REFERENCE_TIME subtitleResetTime;

 bool initSubtitles(int id,int type,const unsigned char *extradata,unsigned int extradatalen);
 void addSubtitle(int id,REFERENCE_TIME start,REFERENCE_TIME stop,const unsigned char *data,unsigned int datalen,const TsubtitlesSettings *cfg,bool utf8);
 void resetSubtitles(int id);
 bool ctlSubtitles(int id,int type,unsigned int ctl_id,const void *ctl_data,unsigned int ctl_datalen);
 const char_t *getCurrentSubFlnm(void) const;

 virtual HRESULT addClosedCaption(const char* line) {return E_NOTIMPL;}
 virtual HRESULT hideClosedCaptions(void) {return E_NOTIMPL;}
 virtual bool shortOSDmessage(const char_t *msg,unsigned int duration) {return false;}
 virtual HRESULT registerOSDprovider(IOSDprovider *provider,const char *name) {return E_NOTIMPL;}
 virtual HRESULT unregisterOSDprovider(IOSDprovider *provider) {return E_NOTIMPL;}

 void grabNow(void);
};

class TimgFilterOSD;
struct TfontSettingsOSD;
struct TresizeAspectSettings;
class TimgFiltersPlayer :public TimgFilters
{
private:
 const TglobalSettingsDecVideo *globalCfg;
 const TfontSettingsOSD &globalFontSettingsOSD;TimgFilterOSD *osd;
 const bool &allowOutChange;
 TexpandSettings expandSettings;Tfilter *expand;
 TresizeAspectSettings *resizeSettingsDV;Tfilter *resizeDV;
protected:
 virtual void onFirstProcess(const TpresetVideo *cfg);
 virtual void makeQueue(const Tpreset *cfg,TfilterQueue &queue);
public:
 TimgFiltersPlayer(IffdshowBase *Ideci,IprocVideoSink *Isink,const TfontSettingsOSD &IglobalFontSettingsOSD,bool &IallowOutChange);
 virtual ~TimgFiltersPlayer();

 virtual void getOutputFmt(TffPictBase &pict,const TpresetVideo *cfg);
 virtual HRESULT process(TffPict &pict,const TpresetVideo *cfg);

 TfontSettingsOSD *fontSettingsOSD;
 virtual bool shortOSDmessage(const char_t *msg,unsigned int duration);
 virtual HRESULT addClosedCaption(const char *line),hideClosedCaptions(void);
 virtual HRESULT registerOSDprovider(IOSDprovider *provider,const char *name);
 virtual HRESULT unregisterOSDprovider(IOSDprovider *provider);
};

#endif

⌨️ 快捷键说明

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