一:AudioEffect的音效
应用程序开发中会经常使用来控制音效,它的子类包括:BassBoost,EnvironmentReverb,Equalizer,PresetReverb,Virtualizer。
AudioEffect的接口如去激活/激活等,他将调用到jni层,而JNI层会调用到C++类的AudioEffect,后者再通过接口IEffect指针指向的BpEffect代理对象跨进程调用到Server侧AudioFlinger的EffectHandler。
二:音效处理引擎
实际的处理音效是(engine),往往封装在单独的库中。在Android的Frameworks/base/media/libeffects目录下面,就有几个音效处理引擎,这些引擎主要是需要实现一些API函数,供外部调用。在Android的音效框架中,作为音效引擎的wrapper类,EffectModule调用音效引擎API。
三:音效引擎库的装载—EffectFactory
为了减少AudioFlinger与音效引擎的耦合,音效引擎库的装载于创建对应的引擎控制接口专门factoryeffect来完成,在运行的时候,会自动搜索设备上的路径“/system/lib/soundfx”下面所有的动态链接库,然后解析出对应的API符号,并将其存放在一个全局循环环形链表中,这样就得可以得到系统中所有的音效引擎库。只要遵循了API接口规范,并将生产的库文件放置在规定的路劲下即可,待续。。。。。。2014年10月31日