- 博客(9)
- 资源 (4)
- 收藏
- 关注
转载 SoundTouch音频处理库源码分析及算法提取(9)
我们都知道,当播放速度改变的时候,会带来一个副作用,那就是音调也会随着播放的速度而改变。播放速度加快,声音将升调,变得尖锐,播放速度减慢,声音将降调,变得低沉,当然这是题外之话。改变音频播放速度的方法有很多,我只针对ST变速算法的核心,也就是线性插值算法的实现。对于ST的插值算法前面已经提到。 k = (y - y0)/(y1-y0)->y=(1-k) * y0+k * y1
2015-04-29 17:22:00 706
转载 SoundTouch音频处理库源码分析及算法提取(8)
经过前面几个小节的介绍,各位想必已经对ST有个比较初步的认识。在往后的这些章节里,我将提出ST某些重要的算法以及实现。首先谈谈数字滤波器的实现。纵观整个ST的处理流程,仅仅在对声音样本进行重采样的时候可以通过bool bUseAAFilter的值来判断是否采用数字滤波器,具体在RateTransposer类成员函数processSamples中实现。// Transposes sample r
2015-04-29 17:21:47 765
转载 SoundTouch音频处理库源码分析及算法提取(7)
上一节说到TDStretch类成员函数processSamples,粗略分析了一下大概。至于流程是通过TDStretch类成员函数putsamples调用processSamples进行处理,我们不难联想到前面对于SoundTouch类成员函数putSamples的分析。TDStretch类成员函数putSamples实现如下:// Adds 'numsamples' pcs of sampl
2015-04-29 17:17:42 764
转载 SoundTouch音频处理库源码分析及算法提取(6)
TDStretch类的实现SoundTouch类成员函数putSamples(const SAMPLETYPE *samples, uint nSamples)实现如下,根据上篇的分析rate是一个比率,大于1表示速度加快,小于1表示速度减慢,对于播放速度减慢这种情况。……#ifndef PREVENT_CLICK_AT_RATE_CROSSOVER else if (rat
2015-04-29 17:16:46 1088
转载 SoundTouch音频处理库源码分析及算法提取(5)
变速类RateTransposer的实现回到SoundTouch类成员函数void SoundTouch::putSamples(const SAMPLETYPE *samples, uint nSamples)。定义一个SoundTouch类变量之后,通过简单地调用这个类函数,就可以实现音频的相关处理。分析一下他的调用形式,也很简单,第一个参数SAMPLETYPE *samples,指向一个
2015-04-29 17:14:41 787
转载 SoundTouch音频处理库源码分析及算法提取(4)
SoundTouch构造流程初始化的一点补充。在SoundTouch类构造函数中,我们留意到有这么一个函数calcEffectiveRateAndTempo()SoundTouch::SoundTouch(){ // Initialize rate transposer and tempo changer instances pRateTransposer = Ra
2015-04-29 17:12:51 1292
转载 SoundTouch音频处理库源码分析及算法提取(3)
SoundTouch音频处理库初始化流程剖析 2紧接上文《SoundTouch音频处理库初始化流程剖析》TDStretch类和基类的关系:FIFOSamplePipe -> FIFOProcessor ->TDStretchSoundTouch类成员class TDStretch *pTDStretch变量的初始化在SoundTouch的构造函数 SoundTouch::Sound
2015-04-29 17:12:34 909
转载 SoundTouch音频处理库源码分析及算法提取(2)
SoundTouch音频处理库初始化流程剖析定义一个变量SoundTouch m_SoundTouch; SoundTouch的派生关系FIFOSamplePipe->FIFOProcessor->SoundTouch (流程[1])因此首先构造基类FIFOSamplePipe,接着派生出FIFOProcessor,然后才以FIFOProcessor派生出SoundTouch。
2015-04-29 17:11:42 991
转载 SoundTouch音频处理库源码分析及算法提取(1)
SoundTouch音频处理库的使用异常简单,经过简单的编译之后,设置编译环境,以vc为例,直接在include包含SoundTouch目录下的include路径,接着在lib添加SoundTouch目录下的lib路径,然后在代码的头文件中添加头文件以及引用的库。如下:根据_DEBUG这个宏,我们可以进行一些编译预处理,假如是以DEBUG编译就采用debug库,其他的话就采用rel
2015-04-29 17:10:10 1840
iOS 12.0 DeviceSupport 12.0 Xcode
2018-11-07
live555实现H264实时流进行RTSP发送
2017-09-12
XCODE7真机调试ios9.3支持文件
2016-06-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人