summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--command/markad-standalone.cpp256
-rw-r--r--command/markad-standalone.h20
-rw-r--r--command/po/de_DE.po4
-rw-r--r--plugin/markad.cpp4
-rw-r--r--plugin/po/de_DE.po11
-rw-r--r--plugin/po/it_IT.po5
-rw-r--r--plugin/setup.cpp4
-rw-r--r--plugin/setup.h2
-rw-r--r--plugin/status.cpp10
9 files changed, 220 insertions, 96 deletions
diff --git a/command/markad-standalone.cpp b/command/markad-standalone.cpp
index e170bfe..7780e46 100644
--- a/command/markad-standalone.cpp
+++ b/command/markad-standalone.cpp
@@ -142,13 +142,15 @@ void cMarkAdStandalone::AddStartMark()
free(buf);
}
- if (tStop)
+ if (tStart)
{
- int tmp=tStart+macontext.Info.Length;
- tStop=tmp*macontext.Video.Info.FramesPerSecond;
+ if ((tStop) && (macontext.Info.Length))
+ {
+ iStop=-((tStart+macontext.Info.Length)*macontext.Video.Info.FramesPerSecond);
+ }
+ iStart=-(tStart*macontext.Video.Info.FramesPerSecond);
+ dsyslog("iStart=%i iStop=%i",iStart,iStop);
}
- if (tStart) tStart*=macontext.Video.Info.FramesPerSecond;
- dsyslog("tStart=%i tStop=%i",tStart,tStop);
}
bool cMarkAdStandalone::CheckFirstMark()
@@ -199,6 +201,8 @@ void cMarkAdStandalone::AddMark(MarkAdMark *Mark)
if (!Mark) return;
if (!Mark->Type) return;
+ bool loggedAlready=false;
+
if (Mark->Type==MT_LOGOSTART)
{
// check if last mark is an aspectratio change
@@ -226,7 +230,6 @@ void cMarkAdStandalone::AddMark(MarkAdMark *Mark)
{
if (Mark->Comment) isyslog(Mark->Comment);
isyslog("audiochannel change in short distance, using this mark (%i->%i)",Mark->Position,prev->position);
- //marks.Add(MT_MOVED,prev->position,Mark->Comment);
return;
}
}
@@ -256,6 +259,11 @@ void cMarkAdStandalone::AddMark(MarkAdMark *Mark)
if (((Mark->Type & 0xF0)==MT_BORDERCHANGE) && (Mark->Position>MINPOS) &&
(!macontext.Video.Options.IgnoreLogoDetection))
{
+ if (Mark->Comment)
+ {
+ isyslog(Mark->Comment);
+ loggedAlready=true;
+ }
isyslog("border change detected. logo detection disabled");
macontext.Video.Options.IgnoreLogoDetection=true;
marks.Del(MT_LOGOSTART);
@@ -285,6 +293,11 @@ void cMarkAdStandalone::AddMark(MarkAdMark *Mark)
if (TurnOff)
{
+ if (Mark->Comment)
+ {
+ isyslog(Mark->Comment);
+ loggedAlready=true;
+ }
isyslog("%s change detected. logo/border detection disabled",
(Mark->Type & 0xF0)==MT_ASPECTCHANGE ? "aspectratio" : "audio channel");
@@ -299,25 +312,36 @@ void cMarkAdStandalone::AddMark(MarkAdMark *Mark)
}
CheckFirstMark();
- if (tStart)
+ if (iStart>0)
{
- if (abs(Mark->Position-tStart)<200*(macontext.Video.Info.FramesPerSecond))
+ if (abs(Mark->Position-iStart)<200*(macontext.Video.Info.FramesPerSecond))
{
if ((Mark->Type==MT_ASPECTSTART) || (Mark->Type==MT_LOGOSTART) ||
(Mark->Type==MT_CHANNELSTART) || (Mark->Type==MT_ASPECTCHANGE))
{
+ if (Mark->Comment)
+ {
+ isyslog(Mark->Comment);
+ loggedAlready=true;
+ }
isyslog("assuming start of broadcast (%i)",Mark->Position);
marks.Clear(); // clear all other marks till now
- tStart=0;
+ marksAligned=true;
+ iStart=0;
}
}
}
- if ((tStop) && (Mark->Position>tStop))
+ if ((iStop>0) && (Mark->Position>tStop))
{
+ if (Mark->Comment)
+ {
+ isyslog(Mark->Comment);
+ loggedAlready=true;
+ }
isyslog("assuming stop of broadcast (%i)",Mark->Position);
fastexit=true;
- tStop=0;
+ iStop=0;
}
clMark *old=marks.Get(Mark->Position);
@@ -326,13 +350,13 @@ void cMarkAdStandalone::AddMark(MarkAdMark *Mark)
// Aspect- / Channelchange wins over Logo/Border
if (((old->type & 0xF0)!=MT_ASPECTCHANGE) && ((old->type & 0xF0)!=MT_CHANNELCHANGE))
{
- if (Mark->Comment) isyslog(Mark->Comment);
+ if ((Mark->Comment) && (!loggedAlready)) isyslog(Mark->Comment);
marks.Add(Mark->Type,Mark->Position,Mark->Comment);
}
}
else
{
- if (Mark->Comment) isyslog(Mark->Comment);
+ if ((Mark->Comment) && (!loggedAlready)) isyslog(Mark->Comment);
marks.Add(Mark->Type,Mark->Position,Mark->Comment);
}
}
@@ -498,6 +522,14 @@ bool cMarkAdStandalone::ProcessFile(const char *Directory, int Number)
if (macontext.Video.Info.Pict_Type==MA_I_TYPE)
{
lastiframe=iframe;
+ if ((iStart<0) && (lastiframe>-iStart))
+ {
+ iStart=lastiframe;
+ }
+ if ((iStop<0) && (lastiframe>-iStop))
+ {
+ iStop=lastiframe;
+ }
iframe=framecnt-1;
}
}
@@ -639,25 +671,58 @@ void cMarkAdStandalone::Process(const char *Directory)
{
if ((lastiframe) && (!fastexit))
{
+ bool set=true;
char *buf;
-#if 0
- if ((marks.Count()<=1) && (tStart))
+ if ((marks.Count()<=1) && (iStart>0))
{
- if (asprintf(&buf,"start of broadcast (%i)",tStart)!=-1)
+ if (marks.Count()==1)
{
+ clMark *mark=marks.GetFirst();
+ if (mark)
+ {
+ if (mark->position==0)
+ {
+ marks.Clear();
+ }
+ else
+ {
+ set=false;
+ }
+ }
+ }
+
+ if (set)
+ {
+ if (asprintf(&buf,"assumed start of broadcast (%i)",iStart)!=-1)
+ {
+ isyslog(buf);
+ marks.Add(MT_COMMON,iStart,buf);
+ free(buf);
+ }
+ if (iStop>0)
+ {
+ if (asprintf(&buf,"assumed stop of broadcast (%i)",iStart)!=-1)
+ {
+ isyslog(buf);
+ marks.Add(MT_COMMON,iStart,buf);
+ free(buf);
+ }
+ }
}
}
-#endif
+ else
+ {
- MarkAdMark tempmark;
- tempmark.Type=MT_COMMON;
- tempmark.Position=lastiframe;
+ MarkAdMark tempmark;
+ tempmark.Type=MT_COMMON;
+ tempmark.Position=lastiframe;
- if (asprintf(&buf,"stop of recording (%i)",lastiframe)!=-1)
- {
- tempmark.Comment=buf;
- AddMark(&tempmark);
- free(buf);
+ if (asprintf(&buf,"stop of recording (%i)",lastiframe)!=-1)
+ {
+ tempmark.Comment=buf;
+ AddMark(&tempmark);
+ free(buf);
+ }
}
}
@@ -671,7 +736,7 @@ void cMarkAdStandalone::Process(const char *Directory)
usec+=1000000;
sec--;
}
- RateMarks();
+ //RateMarks();
if (marks.Save(Directory,macontext.Video.Info.FramesPerSecond,isTS))
{
bool bIndexError=false;
@@ -781,7 +846,8 @@ bool cMarkAdStandalone::LoadInfo(const char *Directory)
if (cr) *cr=0;
}
}
- if ((line[0]=='@') && (start) && (macontext.Info.Length) && (!tStart) && (!tStop))
+ if ((line[0]=='@') && (start) && (macontext.Info.Length) &&
+ (!tStart) && (!tStop) && (!bIgnoreTimerInfo))
{
int ntok=0;
char *str=line,*tok;
@@ -1128,7 +1194,7 @@ bool cMarkAdStandalone::RegenerateVDRIndex(const char *Directory)
bool cMarkAdStandalone::CreatePidfile(const char *Directory)
{
- char *buf;
+ char *buf=NULL;
if (asprintf(&buf,"%s/markad.pid",Directory)==-1) return false;
// check for other running markad process
@@ -1157,16 +1223,11 @@ bool cMarkAdStandalone::CreatePidfile(const char *Directory)
if (getuid()==0 || geteuid()!=0)
{
- // if we are root, set fileowner to owner of 001.vdr/00001.ts file
- char *spath=NULL;
- if (asprintf(&spath,"%s/%s",Directory,isTS ? "00001.ts" : "001.vdr")!=-1)
+ // if we are root, set fileowner to owner of directory
+ struct stat statbuf;
+ if (!stat(Directory,&statbuf))
{
- struct stat statbuf;
- if (!stat(spath,&statbuf))
- {
- chown(buf,statbuf.st_uid, statbuf.st_gid);
- }
- free(spath);
+ chown(buf,statbuf.st_uid, statbuf.st_gid);
}
}
@@ -1192,11 +1253,12 @@ const char cMarkAdStandalone::frametypes[8]={'?','I','P','B','D','S','s','b'};
cMarkAdStandalone::cMarkAdStandalone(const char *Directory, bool BackupMarks, int LogoExtraction,
int LogoWidth, int LogoHeight, bool DecodeVideo,
- bool DecodeAudio, bool IgnoreVideoInfo, bool IgnoreAudioInfo,
+ bool DecodeAudio, int IgnoreInfo,
const char *LogoDir, const char *MarkFileName, bool ASD,
bool noPid, bool OSD, const char *SVDRPHost, int SVDRPPort,
- bool Before, bool GenIndex, bool Start, bool Stop)
+ bool Before, bool GenIndex, int Start, int Stop)
{
+ setlocale(LC_MESSAGES, "");
directory=Directory;
abort=false;
fastexit=false;
@@ -1219,12 +1281,41 @@ cMarkAdStandalone::cMarkAdStandalone(const char *Directory, bool BackupMarks, in
bDecodeVideo=DecodeVideo;
bDecodeAudio=DecodeAudio;
- bIgnoreAudioInfo=IgnoreAudioInfo;
- bIgnoreVideoInfo=IgnoreVideoInfo;
bGenIndex=GenIndex;
bBackupMarks=BackupMarks;
tStart=Start;
tStop=Stop;
+ iStart=0;
+ iStop=0;
+
+ if ((IgnoreInfo & IGNORE_VIDEOINFO)==IGNORE_VIDEOINFO)
+ {
+ bIgnoreVideoInfo=true;
+ }
+ else
+ {
+ bIgnoreVideoInfo=false;
+ }
+
+ if ((IgnoreInfo & IGNORE_AUDIOINFO)==IGNORE_AUDIOINFO)
+ {
+ bIgnoreAudioInfo=true;
+ }
+ else
+ {
+ bIgnoreAudioInfo=false;
+ }
+
+ if ((IgnoreInfo & IGNORE_TIMERINFO)==IGNORE_TIMERINFO)
+ {
+ bIgnoreTimerInfo=true;
+ tStart=0;
+ tStop=0;
+ }
+ else
+ {
+ bIgnoreTimerInfo=false;
+ }
macontext.Info.DPid.Type=MARKAD_PIDTYPE_AUDIO_AC3;
macontext.Info.APid.Type=MARKAD_PIDTYPE_AUDIO_MP2;
@@ -1248,6 +1339,10 @@ cMarkAdStandalone::cMarkAdStandalone(const char *Directory, bool BackupMarks, in
{
isyslog("video info usage disabled by user");
}
+ if (bIgnoreTimerInfo)
+ {
+ isyslog("timer info usage disabled by user");
+ }
if (LogoExtraction!=-1)
{
@@ -1324,10 +1419,10 @@ cMarkAdStandalone::cMarkAdStandalone(const char *Directory, bool BackupMarks, in
{
if (bDecodeVideo)
{
- esyslog("failed loading info - logo %s and pre-/post-timer disabled",
- (LogoExtraction!=-1) ? "extraction" : "detection");
+ esyslog("failed loading info - logo %s%sdisabled",
+ (LogoExtraction!=-1) ? "extraction" : "detection",
+ tStop ? " and post-timer " : " ");
}
- tStart=0;
tStop=0;
}
@@ -1346,7 +1441,7 @@ cMarkAdStandalone::cMarkAdStandalone(const char *Directory, bool BackupMarks, in
if (OSD)
{
osd= new cOSDMessage(SVDRPHost,SVDRPPort);
- if (osd) osd->Send("%s %s",trNOOP("starting markad for"),ptitle);
+ if (osd) osd->Send("%s %s",tr("starting markad for"),ptitle);
}
else
{
@@ -1426,11 +1521,11 @@ cMarkAdStandalone::~cMarkAdStandalone()
{
if (abort)
{
- osd->Send("%s %s",trNOOP("markad aborted for"),ptitle);
+ osd->Send("%s %s",tr("markad aborted for"),ptitle);
}
else
{
- osd->Send("%s %s",trNOOP("markad finished for"),ptitle);
+ osd->Send("%s %s",tr("markad finished for"),ptitle);
}
}
@@ -1473,14 +1568,16 @@ int usage()
" 3 = disable video and audio\n"
"-i --ignoreinfo=<info>\n"
" ignores hints from info(.vdr) file\n"
- " <info> 1 = ignore audio info 2 = ignore video info\n"
- " 3 = ignore video and audio info\n"
+ " <info> 1 = ignore audio info 2 = ignore video info\n"
+ " 4 = ignore timer info\n"
+ " (options can be added together, e.g. 5 = ignore\n"
+ " audio and timer info)\n"
"-l --logocachedir\n"
" directory where logos stored, default /var/lib/markad\n"
- "-p, --priority level=<priority>\n"
+ "-p --priority level=<priority>\n"
" priority-level of markad when running in background\n"
" <-20...19> default 19\n"
- "-v, --verbose\n"
+ "-v --verbose\n"
" increments loglevel by one, can be given multiple times\n"
"-B --backupmarks\n"
" make a backup of existing marks\n"
@@ -1493,16 +1590,12 @@ int usage()
" [width] range from 50 to %3i, default %3i (SD)\n"
" default %3i (HD)\n"
" [height] range from 20 to %3i, default %3i\n"
- "-O, --OSD\n"
+ "-O --OSD\n"
" markad sends an OSD-Message for start and end\n"
"-V --version\n"
" print version-info and exit\n"
" --asd\n"
" enable audio silence detecion\n"
- " --bstart=<seconds>\n"
- " margin at start\n"
- " --bstop=<seconds>\n"
- " margin at stop\n"
" --markfile=<markfilename>\n"
" set a different markfile-name\n"
" --online[=1|2] (default is 1)\n"
@@ -1516,6 +1609,10 @@ int usage()
" ip/hostname of a remote VDR for OSD messages\n"
" --svdrpport=<port> (default is 2001)\n"
" port of a remote VDR for OSD messages\n"
+ " --tstart=<seconds>\n"
+ " margin at start\n"
+ " --tstop=<seconds>\n"
+ " margin at stop\n"
"\ncmd: one of\n"
"- dummy-parameter if called directly\n"
"after markad starts to analyze the recording\n"
@@ -1532,6 +1629,10 @@ int usage()
static void signal_handler(int sig)
{
+ void *trace[32];
+ char **messages = (char **)NULL;
+ int i, trace_size = 0;
+
switch (sig)
{
case SIGTSTP:
@@ -1547,6 +1648,15 @@ static void signal_handler(int sig)
break;
case SIGSEGV:
esyslog("segmentation fault");
+
+ trace_size = backtrace(trace, 32);
+ messages = backtrace_symbols(trace, trace_size);
+ esyslog("[bt] Execution path:");
+ for (i=0; i<trace_size; ++i)
+ {
+ esyslog("[bt] %s\n", messages[i]);
+ }
+ _exit(1);
break;
case SIGTERM:
case SIGINT:
@@ -1578,8 +1688,7 @@ int main(int argc, char *argv[])
int svdrpport=2001;
bool bDecodeVideo=true;
bool bDecodeAudio=true;
- bool bIgnoreAudioInfo=false;
- bool bIgnoreVideoInfo=false;
+ int ignoreInfo=0;
bool bGenIndex=false;
int tstart=0;
int tstop=0;
@@ -1673,22 +1782,11 @@ int main(int argc, char *argv[])
case 'i':
// --ignoreinfo
- switch (atoi(optarg))
+ ignoreInfo=atoi(optarg);
+ if ((ignoreInfo<0) || (ignoreInfo>255))
{
- case 1:
- bIgnoreAudioInfo=true;
- break;
- case 2:
- bIgnoreVideoInfo=true;
- break;
- case 3:
- bIgnoreVideoInfo=true;
- bIgnoreAudioInfo=true;
- break;
- default:
fprintf(stderr, "markad: invalid ignoreinfo option: %s\n", optarg);
return 2;
- break;
}
break;
@@ -1862,26 +1960,26 @@ int main(int argc, char *argv[])
}
break;
- case 10: // --bstart
+ case 10: // --tstart
if (isnumber(optarg) && atoi(optarg) > 0)
{
tstart=atoi(optarg);
}
else
{
- fprintf(stderr, "markad: invalid bstart value: %s\n", optarg);
+ fprintf(stderr, "markad: invalid tstart value: %s\n", optarg);
return 2;
}
break;
- case 11: // --bstop
+ case 11: // --tstop
if (isnumber(optarg) && atoi(optarg) > 0)
{
tstop=atoi(optarg);
}
else
{
- fprintf(stderr, "markad: invalid bstop value: %s\n", optarg);
+ fprintf(stderr, "markad: invalid tstop value: %s\n", optarg);
return 2;
}
break;
@@ -1925,7 +2023,7 @@ int main(int argc, char *argv[])
}
}
- // do nothing if called from vdr before/after the video is cutted
+// do nothing if called from vdr before/after the video is cutted
if ((bAfter) && (online)) return 0;
if (bBefore)
{
@@ -1934,8 +2032,8 @@ int main(int argc, char *argv[])
}
if (bEdited) return 0;
- // we can run, if one of bImmediateCall, bAfter, bBefore or bNice is true
- // and recDir is given
+// we can run, if one of bImmediateCall, bAfter, bBefore or bNice is true
+// and recDir is given
if ( (bImmediateCall || bBefore || bAfter || bNice) && recDir )
{
// if bFork is given go in background
@@ -2055,7 +2153,7 @@ int main(int argc, char *argv[])
signal(SIGCONT, signal_handler);
cmasta = new cMarkAdStandalone(recDir,bBackupMarks, logoExtraction, logoWidth, logoHeight,
- bDecodeVideo,bDecodeAudio,bIgnoreVideoInfo,bIgnoreAudioInfo,
+ bDecodeVideo,bDecodeAudio,ignoreInfo,
logoDirectory,markFileName,bASD,bNoPid,bOSD,svdrphost,
svdrpport,bBefore,bGenIndex,tstart,tstop);
if (!cmasta) return -1;
diff --git a/command/markad-standalone.h b/command/markad-standalone.h
index 65717b9..9f6954f 100644
--- a/command/markad-standalone.h
+++ b/command/markad-standalone.h
@@ -22,6 +22,9 @@
#include <sys/wait.h>
#include <pthread.h>
#include <poll.h>
+#include <locale.h>
+#include <libintl.h>
+#include <execinfo.h>
#include "demux.h"
#include "global.h"
@@ -32,7 +35,11 @@
#include "version.h"
#include "marks.h"
-#define trNOOP(s) (s)
+#define tr(s) dgettext("markad",s)
+
+#define IGNORE_VIDEOINFO 1
+#define IGNORE_AUDIOINFO 2
+#define IGNORE_TIMERINFO 4
class cOSDMessage
{
@@ -199,9 +206,12 @@ unsigned Descriptor_Length:
bool bDecodeAudio;
bool bIgnoreAudioInfo;
bool bIgnoreVideoInfo;
+ bool bIgnoreTimerInfo;
bool bGenIndex;
- int tStart;
- int tStop;
+ int tStart; // pretimer in seconds
+ int tStop; // posttimer in seconds
+ int iStart; // pretimer as index value
+ int iStop; // posttimer as index value
void CheckIndex(const char *Directory);
char *indexFile;
@@ -232,10 +242,10 @@ public:
void Process(const char *Directory);
cMarkAdStandalone(const char *Directory, bool BackupMarks, int LogoExtraction,
int LogoWidth, int LogoHeight, bool DecodeVideo,
- bool DecodeAudio, bool IgnoreVideoInfo, bool IgnoreAudioInfo,
+ bool DecodeAudio, int IgnoreInfo,
const char *LogoDir, const char *MarkFileName, bool ASD,
bool noPid, bool OSD, const char *SVDRPHost, int SVDRPPort,
- bool Before, bool GenIndex, bool Start, bool Stop);
+ bool Before, bool GenIndex, int Start, int Stop);
~cMarkAdStandalone();
};
diff --git a/command/po/de_DE.po b/command/po/de_DE.po
index 94cd6a1..0fa05e6 100644
--- a/command/po/de_DE.po
+++ b/command/po/de_DE.po
@@ -16,7 +16,7 @@ msgid "starting markad for"
msgstr "Starte markad für"
msgid "markad aborted for"
-msgstr "Markad abgebrochen bei"
+msgstr "markad abgebrochen bei"
msgid "markad finished for"
-msgstr "Markad beendet für"
+msgstr "markad beendet für"
diff --git a/plugin/markad.cpp b/plugin/markad.cpp
index caca23f..718f756 100644
--- a/plugin/markad.cpp
+++ b/plugin/markad.cpp
@@ -25,6 +25,7 @@ cPluginMarkAd::cPluginMarkAd(void)
setup.OSDMessage=false;
setup.BackupMarks=false;
setup.Verbose=false;
+ setup.NoMargins=false;
}
cPluginMarkAd::~cPluginMarkAd()
@@ -115,7 +116,7 @@ bool cPluginMarkAd::Start(void)
{
// Start any background activities the plugin shall perform.
statusMonitor = new cStatusMarkAd(bindir,logodir,&setup);
- return true;
+ return (statusMonitor!=NULL);
}
void cPluginMarkAd::Stop(void)
@@ -169,6 +170,7 @@ bool cPluginMarkAd::SetupParse(const char *Name, const char *Value)
else if (!strcasecmp(Name,"OSDMessage")) setup.OSDMessage=atoi(Value);
else if (!strcasecmp(Name,"BackupMarks")) setup.BackupMarks=atoi(Value);
else if (!strcasecmp(Name,"Verbose")) setup.Verbose=atoi(Value);
+ else if (!strcasecmp(Name,"IgnoreMargins")) setup.NoMargins=atoi(Value);
else return false;
return true;
}
diff --git a/plugin/po/de_DE.po b/plugin/po/de_DE.po
index ae1ec98..ca20a0f 100644
--- a/plugin/po/de_DE.po
+++ b/plugin/po/de_DE.po
@@ -4,7 +4,7 @@ msgid ""
msgstr ""
"Project-Id-Version: vdr\n"
"Report-Msgid-Bugs-To: <see README>\n"
-"POT-Creation-Date: 2010-04-18 15:58+0200\n"
+"POT-Creation-Date: 2010-04-26 13:57+0200\n"
"PO-Revision-Date: 2009-08-27 14:18+0200\n"
"Last-Translator: Jochen Dolze <vdr@dolze.de>\n"
"Language-Team: <vdr@linuxtv.org>\n"
@@ -13,7 +13,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
msgid "markad still running"
-msgstr "MarkAd läuft noch"
+msgstr "markad läuft noch"
msgid "running"
msgstr "aktiv"
@@ -34,13 +34,13 @@ msgid "unknown"
msgstr "unbekannt"
msgid "markad status"
-msgstr "MarkAd Status"
+msgstr "markad Status"
msgid "Recording\t Status"
msgstr "Aufnahme\t Status"
msgid "no running markad found"
-msgstr "Kein aktives MarkAd gefunden"
+msgstr "Kein aktives markad gefunden"
msgid "Pause"
msgstr "Pause"
@@ -66,6 +66,9 @@ msgstr " während einer Wiedergabe"
msgid "repair index, if broken"
msgstr "Kaputte Indexdatei reparieren"
+msgid "ignore timer margins"
+msgstr "Timer Vor-/Nachlauf ignorieren"
+
msgid "OSD message"
msgstr "OSD Meldung"
diff --git a/plugin/po/it_IT.po b/plugin/po/it_IT.po
index a592cd8..84ee7c0 100644
--- a/plugin/po/it_IT.po
+++ b/plugin/po/it_IT.po
@@ -4,7 +4,7 @@ msgid ""
msgstr ""
"Project-Id-Version: vdr\n"
"Report-Msgid-Bugs-To: <see README>\n"
-"POT-Creation-Date: 2010-04-18 15:58+0200\n"
+"POT-Creation-Date: 2010-04-26 13:57+0200\n"
"PO-Revision-Date: 2009-11-14 18:06+0100\n"
"Last-Translator: Diego Pierotto <vdr-italian@tiscali.it>\n"
"Language-Team: <vdr@linuxtv.org>\n"
@@ -69,6 +69,9 @@ msgstr ""
msgid "repair index, if broken"
msgstr ""
+msgid "ignore timer margins"
+msgstr ""
+
msgid "OSD message"
msgstr ""
diff --git a/plugin/setup.cpp b/plugin/setup.cpp
index 1798239..5a23414 100644
--- a/plugin/setup.cpp
+++ b/plugin/setup.cpp
@@ -18,6 +18,7 @@ cSetupMarkAd::cSetupMarkAd(struct setup *Setup)
backupmarks=setup->BackupMarks;
verbose=setup->Verbose;
genindex=setup->GenIndex;
+ nomargins=setup->NoMargins;
processTexts[0]=tr("after");
processTexts[1]=tr("during");
@@ -37,6 +38,7 @@ void cSetupMarkAd::write(void)
}
Add(new cMenuEditBoolItem(tr("repair index, if broken"),&genindex));
+ Add(new cMenuEditBoolItem(tr("ignore timer margins"),&nomargins));
Add(new cMenuEditBoolItem(tr("OSD message"),&osdmsg));
Add(new cMenuEditBoolItem(tr("backup marks"),&backupmarks));
@@ -72,6 +74,7 @@ void cSetupMarkAd::Store(void)
SetupStore("Execution",processduring);
SetupStore("whileRecording",whilerecording);
SetupStore("whileReplaying",whilereplaying);
+ SetupStore("IgnoreMargins",nomargins);
SetupStore("BackupMarks",backupmarks);
SetupStore("GenIndex",genindex);
SetupStore("OSDMessage",osdmsg);
@@ -84,4 +87,5 @@ void cSetupMarkAd::Store(void)
setup->GenIndex=(bool) genindex;
setup->BackupMarks=(bool) backupmarks;
setup->Verbose=(bool) verbose;
+ setup->NoMargins=(bool) nomargins;
}
diff --git a/plugin/setup.h b/plugin/setup.h
index dab1501..9eb8119 100644
--- a/plugin/setup.h
+++ b/plugin/setup.h
@@ -19,6 +19,7 @@ struct setup
bool BackupMarks;
bool Verbose;
bool GenIndex;
+ bool NoMargins;
};
class cSetupMarkAd : public cMenuSetupPage
@@ -33,6 +34,7 @@ private:
int backupmarks;
int verbose;
int genindex;
+ int nomargins;
void write(void);
protected:
virtual void Store(void);
diff --git a/plugin/status.cpp b/plugin/status.cpp
index 91a4d56..1068b34 100644
--- a/plugin/status.cpp
+++ b/plugin/status.cpp
@@ -69,10 +69,12 @@ bool cStatusMarkAd::Start(const char *FileName, const char *Name, bool Direct)
{
if ((Direct) && (Get(FileName)!=-1)) return false;
- cString cmd = cString::sprintf("\"%s\"/markad %s %s %s %s -l \"%s\" %s \"%s\"",bindir,
- setup->Verbose ? "-v" : "", setup->BackupMarks ? "-B" : "",
- setup->GenIndex ? "-G" : "",
- setup->OSDMessage ? "-O" : "",
+ cString cmd = cString::sprintf("\"%s\"/markad %s%s%s%s%s -l \"%s\" %s \"%s\"",bindir,
+ setup->Verbose ? " -v " : "",
+ setup->BackupMarks ? " -B " : "",
+ setup->GenIndex ? " -G " : "",
+ setup->OSDMessage ? " -O " : "",
+ setup->NoMargins ? " -i 4 " : "",
logodir,Direct ? "-O after" : "--online=2 before", FileName);
dsyslog("markad: executing %s",*cmd);
if (SystemExec(cmd)!=-1)