随笔分类 - android乱七八糟
摘要:整个AOSP代码,包天包地,从kernel,libc,gui,net……简直包括了绝大多普通程序员职业生涯涉及的整个领域。其实,开源界早已经遇到并且解决了Android的很多问题,不过google讨厌GPL说起,或者说,google为了照顾更多的商业公司,以一已之力,重造了很多轮子。下面缩缩。gli...
阅读全文
摘要:在讨论stagefright如何调用硬件解码之前,我们要先清楚几个问题。我不展开这几个结论是如何得来的,因为这部分属于进程间通信binder的理解,和多媒体本身无关。一.问题空间这个有点像方法学上的东西了,呵呵。其实我们讨论一个问题,首先要观注的就是,什么是我们应该关心的,什么是我们在这个问题空间里不用解决的。上次我们说到,awesomeplayer所有codec,包括软解与硬解的,都是由omx封装的。我的第一个结论就是:OMX是一个server,等同于surfaceflinger,audioflinger的server。既然是server,那么,肯定存在客户端与服务器两个方面,另外,serv
阅读全文
摘要:把这个搞明白,算是顿悟的一个真实例子。怎么也搞不懂的架构,突然就想明白了。不过这其实是一个思维的过程。当然如果你想明白这些东西,至少要非常清楚一个概念:接口。我只是一个半路出家的开发者,我真正明白什么接口时,我已经写了一年多代码了。书面的解释实在拗口,我记不住。我的理解就是:接口,在C语言里面,就是函数接口,在C++里面就是纯虚函数,在java里面就是interface。用接口,而不是实现来编程一个最大的好处就是:隔离变化。其实这些东西,都是我在李先静老师《系统程序员成长计划》里面领悟到的。好吧说完了接口的体会,少说废话,步入正题。我们要思考一个问题,对于一个播放器,解决的主要问题有哪些?当然
阅读全文
摘要:又挖一个坑,好久没写了,看得代码多而繁乱,又没有专精一块,到头来还是困惑丛生,不管了,做个笔记,写写自己对android hal层的一点理解。涉及的代码来自android-4.0版本。1.概念和原因android hal的概念和存在的原因,不必多说,其实就两点。1.隔离具体驱动接口的变化,2.保护硬件厂商的关键信息。通过这一层的封装1.各类硬件(fb,gps,sensor)只需要实现规定的接口即可,驱动接口的不兼容(比如各种硬件设备的ioctl,很可能是厂商自己规定的命令),可以隔离变化。2.硬件厂商在封装的接口,只需提供一个so即可,使用时,用dlopen hook到相关的接口,不用开放源代
阅读全文