DVDBurn... allow jumping from complex titleset titles to main disc menu. implement...
[vuplus_dvbapp] / lib / python / Plugins / Extensions / DVDBurn / Process.py
index 74ffbde..80e5899 100644 (file)
@@ -109,10 +109,11 @@ class DemuxTask(Task):
 
        def processOutputLine(self, line):
                line = line[:-1]
+               #print "[DemuxTask]", line
                MSG_NEW_FILE = "---> new File: "
                MSG_PROGRESS = "[PROGRESS] "
-               MSG_NEW_MP2 = "--> MPEG Audio (0x"
-               MSG_NEW_AC3 = "--> AC-3/DTS Audio on PID "
+               MSG_NEW_MP2 = "++> Mpg Audio: PID 0x"
+               MSG_NEW_AC3 = "++> AC3/DTS Audio: PID 0x"
 
                if line.startswith(MSG_NEW_FILE):
                        file = line[len(MSG_NEW_FILE):]
@@ -123,7 +124,10 @@ class DemuxTask(Task):
                        progress = line[len(MSG_PROGRESS):]
                        self.haveProgress(progress)
                elif line.startswith(MSG_NEW_MP2) or line.startswith(MSG_NEW_AC3):
-                       self.currentPID = str(int(line.rstrip()[-6:].rsplit('0x',1)[-1],16))
+                       try:
+                               self.currentPID = str(int(line.split(': PID 0x',1)[1].split(' ',1)[0],16))
+                       except ValueError:
+                               print "[DemuxTask] ERROR: couldn't detect Audio PID (projectx too old?)"
 
        def haveNewFile(self, file):
                print "[DemuxTask] produced file:", file, self.currentPID
@@ -675,7 +679,7 @@ def CreateAuthoringXML_singleset(job):
        authorxml.append('<?xml version="1.0" encoding="utf-8"?>\n')
        authorxml.append(' <dvdauthor dest="' + (job.workspace+"/dvd") + '">\n')
        authorxml.append('  <vmgm>\n')
-       authorxml.append('   <menus>\n')
+       authorxml.append('   <menus lang="' + job.project.menutemplate.settings.menulang.getValue() + '">\n')
        authorxml.append('    <pgc>\n')
        authorxml.append('     <vob file="' + job.project.settings.vmgm.getValue() + '" />\n', )
        if mode.startswith("menu"):
@@ -687,7 +691,7 @@ def CreateAuthoringXML_singleset(job):
        authorxml.append('  </vmgm>\n')
        authorxml.append('  <titleset>\n')
        if mode.startswith("menu"):
-               authorxml.append('   <menus>\n')
+               authorxml.append('   <menus lang="' + job.project.menutemplate.settings.menulang.getValue() + '">\n')
                authorxml.append('    <video aspect="4:3"/>\n')
                for menu_count in range(1 , job.nr_menus+1):
                        if menu_count == 1:
@@ -743,11 +747,14 @@ def CreateAuthoringXML_multiset(job):
        authorxml.append('<?xml version="1.0" encoding="utf-8"?>\n')
        authorxml.append(' <dvdauthor dest="' + (job.workspace+"/dvd") + '" jumppad="yes">\n')
        authorxml.append('  <vmgm>\n')
-       authorxml.append('   <menus>\n')
+       authorxml.append('   <menus lang="' + job.project.menutemplate.settings.menulang.getValue() + '">\n')
        authorxml.append('    <video aspect="4:3"/>\n')
        if mode.startswith("menu"):
                for menu_count in range(1 , job.nr_menus+1):
-                       authorxml.append('    <pgc>\n')
+                       if menu_count == 1:
+                               authorxml.append('    <pgc>\n')
+                       else:
+                               authorxml.append('    <pgc>\n')
                        menu_start_title = (menu_count-1)*job.titles_per_menu + 1
                        menu_end_title = (menu_count)*job.titles_per_menu + 1
                        if menu_end_title > nr_titles:
@@ -772,6 +779,13 @@ def CreateAuthoringXML_multiset(job):
        for i in range( nr_titles ):
                title = job.project.titles[i]
                authorxml.append('  <titleset>\n')
+               authorxml.append('   <menus lang="' + job.project.menutemplate.settings.menulang.getValue() + '">\n')
+               authorxml.append('    <pgc entry="root">\n')
+               authorxml.append('     <pre>\n')
+               authorxml.append('      jump vmgm menu entry title;\n')
+               authorxml.append('     </pre>\n')
+               authorxml.append('    </pgc>\n')
+               authorxml.append('   </menus>\n')
                authorxml.append('   <titles>\n')
                for audiotrack in title.properties.audiotracks:
                        active = audiotrack.active.getValue()