android 2.2 多媒体库OpenCore之PVPlayer构造过程

         PVPlayer(即Packet Video Player)是OpenCore经过android包装后,提供给android多媒体播放的类。PVPlayer类文实现在OpenCore目录下的android/playerdriver.cpp文件中。在PVPlayer构造函数中实例化一个PlayerDriver类,生成一个播放器主线程,线程入口是PlayerDriver::startPlayerThread()函数,该函数通过调用PlayerDriver::playerThread()进入主循环。playerThread()主要代码如下:

         ...

   ...

         InitializeForThread();   初始化Oscl,代码在android/thread_init.cpp。
         ...
   ...
   OMX_MasterInit();        初始化OMX,代码在codecs_v2/omx/omx_mastercore/src/pv_omxmastercore.cpp。
         OsclScheduler::Init("AndroidPVWrapper");
         mPlayer = PVPlayerFactory::CreatePlayer(this, this, this);
         AddToScheduler();       将任务放入Oscl任务调试器
         PendForExec();
         OsclExecScheduler *sched = OsclExecScheduler::Current();
         sched->StartScheduler(mSyncSem)   进入任务主循环,直到任务结束。


         在每个任务循环中,调用PlayerDriver::Run()函数,异步执行命令队列中的命令。自此,播放服务就已经建立起来,之后有什么操作,只需调用相关函数将操作命令放入队列中,命令执行完毕后(成功或失败),会通过监听接口通知监听者命令执行情况。PlayerDriver通过继承PVCommandStatusObserver,PVInformationalEventObserver和 PVErrorEventObserver接口类实现了三个监听接口,分别为CommandCompleted(),HandleInformationalEvent()和HandleErrorEvent()。这些监听接口的具体任务可参考相关代码。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值