diff options
Diffstat (limited to 'command/video.h')
-rw-r--r-- | command/video.h | 72 |
1 files changed, 48 insertions, 24 deletions
diff --git a/command/video.h b/command/video.h index 9767006..f4abbec 100644 --- a/command/video.h +++ b/command/video.h @@ -23,11 +23,33 @@ #define LOGO_VMARK 0.5 // percantage of pixels for visible #define LOGO_IMARK 0.15 // percentage of pixels for invisible +enum +{ + LOGO_ERROR=-3, + LOGO_UNINITIALIZED=-2, + LOGO_INVISIBLE=-1, + LOGO_NOCHANGE=0, + LOGO_VISIBLE=1 +}; + +enum +{ + HBORDER_ERROR=-3, + HBORDER_UNINITIALIZED=-2, + HBORDER_INVISIBLE=-1, + HBORDER_NOCHANGE=0, + HBORDER_VISIBLE=1 +}; + +enum +{ + OV_BEFORE=0, + OV_AFTER=1 +}; + class cMarkAdOverlap { private: -#define BEFORE 0 -#define AFTER 1 MarkAdContext *macontext; typedef int simpleHistogram[256]; @@ -68,15 +90,6 @@ private: BOTTOM_RIGHT }; - enum - { - ERROR=-3, - UNINITIALIZED=-2, - NOLOGO=-1, - NOCHANGE=0, - LOGO=1 - }; - int LOGOHEIGHT; // max. 140 int LOGOWIDTH; // 192-288 @@ -114,27 +127,36 @@ private: public: cMarkAdLogo(MarkAdContext *maContext); int Process(int FrameNumber, int *LogoFrameNumber); + int Status() + { + return area.status; + } + void SetStatusLogoInvisible() + { + if (area.status==LOGO_VISIBLE) + area.status=LOGO_INVISIBLE; + } + void SetStatusUninitialized() + { + if (area.status!=LOGO_UNINITIALIZED) + area.status=LOGO_UNINITIALIZED; + } void Clear(); }; class cMarkAdBlackBordersHoriz { private: - enum - { - ERROR=-3, - UNINITIALIZED=-2, - NOBORDER=-1, - NOCHANGE=0, - BORDER=1 - }; - int borderstatus; int borderframenumber; MarkAdContext *macontext; public: cMarkAdBlackBordersHoriz(MarkAdContext *maContext); int Process(int FrameNumber,int *BorderFrameNumber); + int Status() + { + return borderstatus; + } void Clear(); }; @@ -149,16 +171,18 @@ private: cMarkAdLogo *logo; cMarkAdOverlap *overlap; - void ResetMarks(); - bool AddMark(int Type, int Position, const char *Comment); - bool AspectRatioChange(MarkAdAspectRatio *a, MarkAdAspectRatio *b); + void resetmarks(); + bool addmark(int type, int position, MarkAdAspectRatio *before=NULL, + MarkAdAspectRatio *after=NULL); + bool aspectratiochange(MarkAdAspectRatio &a, MarkAdAspectRatio &b, bool &start); int framelast; + int framebeforelast; public: cMarkAdVideo(MarkAdContext *maContext); ~cMarkAdVideo(); - MarkAdPos *Process2ndPass(int FrameNumber, int Frames, bool BeforeAd); + MarkAdPos *ProcessOverlap(int FrameNumber, int Frames, bool BeforeAd); MarkAdMarks *Process(int FrameNumber, int FrameNumberNext); void Clear(); }; |