Jim 2016-08-20T00:20:57+00:00 kejinlu@gmail.com 1个顶11个?程序员效率差距的量化分析 2015-11-17T00:00:00+00:00 Jim http://blog.sevenche.com/2015/11/The-Factors-That-Cause-Programer-Perform-Differently

在软件工程的经典《人月神话》中作者提出好的程序员和差的可以达到100倍的效率差别,我还没搞清怎么做到的,但是现实中,好的程序员与差的程序员完全可以达到1:5到1:10的效率比。这就让我们来看一个例子吧。

基于同一个需求文档,印度合作公司与我各写了一套主要功能类似实现,都是基于Java,各包含一个Server和一个客户端。现在UAT通过,我也接收了印度方面的代码。同时心里默算了下,这两套实现消耗的Man Day竟有10倍的差距,于是有些好奇,便通过比较两个实现的代码量,使用的框架与消耗的Man day来分析影响程序员效率的因素。

基本情况

一个需求最先由Boss完成需求和设计并在7月份发给印度合作公司以项目外包形式发包,约定在9月底完工,我没有参与。印度方面投入了两个工程师和一个兼职的PM。但是在9月份的时候我们发现我们还需要兼容一个Android客户端,而原先设计的架构无法兼容。Boss要求我从新开发一套来针对Android的实现,而功能性需求是一模一样的,时间上越快越好。本人从9月7号到9月25号三周15个工作日(加周末约20Manday),完成从设计,环境搭建,文档,代码,测试的各个环节。在进入UAT阶段后,Server只修改了一行代码。Android客户端由要由以色列同事构建整个Image才能发布,所以使用了Hybrid的形式将尽可能多的功能放到(HTML/WebView上),从测试开始到UAT只修改了三行代码,而且是用来增强健壮性。值得一提的是印度公司解决方案在9月底提交后UAT阶段不停出现严重Bug无法使用,经过不断Fix,到11月初才完成UAT,项目总共历时4个月。

项目实现比较

  1. 印度公司使用Strus 1, Hibernate
  2. 印度公司到UAT结束,两名程序员一共用了4个月
  3. 我使用Spring Boot / MVC / Data JPA
  4. 一人用了15个工作日,加上周末加班有20个Man Day

代码行数统计与分析 (仅比较Java代码,JS与HTML双方都有一点,但为了方便统计没有包在里面。)

印度版本总代码行数: 7385

其中分项统计如下

azan: 3208
     DAO: 782
azanApplication: 4177 
     DAO:991
     Form:306

统计方法

pic工程一,总数

pic工程一,DAO + DTO

pic工程二,总数

pic工程二,DAO + FORM Bean

由于没有使用Spring Data JPA,他们的代码多出了很多DAO,Form相关的代码,这些在我的实现里是没有的。

去除DAO和Form Bean后的代码量: 7385-782-991-306= 5306

我的代码总行数: 3968

PrayerAndroid: 1014
PrayerWeb:2954

统计方法

pic工程一

pic工程二

分析

(结论的计算全部使用等于号,有些是为了打字方便,实为约等于)

两个项目的总代码行对比,实现完全相同的功能,印度公司多写了86%的代码

7385/3968*100%= 186%

去除DAO、Form后,印度公司还是多出33%的代码,但是这以经可以归在代码风格,每行长度的误差里了。

5306/3968*100%=133%

各种因素之和可以导致程序员的效率差距达到11倍之多

考虑到加班因素,此项目中不同程序员的的生产力可以有11倍的差别。 印度方面消耗的总ManDay高达176。我所消耗的月历天数为20天工作日为15天。

2*22*4 = 176
ManDay Rate = 15 : 176=1:11

由于本人在那几个周里每周工作了差不多120个小时,相当于3倍的正常工作量。

去掉加班因素(15 ManDay * 3 = 45)后生产力的差别约为1:4

ManDay 45 : 176 = 1 : 4

使用更新的框架带来的收益

去除了上述的代码行误差后,使用Strus1+Hibernate框架相比Spring Boot(MVC/Data JPA)还要多写40%的代码 (186%/133%)。Form Bean多为生成,所以推算使用新的框架可以减少30%左右的工作量(编码和Bug Fix)。

去除框架不同所至的代码量差别因素后,生产力的差别约为1:3

45 × 1.30 :176 = 1 : 3

个人觉得这1:3的差距基本上可以归结为

  1. 没有双人协作的沟通成本
  2. 压力下对时间与注意力更高效的管理
  3. 设计与编码经验的差别
  4. 责任心

态度决定了25%的效率差

这里特别分析下前文提到的责任心因素。如前所述,印度公司的提交物在UAT阶段消耗了一个月,一直有严重的Bug,我觉得这完全是态度的问题。本人的服务器和客户端部署后只改了一行代码,而且只是健壮性改进。如果印度方面也把Bug消灭在UAT之前则可节约25%的时间。

每日代码产量

虽然总的效率差别达到了11倍之多,但是我们之间的每日代码产量差别不到3倍,去掉加班因素,我们的日代码产量几乎是一样的

7385/(2×22×4)176 = 83Line/ManDay
3968/20Man Day = 200Line/ManDay

总结

  1. 此项目中不同程序员的的生产力有11倍的差别。
  2. 有效的加班最多可将效率提升三倍
  3. 使用合理的框架可以减少30%左右的工作量。
  4. 态度决定了25%的效率差。
  5. 设计,经验,责任心等因素决定了三倍的效率差别。
  6. 去掉加班因素,不同效率的程序员每日代码产量几乎是一样的。

注意加班因素可产生最高三倍提升,第5项也可以!

加班因素

每周120小时的工作时间差不多是我最高的效率了,再高就会严重损失效率,得不偿失,当时实行的是5-10-7制度。家里建了开发环境,代码两边同步,每天早上4点到6点起床,平均5点,别问我怎么做到的,压力大时,到点就会醒来想项目上的事情,还不如干脆就爬起来干活。晚上6点从单位准时下班,因为实在效率下降,干不动了。回家吃完饭,又有精力可以干到10点。如此重复。加班是自觉的,为报Boss的知遇之恩而已。以前也怕Taobao的的9-9-6,但现在回过来看9-9-6也是小儿科了。(并非在这里提倡加班,本人十分反对无效加班。有机会专门写一些IT圈里形形色色加班。)

]]>
儿童《无图识字》安卓版使用与下载说明 2015-11-14T00:00:00+00:00 Jim http://blog.sevenche.com/2015/11/Android-app-for-kids-to-learn-Chinese

作为程序员爸爸,iOS和Android市场选来选去选不到合适宝宝的认字软件,最后只有亲自上场定制一个,经过不断的使用和调整,效果还真挺好,现将其分享给大家。

本软件以无图卡片形式展示《幼儿画报》高频284汉字,Dolch 220 Sight Words(英文高频220个单词),《英文三字经》(自然拼读),适合用作无基础幼儿的中英文识字启蒙。艾宾浩斯遗忘曲线被自然的设计在卡片展示的逻辑中,使用简单方便。

预览

预览图

下载

最新2015-11-15版

Fixed a crash 2015-11-15.

使用方法

  1. 首先在菜单中选择要学习的内容,打开后会自动停留在最后学习过的页面
  2. 向左滑动复习旧的内容
  3. 如果页面上的内容完全记住了,就长按屏幕来标记,凡是标记过的字体都会变成蓝色并被移动到最左边,这样下次复习的时候就不会出现,按照遗忘曲线的原理每次都要复习所有不认识的字。
  4. 复习完以后,向右移动来学习新的内容,并在学习过程中不时左滑以复习。

我们宝宝在两岁开始用的时候每天一次,5-10分钟即可,其实小孩子并不区分学和玩,整个过程就和玩猜谜游戏差不多,娃和娃他爹都很开心。

内容

《幼儿画报》高频284汉字

一般书店出售的幼儿《无图识字》卡片中的字多为日常物品的描述,并非阅读中常见字,对于后续的阅读帮助不大。本软件使用的是阅读中要用到的常见字。

引:

全国发行量最大的幼儿期刊——《幼儿画报》通过统计12种小学教材,公布了出现频率高达58.79%%的284个常用字。排在前10位的常用字依次是:的、小、了、一、我、子、上、来、在、是,其中排在第一位的“的”字在12种教育部审定的小学一年级教材中出频率竟高达2733次。《幼儿画报》的编辑告诉记者,进行这一调查的目的就是为了引导家长走出教孩子识字误区。

Dolch 220 Sight Words

类似上面的高频汉字,Sight Words是英文阅读中词频最高的单词。

Sight words make up 50 to 70 percent of any general text. http://www.mrsperkins.com/dolch.htm

上面的链接里还有一些Sight Words各种格式的的打印版。

《英文三字经》自然拼读

自然拼读(Phonics)相当于汉语的拼音,是母语为英语的国家教育幼儿园阶段儿童学习单词与阅读的方法,近年来中国兴起的双语养育也比较强调这一部分内容。孩他爸加入这部分内容主要是为了配合书本《英文三字经》使用,对Phonics有了解的父母也可单独使用。

《无图识字》与《有图识字》

这两者是在书店里比较主流的幼儿识字卡片。我们娃小时候都使用过,有图识字的背面是图片,娃很感兴趣,但是用多了就发现他往往会靠记图片来联想汉字,如果没图片那个字就不认识了,而无图识字就不会有这样的问题。

幼儿的注意力集中时间不超过10分钟,所以任何可能转移注意力的东西最好都要避免。这也是我觉得AppStore里各种教识字App的不足之处。

反馈

请在下方留言

]]>
[Jim谈架构]用Swagger实现Restful服务的发现与发布 2015-10-12T00:00:00+00:00 Jim http://blog.sevenche.com/2015/10/[Jim谈架构]用Swagger实现Restful服务的发现与发布

Swagger是一个新兴的支持多语言(Python, Java等)的Rest服务的编档与API发布工具集。作者在写作本文前搜索了相关的中文介绍,但是发现大多都没有提到重点,特写作此文。

你当前的Retful项目还缺什么?

如何保证文档与API的一至性与准确性

在服务器端Restful API做好后,如何让其它的使用者知道我有哪些接口可以调用?接口的细节是什么?如何使用?在现阶段很多公司的做法都是手工维护一个单一的文档,然后把它发布到网上,比如新浪Weibo的公开API。这种做法的最明显问题是随着服务器端API版本的更新,难以维护全部文档的准确性,同时这要消耗额外的人力。

Swagger的Java版本支持Spring MVC / Boot,只要在相关的API上加上@API的Annotation就可以自动生成对接口的描述,并且可以以JSON或者HTML的形式随服务器发布在本服务器指定的端口上


@Api(basePath = "/landlords", value = "Landlords", description = "Operations with Landlords", produces = "application/json")
@RestController
@RequestMapping(value = "/landlords", produces = MediaType.APPLICATION_JSON_VALUE)
public class LandLordController {

    private static final Logger logger = LoggerFactory.getLogger(LandLordController.class);

    @Autowired
    private LandLordService landLordService;

    @RequestMapping(method = RequestMethod.POST,
            consumes = MediaType.APPLICATION_JSON_VALUE)
    @ResponseStatus(HttpStatus.CREATED)
    @ApiOperation(value = "Create new Landlord", notes = "Creates new Landlord")
    @ApiResponses(value = {
            @ApiResponse(code = 400, message = "Fields are with validation errors"),
            @ApiResponse(code = 201, message = "") })
    public LandLord createLandLord(@Valid @RequestBody LandLordDTO landLordDTO) {
        logger.info("LandLord DTO is: "+landLordDTO);
        LandLord landLord = new LandLord(landLordDTO);
        landLordService.create(landLord);
        return landLord;
    }

//Other endpoints are omitted
}

如果不想加入@API还有更懒的办法,参考下面这个开源的小项目,他会自动搜索你的所有的Spring MVC的Restful方法,然后调用Swagger生成文档: Springfox

下面网页的左边是生成的JSON描述,右边是HTML描述。预览Swagger生成的文档 (这其实是Swagger提供的Restful API的设计器)

预览图 Swagger生成的文档不仅仅是对API的描述,你还可以直接对每API做测试!

预览图

自动从API描述文档生成客户端调用Restful的代码

现在文档可以即时发布在服务器上了。这还没完,Swagger还提供了Client工具,可以自动读取Swagger生成的Restful API文档,因为该文档中以经包含了每个API签名的所有信息,这些工具还可以自动生成(Java/Python/JS等)调用这些Restful API客户端的代码。WoW,是不是很Cool?其实一点也不新鲜哈,在基于SOAP的WebServices协议族里Swagger的这一功能是可以通过Axis与WSDL来实现的,其实Swagger就是借鉴了之前的设计。

参考文档

  1. Integrating Swagger into a Spring Boot RESTful Webservice with Springfox
  2. Documenting a REST API with Swagger and Spring MVC
  3. Documenting Restful Webservice - Spring Boot & Swagger UI
]]>
提速10倍!- 使用JVisualVM优化你的Java、Android程序 2015-06-25T00:00:00+00:00 Jim http://blog.sevenche.com/2015/06/Extrame-Java-Optimization-by-Using-JVisualVM

作者参于过一个Android项目由近100个程序员开发了3年时间,基本上是把一个服务器做到手机里,当时还是单核时代,整个项目最大的挑战就是性能问题,其间关于框架是不是性能瓶颈有过激烈的争论。本人负责性能优化时使用创新性的方法借助Android的工具TraceView解决了如下问题。度量程序中框架与每一个模块各自的计算资源消耗是多少?性能瓶颈在哪里?然后进行有针对性的优化并最终数倍提升了程序的性能,这种在Android上得来的经验最终可以推广到普通的Java程序中来。作者的一个结论是任何没有经过系统性优化的Java程序,使用本文中的方法最少可以提速一倍,最高可至10倍。

性能优化的方法论

关于优化,本文会给出一些大的方向,但不讨论如何具体的优化某一API,模块之类的问题,也不讨论任何算法。本文的重点在于如何发现性能瓶颈,以量化的方式告诉你慢在哪里和为什么慢,一但有了这些数据,接下来的具体优化和效果的度量就是不是问题了。

从方法论上来说,性能优化一般是在有了性能问题的时候才进行,千万不要怀疑某个地方有问题,然后就进行优化!建立在怀疑基础上的工作很可能是无用功。笔者曾见过某创业公司的CTO给Android的Activity写了一个Stack,不显示的Activity会自动被销毁,而他这样做的原因是要节省内存。错了,全错了。孰不知Android系统会自动管理Activity的生命周期和内存,该优化重复发明轮子不说,还会使得Activity被反复销毁和创建,这对客户端和Server都是更大的销耗。

在确定应用程序很慢,一定要优化之后的第一件事情,就是想办法度量整个程序的CPU、IO和内存的销耗。有人会说这很简单嘛,在几个节点上打几个时间戳,写点日志不就行了。错错错,由于程序的执行分支很多,在不同Load下的表现也不同,打时间戳的方式是只能见树木,不能见森林呀。比如说我有如下的问题:Sping框架在整个程序中消耗多少百分比的CPU?或者在我们的模块中哪个模块是最慢的,有多慢?我要优化哪些地方可以使程序快50%?这些问题怎么回答?本文中将给出答案。

本文推荐的优化大体的流程是度量->优化->度量这样一次次循环。性能优化的最高标准是将其固化到开发的流程中,比如说在每一次Scrum的结尾做一次优化,或者像作者当年那样,将性能度量做到集成测试里,每天都会自动运行并报警。这个最高级别可以称为性能的持续优化级。

如何度量

终于轮到JVisualVM出场了(Android使用TraceView,方法是一样的,本文不详述。),它是Oracle JDK自带的图形化工具,与Android提供的TraceView有类似之处,可以度量VM上每一个方法级别的CPU、内存消耗。然面除此之外,最重要的是它可以累计每一个package在一段时间内的CPU消耗,而我们的Java程序中的模块一定是按package来划分的(不是的拉出去毙了)。比如说上文中提出的度量Spring框架消耗的问题,其实质就是统计出所有包名中含有Sping的方法的总销耗。JVisualVM可以让我们以不同的维度来测量消耗。JVisulaVM还有很多其它的功能,如死锁检测(ThreadDump)等,不再本文范围内。

如何用JVisualVM度量模块的消耗

JVisualVM的基本用法是要先连接到JVM上,具体用法谷歌上有的是,笔者为了节省自己的宝贵时间就略过去了。好了,现在在谷歌老师的指导下,你的JvisulVM已经连到Tomcat的VM上了,然后你看到了下面的UI。

