所属类别:技术博客
文章作者:segments
特别推荐:免费发布信息 承包关键词~~抢爆了!HOT!
Gstreamer调度模式的分析 Gstreamer的调度模式是gstreamer 内核中比较重要,但是又较为复杂的部分(呵呵,好象是废话,但是又不得不说的)。简单地说,Gstreamer的调度模式就是:一种确定一个element何时被调用为它的同伴element处理和准备数据的方法。是不是觉得上面的话太简单又太复杂了啊?继续看。一.Gstreamer的三种调度模式[1] Push/Push mode数据由上游的element 推过来,由当前的element接收处理后,再推给下游的element。我们可以看出,这种模式中,当前的element必须等待上游的element把数据推过来,才可以做下一步的操作。因此,当前的element不是数据调度的发起者,它对数据的处理,仅仅能够影响下游的element。并且在这个模式中,当前的element不能控制上游的element的任何行为(当然,你可以从当前的element发event给上游的element,如果上游的element有相应的处理操作的话,会激发一个动作发生)。
[2] Pull/Push mode如下图:数据由当前element从上游的element处拉过来,加工处理后,推给下游的element。在这个模式中,当前的element是调用的发起者,而它的上游的element处于被动调用的位置。同时有一点可想到的是:上游的element必须提供相应的接口函数给当前的element调用。所以,如果使用这个模式,当前的element拥有调用发起的主动权。 [3] Pull/Pull mode如下图:数据由当前的element从上游的element处拉过来,加工处理后,被下游的element拉走。在这个模式里面,当前的element也必须提供相应的接口函数给下游的element调用;当前的element不是调用的发起者,它只是调用的一个传递者;当然,当前的element可以调用上游的element提供的相应接口。note:二.调度模式的API实现调度模式实现的接口API序号Sink padSrc padSink padSrc pad1pushpush_chain()2Pullpush_loop()3PullBe pulled_loop()_get_range()参考: [1]http://gstreamer.freedesktop.org/data/doc/gstreamer/head/pwg/html/chapter-scheduling.html[2]http://gstreamer.freedesktop.org/data/doc/gstreamer/head/pwg/html/chapter-building-chainfn.html[3]http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#gst-pad-activate-pull[4]http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gstreamer/html/GstPad.html#desc发表于 @ 2006年09月22日 13:05:00评论(loading...AddFeedbackCountStack("1265828"))编辑
相关信息· 质量保证基础知识
· 浅谈PHP语法(6)
· 在Web报表中实现动态添加字段、 动态绑定查询或其它数据集
· 清除电脑中的“卧底”软件
98692
47002
