本文主要是介绍omx组件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
1,系统组件
下图 描述了OPENMAX 各种可用的通信连接,每个组件可以为数据通信有个专用的端口号。如果一个组件只有一个单一的输出端口,被认为是数据源组件,同理如果只有一个输入端口,被认为是Sink Components ,如果组件完全的运行在主机的processor被认为是host components ,如果一个一个组件部分运行在加速器上面,被认为是加速组件。
三种通信类型:
Non-tunneled communication:It defines a mechanism/途径 for exchanging交换 data buffers between the IL client and a component.
tunneled communication:It defines a standard mechanism for components to exchange data buffers directly with each other in a standard way.
Proprietary communication:It describes a proprietary mechanism for direct data communications between two components and may be used as an alternative when a tunneling request is made, provided both components are capable of doing so.
值得注意的是,component可以同时与IL client和tunneling component进行通信,即tunneled case和non-tunneled case可同时存在于一个component上。
如图5所示,每个组件都会经历不同的状态。每个组件一开始都被认为是unloaded state,需要向core发出一个请求使其进入到loaded state。当遇到无效数据时,component 将会进入invalid state。退出invalid state的唯一途径就是unload and reload the component。
一般来说,组件在idle state时应该要拥有所需的所有的操作资源。若某一状态要求分配所有的静态资源时,那过渡到idle state将可能失败。
The IDLE state indicates that the component has all of its needed static resources but is not processing data. 指示这个组件已经有它需要的所有静态数据,但是不处理数据。
The EXECUTING state indicates that the component is pending reception of buffers to process data and will make required callbacks. 指示组件马上接受BUFFERS去处理数据并将会调用回调函数
The PAUSED state maintains a context of buffer execution with the component without processing data or exchanging buffers. 维护组件的一个缓冲区的context执行,不处理数据或者交换buffers
Transitioning from PAUSED to EXECUTING enables buffer processing to resume where the component left off. Transitioning from EXECUTING or PAUSED to IDLE will cause the context in which buffers were processed to be lost, which requires the start of a stream to be reintroduced. Transitioning from IDLE to LOADED will cause operational resources such as communication buffers to be lost.
这篇关于omx组件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!