read audio stream formats and descriptions from PMT and use them for DVD authoring
authorAndreas Frisch <andreas.frisch@multimedia-labs.de>
Thu, 11 Sep 2008 19:31:46 +0000 (19:31 +0000)
committerAndreas Frisch <andreas.frisch@multimedia-labs.de>
Thu, 11 Sep 2008 19:31:46 +0000 (19:31 +0000)
lib/python/Plugins/Extensions/DVDBurn/DVDTitle.py
lib/python/Plugins/Extensions/DVDBurn/Process.py
lib/python/Plugins/Extensions/DVDBurn/TitleCutter.py

index 3d19bc48e71b998905a7bd98c3e4f915a01f9af0..67b410ce092ed34c746daafe52190ca0dadec932 100644 (file)
@@ -9,6 +9,7 @@ class DVDTitle:
                self.inputfile = ""
                self.cutlist = [ ]
                self.chaptermarks = [ ]
                self.inputfile = ""
                self.cutlist = [ ]
                self.chaptermarks = [ ]
+               self.audiotracks = [ ]
                self.timeCreate = None
 
        def addService(self, service):
                self.timeCreate = None
 
        def addService(self, service):
index 74de6aa7e8facba36ba332fceda42326b599587b..12d85b450c6a2d38be364ea449e7171191c60be3 100644 (file)
@@ -523,6 +523,8 @@ def CreateAuthoringXML(job):
                authorxml.append('   </menus>\n')
        authorxml.append('   <titles>\n')
        for i in range( nr_titles ):
                authorxml.append('   </menus>\n')
        authorxml.append('   <titles>\n')
        for i in range( nr_titles ):
+               for audiotrack in job.project.titles[i].audiotracks:
+                       authorxml.append('    <audio format="'+audiotrack[0]+'" lang="'+audiotrack[1]+'" />\n')
                chapters = ','.join(["%d:%02d:%02d.%03d" % (p / (90000 * 3600), p % (90000 * 3600) / (90000 * 60), p % (90000 * 60) / 90000, (p % 90000) / 90) for p in job.project.titles[i].chaptermarks])
                title_no = i+1
                title_filename = job.workspace + "/dvd_title_%d.mpg" % (title_no)
                chapters = ','.join(["%d:%02d:%02d.%03d" % (p / (90000 * 3600), p % (90000 * 3600) / (90000 * 60), p % (90000 * 60) / 90000, (p % 90000) / 90) for p in job.project.titles[i].chaptermarks])
                title_no = i+1
                title_filename = job.workspace + "/dvd_title_%d.mpg" % (title_no)
index d8ba5a412f723154b6ec5fa5f886db79bf731e20..8f1adf1aa83042d0ed28e54e650cf388f4db6428 100644 (file)
@@ -1,17 +1,43 @@
 from Plugins.Extensions.CutListEditor.plugin import CutListEditor
 from Plugins.Extensions.CutListEditor.plugin import CutListEditor
+from Components.ServiceEventTracker import ServiceEventTracker
 
 class TitleCutter(CutListEditor):
 
 class TitleCutter(CutListEditor):
-       def __init__(self, session, title):
-               CutListEditor.__init__(self, session, title.source)
-               #, title.cutlist)
+       def __init__(self, session, t):
+               CutListEditor.__init__(self, session, t.source)
+               self.skin = CutListEditor.skin
+               self.session = session
+               self.t = t
+               self.__event_tracker = ServiceEventTracker(screen=self, eventmap=
+                       {
+                               iPlayableService.evUpdatedInfo: self.getAudioTracks,
+                               iPlayableService.evCuesheetChanged: self.refillList
+                       })
+               self.onExecBegin.remove(self.showTutorial)
+
+       def getAudioTracks(self):
+               service = self.session.nav.getCurrentService()
+               audio = service and service.audioTracks()
+               n = audio and audio.getNumberOfTracks() or 0
+               print "self.t", self.t
+               print "self.t.audiotracks", self.t.audiotracks
+               if n > 0:
+                       for x in range(n):
+                               i = audio.getTrackInfo(x)
+                               language = i.getLanguage()[:2]
+                               description = i.getDescription()
+                               if description == "MPEG":
+                                       description = "mp2"
+                               self.t.audiotracks.append((description, language))
+               print "audiotracks", self.t.audiotracks
 
        def exit(self):
                self.session.nav.stopService()
                self.close(self.cut_list[:])
 
 class CutlistReader(TitleCutter):
 
        def exit(self):
                self.session.nav.stopService()
                self.close(self.cut_list[:])
 
 class CutlistReader(TitleCutter):
-       def __init__(self, session, title):
-               TitleCutter.__init__(self, session, title)
-               self.tutorial_seen = True
-               self.session.nav.stopService()
-               self.close(self.cut_list[:])
+       def __init__(self, session, t):
+               TitleCutter.__init__(self, session, t)
+
+       def getAudioTracks(self):
+               TitleCutter.getAudioTracks()
+               self.exit()
\ No newline at end of file