自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 audio effect的基本框架

写这个主要还是方便自己记忆和

2014-11-02 23:51:44 3933

原创 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

原创 android audio 模块解析

写这个的目的主要是自己做个总结和积累,看别人的比较容易忘记。

2014-09-26 11:32:18 2788

原创 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关注的人

提示
确定要删除当前文章?
取消 删除