OpenMAX大意 一 应用线程基本流程

一、应用线程基本流程

1. OMX_Init()
2. 获取句柄,组件转到Loaded状态
   OMX_GetHandle(out handle, in componentName, in appData, in callbacks); 
   其中callbacks结构包括三个回调函数指针(作用后文介绍):
   1) EventHandler
   2) EmptyBufferDone
   3) FillBufferDone
3. 参数交互
   如:
   OMX_GetParameter(in handle, in type, out param);
   OMX_SetParameter(in handle, in type, in param);
   其中关键需要设置每个端口上的Buffer数量,一般采用2个Buffer,如下对端口参数进行设置:
   paramPort.nBufferCountActual = 2;
   具体参数详见后文介绍
4. 命令组件转到Idle状态
   OMX_SendCommand(in handle, in cmd = OMX_CommandStateSet, in nParam = OMX_StateIdle, in pCmdData = 0); 
5. Idle期准备
   包括:
   1) Buffer分配
   2) 等待组件正式转到Idle状态,这个由信号量控制。这个信号量在上述EventHandler回调函数中put,而这个回调函数在状态转换完毕以后作为OMX_EventCmdComplete事件的响应被调用。
6. 组件转到Executing状态
   OMX_SendCommand(in handle, in cmd = OMX_CommandStateSet, in nParam = OMX_StateExecuting, in pCmdData = 0);
   命令组件转到Executing状态
   等待转换完成,同样用信号量控制。
7. 初始化端口Buffer并绑定
   通过调用OMX_FillThisBuffer设置组件的输出Buffer
   通过调用OMX_EmptyThisBuffer设置组件的输入Buffer,此处可为输入Buffer加载初始数据流。
8. 主线程消息循环
   在这里等待应用信号量,其中包括组件完毕的消息,用以退出循环。
9. 收尾工作1:命令并等待组件进入Idle状态
10. 收尾工作2:命令并等待组件进入Loaded状态,并销毁Buffer
11. 释放组件句柄

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值