summaryrefslogtreecommitdiff
path: root/command/video.h
diff options
context:
space:
mode:
Diffstat (limited to 'command/video.h')
-rw-r--r--command/video.h72
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();
};