[pitivi] PictureSourceFactory, add ffmpegcolorspace after imagefreeze.



commit be3922e07f05770c379d3a13fbe539f67f83486a
Author: Alessandro Decina <alessandro d gmail com>
Date:   Sun Feb 21 15:30:39 2010 +0100

    PictureSourceFactory, add ffmpegcolorspace after imagefreeze.
    
    Fixes not-negotiated errors with some pngs.

 pitivi/elements/imagefreeze.py |    4 ++--
 pitivi/factories/base.py       |   10 +++++++++-
 pitivi/factories/file.py       |    6 ++++--
 3 files changed, 15 insertions(+), 5 deletions(-)
---
diff --git a/pitivi/elements/imagefreeze.py b/pitivi/elements/imagefreeze.py
index 6e6c232..3b3f5ab 100644
--- a/pitivi/elements/imagefreeze.py
+++ b/pitivi/elements/imagefreeze.py
@@ -56,11 +56,11 @@ class ImageFreeze(gst.Element):
     _srctemplate = gst.PadTemplate("src",
                                    gst.PAD_SRC,
                                    gst.PAD_ALWAYS,
-                                   gst.caps_new_any())
+                                   gst.Caps("video/x-raw-rgb; video/x-raw-yuv"))
     _sinktemplate = gst.PadTemplate("sink",
                                    gst.PAD_SINK,
                                    gst.PAD_ALWAYS,
-                                   gst.caps_new_any())
+                                   gst.Caps("video/x-raw-rgb; video/x-raw-yuv"))
     __gsttemplates__ = (_srctemplate, _sinktemplate)
 
     def __init__(self, *args, **kwargs):
diff --git a/pitivi/factories/base.py b/pitivi/factories/base.py
index 3ddbe9f..abc3285 100644
--- a/pitivi/factories/base.py
+++ b/pitivi/factories/base.py
@@ -385,7 +385,8 @@ class SourceFactory(ObjectFactory):
             # if we have an ayuv stream we don't want any colorspace
             # converter.
 
-            if not output_stream.has_alpha(): 
+            """
+            if not output_stream.has_alpha():
                 b.csp = gst.element_factory_make("ffmpegcolorspace",
                     "internal-colorspace") 
             elif output_stream.videotype == 'video/x-raw-rgb': 
@@ -393,6 +394,13 @@ class SourceFactory(ObjectFactory):
                     "internal-alphacolor")
             else: 
                 b.csp = gst.element_factory_make("identity")
+            """
+            b.csp = gst.element_factory_make("ffmpegcolorspace",
+                "internal-colorspace") 
+            def probe_cb(pad, buf):
+                #gst.debug_set_threshold_for_name("*", 5)
+                return True
+            b.csp.get_pad('src').add_buffer_probe(probe_cb)
 
             b.alpha = gst.element_factory_make("alpha", "internal-alpha")
 
diff --git a/pitivi/factories/file.py b/pitivi/factories/file.py
index 6d8fed9..c79db7d 100644
--- a/pitivi/factories/file.py
+++ b/pitivi/factories/file.py
@@ -88,12 +88,14 @@ class PictureFileSourceFactory(FileSourceFactory):
             scale.props.method = 2
 
         freeze = ImageFreeze()
-        res.add(scale, freeze)
+        csp = gst.element_factory_make("ffmpegcolorspace")
+        res.add(scale, freeze, csp)
         scale.link(freeze)
+        freeze.link(csp)
 
         self.debug("Chaining up with %r", res)
 
-        src_pad = freeze.get_pad("src")
+        src_pad = csp.get_pad("src")
         sink_pad = scale.get_pad("sink")
         src_ghost = gst.GhostPad("src", src_pad)
         sink_ghost = gst.GhostPad("sink", sink_pad)



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