Android多媒体:音效链

本文介绍了Android系统中基于音效链的多媒体处理,特别是DownMixer如何将多声道音频转换为双声道,包括DOWNMIX_TYPE_STRIP和DOWNMIX_TYPE_FOLD策略。同时,讲解了Reverberation(混响)处理,利用高低通滤波器实现声音持久化效果。此外,还涉及到了音频数据的溢出预防和音频可视化的概念。

Android有一个默认的音效实现机制,是用音效链来实现的,一个音效可以认为是一个数字滤波器,对PCM音频数据进行处理。

每个音效处理逻辑被编译成一个so库,放在system/lib/soundfx下面。


DownMixer

这个音效比较常用,就是把多声道音频给降级成双声道的。

DownMixer分为两种策略,一种是直接把左右声道之外的声道去掉,叫DOWNMIX_TYPE_STRIP;一种是把左右边的声道叠加到左右声道上,叫DOWNMIX_TYPE_FOLD。而多声道的处理分为几种:CHANNEL_MASK_QUAD_BACK,CHANNEL_MASK_QUAD_SIDE,CHANNEL_MASK_SURROUND,CHANNEL_MASK_5POINT1_BACK,CHANNEL_MASK_5POINT1_SIDE,CHANNEL_MASK_7POINT1_SIDE_BACK。

QUAD指的是Quadraphonic,四声道环绕立体声。具体的叠加就是防止溢出:

// FL + RL

pDst[0] = clamp16((pSrc[0] + pSrc[2])>> 1);

// FR + RR

pDst[1] = clamp16((pSrc[1] + pSrc[3])>> 1);

surround sound指的是前左,前右,前中,后中四路,算法如下:

centerPlusRearContrib = (pSrc[2] *MINUS_3_DB_IN_Q19_12) + (pSrc[3] * MINUS_3_DB_IN_Q19_12);

           // FL + centerPlusRearContrib

     &n

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值