Example #1
0
    def testSavetimelineObjects(self):
        video_stream = VideoStream(gst.Caps("video/x-raw-yuv"))
        audio_stream = AudioStream(gst.Caps("audio/x-raw-int"))
        source1 = FileSourceFactory("file1.ogg")
        source1.addOutputStream(video_stream)

        # these two calls are needed to populate the context for the -ref
        # elements
        self.formatter._saveSource(source1)
        self.formatter._saveStream(video_stream)

        track_object = SourceTrackObject(source1,
                                         video_stream,
                                         start=10 * gst.SECOND,
                                         duration=20 * gst.SECOND,
                                         in_point=5 * gst.SECOND,
                                         media_duration=15 * gst.SECOND,
                                         priority=10)
        track = Track(video_stream)
        track.addTrackObject(track_object)
        self.formatter._saveTrackObject(track_object)

        timeline_object = TimelineObject(source1)
        timeline_object.addTrackObject(track_object)

        element = self.formatter._saveTimelineObjects([timeline_object])
        self.failUnlessEqual(len(element), 1)
Example #2
0
    def testSaveTimelineObject(self):
        video_stream = VideoStream(gst.Caps("video/x-raw-yuv"))
        audio_stream = AudioStream(gst.Caps("audio/x-raw-int"))
        source1 = FileSourceFactory("file1.ogg")
        source1.addOutputStream(video_stream)

        # these two calls are needed to populate the context for the -ref
        # elements
        self.formatter._saveSource(source1)
        self.formatter._saveStream(video_stream)

        track_object = SourceTrackObject(source1, video_stream,
                start=10 * gst.SECOND, duration=20 * gst.SECOND,
                in_point=5 * gst.SECOND, media_duration=15 * gst.SECOND,
                priority=10)
        track = Track(video_stream)
        track.addTrackObject(track_object)

        self.formatter._saveTrackObject(track_object)

        timeline_object = TimelineObject(source1)
        timeline_object.addTrackObject(track_object)

        element = self.formatter._saveTimelineObject(timeline_object)
        self.failUnlessEqual(element.tag, "timeline-object")
        self.failIfEqual(element.find("factory-ref"), None)
        track_object_refs = element.find("track-object-refs")
        self.failUnlessEqual(len(track_object_refs), 1)
Example #3
0
    def testSaveFactoryRef(self):
        video_stream = VideoStream(gst.Caps("video/x-raw-yuv"))
        audio_stream = AudioStream(gst.Caps("audio/x-raw-int"))
        source1 = FileSourceFactory("file1.ogg")
        source1.addOutputStream(video_stream)
        source1.addOutputStream(audio_stream)
        element = self.formatter._saveSource(source1)

        element_ref = self.formatter._saveFactoryRef(source1)
        self.failUnlessEqual(element_ref.tag, "factory-ref")
        self.failUnlessEqual(element_ref.attrib["id"], element.attrib["id"])
Example #4
0
    def testSaveFactoryRef(self):
        video_stream = VideoStream(gst.Caps("video/x-raw-yuv"))
        audio_stream = AudioStream(gst.Caps("audio/x-raw-int"))
        source1 = FileSourceFactory("file1.ogg")
        source1.addOutputStream(video_stream)
        source1.addOutputStream(audio_stream)
        element = self.formatter._saveSource(source1)

        element_ref = self.formatter._saveFactoryRef(source1)
        self.failUnlessEqual(element_ref.tag, "factory-ref")
        self.failUnlessEqual(element_ref.attrib["id"], element.attrib["id"])
Example #5
0
    def testSaveSource(self):
        video_stream = VideoStream(gst.Caps("video/x-raw-yuv"))
        audio_stream = AudioStream(gst.Caps("audio/x-raw-int"))
        source1 = FileSourceFactory("file1.ogg")
        source1.addOutputStream(video_stream)
        source1.addOutputStream(audio_stream)
        element = self.formatter._saveSource(source1)
        self.failUnlessEqual(element.tag, "source")
        self.failUnlessEqual(element.attrib["type"], qual(source1.__class__))
        self.failUnlessEqual(element.attrib["filename"], "file1.ogg")

        streams = element.find("output-streams")
        self.failUnlessEqual(len(streams), 2)
