此文档说明D1-H 平台,如何使用TPlayer 的接口来开发播放器应用程序,方便播放器开发人员快速正确地进行开发,以及播放器测试人员如何根据该文档对tplayer 播放器进行验证测试。
1.2 适用范围
本文档目前只适用于D1-H 平台。
1.3 相关人员
D1-H 平台,tplayer 播放器开发和测试人员。
2 软件环境配置
2.1 内核配置
在tina 的根目录执行make
kernel_menuconfig。
2.1.1 选中ve 模块
- <p>Device Drivers</p><p>-->Multimedia support</p><p>-->sunxi video encoder and decoder support</p>
复制代码
如下图所示:
图2-1: veConfig
图2-1: veConfig
2.1.2 选中ion 模块
linux5.4 内核:
- Device Drivers-->Staging drivers-->Android-->Ion Memory Manager-->Ion system heap
- -->Ion CMA heap support
复制代码如下图所示:
图2-2: ion54Config
图2-2: ion54Config
2.2 tina 配置
在tina 的根目录执行make menuconfig 命令。
2.2.1 选中tplayer 播放中间件
libcedarx:
- Allwinner-->libcedarx-->Select cedarx configuration options-->Select tplayer middleware
复制代码如下图所示:
图2-3: tplayerConfig
图2-3: tplayerConfig
2.2.2 选中tplayerdemo
- Allwinner-->tina_multimedia_demo-->tplayerdemo
复制代码
图2-4: tplayerdemoConfig
图2-4: tplayerdemoConfig
3 TPlayer 状态图及状态说明
3.1 TPlayer 状态图
图3-1: tplayerStatus
图3-1: tplayerStatus
这张状态转换图清晰地描述了TPlayer 的各个状态,也列举了主要的方法的调用时序,每种方法只能在一些特定的状态下使用,否则会出错。另外,只有在Prepared、Started、Paused、PlaybackCompleted 这四种状态下可以进行TPlayerSeekTo() 操作,并且TPlayerSeekTo()之后,状态不变。
3.2 TPlayer 每个状态简要说明
3.2.1 Idle 状态
Idle 状态:当调用TPlayerCreate() 创建一个TPlayer 或者调用了其TPlayerReset() 方法时,TPlayer 处于idle 状态。
3.2.2 Initialized 状态
这个状态比较简单,调用TPlayerSetDataSource() 方法就进入Initialized 状态,表示此时要播放的文件已经设置好了。
3.2.3 Preparing 状态
调用TPlayerPrepare() 函数还没返回或者是调用TPlayerPrepareAsync() 并且还没收到TPLAYER_NOTIFY_PREPARED 这个回调消息的时候就处于Preparing 状态。
3.2.4 Prepared 状态
调用TPlayerPrepare() 函数已经返回或者是调用TPlayerPrepareAsync() 并且已经收到TPLAYER_NOTIFY_PREPARED 这个回调消息之后的状态就处于Prepared 状态。在这个状态下说明所有的资源都已经就绪了,调用TPlayerStart() 函数就可以播放了。
3.2.5 Started 状态
TPlayer 一旦prepare 完成,就可以调用TPlayerStart() 方法,这样TPlayer 就处于Started状态,这表明TPlayer 正在播放文件过程中。可以使用TPlayerIsPlaying() 测试TPlayer 是否处于了Started 状态。如果播放完毕,而又设置了循环播放,则TPlayer 仍然会处于Started状态。