Android音视频——AwesomePlayer到OMX服务过程
2023-06-13 09:13:30 时间
接着上一篇Android音视频——OMX 中 Nodeinstance 列表的管理与节点的操作
最后,来对前面的内容进行一下总结
- 在 AwesomePlayer 初始化过程中,通过 initVideoDecoder/initAudioDecoder 函数来创建音视频解码器 mVideoSource/mAudioSource。
- 在mVideoSource中通过mVideoTrack来解复用媒体文件,从中获取文件编码格式,继 而得到需要的解码器类型,通过类型调用omx・>allocateNodc创建0MX node实例,打 编码格式对应。以后都是通过Node实例来操作实际的硬件解码器的。
- 初始化MediaPlayerService对象的时候会创建OMX对象,OMX对象的构造函数会创建mMaster, mMaster负责获得与管理硬件平台的硬件解码器组件库。
- 在 omx->allocateNode 中通过 mMaster->makeComponentInstance 来创建真正对应的解码 器组件。这个解码器组件将完成之后实质的解码工作。
- 在创建mMaster->makeComponentInstance的过程中,通过上面mVideoTrack传递过来的解码器类型名,找到相对应的解码器的库,然后实例化。
- 解码Component通过输入Port和输出Port进彳亍交互,通过和OMXCodec共享Buffer进 行编解码。
- AwesomePlayer包含了 mVideoSource,当初始化时指向OMXCodec的实际对象。 OMXCodec使用了 Binder机制,实现了对OMX服务的远程调用,其中IOMX作为接 口类定义了 OMX的大部分接口函数。
- 当具体实现OMX时,OMXMaster类用于管理OMX的插件,OMXNodelnstance类代 表OMX的具体实例,完成和Component的调用和交互。
- CallbackDispatcher用于调度处理回调函数传回的消息。OMXNodelnstance和 CallbackDispatcher 对应,协同工作,完成不同实例的消息处理。
- OMXNodelnstance是OMX端的概念,是服务器端的概念。其服务器端与OMX在一个 进程空间中。
- OMXObserver是0MXCodec端的概念,是客户端的概念。其客户端与0MXCodec在一个进程空间中。其Bn、Bp方向和OMX、OMXNodelnstance相反,主要用于反向通知 onMessage 消息 。
到此,就介绍完AwesomePlayer是如何对OMX进行初始化的,以及如何关联到对应硬件 平台上的Hardware解码器的回调流程。
相关文章
- android签名命令行,Android系统签名位置及命令
- android中适配器的作用,适配器模式 在Android中的简单理解「建议收藏」
- android退出app代码,Android应用退出代码各种方式
- android sdk安装过程,图文详解Android 3.0 SDK安装教程
- android 定时器实例,Android定时器和Handler用法实例分析
- Android 自定义 ViewPager 打造千变万化的图片切换效果
- android短信验证码代码,Android短信验证码自动填写实现代码
- 【踩坑】Android 编译线程爆了, gradle 内存 OOM 解决之路
- Android 产生ANR后的Trace文件的解析
- android 锁屏壁纸时钟,桌面锁屏时钟下载-桌面锁屏时钟app安卓版v2.8.0-七度网「建议收藏」
- Android 数据库加密 android-database-sqlcipher 开源版本编译过程
- Android studio更新后出现警告:Warning:The `android.dexOptions.incremental` property is deprecated and it has
- 【Android 电量优化】电量优化 ( 唤醒锁定 | 使用 WeakLock 保持服务唤醒 | 屏幕唤醒 )
- 【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( 修改 7zr 交叉编译脚本 Android.mk | 交叉编译 lib7zr.so 动态库 )
- 【IOC 控制反转】Android 视图依赖注入 ( 视图依赖注入步骤 | 视图依赖注入代码示例 )
- 【Android 插件化】VAHunt 检测插件化引擎的具体细节
- 【ijkplayer】编译 Android 版本的 ijkplayer ④ ( 安装 make yasm 软件 | 执行 compile-ffmpeg.sh all 命令编译 ffmpeg )
- 【Android NDK 开发】CMake 中查找链接 Android 自带动态库位置说明 ( ndk-bundleplatformsandroid-29arch-armusrlib )
- Android控制文字水平间距android:letterSpacing详解手机开发
- android涂鸦实现详解手机开发
- Android下获取SD卡的状态并写入文件到SD卡详解编程语言
- android判断服务是否是运行状态详解编程语言
- 我查查下载 我查查 8.5.1 Android 去广告版下载
- [图]Android 12 Beta 4拨号应用开始从“Bubble”过渡到“Chip”
- Android在OnCreate中获取控件的宽度和高度的实现代码
- 解析Android游戏中获取电话状态进行游戏暂停或继续的解决方法
- android操作XML的几种方法总结
- Android中实现开机自动启动服务(service)实例
- 安卓(Android)中如何实现滑动导航