mediaplayer android?provideoplayer win版?第二章:第三节:PVPlayerEngi(2)

电脑杂谈  发布时间:2016-09-26 23:00:24  来源:网络整理

这里插一句,PVPlayerEngine的很多调用都是通过发送一个命令给他的一个成员类实例,然后这个成员类实例再调用PVPlayerEngine对应的Observer接口来完成操作,因为这些所有的操作都在一个线程里面实现,所有的调度都通过Scheduler实现,而它本身的所有的成员,也都由这个Schedule来进行调度,整个运行只有一个线程,所以不会出现同步的问题,因此我们也见到,在PVPlayerEngine实现里,没见到任何的mutex锁,佩服packervideo 公司的的程序设计设计人员的精巧框架。在pvplayerEngine里面,很多形如:Doxxxxxx, Handlexxxxxx的函数,一般可以配对来看。这样就不至于被各种类,接口给绕进去。

2,pvplayerEngine::Init

这个函数干的事情很简单,就是去调用SourceNode的Init函数。然后这个函数成功了以后调用HandleSourceNodeInit,然后调用DoSourceNodeGetDurationValue,然后就是HandleSourceNodeGetDurationValue。如果这一切没问题,OK,Engine已经是PVP_ENGINE_STATE_INITIALIZED了。

3,pvplayerEngine::AddDataSink

这也是个相对简单的函数,没啥好说的。

4,pvplayerEngine::DoPrepare

这个函数比较复杂,它要完成的事情很多,这个函数的注释指明:它有4个小步骤分别完成以下事情(这是原函数中的注释的内容,具体的实现得仔细去看):

a,When Engine is in PVP_ENGINE_STATE_INITIALIZED state, here engine will start the Track Selection, whichwill start with Sink Nodes。

b,After Init completes on Sink nodes Engine will be in PVP_ENGINE_STATE_TRACK_SELECTION_1_DONE and Engine willstart creating Dec nodes and call Init on dec nodes, if needed。

这个步骤有必要说明一下,它会首先尝试看sink node能不能支持source node的多媒体流,如果能播放,则不必要进行到dec node的选择,如果不能播放,则必须要查询,看有没有合适的dec node,它的输入和source node匹配,输出和sink node匹配。

c,Init completion on Dec nodes will take Engine to PVP_ENGINE_STATE_TRACK_SELECTION_2_DONE and Engine willstart populating the Playable List after verifying parameters of different tracks. Engine after selectingtracks will call Reset on Sink and Dec nodes。

d,Once Reset completes on Sink and Dec nodes, Engine will be in PVP_ENGINE_STATE_TRACK_SELECTION_3_DONE and thenEngine will delete all the unused dec nodes.

上述的这些操作,很多都是异步方式执行的,也就是,等上述步骤执行完成以后,相应的命令才能执行完成。

5,pvplayerEngine::DoStart

启动iPlaybackClock,开始播放。

6,pvplayerEngine::DoPause

7,pvplayerEngine::DoResume

暂停和继续。

至于剩下的操作,就是按照相反的操作进行,要相对简单的多,不用去完成如此多的检测和状态的转换。

以上就是关于pvplayer的全部内容,相信你一定会非常满意。


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/ruanjian/article-17490-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...