Example #6
0
    def testSaveSource(self):
        video_stream = VideoStream(gst.Caps("video/x-raw-yuv"))
        audio_stream = AudioStream(gst.Caps("audio/x-raw-int"))
        source1 = FileSourceFactory("file1.ogg")
        source1.addOutputStream(video_stream)
        source1.addOutputStream(audio_stream)
        element = self.formatter._saveSource(source1)
        self.failUnlessEqual(element.tag, "source")
        self.failUnlessEqual(element.attrib["type"], qual(source1.__class__))
        self.failUnlessEqual(element.attrib["filename"], "file1.ogg")

        streams = element.find("output-streams")
        self.failUnlessEqual(len(streams), 2)
Example #7
0
    def testSaveFactories(self):
        video_stream = VideoStream(gst.Caps("video/x-raw-yuv"))
        audio_stream = AudioStream(gst.Caps("audio/x-raw-int"))

        source1 = FileSourceFactory("file1.ogg")
        source1.addOutputStream(video_stream)
        source1.addOutputStream(audio_stream)

        source2 = FileSourceFactory("file2.ogg")
        source2.addOutputStream(video_stream)
        source2.addOutputStream(audio_stream)

        factories = [source1, source2]
        element = self.formatter._saveFactories(factories)
        self.failUnlessEqual(element.tag, "factories")

        sources = element.find("sources")
        self.failUnlessEqual(len(sources), 2)
Example #8
0
    def testSaveFactories(self):
        video_stream = VideoStream(gst.Caps("video/x-raw-yuv"))
        audio_stream = AudioStream(gst.Caps("audio/x-raw-int"))

        source1 = FileSourceFactory("file1.ogg")
        source1.addOutputStream(video_stream)
        source1.addOutputStream(audio_stream)

        source2 = FileSourceFactory("file2.ogg")
        source2.addOutputStream(video_stream)
        source2.addOutputStream(audio_stream)

        source_factories = [source1, source2]
        element = self.formatter._saveFactories(source_factories)
        self.failUnlessEqual(element.tag, "factories")

        sources = element.find("sources")
        self.failUnlessEqual(len(sources), 2)
Example #9
0
    def testSaveTrackObject(self):
        video_stream = VideoStream(gst.Caps("video/x-raw-yuv"))
        audio_stream = AudioStream(gst.Caps("audio/x-raw-int"))
        source1 = FileSourceFactory("file1.ogg")
        source1.addOutputStream(video_stream)

        # these two calls are needed to populate the context for the -ref
        # elements
        self.formatter._saveSource(source1)
        self.formatter._saveStream(video_stream)

        track_object = SourceTrackObject(source1, video_stream,
                start=10 * gst.SECOND, duration=20 * gst.SECOND,
                in_point=5 * gst.SECOND, media_duration=15 * gst.SECOND,
                priority=10)
        track = Track(video_stream)
        track.addTrackObject(track_object)

        # create an interpolator and insert it into the track object
        fakevol = gst.element_factory_make("volume")
        prop = get_controllable_properties(fakevol)[1][1]
        volcurve = Interpolator(track_object, fakevol, prop)
        track_object.interpolators[prop.name] = (prop, volcurve)

        # add some points to the interpolator 
        value = float(0)
        volcurve.start.setObjectTime(0)
        volcurve.start.value = 0
        for t in xrange(3, 15, 3):
            value = int(t % 2)
            volcurve.newKeyframe(t * gst.SECOND, value)
        volcurve.end.setObjectTime(15 * gst.SECOND)
        volcurve.end.value = 15 % 2

        element = self.formatter._saveTrackObject(track_object)
        self.failUnlessEqual(element.tag, "track-object")
        self.failUnlessEqual(element.attrib["type"],
                qual(track_object.__class__))
        self.failUnlessEqual(element.attrib["start"], ts(10 * gst.SECOND))
        self.failUnlessEqual(element.attrib["duration"], ts(20 * gst.SECOND))
        self.failUnlessEqual(element.attrib["in_point"], ts(5 * gst.SECOND))
        self.failUnlessEqual(element.attrib["media_duration"],
                ts(15 * gst.SECOND))
        self.failUnlessEqual(element.attrib["priority"], "(int)10")

        self.failIfEqual(element.find("factory-ref"), None)
        self.failIfEqual(element.find("stream-ref"), None)

        # find the interpolation keyframes
        curves = element.find("curves")
        self.failIfEqual(curves, None)
        curve = curves.find("curve")
        self.failIfEqual(curve, None)
        self.failUnlessEqual(curve.attrib["property"], "volume")
        
        # compute a dictionary of keyframes
        saved_points = dict(((obj.attrib["time"], (obj.attrib["value"],
            obj.attrib["mode"])) for obj in curve.getiterator("keyframe")))

        # compare this with the expected values
        expected = dict(((str(t * gst.SECOND), ("(gdouble)%s" % (t % 2), "2")) for t in
            xrange(3, 15, 3)))
        self.failUnlessEqual(expected, saved_points)
