pitivi r1249 - in trunk: . pitivi pitivi/ui
- From: edwardrv svn gnome org
- To: svn-commits-list gnome org
- Subject: pitivi r1249 - in trunk: . pitivi pitivi/ui
- Date: Wed, 17 Sep 2008 16:46:55 +0000 (UTC)
Author: edwardrv
Date: Wed Sep 17 16:46:55 2008
New Revision: 1249
URL: http://svn.gnome.org/viewvc/pitivi?rev=1249&view=rev
Log:
* pitivi/bin.py:
* pitivi/settings.py:
* pitivi/ui/exportsettingswidget.py:
Enable muxing of raw audio/video streams.
Modified:
trunk/ChangeLog
trunk/pitivi/bin.py
trunk/pitivi/settings.py
trunk/pitivi/ui/exportsettingswidget.py
Modified: trunk/pitivi/bin.py
==============================================================================
--- trunk/pitivi/bin.py (original)
+++ trunk/pitivi/bin.py Wed Sep 17 16:46:55 2008
@@ -305,10 +305,13 @@
aconv = gst.element_factory_make("audioconvert", "aconv")
ares = gst.element_factory_make("audioresample", "ares")
arate = gst.element_factory_make("audiorate", "arate")
- aenc = gst.element_factory_make(settings.aencoder ,"aenc")
- # set properties on the encoder
- for prop, value in settings.acodecsettings.iteritems():
- aenc.set_property(prop, value)
+ if settings.aencoder:
+ aenc = gst.element_factory_make(settings.aencoder ,"aenc")
+ # set properties on the encoder
+ for prop, value in settings.acodecsettings.iteritems():
+ aenc.set_property(prop, value)
+ else:
+ aenc = gst.element_factory_make("identity", "aenc")
aoutq = gst.element_factory_make("queue", "aoutq")
# add and link all required audio elements
@@ -342,10 +345,13 @@
csp = gst.element_factory_make("ffmpegcolorspace", "csp")
vrate = gst.element_factory_make("videorate", "vrate")
vscale = SmartVideoScale()
- venc = gst.element_factory_make(settings.vencoder, "venc")
- # set properties on the encoder
- for prop, value in settings.vcodecsettings.iteritems():
- venc.set_property(prop, value)
+ if settings.vencoder:
+ venc = gst.element_factory_make(settings.vencoder, "venc")
+ # set properties on the encoder
+ for prop, value in settings.vcodecsettings.iteritems():
+ venc.set_property(prop, value)
+ else:
+ venc = gst.element_factory_make("identity", "venc")
voutq = gst.element_factory_make("queue", "voutq")
# add and link all required video elements
Modified: trunk/pitivi/settings.py
==============================================================================
--- trunk/pitivi/settings.py (original)
+++ trunk/pitivi/settings.py Wed Sep 17 16:46:55 2008
@@ -382,3 +382,10 @@
res.append(encoder)
break
return res
+
+def muxer_can_sink_raw_audio(muxer):
+ return my_can_sink_caps(muxer, gst.Caps("audio/x-raw-float;audio/x-raw-int"))
+
+def muxer_can_sink_raw_video(muxer):
+ return my_can_sink_caps(muxer, gst.Caps("video/x-raw-yuv;video/x-raw-rgb"))
+
Modified: trunk/pitivi/ui/exportsettingswidget.py
==============================================================================
--- trunk/pitivi/ui/exportsettingswidget.py (original)
+++ trunk/pitivi/ui/exportsettingswidget.py Wed Sep 17 16:46:55 2008
@@ -26,7 +26,7 @@
import gtk
import gst
from glade import GladeWidget
-from pitivi.settings import encoders_muxer_compatible
+from pitivi.settings import encoders_muxer_compatible, muxer_can_sink_raw_audio, muxer_can_sink_raw_video
from gstwidget import GstElementSettingsDialog
from gettext import gettext as _
@@ -225,19 +225,31 @@
self.audiodepthcbox.set_sensitive(activate)
def _muxerComboboxChangedCb(self, widget):
+ print len(self.validvencoders), self.vcodeccbox.get_active()
+ print len(self.validaencoders), self.acodeccbox.get_active()
if self.validvencoders:
- prevvenc = self.validvencoders[self.vcodeccbox.get_active()].get_name()
+ vidx = self.vcodeccbox.get_active()
+ if vidx < len(self.validvencoders):
+ prevvenc = self.validvencoders[vidx].get_name()
+ elif vidx == len(self.validvencoders):
+ prevvenc = None
else:
prevvenc = self.settings.vencoder
if self.validaencoders:
- prevaenc = self.validaencoders[self.acodeccbox.get_active()].get_name()
+ aidx = self.acodeccbox.get_active()
+ if aidx < len(self.validaencoders):
+ prevaenc = self.validaencoders[aidx].get_name()
+ elif aidx == len(self.validaencoders):
+ prevaenc = None
else:
prevaenc = self.settings.aencoder
+ print prevvenc, prevaenc
# find the valid audio/video codec with the given muxer
+ muxer = self.muxers[widget.get_active()]
self.validaencoders = encoders_muxer_compatible(self.settings.aencoders,
- self.muxers[widget.get_active()])
+ muxer)
self.validvencoders = encoders_muxer_compatible(self.settings.vencoders,
- self.muxers[widget.get_active()])
+ muxer)
venclist = self.vcodeccbox.get_model()
venclist.clear()
@@ -248,6 +260,10 @@
if enc.get_name() == prevvenc:
selected = idx
idx = idx + 1
+ if muxer_can_sink_raw_video(muxer):
+ venclist.append(["Raw Video"])
+ if prevvenc == None:
+ selected = idx
self.vcodeccbox.set_active(selected)
aenclist = self.acodeccbox.get_model()
@@ -259,6 +275,10 @@
if enc.get_name() == prevaenc:
selected = idx
idx = idx + 1
+ if muxer_can_sink_raw_audio(muxer):
+ aenclist.append(["Raw Audio"])
+ if prevaenc == None:
+ selected = idx
self.acodeccbox.set_active(selected)
def runSettingsDialog(self, factory, settings):
@@ -312,8 +332,20 @@
# Encoders
muxer = self.settings.muxers[self.muxercombobox.get_active()].get_name()
- vencoder = self.validvencoders[self.vcodeccbox.get_active()].get_name()
- aencoder = self.validaencoders[self.acodeccbox.get_active()].get_name()
+ vidx = self.vcodeccbox.get_active()
+ if vidx < len(self.validvencoders):
+ vencoder = self.validvencoders[vidx].get_name()
+ elif vidx == len(self.validvencoders):
+ vencoder = None
+ else:
+ gst.warning("we don't want any video stream")
+ aidx = self.acodeccbox.get_active()
+ if aidx < len(self.validaencoders):
+ aencoder = self.validaencoders[aidx].get_name()
+ elif aidx == len(self.validaencoders):
+ aencoder = None
+ else:
+ gst.warning("we don't want any audio stream")
self.settings.setEncoders(muxer, vencoder, aencoder)
# encoder/muxer settings
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]