本文整理汇总了Python中pitivi.pipeline.Pipeline.release方法的典型用法代码示例。如果您正苦于以下问题:Python Pipeline.release方法的具体用法?Python Pipeline.release怎么用?Python Pipeline.release使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pitivi.pipeline.Pipeline
的用法示例。
在下文中一共展示了Pipeline.release方法的11个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: testMultiple
# 需要导入模块: from pitivi.pipeline import Pipeline [as 别名]
# 或者: from pitivi.pipeline.Pipeline import release [as 别名]
def testMultiple(self):
"""Test a dual stream encoding with separates sources"""
settings = RenderSettings(settings=[self.asettings, self.vsettings],
muxer="oggmux")
sf = RenderSinkFactory(RenderFactory(settings=settings),
common.FakeSinkFactory())
a = RenderAction()
a.addConsumers(sf)
a.addProducers(self.vsrc, self.asrc)
p = Pipeline()
a.setPipeline(p)
a.activate()
self.assertEquals(len(a._links), 2)
p.play()
time.sleep(3)
p.getState()
p.stop()
a.deactivate()
a.unsetPipeline()
p.release()
示例2: testPendingLink
# 需要导入模块: from pitivi.pipeline import Pipeline [as 别名]
# 或者: from pitivi.pipeline.Pipeline import release [as 别名]
def testPendingLink(self):
a = Action()
p = Pipeline()
src = common.FakeGnlFactory()
src.addOutputStream(VideoStream(gst.Caps("video/x-raw-yuv"),
pad_name="src"))
sink = common.FakeSinkFactory()
sink.addInputStream(MultimediaStream(gst.Caps("any"),
pad_name="sink"))
# set the link, it will be activated once the pad is added
a.setLink(src, sink)
# Let's see if the link is present
self.assertEquals(a._links, [(src, sink, None, None)])
p.setAction(a)
gst.debug("about to activate action")
a.activate()
# only the producer and the consumer are created, the other elements are
# created dinamically
self.assertEquals(len(list(p._pipeline.elements())), 2)
p.setState(STATE_PLAYING)
time.sleep(1)
# and make sure that all other elements were created (4)
# FIXME if it's failing here, run the test a few times trying to raise
# the time.sleep() above, it may just be racy...
self.assertEquals(len(list(p._pipeline.elements())), 4)
a.deactivate()
p.setState(STATE_NULL)
self.assertEquals(len(list(p._pipeline.elements())), 0)
p.release()
示例3: testSimpleStreams
# 需要导入模块: from pitivi.pipeline import Pipeline [as 别名]
# 或者: from pitivi.pipeline.Pipeline import release [as 别名]
def testSimpleStreams(self):
"""Test a RenderSettings with exact stream settings"""
# let's force the video to some unusual size
outs = VideoStream(gst.Caps("video/x-raw-yuv,width=624,height=230,framerate=10/1"))
fset = StreamEncodeSettings(encoder="theoraenc", input_stream=outs)
settings = RenderSettings(settings=[fset], muxer="oggmux")
sf = RenderSinkFactory(RenderFactory(settings=settings),
common.FakeSinkFactory())
a = RenderAction()
a.addConsumers(sf)
a.addProducers(self.vsrc)
p = Pipeline()
a.setPipeline(p)
a.activate()
self.assertEquals(len(a._links), 1)
p.play()
time.sleep(3)
p.getState()
p.stop()
a.deactivate()
p.release()
示例4: testPipelineSimple
# 需要导入模块: from pitivi.pipeline import Pipeline [as 别名]
# 或者: from pitivi.pipeline.Pipeline import release [as 别名]
def testPipelineSimple(self):
""" Test setPipeline and unsetPipeline """
ac = Action()
p = Pipeline()
p2 = Pipeline()
# set a Pipeline
ac.setPipeline(p)
self.assertEquals(ac.pipeline, p)
# Setting a different Pipeline should fail...
self.failUnlessRaises(ActionError, ac.setPipeline, p2)
# ... but setting the same Pipeline again should silently succeed
ac.setPipeline(p)
# remove the Pipeline
ac.unsetPipeline()
self.assertEquals(ac.pipeline, None)
# and now setting the other Pipeline should succeed
ac.setPipeline(p2)
self.assertEquals(ac.pipeline, p2)
# remove the Pipeline again
ac.unsetPipeline()
self.assertEquals(ac.pipeline, None)
# internally set the state to ACTIVE
ac.state = STATE_ACTIVE
# now setting any Pipeline should fail !
self.failUnlessRaises(ActionError, ac.setPipeline, p)
# internally set the state to NOT_ACTIVE
ac.state = STATE_NOT_ACTIVE
self.assertEquals(ac.isActive(), False)
# Set a pipeline
ac.setPipeline(p)
self.assertEquals(ac.pipeline, p)
# interally set the state to ACTIVE
ac.state = STATE_ACTIVE
# we shouldn't be able to unset a pipeline from an active Action
self.failUnlessRaises(ActionError, ac.unsetPipeline)
# cleanup
ac.state = STATE_NOT_ACTIVE
ac.unsetPipeline()
p.release()
p2.release()
示例5: testSettingFactoriesSimple
# 需要导入模块: from pitivi.pipeline import Pipeline [as 别名]
# 或者: from pitivi.pipeline.Pipeline import release [as 别名]
def testSettingFactoriesSimple(self):
"""Simple add/remove Factory tests"""
ac = Action()
p = Pipeline()
src = common.FakeSourceFactory()
sink = common.FakeSinkFactory()
# you can't set a Sink element as a producer
self.failUnlessRaises(ActionError, ac.addProducers, sink)
# you can't set a Source element as a consumer
self.failUnlessRaises(ActionError, ac.addConsumers, src)
# if the action is active, you can't add anything
ac.state = STATE_ACTIVE
self.failUnlessRaises(ActionError, ac.addProducers, src)
self.failUnlessRaises(ActionError, ac.addConsumers, sink)
ac.state = STATE_NOT_ACTIVE
# Set a producer and consumer on the action
ac.addProducers(src)
ac.addConsumers(sink)
self.assertEquals(ac.producers, [src])
self.assertEquals(ac.consumers, [sink])
self.failUnlessRaises(ActionError, ac.removeProducers, sink)
self.failUnlessRaises(ActionError, ac.removeConsumers, src)
self.assertEquals(ac.producers, [src])
self.assertEquals(ac.consumers, [sink])
# you can't remove anything from an active action
ac.state = STATE_ACTIVE
self.failUnlessRaises(ActionError, ac.removeProducers, src)
self.failUnlessRaises(ActionError, ac.removeConsumers, sink)
ac.state = STATE_NOT_ACTIVE
# finally, attempt correct removal
ac.removeProducers(src)
self.assertEquals(ac.producers, [])
self.assertEquals(ac.consumers, [sink])
ac.removeConsumers(sink)
self.assertEquals(ac.producers, [])
self.assertEquals(ac.consumers, [])
p.release()
示例6: testAddRemoveActionAdvanced
# 需要导入模块: from pitivi.pipeline import Pipeline [as 别名]
# 或者: from pitivi.pipeline.Pipeline import release [as 别名]
def testAddRemoveActionAdvanced(self):
""" Advanced add/remove of Actions """
ac1 = BogusAction()
ac2 = BogusAction()
p2 = Pipeline()
res = self.pipeline.addAction(ac1)
self.assertEquals(self.pipeline.actions, [ac1])
# we can't add an action to two pipelines at the same time
self.failUnlessRaises(PipelineError, p2.addAction, ac1)
self.pipeline.removeAction(ac1)
self.assertEquals(self.pipeline.actions, [])
res = self.pipeline.setAction(ac1)
self.assertEquals(res, ac1)
self.assertEquals(self.pipeline.actions, [ac1])
# calling setAction while a similar action is already set should
# return the existing action and not change anything else
res = self.pipeline.setAction(ac2)
self.assertEquals(res, ac1)
self.assertEquals(self.pipeline.actions, [ac1])
# we can't remove active actions while in PAUSED/PLAYING
self.pipeline.setState(STATE_PAUSED)
ac1.state = STATE_ACTIVE
self.assertEquals(self.pipeline.getState(), STATE_PAUSED)
self.failUnlessRaises(PipelineError, self.pipeline.removeAction, ac1)
# but we can remove deactivated actions while in PAUSED/PLAYING
self.pipeline.setState(STATE_PAUSED)
ac1.state = STATE_NOT_ACTIVE
self.assertEquals(self.pipeline.getState(), STATE_PAUSED)
self.pipeline.removeAction(ac1)
# we can add actions while in PAUSED/PLAYING
res = self.pipeline.addAction(ac2)
self.assertEquals(res, ac2)
self.assertEquals(self.pipeline.actions, [ac2])
self.pipeline.removeAction(ac2)
p2.release()
示例7: testDynamicLink
# 需要导入模块: from pitivi.pipeline import Pipeline [as 别名]
# 或者: from pitivi.pipeline.Pipeline import release [as 别名]
def testDynamicLink(self):
a = DynamicAction()
p = Pipeline()
src = common.FakeGnlFactory()
src.addOutputStream(VideoStream(gst.Caps("video/x-raw-yuv"),
pad_name="src"))
# the link will be added dynamically
self.assertEquals(a._links, [])
p.setAction(a)
a.addProducers(src)
self.assertEquals(len(list(p._pipeline.elements())), 0)
a.activate()
# theoretically... there shouldn't only be the source, since
# the pad for the source hasn't been created yet (and therefore not
# requiring a consumer
self.assertEquals(len(list(p._pipeline.elements())), 1)
p.setState(STATE_PLAYING)
time.sleep(1)
p.getState()
# and make sure that all other elements were created (4)
self.assertEquals(len(list(p._pipeline.elements())), 4)
p.setState(STATE_READY)
time.sleep(1)
a.deactivate()
self.assertEquals(len(list(p._pipeline.elements())), 0)
p.setState(STATE_NULL)
p.release()
示例8: TestPipeline
# 需要导入模块: from pitivi.pipeline import Pipeline [as 别名]
# 或者: from pitivi.pipeline.Pipeline import release [as 别名]
class TestPipeline(TestCase):
def setUp(self):
TestCase.setUp(self)
gst.debug("start")
self.pipeline = Pipeline()
self.monitor = SignalMonitor(self.pipeline, 'action-added',
'action-removed', 'factory-added',
'factory-removed', 'state-changed')
self.assertEquals(self.monitor.action_added_count, 0)
self.assertEquals(self.monitor.action_added_collect, [])
def tearDown(self):
self.pipeline.setState(STATE_NULL)
self.pipeline.release()
self.monitor.disconnectFromObj(self.pipeline)
del self.pipeline
del self.monitor
TestCase.tearDown(self)
def testAddRemoveActionSimple(self):
""" Simple add/remove of Actions """
ac1 = BogusAction()
# add the action to the pipeline
res = self.pipeline.addAction(ac1)
# the returned value should be the given action
self.assertEquals(res, ac1)
# it should now be in the list of actions...
self.failUnlessEqual(self.pipeline.actions, [ac1])
# ... and the action should be set to that pipeline
self.failUnlessEqual(ac1.pipeline, self.pipeline)
# the 'action-added' signal should be triggered once
self.assertEquals(self.monitor.action_added_count, 1)
# And it contained our action
self.assertEquals(self.monitor.action_added_collect, [(ac1, )])
# if we try to add that action again, it should be silently ignored
res = self.pipeline.addAction(ac1)
self.assertEquals(res, ac1)
# the list of actions shouldn't have changed
self.failUnlessEqual(self.pipeline.actions, [ac1])
# it shouldn't have changed the pipeline set on action
self.failUnlessEqual(ac1.pipeline, self.pipeline)
# the 'action-added' signal should NOT have been triggered again
self.assertEquals(self.monitor.action_added_count, 1)
# And now to remove it
self.pipeline.removeAction(ac1)
# the 'action-removed' signal should have been triggered once..
self.assertEquals(self.monitor.action_removed_count, 1)
# .. with the action as an argument
self.assertEquals(self.monitor.action_removed_collect, [(ac1, )])
# And there should be no actions left on the pipeline
self.assertEquals(self.pipeline.actions, [])
def testAddRemoveActionAdvanced(self):
""" Advanced add/remove of Actions """
ac1 = BogusAction()
ac2 = BogusAction()
p2 = Pipeline()
res = self.pipeline.addAction(ac1)
self.assertEquals(self.pipeline.actions, [ac1])
# we can't add an action to two pipelines at the same time
self.failUnlessRaises(PipelineError, p2.addAction, ac1)
self.pipeline.removeAction(ac1)
self.assertEquals(self.pipeline.actions, [])
res = self.pipeline.setAction(ac1)
self.assertEquals(res, ac1)
self.assertEquals(self.pipeline.actions, [ac1])
# calling setAction while a similar action is already set should
# return the existing action and not change anything else
res = self.pipeline.setAction(ac2)
self.assertEquals(res, ac1)
self.assertEquals(self.pipeline.actions, [ac1])
# we can't remove active actions while in PAUSED/PLAYING
self.pipeline.setState(STATE_PAUSED)
ac1.state = STATE_ACTIVE
self.assertEquals(self.pipeline.getState(), STATE_PAUSED)
self.failUnlessRaises(PipelineError, self.pipeline.removeAction, ac1)
# but we can remove deactivated actions while in PAUSED/PLAYING
self.pipeline.setState(STATE_PAUSED)
ac1.state = STATE_NOT_ACTIVE
self.assertEquals(self.pipeline.getState(), STATE_PAUSED)
self.pipeline.removeAction(ac1)
# we can add actions while in PAUSED/PLAYING
res = self.pipeline.addAction(ac2)
self.assertEquals(res, ac2)
self.assertEquals(self.pipeline.actions, [ac2])
self.pipeline.removeAction(ac2)
p2.release()
#.........这里部分代码省略.........
示例9: Project
# 需要导入模块: from pitivi.pipeline import Pipeline [as 别名]
# 或者: from pitivi.pipeline.Pipeline import release [as 别名]
class Project(Signallable, Loggable):
"""The base class for PiTiVi projects
@ivar name: The name of the project
@type name: C{str}
@ivar description: A description of the project
@type description: C{str}
@ivar sources: The sources used by this project
@type sources: L{SourceList}
@ivar timeline: The timeline
@type timeline: L{Timeline}
@ivar pipeline: The timeline's pipeline
@type pipeline: L{Pipeline}
@ivar factory: The timeline factory
@type factory: L{TimelineSourceFactory}
@ivar format: The format under which the project is currently stored.
@type format: L{FormatterClass}
@ivar loaded: Whether the project is fully loaded or not.
@type loaded: C{bool}
Signals:
- C{loaded} : The project is now fully loaded.
"""
__signals__ = {
"settings-changed" : ['old', 'new'],
"project-changed" : [],
}
def __init__(self, name="", uri=None, **kwargs):
"""
@param name: the name of the project
@param uri: the uri of the project
"""
Loggable.__init__(self)
self.log("name:%s, uri:%s", name, uri)
self.name = name
self.settings = None
self.description = ""
self.uri = uri
self.urichanged = False
self.format = None
self.sources = SourceList()
self.sources.connect("source-added", self._sourceAddedCb)
self.sources.connect("source-removed", self._sourceRemovedCb)
self._dirty = False
self.timeline = Timeline()
self.factory = TimelineSourceFactory(self.timeline)
self.pipeline = Pipeline()
self.view_action = ViewAction()
self.view_action.addProducers(self.factory)
self.seeker = Seeker(80)
self.settings = ExportSettings()
self._videocaps = self.settings.getVideoCaps()
def release(self):
self.pipeline.release()
self.pipeline = None
#{ Settings methods
def getSettings(self):
"""
return the currently configured settings.
"""
self.debug("self.settings %s", self.settings)
return self.settings
def setSettings(self, settings):
"""
Sets the given settings as the project's settings.
@param settings: The new settings for the project.
@type settings: ExportSettings
"""
assert settings
self.log("Setting %s as the project's settings", settings)
oldsettings = self.settings
self.settings = settings
self._projectSettingsChanged()
self.emit('settings-changed', oldsettings, settings)
#}
#{ Save and Load features
def setModificationState(self, state):
self._dirty = state
if state:
self.emit('project-changed')
def hasUnsavedModifications(self):
return self._dirty
def _projectSettingsChanged(self):
settings = self.getSettings()
self._videocaps = settings.getVideoCaps()
#.........这里部分代码省略.........
示例10: testPipelineAction
# 需要导入模块: from pitivi.pipeline import Pipeline [as 别名]
# 或者: from pitivi.pipeline.Pipeline import release [as 别名]
def testPipelineAction(self):
"""Testing pipeline state interaction"""
p = Pipeline()
a = Action()
src = VideoTestSourceFactory()
sink = common.FakeSinkFactory()
sink.addInputStream(MultimediaStream(gst.Caps("any"), pad_name="sink"))
# set the Action on the Pipeline
p.setAction(a)
self.assertEquals(p.actions, [a])
# set the Producer and Consumer
a.addProducers(src)
a.addConsumers(sink)
a.setLink(src, sink)
# activate the Action
a.activate()
self.failUnlessEqual(src.current_bins, 1)
self.failUnlessEqual(sink.current_bins, 1)
# call get*ForFactoryStream(..., automake=False). They will raise
# exceptions if the action didn't create the elements.
bin = p.getBinForFactoryStream(src, automake=False)
p.releaseBinForFactoryStream(src)
tee = p.getTeeForFactoryStream(src, automake=False)
p.releaseTeeForFactoryStream(src)
bin = p.getBinForFactoryStream(sink, automake=False)
queue = p.getQueueForFactoryStream(sink, automake=False)
self.failUnlessEqual(queue.get_pad('src').get_peer().get_parent(), bin)
p.releaseBinForFactoryStream(sink)
p.releaseQueueForFactoryStream(sink)
# switch to PLAYING
p.setState(STATE_PLAYING)
# wait half a second
# switch to READY
p.setState(STATE_READY)
# deactivate action
a.deactivate()
# since we're the last Action to be release, the tees
# and queues should have gone
self.failUnlessEqual(src.current_bins, 0)
self.failUnlessEqual(sink.current_bins, 0)
# remove the action from the pipeline
p.removeAction(a)
# the gst.Pipeline should be empty !
self.assertEquals(list(p._pipeline.elements()), [])
p.release()
示例11: Project
# 需要导入模块: from pitivi.pipeline import Pipeline [as 别名]
# 或者: from pitivi.pipeline.Pipeline import release [as 别名]
class Project(Signallable, Loggable):
"""The base class for PiTiVi projects
@ivar name: The name of the project
@type name: C{str}
@ivar description: A description of the project
@type description: C{str}
@ivar sources: The sources used by this project
@type sources: L{SourceList}
@ivar timeline: The timeline
@type timeline: L{Timeline}
@ivar pipeline: The timeline's pipeline
@type pipeline: L{Pipeline}
@ivar factory: The timeline factory
@type factory: L{TimelineSourceFactory}
@ivar format: The format under which the project is currently stored.
@type format: L{FormatterClass}
@ivar loaded: Whether the project is fully loaded or not.
@type loaded: C{bool}
Signals:
- C{loaded} : The project is now fully loaded.
"""
__signals__ = {
"settings-changed" : ['old', 'new'],
}
def __init__(self, name="", uri=None, **kwargs):
"""
name : the name of the project
uri : the uri of the project
"""
Loggable.__init__(self)
self.log("name:%s, uri:%s", name, uri)
self.name = name
self.settings = None
self.description = ""
self.uri = uri
self.urichanged = False
self.format = None
self.sources = SourceList()
self.sources.connect("source-added", self._sourceAddedCb)
self.sources.connect("source-removed", self._sourceRemovedCb)
self._dirty = False
self.timeline = Timeline()
self.factory = TimelineSourceFactory(self.timeline)
self.pipeline = Pipeline()
self.view_action = ViewAction()
self.view_action.addProducers(self.factory)
self.seeker = Seeker(80)
self.getCapsFromSettings()
def getCapsFromSettings(self):
settings = self.getSettings()
#formatstr = "video/x-raw-rgb,width=(int)%d,height=(int)%d;"\
# "video/x-raw-yuv,width=(int)%d,height=(int)%d"
#capstr = formatstr % (
# settings.videowidth,
# settings.videoheight,
# settings.videowidth,
# settings.videoheight)
#self._videocaps = gst.Caps(capstr)
self._videocaps = settings.getVideoCaps()
def release(self):
self.pipeline.release()
self.pipeline = None
#{ Settings methods
def getSettings(self):
"""
return the currently configured settings.
If no setting have been explicitely set, some smart settings will be
chosen.
"""
self.debug("self.settings %s", self.settings)
return self.settings or self.getAutoSettings()
def setSettings(self, settings):
"""
Sets the given settings as the project's settings.
If settings is None, the current settings will be unset
"""
self.log("Setting %s as the project's settings", settings)
oldsettings = self.settings
self.settings = settings
self._projectSettingsChanged()
self.emit('settings-changed', oldsettings, settings)
def unsetSettings(self, unused_settings):
""" Remove the currently configured settings."""
self.setSettings(None)
def getAutoSettings(self):
#.........这里部分代码省略.........