Example #10
0
    def testSaveTrackSource(self):
        video_stream = VideoStream(gst.Caps("video/x-raw-yuv"))
        audio_stream = AudioStream(gst.Caps("audio/x-raw-int"))
        source1 = FileSourceFactory("file1.ogg")
        source1.addOutputStream(video_stream)

        # these two calls are needed to populate the context for the -ref
        # elements
        self.formatter._saveSource(source1)
        self.formatter._saveStream(video_stream)

        track_source = SourceTrackObject(source1,
                                         video_stream,
                                         start=10 * gst.SECOND,
                                         duration=20 * gst.SECOND,
                                         in_point=5 * gst.SECOND,
                                         media_duration=15 * gst.SECOND,
                                         priority=10)

        track = Track(video_stream)
        track.addTrackObject(track_source)

        # create an interpolator and insert it into the track object
        fakevol = gst.element_factory_make("volume")
        prop = get_controllable_properties(fakevol)[1][1]
        volcurve = Interpolator(track_source, fakevol, prop)
        track_source.interpolators[prop.name] = (prop, volcurve)

        # add some points to the interpolator
        value = float(0)
        volcurve.start.setObjectTime(0)
        volcurve.start.value = 0
        for t in xrange(3, 15, 3):
            value = int(t % 2)
            volcurve.newKeyframe(t * gst.SECOND, value)
        volcurve.end.setObjectTime(15 * gst.SECOND)
        volcurve.end.value = 15 % 2

        element = self.formatter._saveTrackObject(track_source)
        self.failUnlessEqual(element.tag, "track-object")
        self.failUnlessEqual(element.attrib["type"],
                             qual(track_source.__class__))
        self.failUnlessEqual(element.attrib["start"], ts(10 * gst.SECOND))
        self.failUnlessEqual(element.attrib["duration"], ts(20 * gst.SECOND))
        self.failUnlessEqual(element.attrib["in_point"], ts(5 * gst.SECOND))
        self.failUnlessEqual(element.attrib["media_duration"],
                             ts(15 * gst.SECOND))
        self.failUnlessEqual(element.attrib["priority"], "(int)10")

        self.failIfEqual(element.find("factory-ref"), None)
        self.failIfEqual(element.find("stream-ref"), None)

        # find the interpolation keyframes
        curves = element.find("curves")
        self.failIfEqual(curves, None)
        curve = curves.find("curve")
        self.failIfEqual(curve, None)
        self.failUnlessEqual(curve.attrib["property"], "volume")

        # compute a dictionary of keyframes
        saved_points = dict(
            ((obj.attrib["time"], (obj.attrib["value"], obj.attrib["mode"]))
             for obj in curve.getiterator("keyframe")))

        # compare this with the expected values
        expected = dict(((str(t * gst.SECOND), ("(gdouble)%s" % (t % 2), "2"))
                         for t in xrange(3, 15, 3)))
        self.failUnlessEqual(expected, saved_points)