这张图里你要先点击CPU Button,然后JVisualVM就已经开始统计VM上Tomcat的运行数据了,在运行一定时间后点击Stop就可生成这段时间内的所有的性能数据。

接下来这张图就是很Tricky的地方。

在这张图的右边你可以Filter想要分析或不想要分析的Java包。 左边有一个很小的Snapshot图标,点击后才能进入性能数据的分析和展示页面。 进来后就是下面的界面。

我们看到的是默认以Methods来排序的CPU消耗图,这里又有一个藏的很深的功能-以Package来排序,JVisualVM可以自动按包来计算时间并排序。这样我们就知道每个模块的消耗了(比如DAO层/Services层等等)。

除此之外,我们还可以看到下部有不同Sheet的标签,如可以查看某个方法的CallTree之类,方便对调用源头的追踪。下图是其中一种分析图。

经过上面的分析,你就可以明确优化方向和确定优化计划了。

如何优化

前文说过了不讲优化细节,是因为面实在太广了。但是以笔者的经验来说,按大类分无非是是以下几种

  1. 以空间换时间 - 如缓存之类
  2. 以异步代替同步 - IO之类
  3. 算法优化 - Bloom Filter大幅减少数据库查询
  4. 对象重用 - 对象池
  5. 以多线程代替单线程 - 线程池
  6. 减少对象的生成和销毁

特别说下最后一点,大家看看这行语句有什么问题? 怎么改进?

log.debug("Current time is: " + new Date());

上面的语句,即使你把Log Level改到了Info级别Date对象还是会生成,然后马上就出了作用域要被回收!很抱歉Log4J就是这么没效率。如果是LogBack之类是这样的:

log.debug("Current time is: ", new Date());

实测单是这一个改进就可能收获20%的速度提升!

附记

更进一步分析

和Android平台的TraceView相比JVisualVM还是不够强大。TraceView可以使用工具导出原始数据为CSV格式,笔者基本上都是将原始数据导出后放到数据库里用SQL分析,这样可以随心所欲。 TraceView可以可视化线程的CPU使用情况,JVisualVM只能看当前线程的状态。 JVM下有些和VisualVM类似的第三方工具似乎可以导出数据。

]]>
WebRTC Windows/Linux最简单入门示例 2014-11-20T00:00:00+00:00 Jim http://blog.sevenche.com/2014/11/WebRTC-Windows-Linux-最简单入门示例

本例子在Windowns7/VS 2010和Linux/ARM平台下编译通过,仅播放一段本地当前文件夹下的wav文件,可用于验证WebRTC开发与运行环境.

其它参考

官方 - WebRTC getting started

讲了如何在各种环境下设置WebRTC开发环境。

官方示例 - Android app

其实就是上文中提到的例子,但是这个链接给的是单独的git repo,不用把整个WebRTC Repo拖下来。这个例子比较有代表性,虽说是Andorid的但是里面是通过JNI来调用C++的,所以也可以作为C++的参考示例。

怎样交叉编译WebRtc到ARM Linux

本人的另一文章。


本例子以GitHub Gist的形式嵌入,如果你不能访问Gist则看不到代码。



附:音频Wav文件下载

下载Wav

]]>
怎样交叉编译WebRtc到ARM Linux 2014-11-01T00:00:00+00:00 Jim http://blog.sevenche.com/2014/11/How-to-cross-compile-WebRTC-for-ARM-linux 基本问题和思路

WebRTC使用Google自家的GYP作为的构建工具,它本身没有针对ARM-Linux平台的构建选项。本人前一阶段需要将其编译到ARM上,而Google上也基本上都是提问题的,没有人给出如何做出来的。本人花了很大精力终于编译出来libwebrtc.a for ARM,希望将经验分享给大家,同时把编译出来的类库放在这里给大家下载,如果您的ARM平台和我差不多的话,应该可以直接用。

其实编译最基本的原理就是将正确的源文件放在一起,给予正确的参数,所以这里基本的方法是抛弃GYP,使用CMAKE来重新写一个编译脚本。第一步是使用Shell脚本来选出来正确的源文件,然后将其改造成CMAKE的Cmakelists.txt,加入ARM CPU相关的参数,最后尝试Build,出编译错误,再回到第一步开始调试。整个过程不断递归直到构建成功。下文将详述上述过程,并提供脚本,但是具体解决编译错误的方法并不在本文论述,有时间的话另开一文。

下载:libwebrtc.a Audio only version

环境

WebRTC源代码版本:2429

Corss-Compiler: arm-linux-guneabi-gcc

Host OS: Ubuntu

源代码Filter脚本

请注意头部的filter变量,可以控制Audio/Video等。

#!/bin/bash
#----------------------------------------------------------
ROOT='../third_party/webrtc/src'
EXCLUDE='(video|test|android|mac|h264|h263|ios/)'
NO_FILES='(list_stl|map_stl|map_no_stl|data_log_dummy|trace_impl_no_op)'
#NO_FILES='$^'
SED='s/..\/webrtc/\${WRTC_ROOT}/'
LINUX_SPECIFIC='(linux|posix)'
WIN_SPECIFIC='(win[/\.]|windows)'
#----------------------------------------------------------
echo "cmake_minimum_required (VERSION 2.8)"
echo -e "project (WebRTCEngine)\n"

echo "set (WEBRTC_HEADERS"
find $ROOT -iname "*.h" | grep -viE $EXCLUDE | grep -viE $NO_FILES | sed $SED
echo -e ")\n" 

FILES=$(find $ROOT -regex '.*\.\(c\|cc\)$' | grep -viE $EXCLUDE | grep -viE $NO_FILES | sed $SED)
echo -e "if(CMAKE_HOST_WIN32)\nset(PLATFORM_SPECIFIC_SRC" 
echo "$FILES" | grep -E $WIN_SPECIFIC
echo ")"  
echo -e "else(CMAKE_HOST_WIN32)\nset(PLATFORM_SPECIFIC_SRC" 
echo "$FILES" | grep -E $LINUX_SPECIFIC
echo ")"  
echo -e "endif(CMAKE_HOST_WIN32)\n" 

echo -e "set(WEBRTC_SOURCES\n\${PLATFORM_SPECIFIC_SRC}" 
echo "$FILES" | grep -viE $WIN_SPECIFIC | grep -viE $LINUX_SPECIFIC 
# Some video related files audio engine depends on 
# please remove them then adding video support
echo "\${WRTC_ROOT}/src/voice_engine/voe_video_sync_impl.cc"
echo "\${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_receiver_video.cc"
echo "\${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_sender_video.cc"
# End video 
# Protobuff light src
echo "\${WRTC_ROOT}/gen/protoc_out/webrtc/audio_processing/debug.pb.cc"
echo "\${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/message_lite.cc" 
echo "\${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/stubs/common.cc"
echo "\${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/stubs/once.cc"  
echo "\${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/io/coded_stream.cc" 
echo "\${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/wire_format.cc" 
echo "\${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.cc" 
echo "\${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/io/zero_copy_stream.cc" 
echo "\${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/generated_message_util.cc" 
echo "\${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/wire_format_lite.cc" 
echo "\${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/unknown_field_set.cc" 
echo -e ")\n"  

echo "include_directories ("
find $ROOT -regex '.*\.\(h\|hpp\)$' | sed $SED | grep -viE $EXCLUDE | grep -viE $NO_FILES | sed 's/[^\/]*$//' | sort -u 
echo "\${WRTC_ROOT}/third_party/protobuf"
echo "\${WRTC_ROOT}/third_party/libyuv/include"
echo "\${WRTC_ROOT}/third_party/protobuf/src"
echo "\${WRTC_ROOT}/gen/protoc_out"
echo "\${G729INT_ROOT}"
echo "\${G729AB_ROOT}/Software/g729ab_v14"
echo -e ")\n"

echo -e "link_directories  ()\n"

运行上面脚本所生成的半成品CMAKE Build Script

cmake_minimum_required (VERSION 2.8)
project (WebRTCEngine)

