pitivi r1249 - in trunk: . pitivi pitivi/ui



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]