diff options
author | Jochen Dolze <vdr@dolze.de> | 2012-09-23 21:40:07 +0200 |
---|---|---|
committer | Jochen Dolze <vdr@dolze.de> | 2012-09-23 21:40:07 +0200 |
commit | 6cd413a7a392d82d6a2117a79c65a27ee1a708a0 (patch) | |
tree | 5d5691f4d4857972b563c418d48cf4430738c10d /command | |
parent | 437bfc49bff25b7844b2412dff03e835a0df7c76 (diff) | |
download | vdr-plugin-markad-6cd413a7a392d82d6a2117a79c65a27ee1a708a0.tar.gz vdr-plugin-markad-6cd413a7a392d82d6a2117a79c65a27ee1a708a0.tar.bz2 |
A few code cleanups
Diffstat (limited to 'command')
-rw-r--r-- | command/decoder.cpp | 3 | ||||
-rw-r--r-- | command/video.cpp | 152 | ||||
-rw-r--r-- | command/video.h | 16 |
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; |