set (WEBRTC_HEADERS
${WRTC_ROOT}/src/engine_configurations.h
${WRTC_ROOT}/src/system_wrappers/source/condition_variable_win.h
${WRTC_ROOT}/src/system_wrappers/source/list_no_stl.h
${WRTC_ROOT}/src/system_wrappers/source/rw_lock_win.h
${WRTC_ROOT}/src/system_wrappers/source/event_posix.h
${WRTC_ROOT}/src/system_wrappers/source/file_impl.h
${WRTC_ROOT}/src/system_wrappers/source/cpu_win.h
${WRTC_ROOT}/src/system_wrappers/source/thread_win.h
${WRTC_ROOT}/src/system_wrappers/source/critical_section_posix.h
${WRTC_ROOT}/src/system_wrappers/source/cpu_linux.h
${WRTC_ROOT}/src/system_wrappers/source/trace_win.h
${WRTC_ROOT}/src/system_wrappers/source/set_thread_name_win.h
${WRTC_ROOT}/src/system_wrappers/source/trace_impl.h
${WRTC_ROOT}/src/system_wrappers/source/rw_lock_generic.h
${WRTC_ROOT}/src/system_wrappers/source/thread_posix.h
${WRTC_ROOT}/src/system_wrappers/source/critical_section_win.h
${WRTC_ROOT}/src/system_wrappers/source/cpu_measurement_harness.h
${WRTC_ROOT}/src/system_wrappers/source/event_win.h
${WRTC_ROOT}/src/system_wrappers/source/rw_lock_posix.h
${WRTC_ROOT}/src/system_wrappers/source/trace_posix.h
${WRTC_ROOT}/src/system_wrappers/source/condition_variable_posix.h
${WRTC_ROOT}/src/system_wrappers/interface/scoped_ptr.h
${WRTC_ROOT}/src/system_wrappers/interface/critical_section_wrapper.h
${WRTC_ROOT}/src/system_wrappers/interface/sort.h
${WRTC_ROOT}/src/system_wrappers/interface/fix_interlocked_exchange_pointer_win.h
${WRTC_ROOT}/src/system_wrappers/interface/scoped_refptr.h
${WRTC_ROOT}/src/system_wrappers/interface/cpu_wrapper.h
${WRTC_ROOT}/src/system_wrappers/interface/aligned_malloc.h
${WRTC_ROOT}/src/system_wrappers/interface/rw_lock_wrapper.h
${WRTC_ROOT}/src/system_wrappers/interface/thread_wrapper.h
${WRTC_ROOT}/src/system_wrappers/interface/list_wrapper.h
${WRTC_ROOT}/src/system_wrappers/interface/trace.h
${WRTC_ROOT}/src/system_wrappers/interface/data_log_impl.h
${WRTC_ROOT}/src/system_wrappers/interface/compile_assert.h
${WRTC_ROOT}/src/system_wrappers/interface/cpu_info.h
${WRTC_ROOT}/src/system_wrappers/interface/event_wrapper.h
${WRTC_ROOT}/src/system_wrappers/interface/condition_variable_wrapper.h
${WRTC_ROOT}/src/system_wrappers/interface/atomic32.h
${WRTC_ROOT}/src/system_wrappers/interface/sleep.h
${WRTC_ROOT}/src/system_wrappers/interface/cpu_features_wrapper.h
${WRTC_ROOT}/src/system_wrappers/interface/ref_count.h
${WRTC_ROOT}/src/system_wrappers/interface/constructor_magic.h
${WRTC_ROOT}/src/system_wrappers/interface/static_instance.h
${WRTC_ROOT}/src/system_wrappers/interface/file_wrapper.h
${WRTC_ROOT}/src/system_wrappers/interface/tick_util.h
${WRTC_ROOT}/src/system_wrappers/interface/data_log_c.h
${WRTC_ROOT}/src/system_wrappers/interface/map_wrapper.h
${WRTC_ROOT}/src/system_wrappers/interface/data_log.h
${WRTC_ROOT}/src/voice_engine/statistics.h
${WRTC_ROOT}/src/voice_engine/utility.h
${WRTC_ROOT}/src/voice_engine/transmit_mixer.h
${WRTC_ROOT}/src/voice_engine/dtmf_inband.h
${WRTC_ROOT}/src/voice_engine/monitor_module.h
${WRTC_ROOT}/src/voice_engine/channel.h
${WRTC_ROOT}/src/voice_engine/voe_base_impl.h
${WRTC_ROOT}/src/voice_engine/voe_network_impl.h
${WRTC_ROOT}/src/voice_engine/voe_hardware_impl.h
${WRTC_ROOT}/src/voice_engine/voe_audio_processing_impl.h
${WRTC_ROOT}/src/voice_engine/voe_call_report_impl.h
${WRTC_ROOT}/src/voice_engine/voe_file_impl.h
${WRTC_ROOT}/src/voice_engine/include/voe_call_report.h
${WRTC_ROOT}/src/voice_engine/include/voe_rtp_rtcp.h
${WRTC_ROOT}/src/voice_engine/include/voe_encryption.h
${WRTC_ROOT}/src/voice_engine/include/mock/mock_voe_connection_observer.h
${WRTC_ROOT}/src/voice_engine/include/mock/mock_voe_observer.h
${WRTC_ROOT}/src/voice_engine/include/voe_audio_processing.h
${WRTC_ROOT}/src/voice_engine/include/voe_codec.h
${WRTC_ROOT}/src/voice_engine/include/voe_base.h
${WRTC_ROOT}/src/voice_engine/include/voe_dtmf.h
${WRTC_ROOT}/src/voice_engine/include/voe_external_media.h
${WRTC_ROOT}/src/voice_engine/include/voe_file.h
${WRTC_ROOT}/src/voice_engine/include/voe_volume_control.h
${WRTC_ROOT}/src/voice_engine/include/voe_network.h
${WRTC_ROOT}/src/voice_engine/include/voe_hardware.h
${WRTC_ROOT}/src/voice_engine/include/voe_errors.h
${WRTC_ROOT}/src/voice_engine/include/voe_neteq_stats.h
${WRTC_ROOT}/src/voice_engine/voe_encryption_impl.h
${WRTC_ROOT}/src/voice_engine/voice_engine_defines.h
${WRTC_ROOT}/src/voice_engine/voe_dtmf_impl.h
${WRTC_ROOT}/src/voice_engine/voe_external_media_impl.h
${WRTC_ROOT}/src/voice_engine/dtmf_inband_queue.h
${WRTC_ROOT}/src/voice_engine/voe_codec_impl.h
${WRTC_ROOT}/src/voice_engine/output_mixer_internal.h
${WRTC_ROOT}/src/voice_engine/voe_volume_control_impl.h
${WRTC_ROOT}/src/voice_engine/channel_manager.h
${WRTC_ROOT}/src/voice_engine/level_indicator.h
${WRTC_ROOT}/src/voice_engine/shared_data.h
${WRTC_ROOT}/src/voice_engine/voice_engine_impl.h
${WRTC_ROOT}/src/voice_engine/channel_manager_base.h
${WRTC_ROOT}/src/voice_engine/output_mixer.h
${WRTC_ROOT}/src/voice_engine/voe_neteq_stats_impl.h
${WRTC_ROOT}/src/voice_engine/voe_rtp_rtcp_impl.h
${WRTC_ROOT}/src/typedefs.h
${WRTC_ROOT}/src/common_types.h
${WRTC_ROOT}/src/common_audio/signal_processing/include/real_fft.h
${WRTC_ROOT}/src/common_audio/signal_processing/include/signal_processing_library.h
${WRTC_ROOT}/src/common_audio/signal_processing/include/spl_inl.h
${WRTC_ROOT}/src/common_audio/signal_processing/resample_by_2_internal.h
${WRTC_ROOT}/src/common_audio/vad/vad_core.h
${WRTC_ROOT}/src/common_audio/vad/vad_sp.h
${WRTC_ROOT}/src/common_audio/vad/include/webrtc_vad.h
${WRTC_ROOT}/src/common_audio/vad/vad_gmm.h
${WRTC_ROOT}/src/common_audio/vad/vad_filterbank.h
${WRTC_ROOT}/src/common_audio/resampler/include/resampler.h
${WRTC_ROOT}/src/tools/simple_command_line_parser.h
${WRTC_ROOT}/src/tools/converter/converter.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_packet_history.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_receiver.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/dtmf_queue.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/receiver_fec.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtcp_utility.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_header_extension.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_receiver_audio.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_sender.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/Bitrate.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/transmission_bucket.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_format_vp8.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/producer_fec.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtcp_receiver_help.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/forward_error_correction_internal.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtcp_sender.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_utility.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/ssrc_database.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/vp8_partition_aggregator.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_sender_audio.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtcp_receiver.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/forward_error_correction.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/fec_private_tables_random.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_rtcp_impl.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/tmmbr_help.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_rtcp_config.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/fec_private_tables_bursty.h
${WRTC_ROOT}/src/modules/rtp_rtcp/mocks/mock_rtp_rtcp.h
${WRTC_ROOT}/src/modules/rtp_rtcp/interface/rtp_rtcp.h
${WRTC_ROOT}/src/modules/rtp_rtcp/interface/rtp_rtcp_defines.h
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/overuse_detector.h
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/remote_bitrate_estimator_multi_stream.h
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/remote_rate_control.h
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/include/mock/mock_remote_bitrate_observer.h
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/include/remote_bitrate_estimator.h
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/include/bwe_defines.h
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/include/rtp_to_ntp.h
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.h
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/bitrate_estimator.h
${WRTC_ROOT}/src/modules/audio_device/dummy/audio_device_dummy.h
${WRTC_ROOT}/src/modules/audio_device/dummy/audio_device_utility_dummy.h
${WRTC_ROOT}/src/modules/audio_device/linux/audio_device_pulse_linux.h
${WRTC_ROOT}/src/modules/audio_device/linux/pulseaudiosymboltable_linux.h
${WRTC_ROOT}/src/modules/audio_device/linux/audio_mixer_manager_alsa_linux.h
${WRTC_ROOT}/src/modules/audio_device/linux/latebindingsymboltable_linux.h
${WRTC_ROOT}/src/modules/audio_device/linux/alsasymboltable_linux.h
${WRTC_ROOT}/src/modules/audio_device/linux/audio_device_alsa_linux.h
${WRTC_ROOT}/src/modules/audio_device/linux/audio_device_utility_linux.h
${WRTC_ROOT}/src/modules/audio_device/linux/audio_mixer_manager_pulse_linux.h
${WRTC_ROOT}/src/modules/audio_device/include/audio_device.h
${WRTC_ROOT}/src/modules/audio_device/include/audio_device_defines.h
${WRTC_ROOT}/src/modules/audio_device/audio_device_buffer.h
${WRTC_ROOT}/src/modules/audio_device/audio_device_impl.h
${WRTC_ROOT}/src/modules/audio_device/audio_device_utility.h
${WRTC_ROOT}/src/modules/audio_device/audio_device_config.h
${WRTC_ROOT}/src/modules/audio_device/audio_device_generic.h
${WRTC_ROOT}/src/modules/audio_device/win/audio_mixer_manager_win.h
${WRTC_ROOT}/src/modules/audio_device/win/audio_device_wave_win.h
${WRTC_ROOT}/src/modules/audio_device/win/audio_device_utility_win.h
${WRTC_ROOT}/src/modules/audio_device/win/audio_device_core_win.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/g722/include/g722_interface.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/g722/g722_enc_dec.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/g711/include/g711_interface.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/g711/g711.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/abs_quant_loop.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/refiner.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/abs_quant.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/filtered_cb_vecs.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/decoder_interpolate_lsf.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/get_sync_seq.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/init_decode.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/bw_expand.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/my_corr.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/energy_inverse.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/enh_upsample.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/decode.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/xcorr_coef.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/interpolate_samples.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/gain_dequant.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/decode_residual.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/simple_lpc_analysis.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/hp_input.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/enhancer.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/create_augmented_vec.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/lsf_to_lsp.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/sort_sq.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/lsf_to_poly.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/init_encode.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/unpack_bits.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/augmented_cb_corr.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/poly_to_lsf.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/smooth.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/cb_search_core.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/state_construct.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/gain_quant.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/cb_update_best_index.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/simple_lsf_dequant.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/defines.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/index_conv_dec.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/do_plc.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/lsf_interpolate_to_poly_dec.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/constants.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/get_lsp_poly.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/simple_lsf_quant.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/window32_w32.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/cb_mem_energy_augmentation.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/poly_to_lsp.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/vq4.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/cb_mem_energy.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/lsf_interpolate_to_poly_enc.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/state_search.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/encode.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/swap_bytes.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/cb_construct.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/lpc_encode.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/simple_interpolate_lsf.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/interface/ilbc.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/hp_output.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/interpolate.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/cb_search.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/lsp_to_lsf.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/get_cd_vec.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/frame_classify.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/chebyshev.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/split_vq.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/vq3.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/comp_corr.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/lsf_check.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/smooth_out_data.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/cb_mem_energy_calc.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/enhancer_interface.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/index_conv_enc.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/nearest_neighbor.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/pack_bits.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/encode_lpc_swb.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/crc.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/structs.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/pitch_lag_tables.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/spectrum_ar_model_tables.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/pitch_estimator.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/lpc_analysis.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/codec.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/settings.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/bandwidth_estimator.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/filterbank_tables.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/arith_routines.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/lpc_tables.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/lpc_gain_swb_tables.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/os_specific_inline.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb12_tables.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/pitch_gain_tables.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb16_tables.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/entropy_coding.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/fft.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/util/utility.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/interface/isac.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/structs.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/pitch_lag_tables.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/arith_routins.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/spectrum_ar_model_tables.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/pitch_estimator.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/filterbank_internal.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/codec.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/settings.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/bandwidth_estimator.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/filterbank_tables.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/lpc_tables.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/pitch_gain_tables.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/entropy_coding.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/lpc_masking_model.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/fft.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/interface/isacfix.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/cng/include/webrtc_cng.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/cng/cng_helpfuns.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/pcm16b/include/pcm16b.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/packet_buffer.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/delay_logging.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/automode.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/dtmf_tonegen.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/mcu.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/codec_db.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/neteq_defines.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/buffer_stats.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/mcu_dsp_common.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/dtmf_buffer.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/neteq_statistics.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/neteq_error_codes.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/dsp.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/codec_db_defines.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/interface/webrtc_neteq_internal.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/interface/webrtc_neteq.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/rtcp.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/rtp.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/dsp_helpfunctions.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_pcma.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_g729.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_g722.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_cng.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_celt.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/audio_coding_module_impl.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_pcmu.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_gsmfr.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_amr.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_isac.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_g7221.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_resampler.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_dtmf_detection.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_g7291.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_opus.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_pcm16b.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_ilbc.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_g7221c.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_speex.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_dtmf_playout.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_common_defs.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_generic_codec.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_codec_database.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_red.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_neteq.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_amrwb.h
${WRTC_ROOT}/src/modules/audio_coding/main/interface/audio_coding_module.h
${WRTC_ROOT}/src/modules/audio_coding/main/interface/audio_coding_module_typedefs.h
${WRTC_ROOT}/src/modules/audio_processing/audio_buffer.h
${WRTC_ROOT}/src/modules/audio_processing/agc/analog_agc.h
${WRTC_ROOT}/src/modules/audio_processing/agc/digital_agc.h
${WRTC_ROOT}/src/modules/audio_processing/agc/include/gain_control.h
${WRTC_ROOT}/src/modules/audio_processing/noise_suppression_impl.h
${WRTC_ROOT}/src/modules/audio_processing/audio_processing_impl.h
${WRTC_ROOT}/src/modules/audio_processing/ns/nsx_defines.h
${WRTC_ROOT}/src/modules/audio_processing/ns/ns_core.h
${WRTC_ROOT}/src/modules/audio_processing/ns/windows_private.h
${WRTC_ROOT}/src/modules/audio_processing/ns/include/noise_suppression.h
${WRTC_ROOT}/src/modules/audio_processing/ns/include/noise_suppression_x.h
${WRTC_ROOT}/src/modules/audio_processing/ns/defines.h
${WRTC_ROOT}/src/modules/audio_processing/ns/nsx_core.h
${WRTC_ROOT}/src/modules/audio_processing/gain_control_impl.h
${WRTC_ROOT}/src/modules/audio_processing/include/audio_processing.h
${WRTC_ROOT}/src/modules/audio_processing/echo_cancellation_impl.h
${WRTC_ROOT}/src/modules/audio_processing/echo_control_mobile_impl.h
${WRTC_ROOT}/src/modules/audio_processing/voice_detection_impl.h
${WRTC_ROOT}/src/modules/audio_processing/aec/aec_resampler.h
${WRTC_ROOT}/src/modules/audio_processing/aec/include/echo_cancellation.h
${WRTC_ROOT}/src/modules/audio_processing/aec/echo_cancellation_internal.h
${WRTC_ROOT}/src/modules/audio_processing/aec/aec_rdft.h
${WRTC_ROOT}/src/modules/audio_processing/aec/aec_core.h
${WRTC_ROOT}/src/modules/audio_processing/processing_component.h
${WRTC_ROOT}/src/modules/audio_processing/aecm/include/echo_control_mobile.h
${WRTC_ROOT}/src/modules/audio_processing/aecm/aecm_defines.h
${WRTC_ROOT}/src/modules/audio_processing/aecm/aecm_core.h
${WRTC_ROOT}/src/modules/audio_processing/utility/ring_buffer.h
${WRTC_ROOT}/src/modules/audio_processing/utility/delay_estimator_wrapper.h
${WRTC_ROOT}/src/modules/audio_processing/utility/delay_estimator_internal.h
${WRTC_ROOT}/src/modules/audio_processing/utility/delay_estimator.h
${WRTC_ROOT}/src/modules/audio_processing/utility/fft4g.h
${WRTC_ROOT}/src/modules/audio_processing/splitting_filter.h
${WRTC_ROOT}/src/modules/audio_processing/level_estimator_impl.h
${WRTC_ROOT}/src/modules/audio_processing/high_pass_filter_impl.h
${WRTC_ROOT}/src/modules/udp_transport/source/udp_socket_manager_posix.h
${WRTC_ROOT}/src/modules/udp_transport/source/udp_socket2_manager_windows.h
${WRTC_ROOT}/src/modules/udp_transport/source/udp_transport_impl.h
${WRTC_ROOT}/src/modules/udp_transport/source/traffic_control_windows.h
${WRTC_ROOT}/src/modules/udp_transport/source/udp_socket2_windows.h
${WRTC_ROOT}/src/modules/udp_transport/source/udp_socket_manager_wrapper.h
${WRTC_ROOT}/src/modules/udp_transport/source/udp_socket_posix.h
${WRTC_ROOT}/src/modules/udp_transport/source/udp_socket_wrapper.h
${WRTC_ROOT}/src/modules/udp_transport/interface/udp_transport.h
${WRTC_ROOT}/src/modules/bitrate_controller/include/bitrate_controller.h
${WRTC_ROOT}/src/modules/bitrate_controller/bitrate_controller_impl.h
${WRTC_ROOT}/src/modules/bitrate_controller/send_side_bandwidth_estimation.h
${WRTC_ROOT}/src/modules/audio_conference_mixer/source/time_scheduler.h
${WRTC_ROOT}/src/modules/audio_conference_mixer/source/audio_frame_manipulator.h
${WRTC_ROOT}/src/modules/audio_conference_mixer/source/audio_conference_mixer_impl.h
${WRTC_ROOT}/src/modules/audio_conference_mixer/source/memory_pool_win.h
${WRTC_ROOT}/src/modules/audio_conference_mixer/source/level_indicator.h
${WRTC_ROOT}/src/modules/audio_conference_mixer/source/memory_pool_posix.h
${WRTC_ROOT}/src/modules/audio_conference_mixer/source/memory_pool.h
${WRTC_ROOT}/src/modules/audio_conference_mixer/interface/audio_conference_mixer.h
${WRTC_ROOT}/src/modules/audio_conference_mixer/interface/audio_conference_mixer_defines.h
${WRTC_ROOT}/src/modules/interface/module_common_types.h
${WRTC_ROOT}/src/modules/interface/module.h
${WRTC_ROOT}/src/modules/utility/source/file_recorder_impl.h
${WRTC_ROOT}/src/modules/utility/source/file_player_impl.h
${WRTC_ROOT}/src/modules/utility/source/frame_scaler.h
${WRTC_ROOT}/src/modules/utility/source/rtp_dump_impl.h
${WRTC_ROOT}/src/modules/utility/source/coder.h
${WRTC_ROOT}/src/modules/utility/source/process_thread_impl.h
${WRTC_ROOT}/src/modules/utility/interface/rtp_dump.h
${WRTC_ROOT}/src/modules/utility/interface/process_thread.h
${WRTC_ROOT}/src/modules/utility/interface/audio_frame_operations.h
${WRTC_ROOT}/src/modules/utility/interface/file_player.h
${WRTC_ROOT}/src/modules/utility/interface/file_recorder.h
${WRTC_ROOT}/src/modules/media_file/source/media_file_utility.h
${WRTC_ROOT}/src/modules/media_file/source/avi_file.h
${WRTC_ROOT}/src/modules/media_file/source/media_file_impl.h
${WRTC_ROOT}/src/modules/media_file/interface/media_file_defines.h
${WRTC_ROOT}/src/modules/media_file/interface/media_file.h
)

if(CMAKE_HOST_WIN32)
set(PLATFORM_SPECIFIC_SRC
${WRTC_ROOT}/src/system_wrappers/source/atomic32_win.cc
${WRTC_ROOT}/src/system_wrappers/source/rw_lock_win.cc
${WRTC_ROOT}/src/system_wrappers/source/event_win.cc
${WRTC_ROOT}/src/system_wrappers/source/cpu_win.cc
${WRTC_ROOT}/src/system_wrappers/source/trace_win.cc
${WRTC_ROOT}/src/system_wrappers/source/thread_win.cc
${WRTC_ROOT}/src/system_wrappers/source/critical_section_win.cc
${WRTC_ROOT}/src/system_wrappers/source/condition_variable_win.cc
${WRTC_ROOT}/src/modules/audio_device/win/audio_device_utility_win.cc
${WRTC_ROOT}/src/modules/audio_device/win/audio_device_core_win.cc
${WRTC_ROOT}/src/modules/audio_device/win/audio_device_wave_win.cc
${WRTC_ROOT}/src/modules/audio_device/win/audio_mixer_manager_win.cc
${WRTC_ROOT}/src/modules/udp_transport/source/udp_socket2_windows.cc
${WRTC_ROOT}/src/modules/udp_transport/source/traffic_control_windows.cc
${WRTC_ROOT}/src/modules/udp_transport/source/udp_socket2_manager_windows.cc
)
else(CMAKE_HOST_WIN32)
set(PLATFORM_SPECIFIC_SRC
${WRTC_ROOT}/src/system_wrappers/source/trace_posix.cc
${WRTC_ROOT}/src/system_wrappers/source/cpu_linux.cc
${WRTC_ROOT}/src/system_wrappers/source/critical_section_posix.cc
${WRTC_ROOT}/src/system_wrappers/source/atomic32_posix.cc
${WRTC_ROOT}/src/system_wrappers/source/rw_lock_posix.cc
${WRTC_ROOT}/src/system_wrappers/source/thread_posix.cc
${WRTC_ROOT}/src/system_wrappers/source/condition_variable_posix.cc
${WRTC_ROOT}/src/system_wrappers/source/event_posix.cc
${WRTC_ROOT}/src/modules/audio_device/linux/audio_mixer_manager_pulse_linux.cc
${WRTC_ROOT}/src/modules/audio_device/linux/pulseaudiosymboltable_linux.cc
${WRTC_ROOT}/src/modules/audio_device/linux/latebindingsymboltable_linux.cc
${WRTC_ROOT}/src/modules/audio_device/linux/alsasymboltable_linux.cc
${WRTC_ROOT}/src/modules/audio_device/linux/audio_device_utility_linux.cc
${WRTC_ROOT}/src/modules/audio_device/linux/audio_device_alsa_linux.cc
${WRTC_ROOT}/src/modules/audio_device/linux/audio_mixer_manager_alsa_linux.cc
${WRTC_ROOT}/src/modules/audio_device/linux/audio_device_pulse_linux.cc
${WRTC_ROOT}/src/modules/udp_transport/source/udp_socket_posix.cc
${WRTC_ROOT}/src/modules/udp_transport/source/udp_socket_manager_posix.cc
)
endif(CMAKE_HOST_WIN32)

