SoundTouch音频处理库源码分析及算法提取(3)

本文深入分析了SoundTouch音频处理库的初始化流程,重点探讨了TDStretch类及其针对不同CPU指令集的优化实现,包括TDStretchMMX、TDStretch3DNow和TDStretchSSE。关键算法在于TDStretch类的calcCrossCorrStereo函数,该函数根据不同CPU特性进行浮点或定点处理。在SoundTouch构造函数中,初始化了rate transposer和tempo changer实例,为后续的声音速率和节奏改变功能做准备。
摘要由CSDN通过智能技术生成

SoundTouch音频处理库源码分析及算法提取(3)

SoundTouch音频处理库初始化流程剖析 2
紧接上文《SoundTouch音频处理库初始化流程剖析》
TDStretch类和基类的关系:FIFOSamplePipe -> FIFOProcessor ->TDStretch
SoundTouch类成员class TDStretch *pTDStretch变量的初始化在SoundTouch的构造函数
SoundTouch::SoundTouch()中进行。
pTDStretch = TDStretch::newInstance();
他通过调用TDStretch类成员函数newInstance()构造,代码如下:
TDStretch * TDStretch::newInstance()
{
    uint uExtensions;

    uExtensions = detectCPUextensions();

    // Check if MMX/SSE/3DNow! instruction set extensions supported by CPU

#ifdef ALLOW_MMX
    // MMX routines available only with integer sample types
    if (uExtensions & SUPPORT_MMX)
    {
        return ::new TDStretchMMX;
    }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值