[pitivi] tests: base: Fix SourceFactory.setFilterCaps() regression
- From: Edward Hervey <edwardrv src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pitivi] tests: base: Fix SourceFactory.setFilterCaps() regression
- Date: Tue, 3 Aug 2010 08:59:56 +0000 (UTC)
commit d85318106207efb7c0e7e61d22e23424cd438ca3
Author: Robert Swain <robert swain collabora co uk>
Date: Mon Aug 2 14:00:50 2010 +0200
tests: base: Fix SourceFactory.setFilterCaps() regression
After the removal of SmartVideoScale in favour of videoscale, there was a
regression in the use of setFilterCaps() for setting dimensions. The dimensions
must now be set on the capsfilter after videoscale and the caps queried from
the capsfilter's caps property.
pitivi/factories/base.py | 13 +++++---
tests/test_factories_file.py | 67 ++++++++++++++++++++++++++++++++++++-----
2 files changed, 66 insertions(+), 14 deletions(-)
---
diff --git a/pitivi/factories/base.py b/pitivi/factories/base.py
index 059d9c5..c5679b6 100644
--- a/pitivi/factories/base.py
+++ b/pitivi/factories/base.py
@@ -420,7 +420,7 @@ class SourceFactory(ObjectFactory):
b.scale = gst.element_factory_make("videoscale")
b.scale.props.add_borders = True
b.capsfilter = gst.element_factory_make("capsfilter")
- self.setFilterCaps(self._filtercaps)
+ self.setFilterCaps(self._filtercaps, b)
b.add(b.queue, b.scale, b.csp, b.alpha, b.capsfilter)
gst.element_link_many(b.queue, b.csp, b.scale)
@@ -485,7 +485,7 @@ class SourceFactory(ObjectFactory):
def addInputStream(self, stream):
raise AssertionError("source factories can't have input streams")
- def setFilterCaps(self, caps):
+ def setFilterCaps(self, caps, b=None):
caps_copy = gst.Caps(caps)
for structure in caps_copy:
# remove framerate as we don't adjust framerate here
@@ -494,9 +494,12 @@ class SourceFactory(ObjectFactory):
# remove format as we will have converted to AYUV/ARGB
if structure.has_key("format"):
del structure["format"]
- for b in self.bins:
- if hasattr(b, "scale"):
- b.capsfilter.props.caps = caps_copy
+ if b is None:
+ for bin in self.bins:
+ if hasattr(bin, "capsfilter"):
+ bin.capsfilter.props.caps = caps_copy
+ else:
+ b.capsfilter.props.caps = caps_copy
self._filtercaps = caps_copy
class SinkFactory(ObjectFactory):
diff --git a/tests/test_factories_file.py b/tests/test_factories_file.py
index 8d8d35c..68ccb66 100644
--- a/tests/test_factories_file.py
+++ b/tests/test_factories_file.py
@@ -93,22 +93,71 @@ class TestFileSourceFactory(TestCase):
bin1 = self.factory.makeBin(stream)
self.failUnlessEqual(self.factory.current_bins, 1)
self.failUnless(isinstance(bin1, gst.Bin))
- self.failUnless(hasattr(bin1, "scale"))
- self.failUnlessEqual(bin1.scale.widthout, 320)
- self.failUnlessEqual(bin1.scale.heightout, 240)
+ self.failUnless(hasattr(bin1, "capsfilter"))
+
+ # check caps1 set on bin1
+ scale_caps1 = bin1.capsfilter.props.caps
+ width_checked = False
+ height_checked = False
+ for structure in scale_caps1:
+ if structure.has_key("width"):
+ self.failUnlessEqual(structure["width"], 320)
+ width_checked = True
+ if structure.has_key("height"):
+ self.failUnlessEqual(structure["height"], 240)
+ height_checked = True
+ self.failUnlessEqual(width_checked, True)
+ self.failUnlessEqual(height_checked, True)
bin2 = self.factory.makeBin(stream)
self.failUnlessEqual(self.factory.current_bins, 2)
self.failUnless(isinstance(bin2, gst.Bin))
self.failUnless(hasattr(bin2, "scale"))
- self.failUnlessEqual(bin2.scale.widthout, 320)
- self.failUnlessEqual(bin2.scale.heightout, 240)
+
+ # check caps1 set on bin2
+ scale_caps1 = bin2.capsfilter.props.caps
+ width_checked = False
+ height_checked = False
+ for structure in scale_caps1:
+ if structure.has_key("width"):
+ self.failUnlessEqual(structure["width"], 320)
+ width_checked = True
+ if structure.has_key("height"):
+ self.failUnlessEqual(structure["height"], 240)
+ height_checked = True
+ self.failUnlessEqual(width_checked, True)
+ self.failUnlessEqual(height_checked, True)
+
self.factory.setFilterCaps(caps2)
- self.failUnlessEqual(bin1.scale.widthout, 640)
- self.failUnlessEqual(bin1.scale.heightout, 480)
- self.failUnlessEqual(bin2.scale.widthout, 640)
- self.failUnlessEqual(bin2.scale.heightout, 480)
+
+ # check caps2 set on bin1
+ scale_caps2 = bin1.capsfilter.props.caps
+ width_checked = False
+ height_checked = False
+ for structure in scale_caps2:
+ if structure.has_key("width"):
+ self.failUnlessEqual(structure["width"], 640)
+ width_checked = True
+ if structure.has_key("height"):
+ self.failUnlessEqual(structure["height"], 480)
+ height_checked = True
+ self.failUnlessEqual(width_checked, True)
+ self.failUnlessEqual(height_checked, True)
+
+ # check caps2 set on bin2
+ scale_caps2 = bin2.capsfilter.props.caps
+ width_checked = False
+ height_checked = False
+ for structure in scale_caps2:
+ if structure.has_key("width"):
+ self.failUnlessEqual(structure["width"], 640)
+ width_checked = True
+ if structure.has_key("height"):
+ self.failUnlessEqual(structure["height"], 480)
+ height_checked = True
+ self.failUnlessEqual(width_checked, True)
+ self.failUnlessEqual(height_checked, True)
self.factory.releaseBin(bin1)
self.factory.releaseBin(bin2)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]