set(WEBRTC_SOURCES
${PLATFORM_SPECIFIC_SRC}
${WRTC_ROOT}/src/system_wrappers/source/list_no_stl.cc
${WRTC_ROOT}/src/system_wrappers/source/aligned_malloc.cc
${WRTC_ROOT}/src/system_wrappers/source/cpu_no_op.cc
${WRTC_ROOT}/src/system_wrappers/source/event.cc
${WRTC_ROOT}/src/system_wrappers/source/rw_lock_generic.cc
${WRTC_ROOT}/src/system_wrappers/source/thread.cc
${WRTC_ROOT}/src/system_wrappers/source/data_log.cc
${WRTC_ROOT}/src/system_wrappers/source/cpu_measurement_harness.cc
${WRTC_ROOT}/src/system_wrappers/source/cpu.cc
${WRTC_ROOT}/src/system_wrappers/source/data_log_c.cc
${WRTC_ROOT}/src/system_wrappers/source/sort.cc
${WRTC_ROOT}/src/system_wrappers/source/data_log_no_op.cc
${WRTC_ROOT}/src/system_wrappers/source/rw_lock.cc
${WRTC_ROOT}/src/system_wrappers/source/critical_section.cc
${WRTC_ROOT}/src/system_wrappers/source/trace_impl.cc
${WRTC_ROOT}/src/system_wrappers/source/map.cc
${WRTC_ROOT}/src/system_wrappers/source/condition_variable.cc
${WRTC_ROOT}/src/system_wrappers/source/sleep.cc
${WRTC_ROOT}/src/system_wrappers/source/cpu_features.cc
${WRTC_ROOT}/src/system_wrappers/source/cpu_info.cc
${WRTC_ROOT}/src/system_wrappers/source/file_impl.cc
${WRTC_ROOT}/src/voice_engine/voe_base_impl.cc
${WRTC_ROOT}/src/voice_engine/monitor_module.cc
${WRTC_ROOT}/src/voice_engine/level_indicator.cc
${WRTC_ROOT}/src/voice_engine/channel_manager.cc
${WRTC_ROOT}/src/voice_engine/voe_hardware_impl.cc
${WRTC_ROOT}/src/voice_engine/voe_external_media_impl.cc
${WRTC_ROOT}/src/voice_engine/utility.cc
${WRTC_ROOT}/src/voice_engine/transmit_mixer.cc
${WRTC_ROOT}/src/voice_engine/voice_engine_impl.cc
${WRTC_ROOT}/src/voice_engine/output_mixer_internal.cc
${WRTC_ROOT}/src/voice_engine/voe_codec_impl.cc
${WRTC_ROOT}/src/voice_engine/shared_data.cc
${WRTC_ROOT}/src/voice_engine/voe_encryption_impl.cc
${WRTC_ROOT}/src/voice_engine/voe_file_impl.cc
${WRTC_ROOT}/src/voice_engine/channel_manager_base.cc
${WRTC_ROOT}/src/voice_engine/output_mixer.cc
${WRTC_ROOT}/src/voice_engine/channel.cc
${WRTC_ROOT}/src/voice_engine/voe_neteq_stats_impl.cc
${WRTC_ROOT}/src/voice_engine/voe_call_report_impl.cc
${WRTC_ROOT}/src/voice_engine/dtmf_inband.cc
${WRTC_ROOT}/src/voice_engine/voe_rtp_rtcp_impl.cc
${WRTC_ROOT}/src/voice_engine/statistics.cc
${WRTC_ROOT}/src/voice_engine/voe_network_impl.cc
${WRTC_ROOT}/src/voice_engine/voe_volume_control_impl.cc
${WRTC_ROOT}/src/voice_engine/voe_dtmf_impl.cc
${WRTC_ROOT}/src/voice_engine/voe_audio_processing_impl.cc
${WRTC_ROOT}/src/voice_engine/dtmf_inband_queue.cc
${WRTC_ROOT}/src/common_audio/signal_processing/complex_fft.c
${WRTC_ROOT}/src/common_audio/signal_processing/filter_ma_fast_q12.c
${WRTC_ROOT}/src/common_audio/signal_processing/spl_init.c
${WRTC_ROOT}/src/common_audio/signal_processing/sqrt_of_one_minus_x_squared.c
${WRTC_ROOT}/src/common_audio/signal_processing/resample_by_2.c
${WRTC_ROOT}/src/common_audio/signal_processing/spl_sqrt.c
${WRTC_ROOT}/src/common_audio/signal_processing/dot_product_with_scale.c
${WRTC_ROOT}/src/common_audio/signal_processing/min_max_operations.c
${WRTC_ROOT}/src/common_audio/signal_processing/auto_corr_to_refl_coef.c
${WRTC_ROOT}/src/common_audio/signal_processing/cross_correlation.c
${WRTC_ROOT}/src/common_audio/signal_processing/filter_ar_fast_q12.c
${WRTC_ROOT}/src/common_audio/signal_processing/ilbc_specific_functions.c
${WRTC_ROOT}/src/common_audio/signal_processing/get_scaling_square.c
${WRTC_ROOT}/src/common_audio/signal_processing/randomization_functions.c
${WRTC_ROOT}/src/common_audio/signal_processing/levinson_durbin.c
${WRTC_ROOT}/src/common_audio/signal_processing/resample_fractional.c
${WRTC_ROOT}/src/common_audio/signal_processing/splitting_filter.c
${WRTC_ROOT}/src/common_audio/signal_processing/real_fft.c
${WRTC_ROOT}/src/common_audio/signal_processing/get_hanning_window.c
${WRTC_ROOT}/src/common_audio/signal_processing/spl_version.c
${WRTC_ROOT}/src/common_audio/signal_processing/refl_coef_to_lpc.c
${WRTC_ROOT}/src/common_audio/signal_processing/division_operations.c
${WRTC_ROOT}/src/common_audio/signal_processing/spl_sqrt_floor.c
${WRTC_ROOT}/src/common_audio/signal_processing/resample_48khz.c
${WRTC_ROOT}/src/common_audio/signal_processing/auto_correlation.c
${WRTC_ROOT}/src/common_audio/signal_processing/energy.c
${WRTC_ROOT}/src/common_audio/signal_processing/lpc_to_refl_coef.c
${WRTC_ROOT}/src/common_audio/signal_processing/copy_set_operations.c
${WRTC_ROOT}/src/common_audio/signal_processing/vector_scaling_operations.c
${WRTC_ROOT}/src/common_audio/signal_processing/resample_by_2_internal.c
${WRTC_ROOT}/src/common_audio/signal_processing/complex_bit_reverse.c
${WRTC_ROOT}/src/common_audio/signal_processing/filter_ar.c
${WRTC_ROOT}/src/common_audio/signal_processing/webrtc_fft_t_rad.c
${WRTC_ROOT}/src/common_audio/signal_processing/webrtc_fft_t_1024_8.c
${WRTC_ROOT}/src/common_audio/signal_processing/downsample_fast.c
${WRTC_ROOT}/src/common_audio/signal_processing/resample.c
${WRTC_ROOT}/src/common_audio/vad/vad_sp.c
${WRTC_ROOT}/src/common_audio/vad/vad_gmm.c
${WRTC_ROOT}/src/common_audio/vad/vad_filterbank.c
${WRTC_ROOT}/src/common_audio/vad/vad_core.c
${WRTC_ROOT}/src/common_audio/vad/webrtc_vad.c
${WRTC_ROOT}/src/common_audio/resampler/resampler.cc
${WRTC_ROOT}/src/tools/simple_command_line_parser.cc
${WRTC_ROOT}/src/tools/psnr_ssim_analyzer/psnr_ssim_analyzer.cc
${WRTC_ROOT}/src/tools/converter/converter.cc
${WRTC_ROOT}/src/tools/converter/rgba_to_i420_converter.cc
${WRTC_ROOT}/src/tools/frame_analyzer/frame_analyzer.cc
${WRTC_ROOT}/src/build/no_op.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_format_vp8.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtcp_utility.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/ssrc_database.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtcp_receiver_help.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/forward_error_correction_internal.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_utility.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/receiver_fec.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/dtmf_queue.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtcp_receiver.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/bitrate.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/transmission_bucket.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/forward_error_correction.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_receiver_audio.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_sender.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_packet_history.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/producer_fec.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_header_extension.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtcp_sender.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_receiver.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_sender_audio.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/tmmbr_help.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/vp8_partition_aggregator.cc
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/bitrate_estimator.cc
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.cc
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/rtp_to_ntp.cc
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/remote_bitrate_estimator_multi_stream.cc
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/remote_rate_control.cc
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/overuse_detector.cc
${WRTC_ROOT}/src/modules/audio_device/audio_device_utility.cc
${WRTC_ROOT}/src/modules/audio_device/audio_device_generic.cc
${WRTC_ROOT}/src/modules/audio_device/audio_device_buffer.cc
${WRTC_ROOT}/src/modules/audio_device/audio_device_impl.cc
${WRTC_ROOT}/src/modules/audio_coding/codecs/g722/g722_interface.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/g722/g722_decode.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/g722/g722_encode.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/g711/g711.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/g711/g711_interface.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/sort_sq.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/cb_mem_energy_augmentation.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/hp_input.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/decode_residual.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/cb_mem_energy.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/ilbc_decode.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/state_construct.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/my_corr.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/lsf_interpolate_to_poly_enc.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/frame_classify.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/simple_interpolate_lsf.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/simple_lsf_dequant.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/interpolate.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/poly_to_lsp.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/lsf_interpolate_to_poly_dec.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/get_lsp_poly.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/smooth_out_data.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/get_cd_vec.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/index_conv_enc.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/lsf_to_poly.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/refiner.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/bw_expand.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/gain_dequant.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/simple_lpc_analysis.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/filtered_cb_vecs.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/lsf_to_lsp.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/smooth.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/constants.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/window32_w32.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/abs_quant.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/create_augmented_vec.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/abs_quant_loop.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/pack_bits.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/hp_output.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/split_vq.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/cb_search.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/augmented_cb_corr.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/cb_construct.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/interpolate_samples.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/enh_upsample.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/state_search.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/nearest_neighbor.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/init_decode.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/swap_bytes.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/cb_update_best_index.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/init_encode.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/decoder_interpolate_lsf.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/ilbc.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/get_sync_seq.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/index_conv_dec.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/lpc_encode.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/comp_corr.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/cb_search_core.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/lsf_check.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/vq3.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/enhancer_interface.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/enhancer.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/energy_inverse.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/do_plc.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/cb_mem_energy_calc.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/simple_lsf_quant.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/lsp_to_lsf.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/unpack_bits.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/xcorr_coef.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/ilbc_encode.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/poly_to_lsf.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/chebyshev.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/gain_quant.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/vq4.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/arith_routines_hist.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/pitch_estimator.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/arith_routines_logist.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/lpc_gain_swb_tables.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/arith_routines.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/pitch_lag_tables.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/transform.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb12_tables.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/filter_functions.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/bandwidth_estimator.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/encode_lpc_swb.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/lpc_tables.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/isac.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/fft.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/spectrum_ar_model_tables.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/lattice.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/filterbank_tables.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/lpc_analysis.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/intialize.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/entropy_coding.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/crc.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/encode.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/pitch_gain_tables.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/decode.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/decode_bwe.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/pitch_filter.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb16_tables.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/filterbanks.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/util/utility.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/filters.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/arith_routines_hist.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/pitch_filter_c.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/pitch_estimator.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/arith_routines_logist.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/arith_routines.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/pitch_lag_tables.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/transform.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/lpc_masking_model.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/bandwidth_estimator.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/initialize.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/isacfix.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/lpc_tables.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/decode_plc.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/fft.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/spectrum_ar_model_tables.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/lattice.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/filterbank_tables.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/entropy_coding.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/encode.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/pitch_gain_tables.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/decode.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/lattice_c.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/decode_bwe.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/pitch_filter.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/filterbanks.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/cng/cng_helpfuns.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/cng/webrtc_cng.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/pcm16b/pcm16b.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/bgn_update.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/cng_internal.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/dsp.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/accelerate.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/rtcp.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/unmute_signal.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/set_fs.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/automode.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/normal.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/preemptive_expand.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/expand.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/mix_voice_unvoice.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/min_distortion.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/bufstats_decision.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/correlator.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/random_vector.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/signal_mcu.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/split_and_insert.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/rtp.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/dtmf_buffer.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/webrtc_neteq.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/packet_buffer.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/dsp_helpfunctions.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/recin.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/peak_detection.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/mcu_address_init.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/recout.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/dtmf_tonegen.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/mcu_dsp_common.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/mute_signal.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/merge.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/codec_db.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/mcu_reset.c
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_g7221c.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_amr.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_g729.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_dtmf_detection.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_pcmu.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_cng.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_gsmfr.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/audio_coding_module_impl.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_red.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_pcm16b.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/audio_coding_module.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_isac.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_pcma.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_celt.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_resampler.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_amrwb.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_generic_codec.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_g7291.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_opus.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_speex.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_g7221.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_codec_database.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_g722.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_ilbc.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_dtmf_playout.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_neteq.cc
${WRTC_ROOT}/src/modules/audio_processing/audio_processing_impl.cc
${WRTC_ROOT}/src/modules/audio_processing/agc/digital_agc.c
${WRTC_ROOT}/src/modules/audio_processing/agc/analog_agc.c
${WRTC_ROOT}/src/modules/audio_processing/high_pass_filter_impl.cc
${WRTC_ROOT}/src/modules/audio_processing/voice_detection_impl.cc
${WRTC_ROOT}/src/modules/audio_processing/ns/noise_suppression.c
${WRTC_ROOT}/src/modules/audio_processing/ns/nsx_core.c
${WRTC_ROOT}/src/modules/audio_processing/ns/ns_core.c
${WRTC_ROOT}/src/modules/audio_processing/ns/noise_suppression_x.c
${WRTC_ROOT}/src/modules/audio_processing/level_estimator_impl.cc
${WRTC_ROOT}/src/modules/audio_processing/echo_control_mobile_impl.cc
${WRTC_ROOT}/src/modules/audio_processing/noise_suppression_impl.cc
${WRTC_ROOT}/src/modules/audio_processing/gain_control_impl.cc
${WRTC_ROOT}/src/modules/audio_processing/echo_cancellation_impl.cc
${WRTC_ROOT}/src/modules/audio_processing/aec/echo_cancellation.c
${WRTC_ROOT}/src/modules/audio_processing/aec/aec_resampler.c
${WRTC_ROOT}/src/modules/audio_processing/aec/aec_core_sse2.c
${WRTC_ROOT}/src/modules/audio_processing/aec/aec_core.c
${WRTC_ROOT}/src/modules/audio_processing/aec/aec_rdft_sse2.c
${WRTC_ROOT}/src/modules/audio_processing/aec/aec_rdft.c
${WRTC_ROOT}/src/modules/audio_processing/audio_buffer.cc
${WRTC_ROOT}/src/modules/audio_processing/splitting_filter.cc
${WRTC_ROOT}/src/modules/audio_processing/aecm/aecm_core.c
${WRTC_ROOT}/src/modules/audio_processing/aecm/echo_control_mobile.c
${WRTC_ROOT}/src/modules/audio_processing/utility/ring_buffer.c
${WRTC_ROOT}/src/modules/audio_processing/utility/delay_estimator.c
${WRTC_ROOT}/src/modules/audio_processing/utility/fft4g.c
${WRTC_ROOT}/src/modules/audio_processing/utility/delay_estimator_wrapper.c
${WRTC_ROOT}/src/modules/audio_processing/processing_component.cc
${WRTC_ROOT}/src/modules/udp_transport/source/udp_socket_wrapper.cc
${WRTC_ROOT}/src/modules/udp_transport/source/udp_transport_impl.cc
${WRTC_ROOT}/src/modules/udp_transport/source/udp_socket_manager_wrapper.cc
${WRTC_ROOT}/src/modules/bitrate_controller/bitrate_controller_impl.cc
${WRTC_ROOT}/src/modules/bitrate_controller/send_side_bandwidth_estimation.cc
${WRTC_ROOT}/src/modules/audio_conference_mixer/source/level_indicator.cc
${WRTC_ROOT}/src/modules/audio_conference_mixer/source/audio_frame_manipulator.cc
${WRTC_ROOT}/src/modules/audio_conference_mixer/source/time_scheduler.cc
${WRTC_ROOT}/src/modules/audio_conference_mixer/source/audio_conference_mixer_impl.cc
${WRTC_ROOT}/src/modules/utility/source/frame_scaler.cc
${WRTC_ROOT}/src/modules/utility/source/coder.cc
${WRTC_ROOT}/src/modules/utility/source/audio_frame_operations.cc
${WRTC_ROOT}/src/modules/utility/source/file_recorder_impl.cc
${WRTC_ROOT}/src/modules/utility/source/rtp_dump_impl.cc
${WRTC_ROOT}/src/modules/utility/source/file_player_impl.cc
${WRTC_ROOT}/src/modules/utility/source/process_thread_impl.cc
${WRTC_ROOT}/src/modules/media_file/source/media_file_utility.cc
${WRTC_ROOT}/src/modules/media_file/source/media_file_impl.cc
${WRTC_ROOT}/src/modules/media_file/source/avi_file.cc
${WRTC_ROOT}/src/voice_engine/voe_video_sync_impl.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_receiver_video.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_sender_video.cc
${WRTC_ROOT}/gen/protoc_out/webrtc/audio_processing/debug.pb.cc
${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/message_lite.cc
${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/stubs/common.cc
${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/stubs/once.cc
${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/io/coded_stream.cc
${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/wire_format.cc
${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.cc
${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/io/zero_copy_stream.cc
${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/generated_message_util.cc
${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/wire_format_lite.cc
${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/unknown_field_set.cc
)

include_directories (
${WRTC_ROOT}/src/
${WRTC_ROOT}/src/common_audio/resampler/include/
${WRTC_ROOT}/src/common_audio/signal_processing/
${WRTC_ROOT}/src/common_audio/signal_processing/include/
${WRTC_ROOT}/src/common_audio/vad/
${WRTC_ROOT}/src/common_audio/vad/include/
${WRTC_ROOT}/src/modules/audio_coding/codecs/cng/
${WRTC_ROOT}/src/modules/audio_coding/codecs/cng/include/
${WRTC_ROOT}/src/modules/audio_coding/codecs/g711/
${WRTC_ROOT}/src/modules/audio_coding/codecs/g711/include/
${WRTC_ROOT}/src/modules/audio_coding/codecs/g722/
${WRTC_ROOT}/src/modules/audio_coding/codecs/g722/include/
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/interface/
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/interface/
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/interface/
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/util/
${WRTC_ROOT}/src/modules/audio_coding/codecs/pcm16b/include/
${WRTC_ROOT}/src/modules/audio_coding/main/interface/
${WRTC_ROOT}/src/modules/audio_coding/main/source/
${WRTC_ROOT}/src/modules/audio_coding/neteq/
${WRTC_ROOT}/src/modules/audio_coding/neteq/interface/
${WRTC_ROOT}/src/modules/audio_conference_mixer/interface/
${WRTC_ROOT}/src/modules/audio_conference_mixer/source/
${WRTC_ROOT}/src/modules/audio_device/
${WRTC_ROOT}/src/modules/audio_device/dummy/
${WRTC_ROOT}/src/modules/audio_device/include/
${WRTC_ROOT}/src/modules/audio_device/linux/
${WRTC_ROOT}/src/modules/audio_device/win/
${WRTC_ROOT}/src/modules/audio_processing/
${WRTC_ROOT}/src/modules/audio_processing/aec/
${WRTC_ROOT}/src/modules/audio_processing/aec/include/
${WRTC_ROOT}/src/modules/audio_processing/aecm/
${WRTC_ROOT}/src/modules/audio_processing/aecm/include/
${WRTC_ROOT}/src/modules/audio_processing/agc/
${WRTC_ROOT}/src/modules/audio_processing/agc/include/
${WRTC_ROOT}/src/modules/audio_processing/include/
${WRTC_ROOT}/src/modules/audio_processing/ns/
${WRTC_ROOT}/src/modules/audio_processing/ns/include/
${WRTC_ROOT}/src/modules/audio_processing/utility/
${WRTC_ROOT}/src/modules/bitrate_controller/
${WRTC_ROOT}/src/modules/bitrate_controller/include/
${WRTC_ROOT}/src/modules/interface/
${WRTC_ROOT}/src/modules/media_file/interface/
${WRTC_ROOT}/src/modules/media_file/source/
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/include/
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/include/mock/
${WRTC_ROOT}/src/modules/rtp_rtcp/interface/
${WRTC_ROOT}/src/modules/rtp_rtcp/mocks/
${WRTC_ROOT}/src/modules/rtp_rtcp/source/
${WRTC_ROOT}/src/modules/udp_transport/interface/
${WRTC_ROOT}/src/modules/udp_transport/source/
${WRTC_ROOT}/src/modules/utility/interface/
${WRTC_ROOT}/src/modules/utility/source/
${WRTC_ROOT}/src/system_wrappers/interface/
${WRTC_ROOT}/src/system_wrappers/source/
${WRTC_ROOT}/src/system_wrappers/source/spreadsortlib/
${WRTC_ROOT}/src/tools/
${WRTC_ROOT}/src/tools/converter/
${WRTC_ROOT}/src/voice_engine/
${WRTC_ROOT}/src/voice_engine/include/
${WRTC_ROOT}/src/voice_engine/include/mock/
${WRTC_ROOT}/third_party/protobuf
${WRTC_ROOT}/third_party/libyuv/include
${WRTC_ROOT}/third_party/protobuf/src
${WRTC_ROOT}/gen/protoc_out
${G729INT_ROOT}
${G729AB_ROOT}/Software/g729ab_v14
)

link_directories  ()

最终修改后的可用CMAKE Build脚本

这是对上面的文件进行手工调试后的结果,修改集中在脚本底部,加入了CPU相关参数和汇编源文件。


cmake_minimum_required (VERSION 2.8)
project (WebRTCEngine)

#enable_language(C ASM C++)

set (WEBRTC_HEADERS
${WRTC_ROOT}/src/engine_configurations.h
${WRTC_ROOT}/src/system_wrappers/source/condition_variable_win.h
${WRTC_ROOT}/src/system_wrappers/source/list_no_stl.h
${WRTC_ROOT}/src/system_wrappers/source/rw_lock_win.h
${WRTC_ROOT}/src/system_wrappers/source/event_posix.h
${WRTC_ROOT}/src/system_wrappers/source/file_impl.h
${WRTC_ROOT}/src/system_wrappers/source/cpu_win.h
${WRTC_ROOT}/src/system_wrappers/source/thread_win.h
${WRTC_ROOT}/src/system_wrappers/source/critical_section_posix.h
${WRTC_ROOT}/src/system_wrappers/source/cpu_linux.h
${WRTC_ROOT}/src/system_wrappers/source/trace_win.h
${WRTC_ROOT}/src/system_wrappers/source/set_thread_name_win.h
${WRTC_ROOT}/src/system_wrappers/source/trace_impl.h
${WRTC_ROOT}/src/system_wrappers/source/rw_lock_generic.h
${WRTC_ROOT}/src/system_wrappers/source/thread_posix.h
${WRTC_ROOT}/src/system_wrappers/source/critical_section_win.h
${WRTC_ROOT}/src/system_wrappers/source/cpu_measurement_harness.h
${WRTC_ROOT}/src/system_wrappers/source/event_win.h
${WRTC_ROOT}/src/system_wrappers/source/rw_lock_posix.h
${WRTC_ROOT}/src/system_wrappers/source/trace_posix.h
${WRTC_ROOT}/src/system_wrappers/source/condition_variable_posix.h
${WRTC_ROOT}/src/system_wrappers/interface/scoped_ptr.h
${WRTC_ROOT}/src/system_wrappers/interface/critical_section_wrapper.h
${WRTC_ROOT}/src/system_wrappers/interface/sort.h
${WRTC_ROOT}/src/system_wrappers/interface/fix_interlocked_exchange_pointer_win.h
${WRTC_ROOT}/src/system_wrappers/interface/scoped_refptr.h
${WRTC_ROOT}/src/system_wrappers/interface/cpu_wrapper.h
${WRTC_ROOT}/src/system_wrappers/interface/aligned_malloc.h
${WRTC_ROOT}/src/system_wrappers/interface/rw_lock_wrapper.h
${WRTC_ROOT}/src/system_wrappers/interface/thread_wrapper.h
${WRTC_ROOT}/src/system_wrappers/interface/list_wrapper.h
${WRTC_ROOT}/src/system_wrappers/interface/trace.h
${WRTC_ROOT}/src/system_wrappers/interface/data_log_impl.h
${WRTC_ROOT}/src/system_wrappers/interface/compile_assert.h
${WRTC_ROOT}/src/system_wrappers/interface/cpu_info.h
${WRTC_ROOT}/src/system_wrappers/interface/event_wrapper.h
${WRTC_ROOT}/src/system_wrappers/interface/condition_variable_wrapper.h
${WRTC_ROOT}/src/system_wrappers/interface/atomic32.h
${WRTC_ROOT}/src/system_wrappers/interface/sleep.h
${WRTC_ROOT}/src/system_wrappers/interface/cpu_features_wrapper.h
${WRTC_ROOT}/src/system_wrappers/interface/ref_count.h
${WRTC_ROOT}/src/system_wrappers/interface/constructor_magic.h
${WRTC_ROOT}/src/system_wrappers/interface/static_instance.h
${WRTC_ROOT}/src/system_wrappers/interface/file_wrapper.h
${WRTC_ROOT}/src/system_wrappers/interface/tick_util.h
${WRTC_ROOT}/src/system_wrappers/interface/data_log_c.h
${WRTC_ROOT}/src/system_wrappers/interface/map_wrapper.h
${WRTC_ROOT}/src/system_wrappers/interface/data_log.h
${WRTC_ROOT}/src/voice_engine/statistics.h
${WRTC_ROOT}/src/voice_engine/utility.h
${WRTC_ROOT}/src/voice_engine/level_indicator.h
${WRTC_ROOT}/src/voice_engine/transmit_mixer.h
${WRTC_ROOT}/src/voice_engine/dtmf_inband.h
${WRTC_ROOT}/src/voice_engine/monitor_module.h
${WRTC_ROOT}/src/voice_engine/channel.h
${WRTC_ROOT}/src/voice_engine/voe_base_impl.h
${WRTC_ROOT}/src/voice_engine/voe_network_impl.h
${WRTC_ROOT}/src/voice_engine/voe_hardware_impl.h
${WRTC_ROOT}/src/voice_engine/voe_audio_processing_impl.h
${WRTC_ROOT}/src/voice_engine/voe_call_report_impl.h
${WRTC_ROOT}/src/voice_engine/voe_file_impl.h
${WRTC_ROOT}/src/voice_engine/include/voe_call_report.h
${WRTC_ROOT}/src/voice_engine/include/voe_rtp_rtcp.h
${WRTC_ROOT}/src/voice_engine/include/voe_encryption.h
${WRTC_ROOT}/src/voice_engine/include/mock/mock_voe_connection_observer.h
${WRTC_ROOT}/src/voice_engine/include/mock/mock_voe_observer.h
${WRTC_ROOT}/src/voice_engine/include/voe_audio_processing.h
${WRTC_ROOT}/src/voice_engine/include/voe_codec.h
${WRTC_ROOT}/src/voice_engine/include/voe_base.h
${WRTC_ROOT}/src/voice_engine/include/voe_dtmf.h
${WRTC_ROOT}/src/voice_engine/include/voe_external_media.h
${WRTC_ROOT}/src/voice_engine/include/voe_file.h
${WRTC_ROOT}/src/voice_engine/include/voe_volume_control.h
${WRTC_ROOT}/src/voice_engine/include/voe_network.h
${WRTC_ROOT}/src/voice_engine/include/voe_hardware.h
${WRTC_ROOT}/src/voice_engine/include/voe_errors.h
${WRTC_ROOT}/src/voice_engine/include/voe_neteq_stats.h
${WRTC_ROOT}/src/voice_engine/voe_encryption_impl.h
${WRTC_ROOT}/src/voice_engine/voice_engine_defines.h
${WRTC_ROOT}/src/voice_engine/voe_dtmf_impl.h
${WRTC_ROOT}/src/voice_engine/voe_external_media_impl.h
${WRTC_ROOT}/src/voice_engine/dtmf_inband_queue.h
${WRTC_ROOT}/src/voice_engine/voe_codec_impl.h
${WRTC_ROOT}/src/voice_engine/output_mixer_internal.h
${WRTC_ROOT}/src/voice_engine/voe_volume_control_impl.h
${WRTC_ROOT}/src/voice_engine/channel_manager.h
${WRTC_ROOT}/src/voice_engine/shared_data.h
${WRTC_ROOT}/src/voice_engine/voice_engine_impl.h
${WRTC_ROOT}/src/voice_engine/channel_manager_base.h
${WRTC_ROOT}/src/voice_engine/output_mixer.h
${WRTC_ROOT}/src/voice_engine/voe_neteq_stats_impl.h
${WRTC_ROOT}/src/voice_engine/voe_rtp_rtcp_impl.h
${WRTC_ROOT}/src/typedefs.h
${WRTC_ROOT}/src/common_types.h
${WRTC_ROOT}/src/common_audio/signal_processing/include/real_fft.h
${WRTC_ROOT}/src/common_audio/signal_processing/include/spl_inl_armv7.h
${WRTC_ROOT}/src/common_audio/signal_processing/include/signal_processing_library.h
${WRTC_ROOT}/src/common_audio/signal_processing/include/spl_inl.h
${WRTC_ROOT}/src/common_audio/signal_processing/resample_by_2_internal.h
${WRTC_ROOT}/src/common_audio/vad/vad_core.h
${WRTC_ROOT}/src/common_audio/vad/vad_sp.h
${WRTC_ROOT}/src/common_audio/vad/include/webrtc_vad.h
${WRTC_ROOT}/src/common_audio/vad/vad_gmm.h
${WRTC_ROOT}/src/common_audio/vad/vad_filterbank.h
${WRTC_ROOT}/src/common_audio/resampler/include/resampler.h
${WRTC_ROOT}/src/tools/simple_command_line_parser.h
${WRTC_ROOT}/src/tools/converter/converter.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_packet_history.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_receiver.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/dtmf_queue.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/receiver_fec.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtcp_utility.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_header_extension.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_receiver_audio.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_sender.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/Bitrate.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/transmission_bucket.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_format_vp8.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/producer_fec.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtcp_receiver_help.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/forward_error_correction_internal.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtcp_sender.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_utility.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/ssrc_database.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/vp8_partition_aggregator.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_sender_audio.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtcp_receiver.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/forward_error_correction.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/fec_private_tables_random.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_rtcp_impl.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/tmmbr_help.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_rtcp_config.h
${WRTC_ROOT}/src/modules/rtp_rtcp/source/fec_private_tables_bursty.h
${WRTC_ROOT}/src/modules/rtp_rtcp/mocks/mock_rtp_rtcp.h
${WRTC_ROOT}/src/modules/rtp_rtcp/interface/rtp_rtcp.h
${WRTC_ROOT}/src/modules/rtp_rtcp/interface/rtp_rtcp_defines.h
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/overuse_detector.h
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/remote_bitrate_estimator_multi_stream.h
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/remote_rate_control.h
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/include/mock/mock_remote_bitrate_observer.h
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/include/remote_bitrate_estimator.h
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/include/bwe_defines.h
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/include/rtp_to_ntp.h
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.h
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/bitrate_estimator.h
${WRTC_ROOT}/src/modules/audio_device/dummy/audio_device_dummy.h
${WRTC_ROOT}/src/modules/audio_device/dummy/audio_device_utility_dummy.h
${WRTC_ROOT}/src/modules/audio_device/linux/audio_device_pulse_linux.h
${WRTC_ROOT}/src/modules/audio_device/linux/pulseaudiosymboltable_linux.h
${WRTC_ROOT}/src/modules/audio_device/linux/audio_mixer_manager_alsa_linux.h
${WRTC_ROOT}/src/modules/audio_device/linux/latebindingsymboltable_linux.h
${WRTC_ROOT}/src/modules/audio_device/linux/alsasymboltable_linux.h
${WRTC_ROOT}/src/modules/audio_device/linux/audio_device_alsa_linux.h
${WRTC_ROOT}/src/modules/audio_device/linux/audio_device_utility_linux.h
${WRTC_ROOT}/src/modules/audio_device/linux/audio_mixer_manager_pulse_linux.h
${WRTC_ROOT}/src/modules/audio_device/include/audio_device.h
${WRTC_ROOT}/src/modules/audio_device/include/audio_device_defines.h
${WRTC_ROOT}/src/modules/audio_device/audio_device_buffer.h
${WRTC_ROOT}/src/modules/audio_device/audio_device_impl.h
${WRTC_ROOT}/src/modules/audio_device/audio_device_utility.h
${WRTC_ROOT}/src/modules/audio_device/audio_device_config.h
${WRTC_ROOT}/src/modules/audio_device/audio_device_generic.h
${WRTC_ROOT}/src/modules/audio_device/win/audio_mixer_manager_win.h
${WRTC_ROOT}/src/modules/audio_device/win/audio_device_wave_win.h
${WRTC_ROOT}/src/modules/audio_device/win/audio_device_utility_win.h
${WRTC_ROOT}/src/modules/audio_device/win/audio_device_core_win.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/g722/include/g722_interface.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/g722/g722_enc_dec.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/g711/include/g711_interface.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/g711/g711.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/abs_quant_loop.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/refiner.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/abs_quant.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/filtered_cb_vecs.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/decoder_interpolate_lsf.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/get_sync_seq.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/init_decode.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/bw_expand.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/my_corr.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/energy_inverse.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/enh_upsample.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/decode.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/xcorr_coef.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/interpolate_samples.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/gain_dequant.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/decode_residual.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/simple_lpc_analysis.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/hp_input.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/enhancer.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/create_augmented_vec.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/lsf_to_lsp.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/sort_sq.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/lsf_to_poly.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/init_encode.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/unpack_bits.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/augmented_cb_corr.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/poly_to_lsf.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/smooth.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/cb_search_core.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/state_construct.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/gain_quant.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/cb_update_best_index.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/simple_lsf_dequant.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/defines.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/index_conv_dec.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/do_plc.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/lsf_interpolate_to_poly_dec.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/constants.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/get_lsp_poly.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/simple_lsf_quant.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/window32_w32.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/cb_mem_energy_augmentation.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/poly_to_lsp.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/vq4.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/cb_mem_energy.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/lsf_interpolate_to_poly_enc.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/state_search.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/encode.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/swap_bytes.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/cb_construct.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/lpc_encode.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/simple_interpolate_lsf.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/interface/ilbc.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/hp_output.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/interpolate.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/cb_search.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/lsp_to_lsf.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/get_cd_vec.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/frame_classify.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/chebyshev.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/split_vq.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/vq3.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/comp_corr.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/lsf_check.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/smooth_out_data.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/cb_mem_energy_calc.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/enhancer_interface.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/index_conv_enc.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/nearest_neighbor.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/pack_bits.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/encode_lpc_swb.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/crc.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/structs.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/pitch_lag_tables.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/spectrum_ar_model_tables.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/pitch_estimator.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/lpc_analysis.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/codec.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/settings.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/bandwidth_estimator.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/filterbank_tables.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/arith_routines.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/lpc_tables.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/lpc_gain_swb_tables.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/os_specific_inline.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb12_tables.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/pitch_gain_tables.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb16_tables.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/entropy_coding.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/fft.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/util/utility.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/interface/isac.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/structs.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/pitch_lag_tables.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/arith_routins.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/spectrum_ar_model_tables.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/pitch_estimator.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/filterbank_internal.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/codec.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/settings.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/bandwidth_estimator.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/filterbank_tables.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/lpc_tables.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/pitch_gain_tables.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/entropy_coding.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/lpc_masking_model.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/fft.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/interface/isacfix.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/cng/include/webrtc_cng.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/cng/cng_helpfuns.h
${WRTC_ROOT}/src/modules/audio_coding/codecs/pcm16b/include/pcm16b.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/packet_buffer.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/delay_logging.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/automode.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/dtmf_tonegen.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/mcu.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/codec_db.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/neteq_defines.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/buffer_stats.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/mcu_dsp_common.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/dtmf_buffer.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/neteq_statistics.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/neteq_error_codes.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/dsp.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/codec_db_defines.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/interface/webrtc_neteq_internal.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/interface/webrtc_neteq.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/rtcp.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/rtp.h
${WRTC_ROOT}/src/modules/audio_coding/neteq/dsp_helpfunctions.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_pcma.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_g729.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_g722.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_cng.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_celt.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/audio_coding_module_impl.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_pcmu.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_gsmfr.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_amr.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_isac.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_g7221.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_resampler.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_dtmf_detection.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_g7291.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_opus.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_pcm16b.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_ilbc.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_g7221c.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_speex.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_dtmf_playout.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_common_defs.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_generic_codec.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_codec_database.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_red.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_neteq.h
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_amrwb.h
${WRTC_ROOT}/src/modules/audio_coding/main/interface/audio_coding_module.h
${WRTC_ROOT}/src/modules/audio_coding/main/interface/audio_coding_module_typedefs.h
${WRTC_ROOT}/src/modules/audio_processing/audio_buffer.h
${WRTC_ROOT}/src/modules/audio_processing/agc/analog_agc.h
${WRTC_ROOT}/src/modules/audio_processing/agc/digital_agc.h
${WRTC_ROOT}/src/modules/audio_processing/agc/include/gain_control.h
${WRTC_ROOT}/src/modules/audio_processing/noise_suppression_impl.h
${WRTC_ROOT}/src/modules/audio_processing/audio_processing_impl.h
${WRTC_ROOT}/src/modules/audio_processing/ns/nsx_defines.h
${WRTC_ROOT}/src/modules/audio_processing/ns/ns_core.h
${WRTC_ROOT}/src/modules/audio_processing/ns/windows_private.h
${WRTC_ROOT}/src/modules/audio_processing/ns/include/noise_suppression.h
${WRTC_ROOT}/src/modules/audio_processing/ns/include/noise_suppression_x.h
${WRTC_ROOT}/src/modules/audio_processing/ns/defines.h
${WRTC_ROOT}/src/modules/audio_processing/ns/nsx_core.h
${WRTC_ROOT}/src/modules/audio_processing/gain_control_impl.h
${WRTC_ROOT}/src/modules/audio_processing/include/audio_processing.h
${WRTC_ROOT}/src/modules/audio_processing/echo_cancellation_impl.h
${WRTC_ROOT}/src/modules/audio_processing/echo_control_mobile_impl.h
${WRTC_ROOT}/src/modules/audio_processing/voice_detection_impl.h
${WRTC_ROOT}/src/modules/audio_processing/aec/aec_resampler.h
${WRTC_ROOT}/src/modules/audio_processing/aec/include/echo_cancellation.h
${WRTC_ROOT}/src/modules/audio_processing/aec/echo_cancellation_internal.h
${WRTC_ROOT}/src/modules/audio_processing/aec/aec_rdft.h
${WRTC_ROOT}/src/modules/audio_processing/aec/aec_core.h
${WRTC_ROOT}/src/modules/audio_processing/processing_component.h
${WRTC_ROOT}/src/modules/audio_processing/aecm/include/echo_control_mobile.h
${WRTC_ROOT}/src/modules/audio_processing/aecm/aecm_defines.h
${WRTC_ROOT}/src/modules/audio_processing/aecm/aecm_core.h
${WRTC_ROOT}/src/modules/audio_processing/utility/ring_buffer.h
${WRTC_ROOT}/src/modules/audio_processing/utility/delay_estimator_wrapper.h
${WRTC_ROOT}/src/modules/audio_processing/utility/delay_estimator_internal.h
${WRTC_ROOT}/src/modules/audio_processing/utility/delay_estimator.h
${WRTC_ROOT}/src/modules/audio_processing/utility/fft4g.h
${WRTC_ROOT}/src/modules/audio_processing/splitting_filter.h
${WRTC_ROOT}/src/modules/audio_processing/level_estimator_impl.h
${WRTC_ROOT}/src/modules/audio_processing/high_pass_filter_impl.h
${WRTC_ROOT}/src/modules/udp_transport/source/udp_socket_manager_posix.h
${WRTC_ROOT}/src/modules/udp_transport/source/udp_socket2_manager_windows.h
${WRTC_ROOT}/src/modules/udp_transport/source/udp_transport_impl.h
${WRTC_ROOT}/src/modules/udp_transport/source/traffic_control_windows.h
${WRTC_ROOT}/src/modules/udp_transport/source/udp_socket2_windows.h
${WRTC_ROOT}/src/modules/udp_transport/source/udp_socket_manager_wrapper.h
${WRTC_ROOT}/src/modules/udp_transport/source/udp_socket_posix.h
${WRTC_ROOT}/src/modules/udp_transport/source/udp_socket_wrapper.h
${WRTC_ROOT}/src/modules/udp_transport/interface/udp_transport.h
${WRTC_ROOT}/src/modules/bitrate_controller/include/bitrate_controller.h
${WRTC_ROOT}/src/modules/bitrate_controller/bitrate_controller_impl.h
${WRTC_ROOT}/src/modules/bitrate_controller/send_side_bandwidth_estimation.h
${WRTC_ROOT}/src/modules/audio_conference_mixer/source/time_scheduler.h
${WRTC_ROOT}/src/modules/audio_conference_mixer/source/audio_frame_manipulator.h
${WRTC_ROOT}/src/modules/audio_conference_mixer/source/audio_conference_mixer_impl.h
${WRTC_ROOT}/src/modules/audio_conference_mixer/source/memory_pool_win.h
${WRTC_ROOT}/src/modules/audio_conference_mixer/source/level_indicator.h
${WRTC_ROOT}/src/modules/audio_conference_mixer/source/memory_pool_posix.h
${WRTC_ROOT}/src/modules/audio_conference_mixer/source/memory_pool.h
${WRTC_ROOT}/src/modules/audio_conference_mixer/interface/audio_conference_mixer.h
${WRTC_ROOT}/src/modules/audio_conference_mixer/interface/audio_conference_mixer_defines.h
${WRTC_ROOT}/src/modules/interface/module_common_types.h
${WRTC_ROOT}/src/modules/interface/module.h
${WRTC_ROOT}/src/modules/utility/source/file_recorder_impl.h
${WRTC_ROOT}/src/modules/utility/source/file_player_impl.h
${WRTC_ROOT}/src/modules/utility/source/frame_scaler.h
${WRTC_ROOT}/src/modules/utility/source/rtp_dump_impl.h
${WRTC_ROOT}/src/modules/utility/source/coder.h
${WRTC_ROOT}/src/modules/utility/source/process_thread_impl.h
${WRTC_ROOT}/src/modules/utility/interface/rtp_dump.h
${WRTC_ROOT}/src/modules/utility/interface/process_thread.h
${WRTC_ROOT}/src/modules/utility/interface/audio_frame_operations.h
${WRTC_ROOT}/src/modules/utility/interface/file_player.h
${WRTC_ROOT}/src/modules/utility/interface/file_recorder.h
${WRTC_ROOT}/src/modules/media_file/source/media_file_utility.h
${WRTC_ROOT}/src/modules/media_file/source/avi_file.h
${WRTC_ROOT}/src/modules/media_file/source/media_file_impl.h
${WRTC_ROOT}/src/modules/media_file/interface/media_file_defines.h
${WRTC_ROOT}/src/modules/media_file/interface/media_file.h
)

if(CMAKE_HOST_WIN32)
set(PLATFORM_SPECIFIC_SRC
${WRTC_ROOT}/src/system_wrappers/source/atomic32_win.cc
${WRTC_ROOT}/src/system_wrappers/source/rw_lock_win.cc
${WRTC_ROOT}/src/system_wrappers/source/event_win.cc
${WRTC_ROOT}/src/system_wrappers/source/cpu_win.cc
${WRTC_ROOT}/src/system_wrappers/source/trace_win.cc
${WRTC_ROOT}/src/system_wrappers/source/thread_win.cc
${WRTC_ROOT}/src/system_wrappers/source/critical_section_win.cc
${WRTC_ROOT}/src/system_wrappers/source/condition_variable_win.cc
${WRTC_ROOT}/src/modules/audio_device/win/audio_device_utility_win.cc
${WRTC_ROOT}/src/modules/audio_device/win/audio_device_core_win.cc
${WRTC_ROOT}/src/modules/audio_device/win/audio_device_wave_win.cc
${WRTC_ROOT}/src/modules/audio_device/win/audio_mixer_manager_win.cc
${WRTC_ROOT}/src/modules/udp_transport/source/udp_socket2_windows.cc
${WRTC_ROOT}/src/modules/udp_transport/source/traffic_control_windows.cc
${WRTC_ROOT}/src/modules/udp_transport/source/udp_socket2_manager_windows.cc
)
else(CMAKE_HOST_WIN32)
set(PLATFORM_SPECIFIC_SRC
${WRTC_ROOT}/src/system_wrappers/source/trace_posix.cc
${WRTC_ROOT}/src/system_wrappers/source/cpu_linux.cc
${WRTC_ROOT}/src/system_wrappers/source/critical_section_posix.cc
${WRTC_ROOT}/src/system_wrappers/source/atomic32_posix.cc
${WRTC_ROOT}/src/system_wrappers/source/rw_lock_posix.cc
${WRTC_ROOT}/src/system_wrappers/source/thread_posix.cc
${WRTC_ROOT}/src/system_wrappers/source/condition_variable_posix.cc
${WRTC_ROOT}/src/system_wrappers/source/event_posix.cc
${WRTC_ROOT}/src/modules/audio_device/linux/audio_mixer_manager_pulse_linux.cc
${WRTC_ROOT}/src/modules/audio_device/linux/pulseaudiosymboltable_linux.cc
${WRTC_ROOT}/src/modules/audio_device/linux/latebindingsymboltable_linux.cc
${WRTC_ROOT}/src/modules/audio_device/linux/alsasymboltable_linux.cc
${WRTC_ROOT}/src/modules/audio_device/linux/audio_device_utility_linux.cc
${WRTC_ROOT}/src/modules/audio_device/linux/audio_device_alsa_linux.cc
${WRTC_ROOT}/src/modules/audio_device/linux/audio_mixer_manager_alsa_linux.cc
${WRTC_ROOT}/src/modules/audio_device/linux/audio_device_pulse_linux.cc
${WRTC_ROOT}/src/modules/udp_transport/source/udp_socket_posix.cc
${WRTC_ROOT}/src/modules/udp_transport/source/udp_socket_manager_posix.cc
)
endif(CMAKE_HOST_WIN32)

set(WEBRTC_SOURCES
${PLATFORM_SPECIFIC_SRC}
${WRTC_ROOT}/src/system_wrappers/source/list_no_stl.cc
${WRTC_ROOT}/src/system_wrappers/source/aligned_malloc.cc
${WRTC_ROOT}/src/system_wrappers/source/cpu_no_op.cc
${WRTC_ROOT}/src/system_wrappers/source/event.cc
${WRTC_ROOT}/src/system_wrappers/source/rw_lock_generic.cc
${WRTC_ROOT}/src/system_wrappers/source/thread.cc
${WRTC_ROOT}/src/system_wrappers/source/data_log.cc
${WRTC_ROOT}/src/system_wrappers/source/cpu_measurement_harness.cc
${WRTC_ROOT}/src/system_wrappers/source/cpu.cc
${WRTC_ROOT}/src/system_wrappers/source/data_log_c.cc
${WRTC_ROOT}/src/system_wrappers/source/sort.cc
${WRTC_ROOT}/src/system_wrappers/source/data_log_no_op.cc
${WRTC_ROOT}/src/system_wrappers/source/rw_lock.cc
${WRTC_ROOT}/src/system_wrappers/source/critical_section.cc
${WRTC_ROOT}/src/system_wrappers/source/trace_impl.cc
${WRTC_ROOT}/src/system_wrappers/source/map.cc
${WRTC_ROOT}/src/system_wrappers/source/condition_variable.cc
${WRTC_ROOT}/src/system_wrappers/source/sleep.cc
${WRTC_ROOT}/src/system_wrappers/source/cpu_features.cc
${WRTC_ROOT}/src/system_wrappers/source/cpu_info.cc
${WRTC_ROOT}/src/system_wrappers/source/file_impl.cc
${WRTC_ROOT}/src/voice_engine/voe_base_impl.cc
${WRTC_ROOT}/src/voice_engine/monitor_module.cc
${WRTC_ROOT}/src/voice_engine/level_indicator.cc
${WRTC_ROOT}/src/voice_engine/channel_manager.cc
${WRTC_ROOT}/src/voice_engine/voe_hardware_impl.cc
${WRTC_ROOT}/src/voice_engine/voe_external_media_impl.cc
${WRTC_ROOT}/src/voice_engine/utility.cc
${WRTC_ROOT}/src/voice_engine/transmit_mixer.cc
${WRTC_ROOT}/src/voice_engine/voice_engine_impl.cc
${WRTC_ROOT}/src/voice_engine/output_mixer_internal.cc
${WRTC_ROOT}/src/voice_engine/voe_codec_impl.cc
${WRTC_ROOT}/src/voice_engine/shared_data.cc
${WRTC_ROOT}/src/voice_engine/voe_encryption_impl.cc
${WRTC_ROOT}/src/voice_engine/voe_file_impl.cc
${WRTC_ROOT}/src/voice_engine/channel_manager_base.cc
${WRTC_ROOT}/src/voice_engine/output_mixer.cc
${WRTC_ROOT}/src/voice_engine/channel.cc
${WRTC_ROOT}/src/voice_engine/voe_neteq_stats_impl.cc
${WRTC_ROOT}/src/voice_engine/voe_call_report_impl.cc
${WRTC_ROOT}/src/voice_engine/dtmf_inband.cc
${WRTC_ROOT}/src/voice_engine/voe_rtp_rtcp_impl.cc
${WRTC_ROOT}/src/voice_engine/statistics.cc
${WRTC_ROOT}/src/voice_engine/voe_network_impl.cc
${WRTC_ROOT}/src/voice_engine/voe_volume_control_impl.cc
${WRTC_ROOT}/src/voice_engine/voe_dtmf_impl.cc
${WRTC_ROOT}/src/voice_engine/voe_audio_processing_impl.cc
${WRTC_ROOT}/src/voice_engine/dtmf_inband_queue.cc
${WRTC_ROOT}/src/common_audio/signal_processing/complex_fft.c
${WRTC_ROOT}/src/common_audio/signal_processing/filter_ma_fast_q12.c
${WRTC_ROOT}/src/common_audio/signal_processing/spl_init.c
${WRTC_ROOT}/src/common_audio/signal_processing/sqrt_of_one_minus_x_squared.c
${WRTC_ROOT}/src/common_audio/signal_processing/resample_by_2.c
${WRTC_ROOT}/src/common_audio/signal_processing/spl_sqrt.c
${WRTC_ROOT}/src/common_audio/signal_processing/dot_product_with_scale.c
${WRTC_ROOT}/src/common_audio/signal_processing/min_max_operations.c
${WRTC_ROOT}/src/common_audio/signal_processing/auto_corr_to_refl_coef.c
${WRTC_ROOT}/src/common_audio/signal_processing/cross_correlation.c
${WRTC_ROOT}/src/common_audio/signal_processing/filter_ar_fast_q12.c
${WRTC_ROOT}/src/common_audio/signal_processing/ilbc_specific_functions.c
${WRTC_ROOT}/src/common_audio/signal_processing/get_scaling_square.c
${WRTC_ROOT}/src/common_audio/signal_processing/randomization_functions.c
${WRTC_ROOT}/src/common_audio/signal_processing/levinson_durbin.c
${WRTC_ROOT}/src/common_audio/signal_processing/resample_fractional.c
${WRTC_ROOT}/src/common_audio/signal_processing/splitting_filter.c
${WRTC_ROOT}/src/common_audio/signal_processing/real_fft.c
${WRTC_ROOT}/src/common_audio/signal_processing/get_hanning_window.c
${WRTC_ROOT}/src/common_audio/signal_processing/spl_version.c
${WRTC_ROOT}/src/common_audio/signal_processing/refl_coef_to_lpc.c
${WRTC_ROOT}/src/common_audio/signal_processing/division_operations.c
${WRTC_ROOT}/src/common_audio/signal_processing/spl_sqrt_floor.c
${WRTC_ROOT}/src/common_audio/signal_processing/resample_48khz.c
${WRTC_ROOT}/src/common_audio/signal_processing/auto_correlation.c
${WRTC_ROOT}/src/common_audio/signal_processing/energy.c
${WRTC_ROOT}/src/common_audio/signal_processing/lpc_to_refl_coef.c
${WRTC_ROOT}/src/common_audio/signal_processing/copy_set_operations.c
${WRTC_ROOT}/src/common_audio/signal_processing/vector_scaling_operations.c
${WRTC_ROOT}/src/common_audio/signal_processing/resample_by_2_internal.c
${WRTC_ROOT}/src/common_audio/signal_processing/complex_bit_reverse.c
${WRTC_ROOT}/src/common_audio/signal_processing/filter_ar.c
${WRTC_ROOT}/src/common_audio/signal_processing/webrtc_fft_t_rad.c
${WRTC_ROOT}/src/common_audio/signal_processing/webrtc_fft_t_1024_8.c
${WRTC_ROOT}/src/common_audio/signal_processing/downsample_fast.c
${WRTC_ROOT}/src/common_audio/signal_processing/resample.c
${WRTC_ROOT}/src/common_audio/vad/vad_sp.c
${WRTC_ROOT}/src/common_audio/vad/vad_gmm.c
${WRTC_ROOT}/src/common_audio/vad/vad_filterbank.c
${WRTC_ROOT}/src/common_audio/vad/vad_core.c
${WRTC_ROOT}/src/common_audio/vad/webrtc_vad.c
${WRTC_ROOT}/src/common_audio/resampler/resampler.cc
${WRTC_ROOT}/src/tools/simple_command_line_parser.cc
${WRTC_ROOT}/src/tools/psnr_ssim_analyzer/psnr_ssim_analyzer.cc
${WRTC_ROOT}/src/tools/converter/converter.cc
${WRTC_ROOT}/src/tools/converter/rgba_to_i420_converter.cc
${WRTC_ROOT}/src/tools/frame_analyzer/frame_analyzer.cc
${WRTC_ROOT}/src/build/no_op.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_format_vp8.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtcp_utility.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/ssrc_database.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtcp_receiver_help.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/forward_error_correction_internal.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_utility.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/receiver_fec.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/dtmf_queue.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtcp_receiver.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/bitrate.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/transmission_bucket.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/forward_error_correction.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_receiver_audio.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_sender.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_packet_history.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/producer_fec.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_rtcp_impl.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_header_extension.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtcp_sender.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_receiver.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_sender_audio.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/tmmbr_help.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/vp8_partition_aggregator.cc
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/bitrate_estimator.cc
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/remote_bitrate_estimator_single_stream.cc
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/rtp_to_ntp.cc
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/remote_bitrate_estimator_multi_stream.cc
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/remote_rate_control.cc
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/overuse_detector.cc
${WRTC_ROOT}/src/modules/audio_device/audio_device_utility.cc
${WRTC_ROOT}/src/modules/audio_device/audio_device_generic.cc
${WRTC_ROOT}/src/modules/audio_device/audio_device_buffer.cc
${WRTC_ROOT}/src/modules/audio_device/audio_device_impl.cc
${WRTC_ROOT}/src/modules/audio_coding/codecs/g722/g722_interface.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/g722/g722_decode.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/g722/g722_encode.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/g711/g711.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/g711/g711_interface.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/sort_sq.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/cb_mem_energy_augmentation.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/hp_input.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/decode_residual.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/cb_mem_energy.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/ilbc_decode.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/state_construct.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/my_corr.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/lsf_interpolate_to_poly_enc.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/frame_classify.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/simple_interpolate_lsf.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/simple_lsf_dequant.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/interpolate.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/poly_to_lsp.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/lsf_interpolate_to_poly_dec.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/get_lsp_poly.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/smooth_out_data.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/get_cd_vec.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/index_conv_enc.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/lsf_to_poly.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/refiner.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/bw_expand.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/gain_dequant.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/simple_lpc_analysis.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/filtered_cb_vecs.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/lsf_to_lsp.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/smooth.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/constants.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/window32_w32.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/abs_quant.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/create_augmented_vec.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/abs_quant_loop.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/pack_bits.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/hp_output.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/split_vq.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/cb_search.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/augmented_cb_corr.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/cb_construct.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/interpolate_samples.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/enh_upsample.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/state_search.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/nearest_neighbor.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/init_decode.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/swap_bytes.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/cb_update_best_index.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/init_encode.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/decoder_interpolate_lsf.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/ilbc.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/get_sync_seq.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/index_conv_dec.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/lpc_encode.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/comp_corr.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/cb_search_core.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/lsf_check.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/vq3.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/enhancer_interface.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/enhancer.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/energy_inverse.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/do_plc.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/cb_mem_energy_calc.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/simple_lsf_quant.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/lsp_to_lsf.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/unpack_bits.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/xcorr_coef.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/ilbc_encode.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/poly_to_lsf.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/chebyshev.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/gain_quant.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/vq4.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/arith_routines_hist.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/pitch_estimator.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/arith_routines_logist.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/lpc_gain_swb_tables.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/arith_routines.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/pitch_lag_tables.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/transform.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb12_tables.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/filter_functions.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/bandwidth_estimator.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/encode_lpc_swb.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/lpc_tables.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/isac.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/fft.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/spectrum_ar_model_tables.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/lattice.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/filterbank_tables.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/lpc_analysis.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/intialize.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/entropy_coding.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/crc.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/encode.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/pitch_gain_tables.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/decode.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/decode_bwe.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/pitch_filter.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/lpc_shape_swb16_tables.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/filterbanks.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/util/utility.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/filters.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/arith_routines_hist.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/pitch_filter_c.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/pitch_estimator.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/arith_routines_logist.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/arith_routines.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/pitch_lag_tables.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/transform.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/lpc_masking_model.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/bandwidth_estimator.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/initialize.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/isacfix.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/lpc_tables.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/decode_plc.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/fft.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/spectrum_ar_model_tables.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/lattice.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/filterbank_tables.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/entropy_coding.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/encode.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/pitch_gain_tables.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/decode.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/lattice_c.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/decode_bwe.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/pitch_filter.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/filters_neon.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/filterbanks.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/cng/cng_helpfuns.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/cng/webrtc_cng.c
${WRTC_ROOT}/src/modules/audio_coding/codecs/pcm16b/pcm16b.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/bgn_update.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/cng_internal.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/dsp.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/accelerate.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/rtcp.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/unmute_signal.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/set_fs.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/automode.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/normal.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/preemptive_expand.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/expand.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/mix_voice_unvoice.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/min_distortion.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/bufstats_decision.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/correlator.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/random_vector.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/signal_mcu.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/split_and_insert.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/rtp.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/dtmf_buffer.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/webrtc_neteq.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/packet_buffer.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/dsp_helpfunctions.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/recin.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/peak_detection.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/mcu_address_init.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/recout.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/dtmf_tonegen.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/mcu_dsp_common.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/mute_signal.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/merge.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/codec_db.c
${WRTC_ROOT}/src/modules/audio_coding/neteq/mcu_reset.c
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_g7221c.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_amr.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_g729.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_dtmf_detection.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_pcmu.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_cng.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_gsmfr.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/audio_coding_module_impl.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_red.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_pcm16b.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/audio_coding_module.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_isac.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_pcma.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_celt.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_resampler.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_amrwb.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_generic_codec.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_g7291.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_opus.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_speex.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_g7221.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_codec_database.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_g722.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_ilbc.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_dtmf_playout.cc
${WRTC_ROOT}/src/modules/audio_coding/main/source/acm_neteq.cc
${WRTC_ROOT}/src/modules/audio_processing/audio_processing_impl.cc
${WRTC_ROOT}/src/modules/audio_processing/agc/digital_agc.c
${WRTC_ROOT}/src/modules/audio_processing/agc/analog_agc.c
${WRTC_ROOT}/src/modules/audio_processing/high_pass_filter_impl.cc
${WRTC_ROOT}/src/modules/audio_processing/voice_detection_impl.cc
${WRTC_ROOT}/src/modules/audio_processing/ns/noise_suppression.c
${WRTC_ROOT}/src/modules/audio_processing/ns/nsx_core.c
${WRTC_ROOT}/src/modules/audio_processing/ns/ns_core.c
${WRTC_ROOT}/src/modules/audio_processing/ns/noise_suppression_x.c
${WRTC_ROOT}/src/modules/audio_processing/ns/nsx_core_neon_offsets.c
${WRTC_ROOT}/src/modules/audio_processing/ns/nsx_core_neon.c
${WRTC_ROOT}/src/modules/audio_processing/level_estimator_impl.cc
${WRTC_ROOT}/src/modules/audio_processing/echo_control_mobile_impl.cc
${WRTC_ROOT}/src/modules/audio_processing/noise_suppression_impl.cc
${WRTC_ROOT}/src/modules/audio_processing/gain_control_impl.cc
${WRTC_ROOT}/src/modules/audio_processing/echo_cancellation_impl.cc
${WRTC_ROOT}/src/modules/audio_processing/aec/echo_cancellation.c
${WRTC_ROOT}/src/modules/audio_processing/aec/aec_resampler.c
#${WRTC_ROOT}/src/modules/audio_processing/aec/aec_core_sse2.c
${WRTC_ROOT}/src/modules/audio_processing/aec/aec_core.c
#${WRTC_ROOT}/src/modules/audio_processing/aec/aec_rdft_sse2.c
${WRTC_ROOT}/src/modules/audio_processing/aec/aec_rdft.c
${WRTC_ROOT}/src/modules/audio_processing/audio_buffer.cc
${WRTC_ROOT}/src/modules/audio_processing/splitting_filter.cc
${WRTC_ROOT}/src/modules/audio_processing/aecm/aecm_core.c
${WRTC_ROOT}/src/modules/audio_processing/aecm/aecm_core_neon.c
${WRTC_ROOT}/src/modules/audio_processing/aecm/echo_control_mobile.c
${WRTC_ROOT}/src/modules/audio_processing/aecm/aecm_core_neon_offsets.c
${WRTC_ROOT}/src/modules/audio_processing/utility/ring_buffer.c
${WRTC_ROOT}/src/modules/audio_processing/utility/delay_estimator.c
${WRTC_ROOT}/src/modules/audio_processing/utility/fft4g.c
${WRTC_ROOT}/src/modules/audio_processing/utility/delay_estimator_wrapper.c
${WRTC_ROOT}/src/modules/audio_processing/processing_component.cc
${WRTC_ROOT}/src/modules/udp_transport/source/udp_socket_wrapper.cc
${WRTC_ROOT}/src/modules/udp_transport/source/udp_transport_impl.cc
${WRTC_ROOT}/src/modules/udp_transport/source/udp_socket_manager_wrapper.cc
${WRTC_ROOT}/src/modules/bitrate_controller/bitrate_controller_impl.cc
${WRTC_ROOT}/src/modules/bitrate_controller/send_side_bandwidth_estimation.cc
${WRTC_ROOT}/src/modules/audio_conference_mixer/source/level_indicator2.cc
${WRTC_ROOT}/src/modules/audio_conference_mixer/source/audio_frame_manipulator.cc
${WRTC_ROOT}/src/modules/audio_conference_mixer/source/time_scheduler.cc
${WRTC_ROOT}/src/modules/audio_conference_mixer/source/audio_conference_mixer_impl.cc
${WRTC_ROOT}/src/modules/utility/source/frame_scaler.cc
${WRTC_ROOT}/src/modules/utility/source/coder.cc
${WRTC_ROOT}/src/modules/utility/source/audio_frame_operations.cc
${WRTC_ROOT}/src/modules/utility/source/file_recorder_impl.cc
${WRTC_ROOT}/src/modules/utility/source/rtp_dump_impl.cc
${WRTC_ROOT}/src/modules/utility/source/file_player_impl.cc
${WRTC_ROOT}/src/modules/utility/source/process_thread_impl.cc
${WRTC_ROOT}/src/modules/media_file/source/media_file_utility.cc
${WRTC_ROOT}/src/modules/media_file/source/media_file_impl.cc
${WRTC_ROOT}/src/modules/media_file/source/avi_file.cc
${WRTC_ROOT}/src/voice_engine/voe_video_sync_impl.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_receiver_video.cc
${WRTC_ROOT}/src/modules/rtp_rtcp/source/rtp_sender_video.cc
${WRTC_ROOT}/gen/protoc_out/webrtc/audio_processing/debug.pb.cc
${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/message_lite.cc
${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/stubs/common.cc
${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/stubs/once.cc
${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/io/coded_stream.cc
${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/wire_format.cc
${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/io/zero_copy_stream_impl_lite.cc
${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/io/zero_copy_stream.cc
${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/generated_message_util.cc
${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/wire_format_lite.cc
${WRTC_ROOT}/third_party/protobuf/src/google/protobuf/unknown_field_set.cc
${WRTC_ROOT}/src/common_audio/signal_processing/downsample_fast_neon.s
${WRTC_ROOT}/src/common_audio/signal_processing/min_max_operations_neon.s
${WRTC_ROOT}/src/common_audio/signal_processing/cross_correlation_neon.s
${WRTC_ROOT}/src/common_audio/signal_processing/vector_scaling_operations_neon.s
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/lattice_neon.S
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/lpc_masking_model_neon.S
)

include_directories (
${WRTC_ROOT}/src/
${WRTC_ROOT}/src/common_audio/resampler/include/
${WRTC_ROOT}/src/common_audio/signal_processing/
${WRTC_ROOT}/src/common_audio/signal_processing/include/
${WRTC_ROOT}/src/common_audio/vad/
${WRTC_ROOT}/src/common_audio/vad/include/
${WRTC_ROOT}/src/modules/audio_coding/codecs/cng/
${WRTC_ROOT}/src/modules/audio_coding/codecs/cng/include/
${WRTC_ROOT}/src/modules/audio_coding/codecs/g711/
${WRTC_ROOT}/src/modules/audio_coding/codecs/g711/include/
${WRTC_ROOT}/src/modules/audio_coding/codecs/g722/
${WRTC_ROOT}/src/modules/audio_coding/codecs/g722/include/
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/
${WRTC_ROOT}/src/modules/audio_coding/codecs/ilbc/interface/
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/interface/
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/fix/source/
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/interface/
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/source/
${WRTC_ROOT}/src/modules/audio_coding/codecs/isac/main/util/
${WRTC_ROOT}/src/modules/audio_coding/codecs/pcm16b/include/
${WRTC_ROOT}/src/modules/audio_coding/main/interface/
${WRTC_ROOT}/src/modules/audio_coding/main/source/
${WRTC_ROOT}/src/modules/audio_coding/neteq/
${WRTC_ROOT}/src/modules/audio_coding/neteq/interface/
${WRTC_ROOT}/src/modules/audio_conference_mixer/interface/
${WRTC_ROOT}/src/modules/audio_conference_mixer/source/
${WRTC_ROOT}/src/modules/audio_device/
${WRTC_ROOT}/src/modules/audio_device/dummy/
${WRTC_ROOT}/src/modules/audio_device/include/
${WRTC_ROOT}/src/modules/audio_device/linux/
${WRTC_ROOT}/src/modules/audio_device/win/
${WRTC_ROOT}/src/modules/audio_processing/
${WRTC_ROOT}/src/modules/audio_processing/aec/
${WRTC_ROOT}/src/modules/audio_processing/aec/include/
${WRTC_ROOT}/src/modules/audio_processing/aecm/
${WRTC_ROOT}/src/modules/audio_processing/aecm/include/
${WRTC_ROOT}/src/modules/audio_processing/agc/
${WRTC_ROOT}/src/modules/audio_processing/agc/include/
${WRTC_ROOT}/src/modules/audio_processing/include/
${WRTC_ROOT}/src/modules/audio_processing/ns/
${WRTC_ROOT}/src/modules/audio_processing/ns/include/
${WRTC_ROOT}/src/modules/audio_processing/utility/
${WRTC_ROOT}/src/modules/bitrate_controller/
${WRTC_ROOT}/src/modules/bitrate_controller/include/
${WRTC_ROOT}/src/modules/interface/
${WRTC_ROOT}/src/modules/media_file/interface/
${WRTC_ROOT}/src/modules/media_file/source/
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/include/
${WRTC_ROOT}/src/modules/remote_bitrate_estimator/include/mock/
${WRTC_ROOT}/src/modules/rtp_rtcp/interface/
${WRTC_ROOT}/src/modules/rtp_rtcp/mocks/
${WRTC_ROOT}/src/modules/rtp_rtcp/source/
${WRTC_ROOT}/src/modules/udp_transport/interface/
${WRTC_ROOT}/src/modules/udp_transport/source/
${WRTC_ROOT}/src/modules/utility/interface/
${WRTC_ROOT}/src/modules/utility/source/
${WRTC_ROOT}/src/system_wrappers/interface/
${WRTC_ROOT}/src/system_wrappers/source/
${WRTC_ROOT}/src/system_wrappers/source/spreadsortlib/
${WRTC_ROOT}/src/tools/
${WRTC_ROOT}/src/tools/converter/
${WRTC_ROOT}/src/voice_engine/
${WRTC_ROOT}/src/voice_engine/include/
${WRTC_ROOT}/src/voice_engine/include/mock/
${WRTC_ROOT}/third_party/protobuf
${WRTC_ROOT}/third_party/libyuv/include
${WRTC_ROOT}/third_party/protobuf/src
${WRTC_ROOT}/gen/protoc_out
${G729INT_ROOT}
${G729AB_ROOT}/Software/g729ab_v14
)

if(CMAKE_HOST_WIN32)
    get_filename_component(SDK_ROOT_PATH  "[HKEY_LOCAL_MACHINE\\SOFTWARE\\PACKAGE;Install_Dir]" ABSOLUTE CACHE)
    link_directories(${SDK_ROOT_PATH})
    set(PLATFORM_SPECIFIC_LIBS
        msdmo
        dmoguids
        wmcodecdspuuid
        amstrmid
    )
    set(PLATFORM_SPECIFIC_DEFINITIONS
        -D_WINDOWS
        -DWIN32
        -DUSE_WINSOCK2
        -DWIN32_LEAN_AND_MEAN
        -DNOMINMAX
    )
else(CMAKE_HOST_WIN32)
    link_directories  ()
    set(PLATFORM_SPECIFIC_DEFINITIONS
        -DWEBRTC_LINUX
        -DWEBRTC_THREAD_RR
        -DLINUX_PULSE
        -DLINUX_ALSA
        -march=armv7-a
            -DWEBRTC_ARCH_ARM
            -DWEBRTC_ARCH_ARM_NEON
        -DWEBRTC_ARCH_ARM_V7A
        -mfpu=neon
    #   -mfpu=vfpv3-d16
            -flax-vector-conversions
        -mfloat-abi=softfp
#       -msse2
    )
endif(CMAKE_HOST_WIN32)

add_definitions (
    ${COMMON_DEFINITIONS}
    ${PLATFORM_SPECIFIC_DEFINITIONS}
    -DWEBRTC_TARGET_PC
    -DWEBRTC_NS_FLOAT
    -DNETEQ_VOICEENGINE_CODECS
    -DWEBRTC_DTMF_DETECTION
    -DWEBRTC_SVNREVISION="n/a"
#   -DWEBRTC_SRTP
    -DWEBRTC_CODEC_G729
#   -DNETEQ_G729_CODEC
#   -DWEBRTC_CODEC_G7291
#   -DWEBRTC_CODEC_G722
#   -DWEBRTC_CODEC_ILBC
#   -DWEBRTC_CODEC_ISAC
#   -DWEBRTC_CODEC_ISACFX
    -w
)

add_library(${WebRTCEngine_OUTPUT} ${WEBRTC_HEADERS} ${WEBRTC_SOURCES})
target_link_libraries (${WebRTCEngine_OUTPUT} ${PLATFORM_SPECIFIC_LIBS} ${G729AB_OUTPUT} dl rt)
]]>
迅速提升使用VIM幸福感的三招 2014-06-10T00:00:00+00:00 Jim http://blog.sevenche.com/2014/06/Private-Tips-to-Help-You-Using-vim 引言

很多时候使用Vim的痛点在于有些操作总是不方便,不能流畅使用,本文是作者解决自己痛点时积累下来的,应该对其他人同样有用。 学习VIM的诀窍就是在用中学,所以您在看本文的时候最好打开VIM顺便实践一下。 由于本人需要同时使用众多的SERVER,不可能到处装插件,所以本文中所有的技巧都是VIM中自带的,不涉及插件。


第一招,文件浏览类

:pwd
:cd
:e .
:Sex
:bro ol

大多数VIM教程关注的都是文本编辑本身,所以如何方便的打开文件就被忽略了。 首先要明白VIM中有当前文件夹(CWD)的概念,默认是你打开VIM时所在的文件夹。你可以用与Linux一样的:pwd查看, 接下来你可以:cd到其他文件夹,再接下来就可以用:e . (:edit .)来浏览当前目录,vim会在一个新window中打开目录,你还可以进行查看父目录,排序等各种操作。这里顺便提一下用vim也可以打开各种压缩文件来查看目录结构。

上面的方式可以让你切换目录并打开文件。由于vim支持通过多窗口和多Tab同时编辑多个文件,假如你要不停的修改两个目录下的不同文件,那么用上面的方式不停的切换当前目录也是不方便的,是时候就轮到:Sex(或者:Sex!)了,它直接在新window中打开当前文件(而不是CWD)所在的目录,这样可你让你方便的浏览不同的目录。

同样是浏览目录,如果你用的是GUI版的vim,比如Windows版的GVIM,这时可以用:bro e (:browse explore)指令打开操作系统如Windows的文件浏览器。

最后一个快速打开文件的方法就是从编辑过的文件历史中选择,指令:bro ol(:browse old)可以打开编辑历史供你选择要打开的文件。

上面:Sex方式打开的文件是在一个Window里,如果你想在一个单独的Tab里编辑文件又该怎么办呢?ctrol + w T可以将当前的Window移动到一个新的Tab里。

第二招,查看历史类

使用vim时需要键入不少的指令,有些还相当的复杂,比如查找替换时用的正则表达式,上面提到过的历史编辑文件等。复用那些之前的指令可以大幅提升效率,各类常用查看历史的指令罗列如下:

q/            查看搜索历史
q:            查看和执行历史指令,不可修改
:+up/down     查看指令历史,可修改       
:reg          查看剪贴板和宏历史
:marks        查看所有mark过的位置

第三招,另类搜索

当一个patten的match太多的时候,用n在match中跳跃也比较费眼,这种情况我一般用:vimgrep,它可以把所有匹配显示在一个quickhelp窗口,然后你可以用:cn :cp等在结果中跳跃(也可用鼠标)。如果如果不需要跳转的话可以简单的键入:g /patten也会新开一个窗口并列出所有匹配。


:vimgrep patten %   %指当前文件名
:copen 
:cn
:cp
:g /pattern

其它提升幸福感的方法

  1. 使用Ctrl+c替代ESC。这是因为在Vi发明的时代ESC其实是在CapsLK的位置的,习惯Ctrl+c后会发现更幸福。
  2. 安装中文帮助文档,提升阅读文档的幸福感。
  3. 学习使用Shift键,比如H J K L M I A O等提升操作的流畅性。

觉得本文还过得去的话,别忘了回到主页顺便看看作者的其它原创文章哟?

]]>
醉过方知酒浓,爱过方知情重-乱弹VIM与《红楼梦》 2014-05-24T00:00:00+00:00 Jim http://blog.sevenche.com/2014/05/HongLouMeng-vim 最近两个月都在过着有些不正常的生活。常常晚上11点后回到家,然后还要给国外开发团队发邮件,然后第二天一早起来先开电脑,再洗漱,再读邮件,再吃饭。在这种单调的生活中,唯一的娱乐就是在地铁时间读读《红楼梦》。《红楼梦》这书早些年尝试读过几次,当时要么是选几个热闹的地方读读,前后也连不起来,慢慢的就没了兴趣,最终都没有读下去。这次因为是用Kindle看,翻页不便,从前向后,果然竟读了下去,断断续续的读了两个多月,终于快把八十回读完了。这期间不时唏嘘感慨书中人物命运,又赞叹曹公的如椽巨笔,只将那些心酸与泪尽都藏在欢笑与荣耀之中,贵妃省亲时是何等的喜庆,偏却又是全书我看的最为心酸之处。现在想来,这一章节我十年前是无论如何读不出这个味道的。文学作品其实就是读者与主人公之间的共鸣,这才有了见山不是山或者见山是山之论。

再说VIM,第一次触是在十多年前。当时也就觉得是个难用的玩意,在05年接触Eclipse时却是极为震撼。时间变迁,VIM还那个VIM,Eclipse也还是那个Eclipse,我却慢慢发现Vim的好,甚至到了有些着迷的地步。Vim这个很多人觉得难学难用又过时的东西到底是那里好?其实它的深度与强大正是需要在使用中一点一滴的去感受,一定要先经历长时间的一段枯燥难用期,才能修成正果。正如《红楼梦》写的都是又平常又荒唐的场景,曹公既不对人生发问,也不对其作答,更不评论,就是一个个场景的描绘,似乎平谈难读,非要你不停的思考才明白其中的深意。

曲高就易和寡,好东西往往是深藏不露。Vim超高的学习曲线,《红楼梦》的伏脉千里,使得多数人见山不是山。技术与人生也相通,发现身边的美好,且行且珍稀才是正道理。

]]>
为什么要学习VIM 2014-04-19T00:00:00+00:00 Jim http://blog.sevenche.com/2014/04/Reasons-to-Learn-vim

Vim很多很多年前就接触过,但是一直就把它当成过时的一塌糊涂的玩意,没把它当回事。直到最近在Linux上的工作越来越多,又在stackoverflow上见到众多其粉丝的高度评价后才 将信将疑开始学习,结果重度沉迷其中,不可自拔,上个周末读其帮助文档读到半夜,到底是什么在吸引我呢?

一切都由快捷键实现

有没有快捷键情节可以决定一个人是否适合学习vim。以我为例,当年学photoshop时几乎学会了其全部快捷键,最近开始用visual studio,也是先花半天学习快捷键。想想看vim的命 令模式不就全是快捷键吗?默认的加上自定义的,在数量上可以轻松超过300个,再加上其快捷键可以组合使用,比如y,G,p各自是快捷键,组合起来的yyGp是将当前行复制粘贴到文件尾,这是一个何等强大的快捷键系统!

更高效的焦点移动

大多数人都不相信用键盘移动焦点会快过鼠标。这一段时间我各种编辑器混着用,总的感觉是少数情况下鼠标快,综合考虑Vim命令模式快。

功能强大

什么叫功能强大?本人用了十年的Eclipse也算的上熟练吧。Eclipse中喜欢用的快捷键有Alt加上下移动选中的行,Ctrl加上下键移动可视区域(View port)但不改变光标位置,在上次编辑位置中来回跳等。最近用的Visual Studio 2010中有个用绿色和黄色指示当前编辑过的行的功能,这一点我比较喜欢。但是上面这些功能在VIM这里全部都有,由此可见VIM功能之全面。个人以为仅以编辑器的功能来说vim是主流IDE的超集。

当然了这里也要客观得提一下vim在语言相关的功能上并不能全面压倒IDE,比如Java语言的静态语法错误检测,各种重构,搜索方法的调用层级,accesser自动生成等。但是动态语言的IDE并不具有上述功能(python,PHP等),此时vim占据较大优势。对于静态语言来说,当改Bug查代码为主要任务时,Vim也是非常合适的。

一次学习终身受用

在Linux中应用广泛,可跨平台到Windows, Mac,提供一致性的使用体验 。 Linux发行版中普遍包含,在服务器上调试脚本必不可少。 在Linux常用命令中普遍出现,如git,less,man需要移动和翻页时都可以用vi的方式。

入门难精通快

vim难学,主要体现在人们无法适应没有鼠标的感觉,也无法相信不用鼠标可以更快,然后采用死记硬背的方式来记快捷键,既没信心又没方法。 这里建议大家用分级学习的方法,先明确目标,然后要在用中学,万不可死记硬背。我的分级如下。

第一级是基本概念

Vim中自带了vim tutor学习教程,会指导你边学边做,学习最基本的移动,复制粘贴等,每遍30分钟左右,两三遍后这一级就过了。这时Windows的Notpad就被打败了。

第二级是高级光标移动和复制粘贴

熟练的光标移动非常重要,这一部分学好了编辑效率会直线提升,摆脱心理上对鼠标的依赖。 建议直接学习自带的帮助中的motion一章,输入:h motion即可。 复制粘贴是与选择相关的,高效的复制粘贴掌握后就可以不再依赖Notepad++之类的较高级的编辑器了。

第三级是持续改进级

不断使用,不断发掘,不断熟练。

]]>
git merge --squash and git rebase explained 2014-03-17T00:00:00+00:00 Jim http://blog.sevenche.com/2014/03/Git_merge_--squash_and_git_rebase

One advantage for Git comes from its powerful branch management capability, but it will be hard to maintain the commit history between different branches. As Linus said that Clear and Clean is important for the commit history, here in this article I am going to demonstrate how git merge --squash, git merge, and git rebase will affect the commit history.

git merge and git merge --squash

In below example I am going to merge dev3 into dev2 and dev4 by using merge with and without --squash parameter.

Initial status

merge with --squash test

git checkout dev4
git merge --squash dev3
git commit -a

git merge

We can see changed files in working directory and after commit we don't see fbcb87a and b85fcb7 in the history of dev4

Plain merge

git checkout dev2
git merge dev3

git plain merge

Now dev4 and dev2 have the same content, but we cannot see dev4 contains commits form dev3, but dev2 has the information.

Conclusion

--squash will abandon the merge history, so you will not know what was merged. Only use it when you don't want these commit history!


Rebase

git rebase acts like automatically cherrypick commits into current branch and then reapply the commits in current branch. See below example.

Before rebase

Before rebase

rebase

git checkout dev
git rebase master

After rebase

Notice: dev commit ccd4673 changed to 9d76e0b

After rebase

Conclusion

Rebase do not like merge - which will cause a commit, and from the tree you cannot see when the dev is split out and when it is merged back. - So Linus calls it is a clean for history.

]]>