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分析相关推荐

  1. Android自带音频均衡器MusicFx分析

    Android自带音频均衡器MusicFx分析 种种原因,我要简单分析一个Android中built-in的音频均衡器MusicFx.重点是它的默认值的来历.网上很少有文章讲了这个的除了这篇<c ...

  2. Android Audio常用音频工具和分析方法

    1. linux driver部分 使用android系统录音工具tinycap来抓取底层pcm音频. tinycap 使用方法: tinycap file.wav [-D card] [-d dev ...

  3. Android直播带货系统中如何实现二维码扫描功能

    自李佳琦的出现将直播带货成功的引向了"巅峰",为了响应众平台和用户的需求,开发Android直播带货系统成为当下的开发热潮.那么在平时的直播软件中,登录.分享.支付等场景中经常出现 ...

  4. 数据图表与分析图_史上最全最实用的数据可视化分析图表制作工具汇总

    俗话说的好:工欲善其事,必先利其器!一款好的工具可以让你事半功倍,尤其是在大数据时代,更需要强有力的工具通过使数据有意义的方式实现数据可视化,还有数据的可交互性;我们还需要跨学科的团队,而不是单个数据 ...

  5. Android 8.0 linux内核,在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序---Android8.0版本实现-对照老罗版本...

    老罗版本参见:https://blog.csdn.net/luoshengyang/article/details/6573809 在Android硬件抽象层(HAL)概要介绍和学习计划一文中,我们简 ...

  6. Android多媒体学习八:调用Android自带的音频录制程序,实现录制

    Android中有自带的音频录制程序,我们可以通过指定一个Action为MediaStore.Audio.Media.RECORD_SOUND_ACTION的Intent来 启动它就可以了.然后在on ...

  7. android8虚拟键布局,Android 虚拟按键在不同版本上的位置问题

    当 Android 手机设备进行横屏状态时,其虚拟按键的位置在不同版本上位置可能不同. 问题描述 应用里面为了实现全局的右滑返回效果而引入了一个 SwipeBack 库 (GitHub - Swipe ...

  8. android音频声调,Android自定义带拼音音调Textview

    本文实例为大家分享了Android自定义带拼音音调Textview的具体代码,供大家参考,具体内容如下 1.拼音textview,简单的为把拼音数组和汉字数组结合在一起多行显示 import andr ...

  9. Android自带语音播报+讯飞语音播报封装(直接用)

    一.Android自带的语音播报 1.查看是否支持中文,在测试的设备中打开'设置' -->找到 '语言和输入法'-->查看语音选项,是否支持中文,默认仅支持英文. 使用如下: public ...

最新文章

  1. java应用menchac_java之JUC
  2. red hat 升级 php 5.6,Centos7下编译php5.6.19出错,怎么解决?
  3. 隐藏esp_汽车一键启车主必须知道的几个“隐藏”技巧
  4. c语言密码程序返回,想程序高手求助--用C语言来编辑一个输入密码的程序
  5. App for Android (1) —— 环境搭建
  6. matlab实训心得体会,MatLab实习心得体会
  7. docker镜像启动后端口号是多少_初识Docker
  8. stata面板数据:xtserial下载问题解决
  9. el表达式设置option标签selected
  10. zynqMP LINUX 启动流程和移植
  11. android 根据宽度调整字体大小,android 字体大小 根据分辨率 自动调整
  12. UICollectionView 实现专辑封面视差滚动
  13. 拍照比“剪刀手”会泄露指纹信息,1.5米之内百分百还原。
  14. G1垃圾回收器REGION SIZE说明
  15. Boltzmann Machine玻尔兹曼机
  16. 萍乡电子工程师多少钱一个月_电子工程师月薪是多少?工资待遇及前景怎么样...
  17. 在线PDF查看器和PDF编辑器:GrapeCity Documents PDF (GcPdf)
  18. vb教材笔记_金文老师VB课程 笔记完整版.pdf
  19. linux 软件超频,TuxClocker - Linux下又一个GPU超频GUI
  20. instagram akp_如何查看您从未与之互动的Instagram帐户

热门文章

  1. Bengio亲自授课,英国皇家院士参与,这份机器学习在线课别错过丨免费
  2. Django博客系统(博客保存)
  3. Flask-RESTful之请求处理
  4. 连续数列(总和最大的连续数列)
  5. 集成学习之Bagging
  6. Linux之mkdir和rm命令选项
  7. 新视界,你好!_只愿与一人十指紧扣_新浪博客
  8. 目标检测回归损失函数简介:SmoothL1/IoU/GIoU/DIoU/CIoU Loss
  9. 机器学习模型调参指南(附代码)
  10. 编写优质代码的 6 大关键方法