- 博客(26)
- 收藏
- 关注
原创 Android Audio Framework 之AudioPolicyService
AudioPolicyService 是audio framework 的一大service, 另外一个是AudioFlinger。一直觉得通过代码来分析的话写起来很费劲, 最近去看了下UML, 通过同UML 去分析感觉比较清晰,而我自己看回来的话也很容易就知道框架是怎样。先看下AudioPolicyService 的各个主要类的关系。这个看起来简单清晰多了。然后再以getOu
2016-02-27 18:25:59 3172 1
原创 libstagefright 框架设计分析(2): omx 相关
OMX 框架是android 音视频codec 的入口吧。 说到入口, 首先omx 就是在ACodec 被使用, 而且是以一个client 来使用, 所以omx 会有个service。这个分析就从这里开始好了。bool ACodec::UninitializedState::onAllocateComponent(const sp &msg) { ALOGV("onAllocate
2016-01-17 18:15:54 2075
原创 libstagefright 框架设计分析 (1): ALooper, AHandler
看到哪里, 写到哪里, 也有可能烂尾,写这个主要是自己的总结,如果有人看不懂我想也是正常的。android 5.0 之后player 主要就是Nuplayer, 所以awesome player 所使用的OMXCodec就不在使用了, 主要就是使用ACodec了。 所以libstagefright的decode过程大概就是MediaCodec.cpp -> ACodec.cpp->OMX.
2016-01-03 17:36:01 4474
原创 android 怎么选择audio hal
最近遇到一个问题, 就是不知道audioFlinger 在选择hal 的时候是怎么选择的, 为什么选择的是vendor 的audio hal 而不是default 的?本文急于5.1 的代码。audioflinger 什么时候会去打开audio hal 的so, 5.1版本的不是初始化audioflinger 时就去选择。会在openoutput 时找hw 时去选择,如果已有就不需要找,第
2015-09-04 17:59:44 2533
原创 android 音频数据在AudioFlinger中的处理(出入口)
AudioFlinger 是android 多媒体模块Audio模块的两大服务之一。音频相关的数据必须通过它来传递到底层,所以它就会有一个音频数据的处理过程。这里主要就是分析音频数据从编码器出来之后,怎么流向驱动的。从audoFlinger的代码中很容易发现,数据写到驱动的处理是在函数AudioFlinger::PlaybackThread::threadLoop_write()中。这个t
2014-10-14 17:01:12 6024 4
原创 编译android vbox_x86-eng 报错
Running: mkuserimg.sh out/target/product/vbox_x86/system out/target/product/vbox_x86/obj/PACKAGING/systemimage_intermediates/system.img ext4 system 268435456 out/target/product/vbox_x86/root/file_con
2014-09-28 21:47:41 1709
原创 sql 常用书法命令收集总计
删除所有数据。delete from tablename --写入日志Truncate Table tablename --不写入日志
2013-07-05 12:17:38 728
转载 mysql 用户登录密码忘记处理
如果不是root密码:连root的密码也忘记了吗?没有的话,用root进去,修改mysql数据库user表咯。如果是root密码:方法一:MySQL提供跳过访问控制的命令行参数,通过在命令行以此命令启动MySQL服务器: safe_mysqld --skip-grant-tables& 即可跳过MySQL的访问控制,任何人都可以在控制台以管理员的身份进入MySQL数据库。 需要
2013-05-27 15:16:42 887
原创 windows下的脚本文件(*.sh)转到linux下编码格式问题
rt经常会出现^M 在后面,比较简单的解决方法就是 用vi或者vim打开文件,然后用命令 :set fileformat=unix,保存退出就可以了。
2013-05-27 10:23:42 4125
原创 面试又被自己打击倒了~
今天去面试,题目还是简单,面试时提的问题也简单,可我tm的就是脑子不灵光,就是想不起来答案。题目不分先后。命名管道跟一般管道的区别。。如何判断机器的大小端 还有一个是想问我recv buf不去处理会导致什么后果,我没说出会满掉,发送端的缓冲也会满掉,不过我认为这个是他提的问题提得不好。。。没有直接说不处理好简单的题目啊~~唉,我无语了,还有c++的几个强制转换。。。
2013-04-26 21:52:59 1638 8
原创 写在libevent 分析前
虽然这个libevent 很多人有分享过分析,解析,我还是打算自己去分析一把,一方面熟悉一下这个架构,一方面可以增加一些设计和架构上面的知识。最近比较烦躁,去面试了几个,结果都没有面试,一个是面试技巧不好,一个是自己技术不到家,很多以前做过的东西都忘记了,又没有时间去整理。分析这个也算是培养一下知识整理的习惯吧。
2013-04-18 16:57:18 680
原创 无题
暂时就无题吧,悲催上次去面试,被问了什么叫僵尸进程,我竟然将守护进程说出来了,唉,伤不起,差不多三年的经验啊,一直将僵尸进程搞错了。。。什么是僵尸进程In UNIX System terminology, a process that has terminated,but whose parent has not yet waited for it, is called a zom
2013-03-21 15:05:14 651
原创 往android的内核添加驱动(其实就是添加linux内核驱动)
向android的内核添加驱动,其实就是向linux内核添加驱动。主要在两个文件里添加点信息,一个是Kconfig文件,一个是Makefile文件。比如你添加的驱动你代码放到drivers目录下面的XXX目录,那么修在该目录下的Kconfig文件和Makefile文件。具体的修改方法:比如我现在修改drivers/staging/android/下的Kconfig文件。config ANDROID_LOGGER tristate"Android log driver" d
2011-06-01 15:27:00 5469 6
原创 搭建调试内核环境
<br />这类教程网上很多了,我当时搭建的时候也花了很大功夫,到处谷歌百度的。。。我现在我自己总结一下。<br />1,首先在vbox下安装一个linux,版本自己定义。然后再将这个linux克隆一个。这样就有了两台linux的虚拟机,当然如果是主机本来就是linux的话就不用克隆,我这里是xp,所以我搞了两个。vbox的克隆系统跟vmware不一样。不能直接复制。具体方法如下:<br /> <br />有两种方法:<br />一、在CMD窗口中进入VirtualBox 安装目录,然后用VBox自带的克隆
2011-03-11 18:31:00 792
原创 用vbox+kgdb进行内核调试的环境搭建
这类教程网上很多了,我当时搭建的时候也花了很大功夫,到处谷歌百度的。。。我现在我自己总结一下。先写个开头,老大要我去干活~
2010-10-28 08:51:00 1597
原创 几个最简单的排序代码
#include #include "public.h"using namespace std;template void bubble(T *data,int n)//冒泡{ int i,j; T temp; for(i=0;i<n;i++) { for(j=n-1;j>i;j--) if(data[i]<data[j]) Swap(d
2009-11-04 13:11:00 816
原创 阻塞模式与非阻塞模式
这两天在看一个FTP客户端的代码,里面用到了socket的非阻塞模式。之前没有接触个这方面。看了下APUE,里面只是简单说了下,这个是文件状态标志。。在linux下什么都是以文件形式存在的,设备也是。访问设备可以通过文件描述符来访问。刚开始我还以为,一个文件设置个非阻塞模式或是阻塞模式干什么用,难道阻塞模式就打开文件,什么都不干,干等着阿。。于是我谷歌。发现只有在设备和网络使用阻塞和非阻塞模式。正
2009-10-08 15:18:00 4050 2
转载 用加减法和移位实现乘法(要求注意效率).
代码实现 根据CSDN的汇编板的汇编程序改写++++++++++++++++++++++++++++++++++++++++int Function(int x,int y){ int Op1=x; int Op2=y; // X*Y int cfresult=0;
2009-09-27 11:21:00 4259
转载 pureftpd 安装配置
CentOS5环境下安装PureFTPd 作者:张微波前几天为了让公司内的FTP,决定在centos5下装支持虚拟用户带磁盘限额的FTP软件。在安装PureFTPd以前,要做好以下准备工作:二、 安装PureFTPd1.下面我们开始安装PureFTPd,同样以FreeBSD的Ports方式安装。#tar zxfv pure-ftpd-1.0.
2009-09-14 12:51:00 1694
转载 修改MySQL默认密码的具体步骤(转)
access denied for user root@localhost (using password: YES);今天用mysql的时候,登录的时候出现了这句,不知道是什么意思,因为我的mysql是装centos的时候一起装的,密码我就输入我的帐户密码,结果出现了上面那句;百度了一下,还真不少人出现了这个问题。。最后我找到了方法;[root@localhost hom
2009-09-13 16:44:00 1223 1
转载 百度实习生网上笔试题之一
题目描述: 设有n个正整数,将它们联接成一排,组成一个最小的多位整数。 程序输入:n个数 程序输出:联接成的多位数 例如: n=2时,2个整数32,321连接成的最小整数为:32132, n=4时,4个整数55,31,312, 33 联接成的最小整数为:312313355 [题目要求] 1. 给出伪代码即可,请给出对应的文字说
2009-07-09 13:00:00 1539
转载 霍纳法则
霍纳法则2008-01-16 13:20#include using namespace std;/*霍纳法则比如:p(x)=3*x*x*x*x+2*x*x*x+6*x*x+7*x+9 =x*(3*x*x*x+2*x*x+6*x+7)+9 =x*(x*(3*x*x+2*x+6)+7)+9 =x*(x*(x*(3*x+2)+6)+7)+9所以,可以
2009-06-09 16:33:00 1637 1
原创 linux C编程--popen函数详解
#include stdio.h>FILE *popen(const char*command, const char*type);int pclose(FILE*stream); 描述popen() 函数 用 创建管道 的 方式启动一个 进程, 并调用 shell. 因为 管道是被定义成单向的, 所以 type 参数
2008-10-17 21:42:00 18177 1
原创 exec函数族的使用
之前没有把exec和fork结合起来一直看,结果一直搞不明白exec函数的使用,那些参数是什么意思根本搞不明白,今天结合起fork一起看,终于看得明白了,exec是接替fork所创建的进程来运行参数里面的程序,pathname 就是程序的路径,pathname后面的参数就是运行的程序,再后面的就是程序的参数,在没有使用fork的前提下使用exec,exec就会占用当前进程来运行程序....
2008-10-15 19:26:00 967
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人