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 00022 /* FrameAnalyzer interface. */ 00023 const char *name(void) const { return "BlankFrameDetector"; } 00024 enum analyzeFrameResult MythPlayerInited(MythPlayer *player, 00025 long long nframes); 00026 enum analyzeFrameResult analyzeFrame(const VideoFrame *frame, 00027 long long frameno, long long *pNextFrame); 00028 int finished(long long nframes, bool final); 00029 int reportTime(void) const; 00030 FrameMap GetMap(unsigned int index) const 00031 { return (index) ? blankMap : breakMap; } 00032 00033 /* BlankFrameDetector interface. */ 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 00043 FrameAnalyzer::FrameMap blankMap; 00044 FrameAnalyzer::FrameMap breakMap; 00045 00046 /* Debugging */ 00047 int debugLevel; 00048 }; 00049 00050 #endif /* !__BLANKFRAMEDETECTOR_H__ */ 00051 00052 /* vim: set expandtab tabstop=4 shiftwidth=4: */
1.6.3