summaryrefslogtreecommitdiff
path: root/command/markad-standalone.cpp
diff options
context:
space:
mode:
authorJochen Dolze <vdr@dolze.de>2010-09-26 00:30:30 +0200
committerJochen Dolze <vdr@dolze.de>2010-09-26 00:30:30 +0200
commit101d294a50e16da992e10363c51b435e6a2fa226 (patch)
treee94bc2bbbf4c3eff48a3532b0ed15176b66dc24a /command/markad-standalone.cpp
parent05dff1022a467deec38f93b0987db9aeb2b43420 (diff)
downloadvdr-plugin-markad-101d294a50e16da992e10363c51b435e6a2fa226.tar.gz
vdr-plugin-markad-101d294a50e16da992e10363c51b435e6a2fa226.tar.bz2
Added better thread handling in decoder.cpp, added --threads option
Diffstat (limited to 'command/markad-standalone.cpp')
-rw-r--r--command/markad-standalone.cpp20
1 files changed, 16 insertions, 4 deletions
diff --git a/command/markad-standalone.cpp b/command/markad-standalone.cpp
index e9701ff..d522da9 100644
--- a/command/markad-standalone.cpp
+++ b/command/markad-standalone.cpp
@@ -1952,7 +1952,7 @@ cMarkAdStandalone::cMarkAdStandalone(const char *Directory, bool BackupMarks, in
bool DecodeAudio, int IgnoreInfo,
const char *LogoDir, const char *MarkFileName,
bool noPid, bool OSD, const char *SVDRPHost, int SVDRPPort,
- bool Before, bool GenIndex)
+ bool Before, bool GenIndex, int Threads)
{
setlocale(LC_MESSAGES, "");
directory=Directory;
@@ -2180,7 +2180,7 @@ cMarkAdStandalone::cMarkAdStandalone(const char *Directory, bool BackupMarks, in
if (!abort)
{
decoder = new cMarkAdDecoder(macontext.Info.VPid.Type==MARKAD_PIDTYPE_VIDEO_H264,
- macontext.Info.APid.Num!=0,macontext.Info.DPid.Num!=0);
+ macontext.Info.APid.Num!=0,macontext.Info.DPid.Num!=0,Threads);
video = new cMarkAdVideo(&macontext);
audio = new cMarkAdAudio(&macontext);
streaminfo = new cMarkAdStreamInfo;
@@ -2298,6 +2298,9 @@ int usage(int svdrpport)
" [height] range from 20 to %3i, default %3i\n"
"-O --OSD\n"
" markad sends an OSD-Message for start and end\n"
+ "-T --threads=<number>\n"
+ " number of threads used for decoding, max. 16\n"
+ " (default is the number of cpus)\n"
"-V --version\n"
" print version-info and exit\n"
" --markfile=<markfilename>\n"
@@ -2393,6 +2396,7 @@ int main(int argc, char *argv[])
bool bGenIndex=false;
bool bPass2Only=false;
int online=0;
+ int threads=-1;
strcpy(logoDirectory,"/var/lib/markad");
@@ -2445,12 +2449,13 @@ int main(int argc, char *argv[])
{"extractlogo", 1, 0, 'L'},
{"OSD",0,0,'O' },
{"savelogo", 0, 0, 'S'},
+ {"threads", 1, 0, 'T'},
{"version", 0, 0, 'V'},
{0, 0, 0, 0}
};
- c = getopt_long (argc, argv, "abcd:i:jl:nop:s:vBCGL:OSV",
+ c = getopt_long (argc, argv, "abcd:i:jl:nop:s:vBCGL:OST:V",
long_options, &option_index);
if (c == -1)
break;
@@ -2606,6 +2611,13 @@ int main(int argc, char *argv[])
// --savelogo
break;
+ case 'T':
+ // --threads
+ threads=atoi(optarg);
+ if (threads<1) threads=1;
+ if (threads>16) threads=16;
+ break;
+
case 'V':
printf("markad %s - marks advertisements in VDR recordings\n",VERSION);
return 0;
@@ -2850,7 +2862,7 @@ int main(int argc, char *argv[])
cmasta = new cMarkAdStandalone(recDir,bBackupMarks, logoExtraction, logoWidth, logoHeight,
bDecodeVideo,bDecodeAudio,ignoreInfo,
logoDirectory,markFileName,bNoPid,bOSD,svdrphost,
- svdrpport,bBefore,bGenIndex);
+ svdrpport,bBefore,bGenIndex,threads);
if (!cmasta) return -1;
if (!bPass2Only) cmasta->Process();