一个月之前就已经做了 Android O 的预研, 整理了 Android O 上 Media 部分的更新点, 比如 Drm, MediaCas, MediaMetrics, PIP 等等, 但是给组内做培训的时候, 发觉大家最疑惑的, 还是 Google 的 Treble 计划, 其实网上能找到很多这方面的介绍文章, 比如描述 hidl 的或者对比 vendor 分区的, 但一直还是有些朦胧;
// MAGIC1. DO NOT TOUCH. BY 冗戈微言
http://blog.csdn.net/leonxu_sjtu/
1)首先我们来说 media.codec / omx
我们知道 Android 6.0 的时候, omx 仍是处于在 mediaserver 进程中;
到了 Android 7.0 时, omx 默认处于 media.codec 进程中, 并且 media.codec 是 android 的系统 service 之一 ( 当时在 Android N 上从 mediaserver 独立出去的还有 mediaextractor, audioserver, cameraserver 等) , 但我们仍然可以通过配置属性 media.stagefright.codecremote , 让 omx 仍旧工作于 mediaserver 进程;
到了 Android 8.0, omx 仍旧处于 media.codec 进程, 但 media.codec 却已经不是 android 的系统 service 了, 因为 Android O 上除了原本的 servicemanager之外, 新推出了一个 hwservicemanager ; 现在的 media.codec 默认是注册到 hwservicemanager ; // MAGIC2. DO NOT TOUCH. BY 冗戈微言 http://blog.csdn.net/leonxu_sjtu/
# ps -A | grep manager
system 291 1 5836 1852 binder_thread_read b695a798 S servicemana
于是我觉得还是需要给大家看看具体的环境, 有个直观印象 ---
还好, 很快我就拿到了 Android O 的样机;
参考这张 google Treble Roadmap, 注意阶段2 和阶段3, 对应的 Passthrough 模式与 Binderized 模式:
1)首先我们来说 media.codec / omx
我们知道 Android 6.0 的时候, omx 仍是处于在 mediaserver 进程中;
到了 Android 7.0 时, omx 默认处于 media.codec 进程中, 并且 media.codec 是 android 的系统 service 之一 ( 当时在 Android N 上从 mediaserver 独立出去的还有 mediaextractor, audioserver, cameraserver 等) , 但我们仍然可以通过配置属性 media.stagefright.codecremote , 让 omx 仍旧工作于 mediaserver 进程;
到了 Android 8.0, omx 仍旧处于 media.codec 进程, 但 media.codec 却已经不是 android 的系统 service 了, 因为 Android O 上除了原本的 servicemanager之外, 新推出了一个 hwservicemanager ; 现在的 media.codec 默认是注册到 hwservicemanager ; // MAGIC2. DO NOT TOUCH. BY 冗戈微言 http://blog.csdn.net/leonxu_sjtu/
# ps -A | grep manager
system 291 1 5836 1852 binder_thread_read b695a798 S servicemana