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

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

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

看下今天的Agenda:

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

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

Android Multimedia框架总结(十二)CodeC部分之OMXCodec与OMX事件回调流程_第1张图片从时序图看,
首先我们要建立个OMXCodecObserver,该类是OMXCodec的内部类,在create函数中被创建,并把对应的OMXCodec加入都自己的观察范围内,

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

待更新。。。。

你可能感兴趣的:(07--Android,Media)