00001 /* 00002 * BlankFrameDetector 00003 * 00004 * Detect blank frames based on histogram analysis. 00005 */ 00006 00007 #ifndef __BLANKFRAMEDETECTOR_H__ 00008 #define __BLANKFRAMEDETECTOR_H__ 00009 00010 #include "FrameAnalyzer.h" 00011 00012 typedef struct AVPicture AVPicture; 00013 class HistogramAnalyzer; 00014 class TemplateMatcher; 00015 00016 class BlankFrameDetector : public FrameAnalyzer 00017 { 00018 public: 00019 /* Ctor/dtor. */ 00020 BlankFrameDetector(HistogramAnalyzer *ha, QString debugdir); 00021 ~BlankFrameDetector(void); 00022 00023 /* FrameAnalyzer interface. */ 00024 const char *name(void) const { return "BlankFrameDetector"; } 00025 enum analyzeFrameResult nuppelVideoPlayerInited(NuppelVideoPlayer *nvp, 00026 long long nframes); 00027 enum analyzeFrameResult analyzeFrame(const VideoFrame *frame, 00028 long long frameno, long long *pNextFrame); 00029 int finished(long long nframes, bool final); 00030 int reportTime(void) const; 00031 00032 /* BlankFrameDetector interface. */ 00033 bool getSkipCommBlanks(void) const { return skipcommblanks; } 00034 const FrameAnalyzer::FrameMap *getBlanks(void) const { return &blankMap; } 00035 int computeForLogoSurplus(const TemplateMatcher *tm); 00036 int computeForLogoDeficit(const TemplateMatcher *tm); 00037 int computeBreaks(FrameMap *breaks); 00038 00039 private: 00040 HistogramAnalyzer *histogramAnalyzer; 00041 float fps; 00042 bool skipcommblanks; /* skip commercial blanks */ 00043 00044 FrameAnalyzer::FrameMap blankMap; 00045 FrameAnalyzer::FrameMap breakMap; 00046 00047 /* Debugging */ 00048 int debugLevel; 00049 }; 00050 00051 #endif /* !__BLANKFRAMEDETECTOR_H__ */ 00052 00053 /* vim: set expandtab tabstop=4 shiftwidth=4: */
1.5.5