摘要: 一、数字音频基础知识Fourier级数: 任何周期的波形可以分解成多个正弦波,这些正弦波的频率都是整数倍。级数中其他正线波的频率是基础频率的整数倍。基础频率称为一级谐波。 PCM: pulse code modulation,脉冲编码调制,即对波形按照固定周期频率采样。为了保证采样后数据质量,采样频率必须是样本声音最高频率的两倍,这就是Nyquist频率。样本大小: 采样后用于存储振幅级的位数,实际就是脉冲编码的阶梯数,位数越大表明精度越高,这一点学过数字逻辑电路的应该清楚。 声音强度: 波形振幅的平方。两个声音强度上的差常以分贝(db)为单位来度量, 计算公式如下: 20*log(A1/A2 阅读全文
posted @ 2013-06-07 10:48 tkppain 阅读(408) 评论(0) 推荐(0)
摘要: 什么叫时钟漂移(Wander)?时钟漂移与时钟抖动(jitter)的区别 什么叫时钟漂移(Wander)?时钟漂移与时钟抖动(jitter)的区别 所谓时钟漂移:抖动的另一种形式,工程上给出这样的解释:当抖动频率小于10Hz的时候把这样的抖动叫做漂移。抖动即在时钟信号短时间内的波动。 抖动漂移区别: 阅读全文
posted @ 2013-06-07 10:47 tkppain 阅读(5016) 评论(0) 推荐(0)
摘要: 转自:http://www.rtrash.net/win7-under-ds-ks-asio-wasapi-output-compare.html以下先利用图表做个最简单的比较win7下DS、KS、ASIO、WASAPI输出比较接下来主要介绍WASAPI的来历已经微软对声音处理的发展历程:winxp 以前的windows 一直都是使用一般DMA 来处理声音, DMA = direct memory access, 即是一般harddisk, lan card, drives 等一切取存设备的IO 机制, i386 年代的电脑大多数都是使用PIO 来处理hdd data 出入, 即是hdd 所读 阅读全文
posted @ 2013-06-07 10:44 tkppain 阅读(2127) 评论(0) 推荐(0)
摘要: 阅读全文
posted @ 2013-06-07 10:43 tkppain 阅读(133) 评论(0) 推荐(0)
摘要: 各种各样的编解码在各种领域得到广泛的应用,下面就把各种codec的压缩率进行一下比较,不正确之处望各位同行指正。Speech codec: 现主要有的speech codec有: G.711, G.723, G.726, G.729, ILBC QCELP, EVRC, AMR, SMV主要的audio codec 有: real audio, AAC, AC3, MP3, WMA, SBC等,各种编解码都有其应用的重点领域。 本文主要对speech codec相关指标进行总结: ITU 推出G.7XX系列的speech codec, 目前广泛应用的有:G.711,G.723, G.726, 阅读全文
posted @ 2013-06-07 10:42 tkppain 阅读(456) 评论(0) 推荐(0)
摘要: 丢包补偿技术(PacketLossConcealment——PLC)是iLBCCodec中非常重要的一项技术,更是VOIPCodec应用中不可缺少的组成部分。iLBC的PLC只是在解码端进行封包补偿处理。在解码端根据收到的bitstream逐帧进行解码的过程中,iLBCdecoder首先拿到每帧的bitstream要判断当前帧是否完整,如果没有问题则按照正常的iLBC解码流程重建语音信号,见《深入剖析iLBC解码器原理》;如果发生了语音封包丢失,那么就进入PLC单元进行处理。PLC主要根据前一帧的解码信息,利用基音同步重复的方法近似替代当前的丢失帧,以达到丢包补偿。一、PLCunit的几种.. 阅读全文
posted @ 2013-06-07 10:41 tkppain 阅读(415) 评论(0) 推荐(0)
摘要: 1. 解决error LNK2005: ___crtExitProcess 已经在 LIBCMTD.lib(crt0dat.obj) 中定义有的時候, 在 Debug 模式下編譯沒問題, 換到 Release 模式就發生一堆問題.典型的例子, 就是因為 c++ runtime library 設定不同, 所造成的重複定義連結錯誤.而另一個常見的例子是 專案與 library 使用不同的字元集合設定(如: 一個用 Unicode Character Set, 另一個用 Multi-Byte Character Set)這個錯誤發生原因, 有可能是1. 你 link 的 lib 使用 C++ Mu 阅读全文
posted @ 2013-06-07 10:32 tkppain 阅读(550) 评论(0) 推荐(0)
摘要: 1、用记事本或用编辑文本文件的方式打开你的项目文件,后缀为.sln第一行:把“Microsoft Visual Studio Solution File, Format Version 11.00”改为“Microsoft Visual Studio Solution File, Format Version 9.00”第二行:把“# Visual Studio 2010"改为“# Visual Studio 2005"2、打开后缀为.vcproj的工程文件,将Version="9.00"改为Version="8.00"改完后就能用v 阅读全文
posted @ 2013-06-07 10:31 tkppain 阅读(253) 评论(0) 推荐(0)
摘要: 1:依赖关系有两个元素A、B,如果元素A的变化会引起元素B的变化,则称元素B依赖(Dependency)于元素A。在类中,依赖关系有多种表现形式,如:一个类向另一个类发消息;一个类是另一个类的成员;一个类是另一个类的某个操作参数,等等。俩种设置方法:如果在一个解决方案中打开两个工程,一个是库工程,另外一个是依赖于库的一个工程,可以通过设置右键解决方案-》属性-项目依赖项,将另一个工程依赖于库工程即可,当然也可以通过在另一工程的属性中,通过设置链接依赖项和附加库目录来设置,两者效果相同注意:不要深信源代码的正确性,有可能中间也会出错,要敢于质疑别人2:概括关系概括关系(Generalizatio 阅读全文
posted @ 2013-06-07 10:30 tkppain 阅读(510) 评论(0) 推荐(0)
摘要: http://msdn.microsoft.com/zh-cn/library/ms235265(VS.80).aspx(msdn)确定您的应用程序依赖哪些 Visual C++ 库的一种方式是:查看您项目的“项目设置”对话框中的“常规”选项卡。例如,您可能看到项目使用的是 MFC 和 ATL 库。如果选择了“在动态库中使用 MFC”,则您的应用程序在运行时将依赖 MFC DLL(如 mfc80.dll)。如果您的应用程序不使用 MFC 或 ATL,它可能仍依赖 CRT 库(如果已在“项目属性”的 C/C++ 分支中的“代码生成”选项卡上为“运行时库”选择了“多线程调试 DLL (/MDd)” 阅读全文
posted @ 2013-06-07 10:29 tkppain 阅读(513) 评论(0) 推荐(0)