After days of working, all audio processing functions seems are working in the KdvMediaSDK now, and the next step will be getting a proper set for the audio processing algorithms to run under certain environments & circumstance. I will start it by beginning with AGC module too. Here are the […]
Technical

Introduction of this document This module includes software based acoustic echo cancellation (AEC), automatic gain control (AGC), noise reduction, noise suppression and hardware access and control across multiple platforms. My ultimate goal will be wrapping an independent module out of WebRTC’s Voice Engine for our product, and the first task […]
Reading codes of WebRTC: Deep into WebRTC Voice Engine(draft)

Phase 1: Learn & master the existing MediaSDK & the sample programs. —————————————————————————- 1. Add audio output device enumlation and selection option for playertester 2. Add audio input device enumlation and selection option for castertester 3. Add Mute setting for castertester 4. Add Microphone boost option for castertester. 5. UI […]
First week in the new company

目录 WebRTC技术交流群234795279 WebRTC目的 WebRTC架构图 WebRTC架构组件介绍 WebRTC核心模块API 1网络传输模块libjingle 2音频视频图像处理的主要数据结构 3音频引擎VoiceEngine模块 APIs 4视频引擎VideoEngine模块 APIs
WebRTC音视频引擎研究(1)–整体架构分析

My current job responsiblity is researching on WebRTC, and the first task is wrapping a class from WebRTC to process audio frames to implement functions of audio AEC, AGC, NS, High pass filter etc. Information list below is from WebRTC.org, you can also view it by visiting http://www.webrtc.org, or it’s […]
WebRTC: how to use audio process module?
1. 下载安装svn客户端,例如TortoiseSVN。安装完后,svn执行目录自动被添加入系统环境变量PATH中。 2. 下载并安装msysgit和Tortoisegit msysgit下载地址:http://code.google.com/p/msysgit/downloads/list Tortoisegit下载地址:http://code.google.com/p/tortoisegit/downloads/list 选择适合自己系统的版本,下载并安装(注:Tortoisegit只是一个gui,必须安装msysgit) Tortoisegit安装时会找到git目录并自动配置好。把msysgit中bin目录手动添加到系统环境变量PATH中,比如我的目录是“D:/Program Files/Git/bin” 3. 下载并安装Python,建议安装Python2.6 下载地址:http://www.python.org/download/releases/2.6/。安装后Python执行目录自动被添加入系统环境变量PATH中。 4. 下载并配置depot_tools 建立一个存放depot_tools的目录,command进入该目录 svn co http://src.chromium.org/svn/trunk/tools/depot_tools 下载后把depot_tools目录手动添加到系统环境变量PATH中 5. 建立WebRTC的源码目录 比如E:/Developer/WebRTC/ 6. 打开cmd,进入第5步建立的源码目录 7. 执行: gclient config https://webrtc.googlecode.com/svn/trunk 或者 gclient.bat config https://webrtc.googlecode.com/svn/trunk 8. 执行: gclient sync –force (注意这里是两个- […]
Windows下编译WebRTC全步骤

