android - 谁将在Android中调用 “Visualizer_process”

标签 android audio

我想从音频缓冲区捕获音频波形帧,我发现 android.media.audiofx.Visualizer 可以做到这一点,但它只能返回部分和低质量的音频内容

我发现 android.media.audiofx.Visualizer 将在 android4.0 \ frameworks \ base \ media \ libeffects \ visualizer 调用函数 Visualizer_command(VISUALIZER_CMD_CAPTURE)

我发现函数 Visualizer_process 将使音频内容质量降低。我想重写 Visualizer_process ,并想找到谁将调用 Visualizer_process ,但是我无法从Android源代码中找到调用者,有人可以帮助我吗?

非常感谢!

最佳答案

AudioFlinger::PlaybackThread::threadLoop 调用 AudioFlinger::EffectChain::process_l ,后者调用 AudioFlinger::EffectModule::process ,最后调用实际效果的process函数。

如您在AudioFlinger::EffectModule::process中看到的那样

int ret = (*mEffectInterface)->process(mEffectInterface,
                                       &mConfig.inputCfg.buffer,
                                       &mConfig.outputCfg.buffer);
mEffectInterfaceeffect_handle_t,这是effect_interface_s**effect_interface_s结构(已定义here)包含许多函数指针(processcommand,...)。加载效果时,将使用实际效果功能的指针填充这些内容。这些效果通过结构提供这些指针(在EffectVisualizer中为 gVisualizerInterface )。

请注意,这些功能的确切位置在不同的Android版本之间可能有所不同。因此,如果您使用的是Android 4.0,则可能会在AudioFlinger.cpp(或其他位置)中找到其中的一些。

关于android - 谁将在Android中调用 “Visualizer_process”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20649217/

相关文章:

android - Facebook android sdk 3.0 单点登录

android - VideoView 不填充布局

ios - 按下图像按钮时添加声音

c - FFmpeg AVFrame 音频数据修改

python - Raspberry Pi 的轻量级音频播放和图像显示

javascript - 如何测试声音是否在 SoundManager2 中播放?

android - 无法在设备上运行应用程序,android

android - react native (Android): ArrayIndexOutOfBoundsException thrown when requesting for permissions

javascript - 清除 jquerymobile 应用程序的后台堆栈

iPhone 检测音量键按下。