Audio笔记之EffectChain::process_l

本文详细解析了AudioFlinger::EffectChain::process_l函数,涉及音频处理流程,包括判断是否处理效果、非全局效果处理逻辑、全局效果处理逻辑以及EffectModule的处理过程。重点介绍了如何根据track状态和效果链状态决定是否执行效果处理及数据转换。
摘要由CSDN通过智能技术生成
// Must be called with EffectChain::mLock locked
void AudioFlinger::EffectChain::process_l()
{
    sp<ThreadBase> thread = mThread.promote();
    if (thread == 0) {
        ALOGW("process_l(): cannot promote mixer thread");
        return;
    }
    bool isGlobalSession = (mSessionId == AUDIO_SESSION_OUTPUT_MIX) ||
            (mSessionId == AUDIO_SESSION_OUTPUT_STAGE);
    // never process effects when:
    // - on an OFFLOAD thread
    // - no more tracks are on the session and the effect tail has been rendered
    bool doProcess = (thread->type() != ThreadBase::OFFLOAD);
    //1、对于非全局effect,如果没有关联的track且tailBuffCount为0,则不使用音效
    //  每次新增激活track,都会将tailBuffCount置为MaxCount,所以当激活track
    //  数量不为0时,tailBuffCount肯定大于0,因此当有激活track存在时,一定会
    //  执行音效处理,如果没有激活track存在时,如果有关联的track,虽然调用了音效
    //  处理,但实际上输入已经经过清理了,
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值