1、VC++ 环境下测试项目与正式项目混杂的弊端 测试项目和正式项目无法共存 无法独立运行测试项目或者正式项目 图 1 :测试与正式项目混杂 2、测试项目与正式项目分离方案 Visual Studio 集成环境并不像 Linux 下的构建方式那样来的方便, 可以直观的使用 Make 或 Auto Tool 构造自己需要的编译方式,让多个项目相互协作,互不干扰。但是, VS 中通过在各个配置界面中的配置,也是可以用简单且很不直观的方式实现测试项目与正式项目的分离。 初始的混杂方案如上图 1 所示,请参考:VC++ 2008 Google Test:gtest 安装与配置 进行项目的创建。接下来进行测试与正式项目的分离。
VC++ 2008 Google Test:gtest 测试项目与正式项目分离方案
1、下载 地址:http://code.google.com/p/googletest/downloads/list 当前最新版本为 gtest-1.6.0 2、编译 解压 gtest-1.6.0.zip,目录结构如下: 图 1 :gtest 目录结构
VC++ 2008 Google Test:gtest 安装与配置
之前已经发过一次测试版服务器的安装记录,为我在本机安装的虚拟机的操作过程,之后为了应对正式版的服务器,我重新装了一次虚拟机,并且重新将每一步的操作记录明细。一者,为了方便我日后翻查记录,二者,接手工作的人,也可以有一个基本记录可参照。 文本内容主要包含执行过的命令,项目的配置文件在此http://rg4.net/archives/667.html,增加了sshd和dropbox的配置,系统为CentOS 6.2。
正式版SVN服务器安装记录
缘起 nginx由于出色的性能,在世界范围内受到了越来越多人的关注,在淘宝内部它更是被广泛的使用,众多的开发以及运维同学都迫切的想要 了解nginx模块的开发以及它的内部原理,但是国内却没有一本关于这方面的书,源于此我们决定自己来写一本。本书的作者为淘宝核心系统服务器平台组的成 员,本书写作的思路是从模块开发逐渐过渡到nginx原理剖析。书籍的内容会定期在这里更新,欢迎大家提出宝贵意见,不管是本书的内容问题,还是字词错 误,都欢迎大家提交issue(章节标题的左侧有评注按钮),我们会及时的跟进。 taobao / nginx-book Watch587 Fork214 Nginx开发从入门到精通 — More… Issues #72 nginx平台初探(30%)¶ ngx_str_t str = ngx_string(“hello world”);ngx_str_t str1 = ngx_null_string(); by qinguan 2013-04-14 #68 背景介绍¶ 使用简介¶ by wbshuang09 2013-04-12 #67 背景介绍¶ nginx历史¶ by angerdevil 2013-04-11 #66 Nginx开发从入门到精通¶ Nginx开发从入门到精通¶ by OpenGG 2013-04-11 #64 nginx平台初探(30%)¶ 请求的处理流程¶ by ZRJ 2013-04-11 master分支代码最近更新:2013-04-14 下载zip 版权申明 本书的著作权归作者淘宝核心系统服务器平台组成员所有。你可以: […]
Nginx开发从入门到精通
其实关于新版VLC无法看RTSP的视频的问题早在很久之前就已经有人跟我提过了,而我写的EzStreamSvr和EasyIPCam都是用RTSP来streaming 视频的,因此又有一些朋友来把这个问题反馈回来给我,为以省去更多的口舌,特将此问题整理如下:
关于新版VLC无法看RTSP的视频的问题

