aboutsummaryrefslogtreecommitdiff
path: root/lib/python/Plugins
diff options
context:
space:
mode:
authorAndreas Frisch <andreas.frisch@multimedia-labs.de>2008-09-15 14:18:10 +0000
committerAndreas Frisch <andreas.frisch@multimedia-labs.de>2008-09-15 14:18:10 +0000
commitaddc55dea655c3d4cdde664d4127c40481fc93b5 (patch)
treeb3644ccab9d440020552c71a5025a7778342a16d /lib/python/Plugins
parenta1b62eea42d9dbc596f1433b206fb88ac10e9e11 (diff)
downloadenigma2-addc55dea655c3d4cdde664d4127c40481fc93b5.tar.gz
enigma2-addc55dea655c3d4cdde664d4127c40481fc93b5.zip
don't offer to retry non-recoverable tasks & error catching for MplexTask
Diffstat (limited to 'lib/python/Plugins')
-rw-r--r--lib/python/Plugins/Extensions/DVDBurn/Process.py31
1 files changed, 26 insertions, 5 deletions
diff --git a/lib/python/Plugins/Extensions/DVDBurn/Process.py b/lib/python/Plugins/Extensions/DVDBurn/Process.py
index 67654f61..ec674ef2 100644
--- a/lib/python/Plugins/Extensions/DVDBurn/Process.py
+++ b/lib/python/Plugins/Extensions/DVDBurn/Process.py
@@ -32,7 +32,7 @@ class mpeg2encTask(Task):
self.container.readFromFile(self.inputFile)
def processOutputLine(self, line):
- print "[mpeg2encTask]", line
+ print "[mpeg2encTask]", line[:-1]
class spumuxTask(Task):
def __init__(self, job, xmlfile, inputfile, outputfile):
@@ -49,7 +49,7 @@ class spumuxTask(Task):
self.container.readFromFile(self.inputFile)
def processStderr(self, data):
- print "[spumuxTask]", data
+ print "[spumuxTask]", data[:-1]
def processStdout(self, data):
pass
@@ -107,7 +107,7 @@ class DemuxTask(Task):
self.generated_files.append(file)
def haveProgress(self, progress):
- print "PROGRESS [%s]" % progress
+ #print "PROGRESS [%s]" % progress
MSG_CHECK = "check & synchronize audio file"
MSG_DONE = "done..."
if progress == "preparing collection(s)...":
@@ -144,22 +144,42 @@ class DemuxTask(Task):
for f in self.generated_files:
os.remove(f)
+class MplexTaskPostcondition(Condition):
+ def check(self, task):
+ return task.error is None
+
+ def getErrorMessage(self, task):
+ print "[MplexTaskPostcondition] getErrorMessage", task
+ return {
+ task.ERROR_UNDERRUN: ("Can't multiplex source video!"),
+ task.ERROR_UNKNOWN: ("An unknown error occured!")
+ }[task.error]
+
class MplexTask(Task):
+ ERROR_UNDERRUN, ERROR_UNKNOWN = range(2)
def __init__(self, job, outputfile, inputfiles=None, demux_task=None):
Task.__init__(self, job, "Mux ES into PS")
self.weighting = 500
self.demux_task = demux_task
+ self.postconditions.append(MplexTaskPostcondition())
self.setTool("/usr/bin/mplex")
self.args += ["-f8", "-o", outputfile, "-v1"]
if inputfiles:
self.args += inputfiles
def prepare(self):
+ self.error = None
if self.demux_task:
self.args += self.demux_task.generated_files
def processOutputLine(self, line):
- print "[MplexTask] processOutputLine=", line
+ print "[MplexTask] processOutputLine=", line[:-1]
+ if line.startswith("**ERROR:"):
+ if line.find("Frame data under-runs detected") != -1:
+ self.error = self.ERROR_UNDERRUN
+ print "BUFFER UNDERRUN ERROR !!!"
+ else:
+ self.error = self.ERROR_UNKNOWN
class RemoveESFiles(Task):
def __init__(self, job, demux_task):
@@ -184,7 +204,7 @@ class DVDAuthorTask(Task):
self.menupreview = job.menupreview
def processOutputLine(self, line):
- print "[DVDAuthorTask] processOutputLine=", line
+ print "[DVDAuthorTask] processOutputLine=", line[:-1]
if not self.menupreview and line.startswith("STAT: Processing"):
self.callback(self, [], stay_resident=True)
@@ -204,6 +224,7 @@ class WaitForResidentTasks(Task):
callback(self, [])
class BurnTaskPostcondition(Condition):
+ RECOVERABLE = True
def check(self, task):
return task.error is None