[transmageddon] Fix git master to actually have working profile support



commit fd1ac3acdba690e5d810199e5228164435ab280e
Author: Christian Schaller <christian schaller collabora co uk>
Date:   Sat Sep 12 14:17:48 2009 +0100

    Fix git master to actually have working profile support

 profiles/ipod.xml        |    2 +-
 src/about.py             |    3 +-
 src/transcoder_engine.py |   65 ++++++++++++++++++++++------------------------
 src/transmageddon.py     |   22 +++++++++------
 4 files changed, 47 insertions(+), 45 deletions(-)
---
diff --git a/profiles/ipod.xml b/profiles/ipod.xml
index e484602..a057103 100644
--- a/profiles/ipod.xml
+++ b/profiles/ipod.xml
@@ -17,7 +17,7 @@
         <container>video/quicktime,variant=apple</container>
         <extension>m4v</extension>
         <audio>
-            <name>audio/mpeg,mpegversion=[4, 2]</name>
+            <name>audio/mpeg,mpegversion={4, 2}</name>
             <presets>
                 <preset>
                     Quality Low, Profile Low Complexity
diff --git a/src/about.py b/src/about.py
index 9c2b796..a77c017 100644
--- a/src/about.py
+++ b/src/about.py
@@ -9,7 +9,6 @@ Authors = ["Christian Schaller <uraeus gnome org>",
            "Michal Schmidt <mschmidt redhat com>",
            "Stephane Maniaci <stephane maniaci gmail com>",
            "Jordi Mas <jmas softcatala org>",
-           "Emily and Liam <liam fightingcrane com>"
            ]
 
 Translators = ("Å?ukasz JernaÅ? <deejay1 srem org>\n" +
@@ -17,6 +16,7 @@ Translators = ("Å?ukasz JernaÅ? <deejay1 srem org>\n" +
               "Mario Blättermann <mariobl gnome org>\n" +
               "Jorge González <jorgegonz svn gnome org>\n")
 
+Artists = ["Emily and Liam <liam fightingcrane com>"]
 LGPL = """
 Transmageddon
 Copyright (C) 2009 Transmageddon Authors
@@ -44,6 +44,7 @@ class AboutDialog:
        x.set_name("Transmageddon")
        x.set_authors(Authors)
        x.set_translator_credits(Translators)
+       x.set_artists(Artists)
        x.set_license(LGPL)   
        x.connect("response", lambda d, r: d.destroy())
        x.show()
diff --git a/src/transcoder_engine.py b/src/transcoder_engine.py
index 6a1ba20..ab8aecc 100644
--- a/src/transcoder_engine.py
+++ b/src/transcoder_engine.py
@@ -54,7 +54,7 @@ class Transcoder(gobject.GObject):
        self.audiopasstoggle = AUDIOPASSTOGGLE
        # print "audiopass toggle is " + str(self.audiopasstoggle)
        self.videopasstoggle = VIDEOPASSTOGGLE
-       
+       self.doaudio= False
        if self.audiopasstoggle == False:
            # print "audiopasstoggle is false, setting AudioEncoderPlugin"
            # print "self.audiocaps IS **** " + str(self.audiocaps)
@@ -300,7 +300,8 @@ class Transcoder(gobject.GObject):
            if (self.multipass != False):
                if (self.passcounter == 0):
                    #removing multipass cache file when done
-                   os.remove(self.cachefile)
+                   if os.access(self.cachefile, os.F_OK):
+                       os.remove(self.cachefile)
            self.emit('got-eos')
            self.pipeline.set_state(gst.STATE_NULL)
        return True
@@ -314,8 +315,9 @@ class Transcoder(gobject.GObject):
    def OnDynamicPad(self, dbin, sink_pad):
        c = sink_pad.get_caps().to_string()
        if c.startswith("audio/"):
-           # print "audio pad found"
-           if self.audiopasstoggle == False:
+           # First check for passthough mode
+           if self.audiopasstoggle is False:
+               # Check if either we are not doing multipass or if its the final pass before enabling audio
                if (self.multipass == False) or (self.passcounter == int(0)):
                    self.audioconverter = gst.element_factory_make("audioconvert")
                    self.pipeline.add(self.audioconverter)
@@ -327,41 +329,36 @@ class Transcoder(gobject.GObject):
                        if GstPresetType in gobject.type_interfaces(self.audioencoder):
                            for x in self.apreset:
                                self.audioencoder.load_preset(x)
-
                    self.audioresampler = gst.element_factory_make("audioresample")
                    self.pipeline.add(self.audioresampler)
-               
-               if self.preset != "nopreset":
-                   self.acaps = gst.Caps()
-                   self.acaps.append_structure(gst.Structure("audio/x-raw-float"))
-                   self.acaps.append_structure(gst.Structure("audio/x-raw-int"))
-                   #for acap in self.acaps:
-                   #    acap["rate"] = self.samplerate
-                   #    acap["channels"] = self.channels
-                   self.acapsfilter = gst.element_factory_make("capsfilter")
-                   self.acapsfilter.set_property("caps", self.acaps)
-                   self.pipeline.add(self.acapsfilter)
-
-               sink_pad.link(self.audioconverter.get_pad("sink"))
+                   sink_pad.link(self.audioconverter.get_pad("sink"))
 
-               if self.preset != "nopreset":
-                   self.audioconverter.link(self.audioresampler)
-                   self.audioresampler.link(self.acapsfilter)
-                   self.acapsfilter.link(self.audioencoder)
-               else:
-                   self.audioconverter.link(self.audioresampler)
-                   self.audioresampler.link(self.audioencoder)
-               self.audioencoder.get_static_pad("src").link(self.multiqueueaudiosinkpad)
-               self.audioconverter.set_state(gst.STATE_PAUSED)
-               if self.preset != "nopreset":
-                   self.acapsfilter.set_state(gst.STATE_PAUSED)
-               self.audioresampler.set_state(gst.STATE_PAUSED)
-               self.audioencoder.set_state(gst.STATE_PAUSED)
-               self.gstmultiqueue.set_state(gst.STATE_PAUSED)
-               self.multiqueueaudiosrcpad.link(self.containermuxeraudiosinkpad)
+                   # Check if we are using a preset
+                   if self.preset != "nopreset":
+                           self.acaps = gst.Caps()
+                           self.acaps.append_structure(gst.Structure("audio/x-raw-float"))
+                           self.acaps.append_structure(gst.Structure("audio/x-raw-int"))
+                           self.acapsfilter = gst.element_factory_make("capsfilter")
+                           self.acapsfilter.set_property("caps", self.acaps)
+                           self.pipeline.add(self.acapsfilter)
+                           self.audioconverter.link(self.audioresampler)
+                           self.audioresampler.link(self.acapsfilter)
+                           self.acapsfilter.link(self.audioencoder)
+                   else:
+                       self.audioconverter.link(self.audioresampler)
+                       self.audioresampler.link(self.audioencoder)
 
+                   self.audioencoder.get_static_pad("src").link(self.multiqueueaudiosinkpad)
+                   self.audioconverter.set_state(gst.STATE_PAUSED)
+                   if self.preset != "nopreset":
+                       self.acapsfilter.set_state(gst.STATE_PAUSED)
+                   self.audioresampler.set_state(gst.STATE_PAUSED)
+                   self.audioencoder.set_state(gst.STATE_PAUSED)
+                   self.gstmultiqueue.set_state(gst.STATE_PAUSED)
+                   self.multiqueueaudiosrcpad.link(self.containermuxeraudiosinkpad)
 
            else:
+               # This code is for handling passthrough mode. 
                # TODO: dynamically plug correct parser. Iterate on parsers and intersect.
                # No parser if output is framed
                parsedcaps = gst.caps_from_string(self.audiocaps+",parsed=true")
diff --git a/src/transmageddon.py b/src/transmageddon.py
index 8d1e65f..1189476 100644
--- a/src/transmageddon.py
+++ b/src/transmageddon.py
@@ -52,7 +52,8 @@ if (major == 2) and (minor < 18):
    print "You need version 2.18.0 or higher of pygobject for Transmageddon" 
    sys.exit(1)
 
-os.environ["GST_DEBUG_DUMP_DOT_DIR"] = '/tmp'
+os.environ["GST_DEBUG_DUMP_DOT_DIR"] = "/tmp"
+# os.putenv('GST_DEBUG_DUMP_DIR_DIR', '/tmp')
 
 supported_containers = [
         "Ogg",
@@ -107,7 +108,7 @@ supported_container_map = {
     'MPEG PS':    [ 'mp3', 'mpeg2', 'ac3', 'h264', 'aac', 'mpeg4' ],
     'MPEG TS':    [ 'mp3', 'h264', 'ac3', 'mpeg2', 'aac', 'mpeg4', 'dirac' ],
     'FLV':        [ 'mp3', 'h264' ],
-    'ASF':        [ 'wma2','wmv2']
+    'ASF':        [ 'wma2','wmv2','mp3']
 }
 
 class TransmageddonUI (gtk.glade.XML):
@@ -242,9 +243,15 @@ class TransmageddonUI (gtk.glade.XML):
 
    # Get all preset values
    def reverse_lookup(self,v):
-    for k in codecfinder.codecmap:
-        if codecfinder.codecmap[k] == v:
-            return k
+       #FIXME - this is ugly special casing of AAC due to 
+       #python/gstreamer conflict over meaning of []
+       if v == "audio/mpeg,mpegversion=[4, 2]":
+           k = "aac"
+           return k
+       else:
+           for k in codecfinder.codecmap:
+               if codecfinder.codecmap[k] == v:
+                   return k
 
    def provide_presets(self,devicename): 
        devices = presets.get()
@@ -272,7 +279,6 @@ class TransmageddonUI (gtk.glade.XML):
            self.containerchoice.set_active(9) 
        else:
             print "failed to set container format"
-       print "preset acodec name " + str(preset.acodec.name)
        self.codec_buttons[self.reverse_lookup(str(preset.acodec.name))].set_active(True)
        self.codec_buttons[self.reverse_lookup(str(preset.vcodec.name))].set_active(True)
 
@@ -659,11 +665,9 @@ class TransmageddonUI (gtk.glade.XML):
 
    def on_debug_activate(self, widget):
        gst.DEBUG_BIN_TO_DOT_FILE (self._transcoder.pipeline, gst.DEBUG_GRAPH_SHOW_ALL, 'transmageddon-debug-graph')
-       print "The debug feature requirs Eye of GNOME (eog) and graphviz (dot) to be installed"
+       print "The debug feature requiers Eye of GNOME (eog) and graphviz (dot) to be installed"
        os.system("dot -Tpng -o /tmp/transmageddon-pipeline.png /tmp/transmageddon-debug-graph.dot")
        os.system("eog /tmp/transmageddon-pipeline.png &")
 if __name__ == "__main__":
         hwg = TransmageddonUI()
         gtk.main()
-
-



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]