[transmageddon] Further fixes for presets and multistream files
- From: Christian Fredrik Kalager Schaller <uraeus src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [transmageddon] Further fixes for presets and multistream files
- Date: Wed, 19 Mar 2014 09:48:43 +0000 (UTC)
commit 301272fe632442a3816c1f8086b8da549377c3e7
Author: Christian Fredrik Kalager Schaller <uraeus linuxrising org>
Date: Wed Mar 19 10:41:10 2014 +0100
Further fixes for presets and multistream files
src/transmageddon.py | 110 +++++++++++++++++++++++--------------------------
1 files changed, 52 insertions(+), 58 deletions(-)
---
diff --git a/src/transmageddon.py b/src/transmageddon.py
index 2b4e077..e2f89e2 100644
--- a/src/transmageddon.py
+++ b/src/transmageddon.py
@@ -425,7 +425,7 @@ class TransmageddonUI(Gtk.ApplicationWindow):
self.audiodata =[]
self.videodata =[]
# all other data will go into streamdata
- self.streamdata = {'filechoice' : False, 'filename' : False, 'outputdirectory' : False, 'container' :
False, 'devicename' : "nopreset", 'multipass': 0, 'passcounter': 0, 'outputfilename' : False, 'timestamp':
False, 'dvdtitle': False}
+ self.streamdata = {'filechoice' : False, 'filename' : False, 'outputdirectory' : False, 'container' :
False, 'devicename' : "nopreset", 'multipass': 0, 'passcounter': 0, 'outputfilename' : False, 'timestamp':
False, 'dvdtitle': False, 'singlestreamno': False}
# Populate the Container format combobox
# print("do we try to populate container choice")
@@ -452,8 +452,8 @@ class TransmageddonUI(Gtk.ApplicationWindow):
if self.videodata:
self.videodata[0]['rotationvalue'] = int(0)
- # Populate Device Presets combobox
- # print("starting preset population")
+ # Populate Device Profiles combobox
+ # print("starting profile population")
devicelist = []
shortname = []
preset_list = sorted(list(presets.get().items()),
@@ -503,12 +503,9 @@ class TransmageddonUI(Gtk.ApplicationWindow):
device = devices[devicename]
preset = device.presets["Normal"]
self.usingpreset=True
+
self.containerchoice.set_active(-1) # resetting to -1 to ensure population of menu triggers
- self.presetaudiocodec=Gst.caps_from_string(preset.acodec.name)
- self.audiodata[0]['outputaudiocaps']=Gst.caps_from_string(preset.acodec.name)
- self.presetvideocodec=Gst.caps_from_string(preset.vcodec.name)
-
- self.videodata[0]['outputvideocaps']=Gst.caps_from_string(preset.vcodec.name)
+
if preset.container == "application/ogg":
self.containerchoice.set_active(0)
elif preset.container == "video/x-matroska":
@@ -529,15 +526,23 @@ class TransmageddonUI(Gtk.ApplicationWindow):
self.containerchoice.set_active(8)
elif preset.container == "video/quicktime,variant=3gpp":
self.containerchoice.set_active(9)
- elif preset.container == "application/mxf":
- self.containerchoice.set_active(10)
+ #elif preset.container == "application/mxf":
+ # self.containerchoice.set_active(10)
elif preset.container == "video/x-ms-asf":
- self.containerchoice.set_active(11)
+ self.containerchoice.set_active(10)
elif preset.container == "video/webm":
- self.containerchoice.set_active(12)
+ self.containerchoice.set_active(11)
else:
print("failed to set container format from preset data")
+ x=0
+ while x < len(self.audiodata):
+ self.audiodata[x]['outputaudiocaps']=Gst.caps_from_string(preset.acodec.name)
+ x=x+1
+
+ self.videodata[0]['outputvideocaps']=Gst.caps_from_string(preset.vcodec.name)
+ self.presetvideocodec=Gst.caps_from_string(preset.vcodec.name)
+ self.presetaudiocodec=Gst.caps_from_string(preset.acodec.name)
# Check for number of passes
passes = preset.vcodec.passes
@@ -656,7 +661,6 @@ class TransmageddonUI(Gtk.ApplicationWindow):
if self.isdvd:
element.set_property("device", self.streamdata['filename'])
element.set_property("title", self.streamdata['dvdtitle'])
- print(self.streamdata['dvdtitle'])
def succeed(self, discoverer, info, error):
result=GstPbutils.DiscovererInfo.get_result(info)
@@ -922,7 +926,7 @@ class TransmageddonUI(Gtk.ApplicationWindow):
containerstatus = codecfinder.get_muxer_element(codecfinder.containermap[containerchoice])
if self.havevideo:
if self.videodata[0]['dopassthrough'] != True:
- if self.VideoCodec == "novid":
+ if self.VideoCodec == False:
videostatus=True
else:
videostatus = codecfinder.get_video_encoder_element(self.VideoCodec)
@@ -977,7 +981,7 @@ class TransmageddonUI(Gtk.ApplicationWindow):
self.streamdata['outputfilename'] =
str(self.dvdtitlename)+"_"+str(self.streamdata['dvdtitle'])+str(self.streamdata['timestamp'])+str(self.ContainerFormatSuffix)
else:
self.streamdata['outputfilename'] =
str(self.nosuffix+self.streamdata['timestamp']+self.ContainerFormatSuffix)
- if (self.havevideo and (self.videodata[0]['outputvideocaps'] != "novid")):
+ if (self.havevideo and (self.videodata[0]['outputvideocaps'] != False)):
self.streamdata['outputdirectory']=self.videodirectory
else:
self.streamdata['outputdirectory']=self.audiodirectory
@@ -1052,10 +1056,9 @@ class TransmageddonUI(Gtk.ApplicationWindow):
for c in self.videocodecs:
self.videorows[x].remove(0)
self.videocodecs=[]
-
while x < len(self.audiocodecs):
if self.audiocodecs:
- for c in self.audiocodecs[x]: #
+ for c in self.audiocodecs[x]: #
self.audiorows[x].remove(0)
if x==self.audiostreamcounter:
self.audiocodecs=[]
@@ -1067,11 +1070,10 @@ class TransmageddonUI(Gtk.ApplicationWindow):
while x <= self.audiostreamcounter:
self.audiocodecs.append([])
if self.usingpreset==True: # First fill menu based on presetvalue
- testforempty = self.presetaudiocodec.to_string()
- if testforempty != "EMPTY":
+ if not self.presetaudiocodec.is_empty():
self.audiorows[x].append_text(str(GstPbutils.pb_utils_get_codec_description(self.presetaudiocodec)))
self.houseclean=False
- self.audiorows[x].set_active(0)
+
self.audiocodecs[x].append(self.presetaudiocodec)
elif self.streamdata['container']==False: # special setup for container less case, looks
ugly, but good enough for now
@@ -1105,28 +1107,20 @@ class TransmageddonUI(Gtk.ApplicationWindow):
self.audiorows[x].append_text(_("Audio passthrough"))
self.audiocodecs[x].append("pass")
self.audiopassmenuno.append((len(self.audiocodecs[x]))-1)
-
- self.audiorows[x].set_sensitive(True)
+
+ if self.usingpreset==True:
+ self.audiorows[0].set_active(0)
+ self.only_one_audio_stream_allowed(0)
+ self.videorows[0].set_sensitive(False)
+ else:
+ self.audiorows[x].set_sensitive(True)
x=x+1
self.houseclean=False
-
-
-
- # Only allow one audio stream when using presets or when using FLV container or for Audio only
transcode
- # set all entries except first one to 'no audio'
- if (self.streamdata['container']==False) or (self.streamdata['container'].to_string() ==
"video/x-flv") or (self.usingpreset==True):
- self.audiorows[0].set_active(0)
- if self.audiostreamcounter !=0:
- sc=1 #skipping 0 line
- while sc <= self.audiostreamcounter:
- self.audiorows[sc].set_active(self.noaudiomenuno[sc])
- sc=sc+1
- else: # otherwise set all menu options to first entry
- x=0
- while x <= self.audiostreamcounter:
- self.audiorows[x].set_active(0)
- x=x+1
+ x=0
+ while x <= self.audiostreamcounter:
+ self.audiorows[x].set_active(0)
+ x=x+1
self.houseclean=False
else: # No audio track(s) found
@@ -1149,14 +1143,14 @@ class TransmageddonUI(Gtk.ApplicationWindow):
for c in video_codecs:
self.videocodecs.append(Gst.caps_from_string(codecfinder.codecmap[c]))
for c in self.videocodecs: # Use descriptions from GStreamer
- if c != "pass" and c != "novid":
+ if c != "pass" and c != False:
self.videorows[0].append_text(GstPbutils.pb_utils_get_codec_description(c))
self.videorows[0].set_sensitive(True)
self.videorows[0].set_active(0)
#add a 'No Video option'
self.videorows[0].append_text(_("No Video"))
- self.videocodecs.append("novid")
+ self.videocodecs.append(False)
self.videonovideomenuno=(len(self.videocodecs))-1
# add the Passthrough option
@@ -1169,19 +1163,19 @@ class TransmageddonUI(Gtk.ApplicationWindow):
# Only allow one audio stream when using presets or when using FLV container or for Audio
# only transcode listen to changes to any of the entries, if one change, the change others
# to 'no audio'
- x=0
+ # This code is only meant to set all other options than the one selected to 'noaudio'
+ #self.streamdata['singlestreamno']=streamno
+ #print(elf.streamdata['singlestreamno'])
+ #y=0
if ((len(self.noaudiomenuno)) == (len(self.audiorows))):
- while x <= self.audiostreamcounter:
- if x != streamno:
- self.houseclean=True
- self.audiorows[x].set_active(self.noaudiomenuno[x])
- self.houseclean=False
- x=x+1
- else:
- self.audiorows[0].set_active(0)
-
- #How to do this for presets? change logic for preset choices or add 'no audio' option when using
presets?
-
+ y=0
+ self.houseclean=True
+ while y <= self.audiostreamcounter:
+ if y != streamno:
+ self.audiorows[y].set_active(self.noaudiomenuno[y])
+ self.audiodata[y]["outputaudiocaps"]="noaud"
+ y=y+1
+ self.houseclean=False
def on_containerchoice_changed(self, widget):
self.CodecBox.set_sensitive(True)
@@ -1225,7 +1219,7 @@ class TransmageddonUI(Gtk.ApplicationWindow):
self.streamdata['devicename']= self.presetchoices[presetchoice-1]
self.provide_presets(self.streamdata['devicename'])
self.containerchoice.set_sensitive(False)
- self.CodecBox.set_sensitive(False)
+ self.CodecBox.set_sensitive(True) # Testing123
self.rotationchoice.set_sensitive(False)
else:
if self.builder.get_object("containerchoice").get_active_text():
@@ -1251,10 +1245,10 @@ class TransmageddonUI(Gtk.ApplicationWindow):
if self.audiodata[x]['canpassthrough'] == True:
if self.audiorows[x].get_active() == self.audiopassmenuno[x]:
self.audiodata[x]['dopassthrough']= True
- elif self.usingpreset==True:
- self.audiodata[x]['outputaudiocaps'] = self.presetaudiocodec
- if (self.streamdata['container']==False) or (self.streamdata['container'].to_string() ==
"video/x-flv") or (self.usingpreset==True):
+ if (self.streamdata['container']==False) or (self.streamdata['container'].to_string() ==
"video/x-flv"):
self.only_one_audio_stream_allowed(x)
+ if (self.houseclean == False and self.usingpreset==True):
+ self.only_one_audio_stream_allowed(x)
def on_videocodec_changed(self, widget):
self.videodata[0]['dopassthrough']=False
@@ -1263,7 +1257,7 @@ class TransmageddonUI(Gtk.ApplicationWindow):
no=self.videorows[0].get_active()
self.videodata[0]['outputvideocaps'] = self.videocodecs[no]
else:
- self.videodata[0]['outputvideocaps'] = "novid"
+ self.videodata[0]['outputvideocaps'] = False
self.rotationchoice.set_sensitive(False)
if self.videorows[0].get_active() == self.videopassmenuno:
self.videodata[0]['outputvideocaps'] = self.videodata[0]['inputvideocaps']
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]