自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 资源 (11)
  • 收藏
  • 关注

转载 深入浅出sip协议

传统电话是电磁波的通信,当电话技术发展到IP技术时代,SIP协议成为了电话通信标准协议,不仅可以通电话、还可以收发信息、视频、开会、放PPT。事实上,今天的通信业已全面采用SIP协议作为通信标准,无论是固定电话、还是移动电话,其后台都是以SIP协议完成通话、交换的。 很多软件也采用SIP协议进行通信,如:Windows Messenger。学习多天,记录如下:一、从打电话的

2017-03-30 12:23:45 1756 1

原创 android voip通话音频数据流传输过程解析

android的voip基于sip协议,

2017-03-30 12:17:35 6369

原创 android sip通话实现流程分析

sip协议的核心是SipService,它的注册与一般服务的注册不同,绝大多数Service都是之间在SysetmServer中进行注册,而SipService是在TeleService apk中注册,具体代码在PhoneGlobals.java中.Handler mHandler = new Handler() {        @Override        public

2017-03-29 16:03:23 7021 3

原创 android sip协议通话代码实现

android里面的voip通话基于sip协议,关于voip和sip协议的了解,请大家去参考相关文档,本文不做解释.sip协议的核心是SipService,它的注册与一般服务的注册不同,绝大多数Service都是之间在SysetmServer中进行注册,而SipService是在TeleService apk中注册,具体代码在PhoneGlobals.java中.Handler mHa

2017-03-29 14:28:28 9147 3

原创 搭建sip服务器方法

在基于sip协议进行voip通话时,首先需要搭建sip服务器,本文以ubuntu 14.04平台为例进行说明搭建sip服务器的过程:1.首先安装如下软件apt-get install perl libdbi-perl libdbd-MySQL-perl libdbd-pg-perl libfrontier-rpc-perl libterm-readline-gnu-perl libbe

2017-03-29 11:48:24 18169 1

原创 MediaPlayer接收通知消息的处理流程

在使用java层MediaPlayer去播放一个音视频文件时,经常需要获取各种通知.具体体现在代码中就是注册各种监听器来获取事件通知.例如:MediaPlayer player = new MediaPlayer();player.setDataSource("rtsp://10.0.149.217:554/stream1");player.prepareAsync();pla

2017-03-27 14:02:33 2157

原创 MediaPlayer播放视频与AudioFlinger交互流程

status_t MediaPlayerService::Client::setDataSource(        const char *url, const KeyedVector *headers) {player_type playerType = MediaPlayerFactory::getPlayerType(this, url);        sp p = setD

2017-03-24 17:41:00 745

原创 android MediaPlayer播放音视频流程

在播放一个本地音视频文件或网络传输的音视频流时,apk中一般会调用类似如下代码:MediaPlayer mp = new MediaPlayer();(1)   //创建一个播放器mp.setDataSource(...); (2)//参数指定路径或url   mp.prepare();  (3) mp.start(); (4)上面的代码中总共有4条语句

2017-03-23 18:09:02 6430 1

原创 android播放视频显示字幕

我们看到市场上视频播放应用在播放视频时,可以在视频上面显示滚动字幕信息,或者其它提示图片信息等.那么它们是如何实现的呢,首先播放视频一般是用SurfaceView,VideoView等,那么我们如何在SurfaceView上显示字幕呢,根据我前面一篇文章所述SurfaceView的工作原理,SurfaceView的生命周期虽然受到它的宿主窗口限制,但是它是工作于不同的窗口,且位于宿主窗口之下.我们

2017-03-23 14:25:37 4957

原创 SurfaceView的工作原理

大家在做android游戏和视频播放器的apk开发时,会经常用到SurfaceView这个类,以及它的子类VideoView,GLSurfaceView等.它与普通的View视图有本质的区别,本文就对SurfaceView的工作原理做个详细介绍.SurfaceView不与它的宿主窗口共享同一个绘图表面,它拥有自己独立的绘图表面,也就是说拥有独立的Surface本地窗口,它可以在一个独立的子线程

2017-03-22 17:30:07 3824

转载 linux高端内存

高端内存是指物理地址大于 896M 的内存。对于这样的内存,无法在“内核直接映射空间”进行映射。为什么?  因为“内核直接映射空间”最多只能从 3G 到 4G,只能直接映射 1G 物理内存,对于大于 1G 的物理内存,无能为力。  实际上,“内核直接映射空间”也达不到 1G, 还得留点线性空间给“内核动态映射空间” 呢。  因此,Linux 规定“内核直接映射空

2017-03-21 15:20:19 428

原创 linux内核kmalloc与vmalloc的区别.

一.kmalloc():用于申请较小的、连续的物理内存.1. 以字节为单位进行分配,在中2. void *kmalloc(size_t size, int flags):分配的内存物理地址上连续,虚拟地址上自然连续3. void kfree(const void *ptr):释放由kmalloc()分配出来的内存块二.vmalloc():用于申请较大的内存空间,虚拟

2017-03-21 11:49:12 3134 1

原创 linux内核中直接读写文件

我们在调试linux内核驱动程序时或者某些特殊场景下,需要直接读写文件,但是我们不适合直接使用系统调用sys_open(),sys_read(),sys_write()等.我们可以利用其它内核函数来实现,filp_open() ,filp_close(), vfs_read()vfs_write()等,这些函数在linux/fs.h和asm/uaccess.h头文件中声明。1.

2017-03-20 15:37:28 6457

原创 linux内核file_operations的赋值流程跟踪

我们知道linux系统中文件有很多种,包括普通文件,目录文件,设备文件,管道文件,套接字文件等.文件在内核中用file结构体表示,file对象中有个重要成员 f_op指针,它指向file_operations,该结构体定义了一系列文件操作的函数指针集合,例如open,read,write,ioctl,mmap等.当对文件进行操作时,最终是调用对应的函数指针进行操作.linux中支持很多种文件系

2017-03-17 11:46:23 1066 1

转载 linux下内存的统计和内存泄露类问题的定位

在产品的开发中,通过对当前系统消耗内存总量的统计,可以对产品所需内存总量进行精确的评估,从而选择合适的内存芯片与大小,降低产品的成本。在遇到内存泄露类问题时,经常会对此束手无策,本文通过对proc下进程相关的文件进行分析,精确评估系统消耗内存的大小,还可以对内存泄露类问题的解决提供一种定位手段。       Linux在内存使用上的原则是:如果内存充足,不用白不用,尽量使用内存来缓存一些文

2016-11-03 17:21:03 309

转载 linux内核符号表

System.map是内核符号表文件,是由“nm vmlinux”命令产生的,位于源码根目录。所谓“符号”就是函数名,全局变量名等东东,这个表就记录的这些“符号”在内核中的运行地址。(这个地址是Effective Address,虚地址)下面是文件的一个片段:c032ee18 t genl_initc032ef18 T netfilter_initc032efc

2016-11-03 15:44:26 850

转载 linux如何使用kprobes查看内核内部信息

使用printk打印变量等方法,是调试内核的有效方法之一,但是这种方法必须重新构建并用新内核启动,调试效率比较低。以内核模块的方式使用kprobes、jprobes,就可以在任意地址插入侦测器,执行包括printk在内的各种调试工作,而无须重新构建内核,也无须重启。一、首先内核必须支持kprobes、jprobes:#make menuconfigGeneral s

2016-11-03 14:29:48 1426

高焕堂android课堂讲义

附件中是高焕堂的android讲义,本人曾参加过高先生的android培训课程,讲解的比较精辟,尤其是android的架构解析。相信对于android初学者来说会有很大帮助。

2013-07-13

nucleus系统内核源代码

nucleus作为一个轻量级实时操作系统,对于实时性要求不是很高的情况下,应用非常广泛,例如在以前的功能机和一些嵌入式设备中都有应用,实时操作系统很多,例如:vxworks,win ce,nucleus等,但开源的不多,由于该系统是开源的,对于想了解实时操作系统原理的读者来说,这个是难得的机会,只有接触源码,才了解其运行机制,对于深度定制和开发,加深对实时操作系统的理解都有很大帮助。

2013-07-13

anroid智能指针(wp,sp)学习总结

智能指针sp和wp在android c++源码中使用非常频繁,例如IBinder机制,但是它比c++中普通的智能指针要复杂很多,相信不少android学习者如果c++基础不是很扎实的,看起来会比较吃力和枯燥。本人在android 4.2.2源码基础上对sp和wp的关键代码做了详细解析,着重分析原理,相信您看了该文档,一定会有所收获,一定对sp和wp有新的认识。

2013-07-13

oracle的入门心得

这本书是一本oracle入门书籍,介绍了学习oracle过程中的一些心得,经验总结,包括如何安装Oracle,如何学好Oracle,Oracle的一些技巧与提示,学习中的一些宝贵经验等。

2010-07-14

设计模式精华版,迷你版

这个文件中包含了常用的23种设计模式,对于每一种设计模式都给出了其结构,适用条件,以及代码示例。

2010-07-14

VC++开发必备插件

文件是用VC++开发时所需要安装的插件,安装了这个插件之后,可为开发提供很多便利,为不同关键字进行不同的着色,编码时会自动弹出一些提示信息,比如说括号自动对齐,显示类的所有数据成员等。

2010-07-14

C与C++面试题目汇总

文件是各大公司面试题的一个汇总,语言是C和C++,如果你能对这些面试题都理解的很透彻,只怕没有几家公司不敢要你了!

2010-07-14

GuiToolkit图形界面开发包GuiToolkit

此压缩包是开发图形化用户界面的辅助工具,里面很多函数都已经写好了,只需要去调用就可以了。

2009-04-25

CS架构登录模块需求用例

文件是一个CS架构的客户端登录服务器的需求用例。

2008-07-14

vc6.0与vs2005的编码区别

vc6.0与vs2005的编码区别,里面介绍了两种不同的开发工具进行编码的区别,都是本人在开发过程中的总结,虽然不能全部列举区别,但也尽量力求全面。

2008-07-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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