00001 #ifndef FILTERMANAGER
00002 #define FILTERMANAGER
00003
00004 extern "C" {
00005 #include "filter.h"
00006 #include "frame.h"
00007 }
00008
00009 #include <qdict.h>
00010 #include <qptrlist.h>
00011 #include <qstring.h>
00012
00013 using namespace std;
00014
00015 class FilterChain : public QPtrList<VideoFilter>
00016 {
00017 public:
00018 FilterChain();
00019
00020 virtual ~FilterChain();
00021
00022 void ProcessFrame(VideoFrame *Frame);
00023
00024 private:
00025 void deleteItem(QPtrCollection::Item d);
00026 };
00027
00028 class FilterManager
00029 {
00030 public:
00031 FilterManager();
00032 ~FilterManager();
00033
00034 void LoadFilterLib(QString Path);
00035 VideoFilter *LoadFilter(FilterInfo *Filt, VideoFrameType inpixfmt,
00036 VideoFrameType outpixfmt, int &width,
00037 int &height, char *opts);
00038
00039 FilterChain *LoadFilters(QString filters, VideoFrameType &inpixfmt,
00040 VideoFrameType &outpixfmt, int &width,
00041 int &height, int &bufsize);
00042
00043 FilterInfo *GetFilterInfoByName(QString name)
00044 {
00045 return FilterByName.find(name);
00046 }
00047
00048 QPtrList <FilterInfo> GetAllFilterInfo()
00049 {
00050 return QPtrList<FilterInfo>(Filters);
00051 }
00052
00053
00054 private:
00055 QPtrList<FilterInfo> Filters;
00056 QDict<FilterInfo> FilterByName;
00057 };
00058
00059 #endif // #ifndef FILTERMANAGER
00060