Android Multimedia框架总结(十二)CodeC部分之OMXCodec与OMX事件回调流程

本文深入探讨了OMXCodec中事件处理的机制,包括OMXcallback事件的时序图,事件从OMX到OMXCodec的分发过程,缓冲区更新流程及onMessage回调的细节。

前言:上篇文中分析到AwesomePlayer到OMX服务,
曾介绍到,OMX服务主要完成三个任务: NodeInstance列表的管理,NodeInstance的操作, 事件的处理。

最后这个事件处理就是今天放大看的内容。要一步一步一Codec,事件传递必不可少,

看下今天的Agenda:

(1)OMXCodec与OMX callback事件的处理时序图
(2)如何从OMX中dispatch到OMXCodec(附时序图)
(3)缓冲区更新过程
(4)onMessage回调

OMXCodec与OMX callback事件的处理时序图OMXCodec与OMX callback事件的处理时序图:

在这里插入图片描述从时序图看,
首先我们要建立个OMXCodecObserver,该类是OMXCodec的内部类,在create函数中被创建,并把对应的OMXCodec加入都自己的观察范围内,

具体代码如下:
framework/base/media/libstagefright/OMXCodec.cpp
在这里插入图片描述其次初始化它的callback事件和事件的派发处理函数
OMX主要的callback事件有哪些呢?
在framework/base/media/libstagefright/omx/OMXNodeInstance.cpp中的kCallbacks函数有如下定义:
在这里插入图片描述
callback在哪定义呢?
看framework/base/media/libstagefright/omx/OMX.cpp中的
在这里插入图片描述即每个component对应一组callback事件。
这些callback由哪些函数返回呢?具体的定义在framework/base/media/libstagefright/openmax/OMX_Core.h
在这里插入图片描述有了callback事件,如何dispatch呢?其实我们在allocateNote函数已经定义好了我们的dispatch函数
mDispatchers.add(*node, new CallbackDispatcher(instance));

待更新。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值