[transmageddon] Fix git master to actually have working profile support
- From: Christian Fredrik Kalager Schaller <uraeus src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [transmageddon] Fix git master to actually have working profile support
- Date: Sat, 12 Sep 2009 13:16:44 +0000 (UTC)
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]