pv omx线程模型

OMX_EmptyThisBuffer
--------------
#define OMX_EmptyThisBuffer(                                \
        hComponent,                                         \
        pBuffer)                                            \
    ((OMX_COMPONENTTYPE*)hComponent)->EmptyThisBuffer(      \
        hComponent,                                         \
        pBuffer)
-------------       
hComponent->EmptyThisBuffer这个函数指针在component中赋值
如omx_mpeg4_component.cpp
    iOmxComponent.EmptyThisBuffer = OpenmaxMpeg4AO::BaseComponentProxyEmptyThisBuffer;

OmxComponentBase::BaseComponentProxyEmptyThisBuffer调用
(pOpenmaxAOType->ipComponentProxy))->ProxyEmptyThisBuffer
也就是ProxyApplication_OMX的ProxyEmptyThisBuffer,
ProxyEmptyThisBuffer中ipProxy->SendCommand(iProxyId, EMPTY_BUF, (OsclAny*) Msg)
 case EMPTY_BUF:ComponentEmptyThisBuffer是函数指针在component中赋值
((ProxyApplication_OMX*)ipComponentProxy)->ComponentEmptyThisBuffer = BaseComponentEmptyThisBuffer;

也就是说BaseComponentEmptyThisBuffer在Proxy的线程中执行


ProxyApplication_OMX 是应用与CPVInterfaceProxy_OMX之间的proxy

CPVInterfaceProxy_OMX是ProxyApplication_OMX与component之间的proxy

CPVInterfaceProxy_OMX实现了一个线程,SendCommand,SendNotification是两个重要的接口,
其内部有两个handler也是两个AO,CPVInterfaceProxyHandler_OMX,CPVInterfaceProxyNotifier_OMX
CPVInterfaceProxy_OMX::SendCommand将命令传给CPVInterfaceProxyHandler_OMX,CPVInterfaceProxyHandler_OMX调用PVProxiedInterfaceServer_OMX,这个VProxiedInterfaceServer_OMX也就是ProxyApplication_OMX,其中的HanleCommand会执行。
SendNotification过程与此相似,目前好像没有使用。
component的回调是直接调用client的函数
回调函数:ipCallbacks->EventHandler,ipCallbacks->EmptyBufferDone,ipCallbacks->FillBufferDone

在component的线程中执行

component没有单独创建线程其是个AO,也在上面创建的线程中运行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值