android8.1上musicfx,Android自带音频均衡器MusicFx分析
Android自带音频均衡器MusicFx分析
种种原因,我要简单分析一个Android中built-in的音频均衡器MusicFx。重点是它的默认值的来历。网上很少有文章讲了这个的除了这篇《com.android.musicFx设置音效流程--从app到AudioFlinger》。注:Android系统版本为4.2.2_r1。
从App到AudioFliger的终点是在android_media_AudioEffect.cpp(之前版本在是audio_media_AudioEffect.cpp)中的android_media_AudioEffect_native_getParameter()。
这里调用了AudioEffect.cpp中的getParameter().
最终进入AudioFlinger:
mIEffect->command(EFFECT_CMD_GET_PARAM, sizeof(effect_param_t) + param->psize, param, &psize, param)
前者调用到了:
status_t status = (*mEffectInterface)->command(mEffectInterface,
cmdCode,
cmdSize,
pCmdData,
replySize,
pReplyData);
这个mEffectInterface是何方神圣呢?
中间出现了断层,直接搜索EFFECT_CMD_GET_PARAM.
1.EffectBundle
2.EffectDownmix.c -> Downmix_Command
3.EffectEqualizer.cpp -> Equalizer_command
可以看到调用了Equalizer_getParameter,这个函数的原型为:
这和应用程序中的api就对应起来了,获取频段的增益是getBandLevel:
返回了pContext->pBundleContext->bandGaindB[band] * 100;
来看看这个值有谁在设置。
源码中开启Log,在应用上使能Equalizer了 就会有输出了,但是先暂停。
1) 通过查看以AudioEffect为TAG的日志,可以判断是先获取的增益参数后设置的参数。
2) 类别为Normal。
终于找到了:frameworks/av/media/libeffects/lvm/wrapper/Bundle/EffectBundle.h
上边是一个参考,真正直到作用是下面那个EQNB_5BandSoftProsets。
5段分别为:50Hz/230Hz/910Hz/4kHz/14kHz.以下是将230Hz调整为-10的实验截图:
总结:研究这个MusicFx是源于设备上扬声器在某些频段增益过高导致啪啪响声(我现在还不能使用专业的语言来形容这种现象),就准备测试使用软件EQ来解决这个问题。现在EQ的默认值也找到了,但是这终究是软件实现的,使用软件实现来解决硬件问题我觉得是很不妥当,不过我也借此机会了解了整个流程和默认值的位置。
android8.1上musicfx,Android自带音频均衡器MusicFx分析相关推荐
- Android自带音频均衡器MusicFx分析
Android自带音频均衡器MusicFx分析 种种原因,我要简单分析一个Android中built-in的音频均衡器MusicFx.重点是它的默认值的来历.网上很少有文章讲了这个的除了这篇<c ...
- Android Audio常用音频工具和分析方法
1. linux driver部分 使用android系统录音工具tinycap来抓取底层pcm音频. tinycap 使用方法: tinycap file.wav [-D card] [-d dev ...
- Android直播带货系统中如何实现二维码扫描功能
自李佳琦的出现将直播带货成功的引向了"巅峰",为了响应众平台和用户的需求,开发Android直播带货系统成为当下的开发热潮.那么在平时的直播软件中,登录.分享.支付等场景中经常出现 ...
- 数据图表与分析图_史上最全最实用的数据可视化分析图表制作工具汇总
俗话说的好:工欲善其事,必先利其器!一款好的工具可以让你事半功倍,尤其是在大数据时代,更需要强有力的工具通过使数据有意义的方式实现数据可视化,还有数据的可交互性;我们还需要跨学科的团队,而不是单个数据 ...
- Android 8.0 linux内核,在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序---Android8.0版本实现-对照老罗版本...
老罗版本参见:https://blog.csdn.net/luoshengyang/article/details/6573809 在Android硬件抽象层(HAL)概要介绍和学习计划一文中,我们简 ...
- Android多媒体学习八:调用Android自带的音频录制程序,实现录制
Android中有自带的音频录制程序,我们可以通过指定一个Action为MediaStore.Audio.Media.RECORD_SOUND_ACTION的Intent来 启动它就可以了.然后在on ...
- android8虚拟键布局,Android 虚拟按键在不同版本上的位置问题
当 Android 手机设备进行横屏状态时,其虚拟按键的位置在不同版本上位置可能不同. 问题描述 应用里面为了实现全局的右滑返回效果而引入了一个 SwipeBack 库 (GitHub - Swipe ...
- android音频声调,Android自定义带拼音音调Textview
本文实例为大家分享了Android自定义带拼音音调Textview的具体代码,供大家参考,具体内容如下 1.拼音textview,简单的为把拼音数组和汉字数组结合在一起多行显示 import andr ...
- Android自带语音播报+讯飞语音播报封装(直接用)
一.Android自带的语音播报 1.查看是否支持中文,在测试的设备中打开'设置' -->找到 '语言和输入法'-->查看语音选项,是否支持中文,默认仅支持英文. 使用如下: public ...
最新文章
- java应用menchac_java之JUC
- red hat 升级 php 5.6,Centos7下编译php5.6.19出错,怎么解决?
- 隐藏esp_汽车一键启车主必须知道的几个“隐藏”技巧
- c语言密码程序返回,想程序高手求助--用C语言来编辑一个输入密码的程序
- App for Android (1) —— 环境搭建
- matlab实训心得体会,MatLab实习心得体会
- docker镜像启动后端口号是多少_初识Docker
- stata面板数据:xtserial下载问题解决
- el表达式设置option标签selected
- zynqMP LINUX 启动流程和移植
- android 根据宽度调整字体大小,android 字体大小 根据分辨率 自动调整
- UICollectionView 实现专辑封面视差滚动
- 拍照比“剪刀手”会泄露指纹信息,1.5米之内百分百还原。
- G1垃圾回收器REGION SIZE说明
- Boltzmann Machine玻尔兹曼机
- 萍乡电子工程师多少钱一个月_电子工程师月薪是多少?工资待遇及前景怎么样...
- 在线PDF查看器和PDF编辑器:GrapeCity Documents PDF (GcPdf)
- vb教材笔记_金文老师VB课程 笔记完整版.pdf
- linux 软件超频,TuxClocker - Linux下又一个GPU超频GUI
- instagram akp_如何查看您从未与之互动的Instagram帐户