Gstreamer 调度模式

翻译自part-scheduling.txt


调度

------------------------

    在Gstreamer中,调度模式是基于pad是主动积极地推送(产生)数据还是从其他的pad拉数据。


推模式(PUSH)

-------------------------

    一个Pad能够产生数据,并且推送给下一个Pad,按这种模式工作的Pad有一个loop函数,loop函数被重复调用直到返回false。Loop函数无论什么时候需要数据时,可以阻塞。当Pad被取消激活时,loop函数应该取消阻塞。 

    按Push模式工作的Pad仅仅能够对有chain函数的Pad推送数据,Chain函数被Push pad调用,参数是Push pad产生的buffer。

    Push模式产生数据的方式也被称为流模式,因为数据生产者产生一个稳定的,基本上是恒定速率流数据。


拉模式(PULL)

---------------------------

    按Pull模式工作的Pad仅仅能够从实现了pull_range的pad拉取数据。当从对等Pad拉取了数据后,loop函数将调用push将数据推送给对等pad。


决定调度模式

---------------------------

    当Pad被激活时, _activate() 函数被调用。Pad根据上游Pad的能力选择用push还是pull模式激活自己。Gstreamer默认用push模式激活pad,如果没有激活函数。


Chain函数

---------------------------

    当上游元素调用 _push()函数,下游Pad的Chain函数被调用,上游的元素可能是chain中一个节点或者是一个Push源。


getrange函数

---------------------------

    .......待续


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值