summaryrefslogtreecommitdiff
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
parent437bfc49bff25b7844b2412dff03e835a0df7c76 (diff)
downloadvdr-plugin-markad-6cd413a7a392d82d6a2117a79c65a27ee1a708a0.tar.gz
vdr-plugin-markad-6cd413a7a392d82d6a2117a79c65a27ee1a708a0.tar.bz2
A few code cleanups
-rw-r--r--command/decoder.cpp3
-rw-r--r--command/video.cpp152
-rw-r--r--command/video.h16
3 files changed, 62 insertions, 109 deletions
diff --git a/command/decoder.cpp b/command/decoder.cpp
index 4b112c8..f9a9627 100644
--- a/command/decoder.cpp
+++ b/command/decoder.cpp
@@ -103,7 +103,7 @@ fail:
cMarkAdDecoder::cMarkAdDecoder(bool useH264, int Threads)
{
-#if LIBAVCODEC_VERSION_INT < ((53<<16)+(7<<8)+1)
+#if LIBAVCODEC_VERSION_INT < ((53<<16)+(7<<8)+1)
avcodec_init();
#endif
avcodec_register_all();
@@ -458,6 +458,7 @@ bool cMarkAdDecoder::DecodeVideo(MarkAdContext *maContext,uchar *pkt, int plen)
{
if (SetVideoInfos(maContext,video_context,video_frame)) ret=true;
}
+ break;
}
}
return ret;
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))
{
diff --git a/command/video.h b/command/video.h
index 294046b..7fcd97a 100644
--- a/command/video.h
+++ b/command/video.h
@@ -34,22 +34,20 @@ enum
enum
{
- HBORDER_ERROR=-3,
HBORDER_UNINITIALIZED=-2,
HBORDER_INVISIBLE=-1,
- HBORDER_NOCHANGE=0,
HBORDER_VISIBLE=1
};
enum
{
- VBORDER_ERROR=-3,
VBORDER_UNINITIALIZED=-2,
VBORDER_INVISIBLE=-1,
- VBORDER_NOCHANGE=0,
VBORDER_VISIBLE=1
};
+#define MINSECS 240
+
enum
{
OV_BEFORE=0,
@@ -165,6 +163,10 @@ public:
{
return borderstatus;
}
+ void SetStatusBorderInvisible() {
+ borderstatus=HBORDER_INVISIBLE;
+ borderframenumber=-1;
+ }
void Clear();
};
@@ -181,6 +183,10 @@ public:
{
return borderstatus;
}
+ void SetStatusBorderInvisible() {
+ borderstatus=VBORDER_INVISIBLE;
+ borderframenumber=-1;
+ }
void Clear();
};
@@ -192,7 +198,7 @@ private:
MarkAdAspectRatio aspectratio;
cMarkAdBlackBordersHoriz *hborder;
- cMarkAdBlackBordersVert *vborder;
+ cMarkAdBlackBordersVert *vborder;
cMarkAdLogo *logo;
cMarkAdOverlap *overlap;