谁将在Android中调用“Visualizer_process”

时间:2013-12-18 03:32:44

标签: android audio

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

我发现 android.media.audiofx.Visualizer 将调用 android4.0 \ frameworks \ base \ media \ libeffects中的函数 Visualizer_command(VISUALIZER_CMD_CAPTURE) \可视化

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

非常感谢!

1 个答案:

答案 0 :(得分:2)

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,...)。这些是在加载效果时用指针填充实际效果的函数。效果通过结构提供这些指针(在EffectVisualizergVisualizerInterface)。

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