summaryrefslogtreecommitdiff
path: root/command/video.cpp
diff options
context:
space:
mode:
authorJochen Dolze <vdr@dolze.de>2012-09-23 21:40:07 +0200
committerJochen Dolze <vdr@dolze.de>2012-09-23 21:40:07 +0200
commit6cd413a7a392d82d6a2117a79c65a27ee1a708a0 (patch)
tree5d5691f4d4857972b563c418d48cf4430738c10d /command/video.cpp
parent437bfc49bff25b7844b2412dff03e835a0df7c76 (diff)
downloadvdr-plugin-markad-6cd413a7a392d82d6a2117a79c65a27ee1a708a0.tar.gz
vdr-plugin-markad-6cd413a7a392d82d6a2117a79c65a27ee1a708a0.tar.bz2
A few code cleanups
Diffstat (limited to 'command/video.cpp')
-rw-r--r--command/video.cpp152
1 files changed, 49 insertions, 103 deletions
diff --git a/command/video.cpp b/command/video.cpp
index b716c59..054b66b 100644
--- a/command/video.cpp
+++ b/command/video.cpp
@@ -493,7 +493,7 @@ int cMarkAdBlackBordersHoriz::Process(int FrameNumber, int *BorderIFrame)
if (!macontext->Video.Data.Valid) return 0;
if (macontext->Video.Info.FramesPerSecond==0) return 0;
// Assumption: If we have 4:3, we should have aspectratio-changes!
- //if (macontext->Video.Info.AspectRatio.Num==4) return 0;
+ //if (macontext->Video.Info.AspectRatio.Num==4) return 0; // seems not to be true in all countries?
*BorderIFrame=0;
int height=macontext->Video.Info.Height-VOFFSET;
@@ -537,59 +537,28 @@ int cMarkAdBlackBordersHoriz::Process(int FrameNumber, int *BorderIFrame)
if (val>BRIGHTNESS) ftop=false;
}
- if ((fbottom) && (ftop))
- {
- if (borderframenumber==-1)
- {
+ if ((fbottom) && (ftop)) {
+ if (borderframenumber==-1) {
borderframenumber=FrameNumber;
- }
- else
- {
-#define MINSECS 240
- switch (borderstatus)
- {
- case HBORDER_UNINITIALIZED:
- if (FrameNumber>(borderframenumber+macontext->Video.Info.FramesPerSecond*MINSECS))
- {
- borderstatus=HBORDER_VISIBLE;
- }
- break;
-
- case HBORDER_INVISIBLE:
+ } else {
+ if (borderstatus!=HBORDER_VISIBLE) {
if (FrameNumber>(borderframenumber+macontext->Video.Info.FramesPerSecond*MINSECS))
{
*BorderIFrame=borderframenumber;
borderstatus=HBORDER_VISIBLE;
return 1; // detected start of black border
}
- break;
-
- case HBORDER_VISIBLE:
- borderframenumber=FrameNumber;
- break;
}
}
- }
- else
- {
- if (borderframenumber!=-1)
- {
- if (borderstatus==HBORDER_VISIBLE)
- {
- *BorderIFrame=borderframenumber;
- borderstatus=HBORDER_INVISIBLE;
- borderframenumber=-1;
- return -1; // detected stop of black border
- }
- else
- {
- borderframenumber=-1;
- }
- }
- else
+ } else {
+ if (borderstatus==HBORDER_VISIBLE)
{
- borderframenumber=-1;
+ *BorderIFrame=FrameNumber;
borderstatus=HBORDER_INVISIBLE;
+ borderframenumber=-1;
+ return -1; // detected stop of black border
+ } else {
+ borderframenumber=-1; // restart from scratch
}
}
return 0;
@@ -615,6 +584,8 @@ int cMarkAdBlackBordersVert::Process(int FrameNumber, int *BorderIFrame)
if (!macontext) return 0;
if (!macontext->Video.Data.Valid) return 0;
if (macontext->Video.Info.FramesPerSecond==0) return 0;
+ // Assumption: If we have 4:3, we should have aspectratio-changes!
+ //if (macontext->Video.Info.AspectRatio.Num==4) return 0; // seems not to be true in all countries?
*BorderIFrame=0;
bool fleft=true,fright=true;
@@ -649,59 +620,28 @@ int cMarkAdBlackBordersVert::Process(int FrameNumber, int *BorderIFrame)
if (val>BRIGHTNESS) fright=false;
}
- if ((fleft) && (fright))
- {
- if (borderframenumber==-1)
- {
+ if ((fleft) && (fright)) {
+ if (borderframenumber==-1) {
borderframenumber=FrameNumber;
- }
- else
- {
-#define MINSECS 240
- switch (borderstatus)
- {
- case VBORDER_UNINITIALIZED:
- if (FrameNumber>(borderframenumber+macontext->Video.Info.FramesPerSecond*MINSECS))
- {
- borderstatus=VBORDER_VISIBLE;
- }
- break;
-
- case VBORDER_INVISIBLE:
+ } else {
+ if (borderstatus!=VBORDER_VISIBLE) {
if (FrameNumber>(borderframenumber+macontext->Video.Info.FramesPerSecond*MINSECS))
{
*BorderIFrame=borderframenumber;
borderstatus=VBORDER_VISIBLE;
return 1; // detected start of black border
}
- break;
-
- case VBORDER_VISIBLE:
- borderframenumber=FrameNumber;
- break;
}
}
- }
- else
- {
- if (borderframenumber!=-1)
- {
- if (borderstatus==VBORDER_VISIBLE)
- {
- *BorderIFrame=borderframenumber;
- borderstatus=VBORDER_INVISIBLE;
- borderframenumber=-1;
- return -1; // detected stop of black border
- }
- else
- {
- borderframenumber=-1;
- }
- }
- else
+ } else {
+ if (borderstatus==VBORDER_VISIBLE)
{
- borderframenumber=-1;
+ *BorderIFrame=FrameNumber;
borderstatus=VBORDER_INVISIBLE;
+ borderframenumber=-1;
+ return -1; // detected stop of black border
+ } else {
+ borderframenumber=-1; // restart from scratch
}
}
return 0;
@@ -886,11 +826,7 @@ cMarkAdVideo::cMarkAdVideo(MarkAdContext *maContext)
memset(&marks,0,sizeof(marks));
hborder=new cMarkAdBlackBordersHoriz(maContext);
- if (macontext->Info.VPid.Type==MARKAD_PIDTYPE_VIDEO_H264) {
- vborder=new cMarkAdBlackBordersVert(maContext);
- } else {
- vborder=NULL;
- }
+ vborder=new cMarkAdBlackBordersVert(maContext);
logo = new cMarkAdLogo(maContext);
overlap = NULL;
Clear();
@@ -978,29 +914,27 @@ MarkAdMarks *cMarkAdVideo::Process(int FrameNumber, int FrameNumberNext)
int hborderframenumber;
int hret=hborder->Process(FrameNumber,&hborderframenumber);
- if ((hret>0) && (hborderframenumber))
+ if ((hret>0) && (hborderframenumber!=-1))
{
addmark(MT_HBORDERSTART,hborderframenumber);
}
- if ((hret<0) && (hborderframenumber))
+ if ((hret<0) && (hborderframenumber!=-1))
{
addmark(MT_HBORDERSTOP,hborderframenumber);
}
- if (vborder) {
- int vborderframenumber;
- int vret=vborder->Process(FrameNumber,&vborderframenumber);
+ int vborderframenumber;
+ int vret=vborder->Process(FrameNumber,&vborderframenumber);
- if ((vret>0) && (vborderframenumber))
- {
- addmark(MT_VBORDERSTART,vborderframenumber);
- }
+ if ((vret>0) && (vborderframenumber!=-1))
+ {
+ addmark(MT_VBORDERSTART,vborderframenumber);
+ }
- if ((vret<0) && (vborderframenumber))
- {
- addmark(MT_VBORDERSTOP,vborderframenumber);
- }
+ if ((vret<0) && (vborderframenumber!=-1))
+ {
+ addmark(MT_VBORDERSTOP,vborderframenumber);
}
if (!macontext->Video.Options.IgnoreAspectRatio)
@@ -1014,6 +948,18 @@ MarkAdMarks *cMarkAdVideo::Process(int FrameNumber, int FrameNumberNext)
logo->SetStatusLogoInvisible();
}
+ if ((vborder->Status()==VBORDER_VISIBLE) && (!start))
+ {
+ addmark(MT_VBORDERSTOP,framebeforelast);
+ vborder->SetStatusBorderInvisible();
+ }
+
+ if ((hborder->Status()==HBORDER_VISIBLE) && (!start))
+ {
+ addmark(MT_HBORDERSTOP,framebeforelast);
+ hborder->SetStatusBorderInvisible();
+ }
+
if ((macontext->Video.Info.AspectRatio.Num==4) &&
(macontext->Video.Info.AspectRatio.Den==3))
{