把我的C盘空间用EASEUS Partition Master 8.0.1调大了一点,以使C盘不再一直处于空间不够的警告,结果重启Windows之后就出现错误 error: incompatible license.Entering rescue mode… grub rescue> 首先交待一下我的环境:我的系统比较复杂,由于工作需要,共装了三个OS:一个Windows 7,一个Ubuntu 11.04,一个Ubuntu 12.04。 然而由于硬盘比较小,最近一年多里已经屡次因为硬盘空间不够而发生这样那样的问题。这次也是一样。这次我是把我的C盘空间用EASEUS Partition Master 8.0.1调大了一点,以使C盘不再一直处于空间不够的警告,结果重启Windows之后就出现错误: error: incompatible license. Entering rescue mode… grub rescue> 我非常明白这是由于硬盘序列ID变了才导致GRUB无法工作。一开始我以为用正常的grub-update就可以搞定(grub rescue下手动启动的方法可参考下面的附录),结果不然。 于是俺使劲的找,终于找到了 正确的方法: GET BOOT-REPAIR: Three possibilities to get Boot-Repair: 1) Boot-Repair-Disk is the official CD containing the very last version of […]
WIN7下调整C盘分区大小后:error: incompatible license.
虽然NDK编译ffmpeg的文章在网上已经多如牛毛,但还是经常有人在群里反反复复的问android怎么编译ffmpeg?这个不行,那个不行。。。 我之前也写过两篇关于NDK编译ffmpeg的文章,但基本上写了一大堆的步骤,统统被人无视,为什么?因为大家都很懒,懒得去管那一堆的这个那个步骤。只希望直接拿到所有的源码,然后打一个命令一次性搞定。 好吧,既然大家都这个想,那我就搞一个出来,但还是会有几个“烦人的”步骤: 先交待一下编译环境: 1. Ubuntu 11.04(任何一个发行版都OK) 2. NDK:当前最新的ndk-r8d 具体步骤: 1. 下载ffmpeg for android补丁。这个补丁我是放在我的一个svn服务器上的,所以你需要安装一个svn客户端,RapidSVN, RabbitVCS等都可以,然后checkout https://svn.rg4.net:8443/svn/ffmpeg/(有人回报说一直用TortoiseSVN会一直报需要用户名密码才能check out,如果碰到这种情况请用ustcer/ustcer登录) 2. 下载ffmpeg源码0.11.2(Happiness),虽然现在最新版的ffmpeg已经到1.1.2(Fire Flower)了,但很不幸,0.11.2是当前最后官方支持android的版本(非官方的有很多,最新版本也都可以编译,但用于正式产品,…我不 知道),你暂时不用费力去找了,因为我刚刚已经“费过力”了。ffmpeg下载地址:http://ffmpeg.org/download.html 3. 将步骤2下载到的ffmpeg解开,替换到步骤1的目录下 4. 重新更新ffmpeg for android补丁(因为步骤3已经用原版的ffmpeg 0.11.2的源码覆盖了补丁,这一步是为了将补丁再次打上),将所有冲突的文件给Revert掉。 5. 打开一个terminal,进入ffmpeg补丁目录,到ffmpeg这一层,然后在此: a. 执行config.sh(若是你的ndk目录跟我不一样,请先修改config.sh中最上面的两个设定的路径,相关设定可参考下面的附录) b. 执行完成后,打开config.h,找到其中的#define restrict restrict,将其改为#define restrict,并保存退出。 c. 执行ndk-build。 完工。 附录 1. NDK路径设定说明: 这里包括两个部分: a. 路径位置 我的android SDK及NDK都是放置在/opt/google这个目录下的,完整路径为: SDK:/opt/google/sdk NDK:/opt/google/ndk-r8d […]
ffmpeg for android 编译
年关临近,又得开始准备年终总结了,我先简单罗列一下,以便写总结的时候有个参考(仅限于产品部分)。 元旦之后一个多星期又开始搞Hermes相关的一些功能,但是说实在的,我对此真的不太积极,而这主要的原因是在于,我认为(一直认为)这并不是“走在一条正确的道路上”,而且,I don’t in charge of this product。 众所周知,STUNT相对于STUN及成功率是相当的低,而且相对来说,中间流程控制起来会更加的麻烦。但是事实上,虽然我在项目周会或者其他多种场合说 明和强调,Hermes却一直在沿着这条我“个人”认为不正确的道路上走下去,而且越走越远,甚至开始衍生出其他许多这样那样的“花头”来,如: 1. 为节省打洞,把原来两开的两种socket(一种用于信令及控制,一种用于视频的传输)进行合并,以复用socket。 2. Tunnel 这如果是在其他“环境”下,可能直接就被枪毙了,可是,我们已经花了很多人力来朝着这个方向来做基于这么一个思想的东西。不对,不是一个,而是很多个衍生 产品。当然,需要去做这些衍生产品,以及这么急着在这个不确定的、甚至明知很滥的也不可能规模化的基础上去做的原因很大一部分是在于市场的需要,或者说是 那些Board members的要求。 可这实在是让人受不了了,再加一句我“个人”的见解,这些东西即使做出来到头来很多做法也都最终会被推翻掉的,再过阵子,大家回头来看这堆东西,说不定就会称之为“垃圾”,在一个宝贵的时间里做出来的“宝贵”的垃圾。可是,你又能怎么办呢? 我先来数一数这N宗罪(不仅限于Hermes,所以题目也要改一下)。虽然在各种场合,我已经说了太多遍了,但也许我也还是得再说。 第一宗罪:似乎天下只有TCP,没有UDP。 从绑定单一的8000端口,到程序的实现,无一不是朝这个方向去做。 第二宗罪:太多的历史包袱,每个版本都在版本兼容性上花费一极大的力气,却导致许多规划、计划都无法实施。 在iNVR/eLook项目上,其实我一开始是有很多改善的措施,并且相当一部分的功能都已经实现,但由于要兼容各种旧版本的客户端,并且要兼容Windows的各种产品,结果后来又费力把已经实现好的功能拿掉,改成跟 第三宗罪:又想提升打洞成功率,又不想花时间去研究UDP及STUN的解决方案。 虽然说,其很大一部分原因是因为其他项目一直delay,但是既然Hermes项目一直在推进,为什么就不能优先去把Hermes的路给走对了呢? 未完,待续。想起来再补充。
Hermes 之TCP及STUNT N宗罪
Network servers are traditionally implemented using a separate process or thread per connection. For high performance applications that need to handle a very large number of clients simultaneously, this approach won’t work well, because factors such as resource usage and context-switching time influence the ability to handle many clients at […]