[pitivi] Make the TestTimelineAddFactory testsuite pass with effects added
- From: Edward Hervey <edwardrv src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pitivi] Make the TestTimelineAddFactory testsuite pass with effects added
- Date: Wed, 22 Sep 2010 13:35:17 +0000 (UTC)
commit e5243b92cd77ab46755a2d3bd8effd327762b1c9
Author: Thibault Saunier <tsaunier src gnome org>
Date: Sat May 22 20:47:45 2010 -0400
Make the TestTimelineAddFactory testsuite pass with effects added
pitivi/timeline/timeline.py | 41 ++++++++++++++++++++++++-----------------
pitivi/timeline/track.py | 1 +
tests/test_timeline.py | 20 +++++++++++++-------
3 files changed, 38 insertions(+), 24 deletions(-)
---
diff --git a/pitivi/timeline/timeline.py b/pitivi/timeline/timeline.py
index 4a9c8ec..1aa6b02 100644
--- a/pitivi/timeline/timeline.py
+++ b/pitivi/timeline/timeline.py
@@ -31,6 +31,7 @@ from pitivi.stream import match_stream_groups_map
from pitivi.utils import start_insort_right, infinity, getPreviousObject, \
getNextObject
from pitivi.timeline.gap import Gap, SmallestGapsFinder, invalid_gap
+from pitivi.factories.operation import VideoEffectFactory, AudioEffectFactory
# Selection modes
SELECT = 0
@@ -1686,31 +1687,37 @@ class Timeline(Signallable, Loggable):
"""
self.debug("factory:%r", factory)
- output_streams = factory.getOutputStreams()
- if not output_streams:
+ output_stream = factory.getOutputStreams()
+ if not output_stream:
raise TimelineError()
+ output_stream = output_stream[0]
- stream_map = self._getSourceFactoryStreamMap(factory)
- if len(stream_map) < len(output_streams):
- # we couldn't assign each stream to a track automatically,
- # error out and require the caller to pass a stream_map
- self.error("Couldn't find a complete stream mapping (self:%d < factory:%d)",
- len(stream_map), len(output_streams))
+ input_stream = factory.getInputStreams()
+ if not input_stream:
+ raise TimelineError()
+ input_stream = input_stream[0]
+
+ if isinstance (factory, VideoEffectFactory):
+ track = self._getEffectTrack(input_stream)
+ elif isinstance (factory, AudioEffectFactory):
+ track = self._getEffectTrack(input_stream)
+ else:
+ raise TimelineError()
timeline_object = TimelineObject(factory)
- start = 0
- for stream, track in stream_map.iteritems():
- self.debug("Stream: " + str(stream) + "\nTrack :" + str(track) +\
- "\nTrack duration:" + str(track.duration))
- start = max(start, track.duration)
- track_object = EffectTrackObject(factory, stream)
- track.addTrackObject(track_object)
- timeline_object.addTrackObject(track_object)
+ track_object = EffectTrackObject(factory, input_stream)
+ track.addTrackObject(track_object)
+ timeline_object.addTrackObject(track_object)
- timeline_object.start = start
+ timeline_object.start = track.duration
self.addTimelineObject(timeline_object)
return timeline_object
+ def _getEffectTrack(self, stream):
+ for track in self.tracks:
+ if track.stream == stream:
+ return track
+
def _getSourceFactoryStreamMap(self, factory):
# track.stream -> track
track_stream_to_track_map = dict((track.stream, track)
diff --git a/pitivi/timeline/track.py b/pitivi/timeline/track.py
index 2d7c34a..ea4a00e 100644
--- a/pitivi/timeline/track.py
+++ b/pitivi/timeline/track.py
@@ -620,6 +620,7 @@ class TrackObject(Signallable, Loggable):
if self.gnl_object is None:
raise TrackError()
+ #print "SELF.FACTORY: %s %s" % (self.factory, self.stream)
bin = self.factory.makeBin(self.stream)
self.gnl_object.add(bin)
self._rebuild_interpolators = True
diff --git a/tests/test_timeline.py b/tests/test_timeline.py
index aa7d243..b8e0aa1 100644
--- a/tests/test_timeline.py
+++ b/tests/test_timeline.py
@@ -1069,20 +1069,26 @@ class TestTimelineAddFactory(TestCase):
self.failUnlessEqual(len(self.video_track1.track_objects), 1)
self.failUnlessEqual(len(self.video_track2.track_objects), 0)
- def testVideoEffectOnly(self):
- self.video_effect_factory.addOutputStream(self.video_stream1)
+ def testVideoStreamVideoEffect(self):
+ self.factory.addOutputStream(self.video_stream1)
+ self.timeline.addSourceFactory(self.factory)
+ self.video_effect_factory.addInputStream(self.video_stream1)
+ self.video_effect_factory.addOutputStream(self.video_stream2)
self.timeline.addEffectFactory(self.video_effect_factory)
self.failUnlessEqual(len(self.audio_track1.track_objects), 0)
self.failUnlessEqual(len(self.audio_track2.track_objects), 0)
- self.failUnlessEqual(len(self.video_track1.track_objects), 1)
+ self.failUnlessEqual(len(self.video_track1.track_objects), 2)
self.failUnlessEqual(len(self.video_track2.track_objects), 0)
- def testAudioEffectOnly(self):
- self.audio_effect_factory.addOutputStream(self.audio_stream1)
+ def testAudioStreamAudioEffect(self):
+ self.factory.addOutputStream(self.audio_stream1)
+ self.timeline.addSourceFactory(self.factory)
+ self.audio_effect_factory.addInputStream(self.audio_stream1)
+ self.audio_effect_factory.addOutputStream(self.audio_stream2)
self.timeline.addEffectFactory(self.audio_effect_factory)
- self.failUnlessEqual(len(self.audio_track1.track_objects), 0)
+ self.failUnlessEqual(len(self.audio_track1.track_objects), 2)
self.failUnlessEqual(len(self.audio_track2.track_objects), 0)
- self.failUnlessEqual(len(self.video_track1.track_objects), 1)
+ self.failUnlessEqual(len(self.video_track1.track_objects), 0)
self.failUnlessEqual(len(self.video_track2.track_objects), 0)
def test1Audio1Video(self):
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]