我想从音频缓冲区捕获音频波形帧,我发现 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);
mEffectInterface
是effect_handle_t
,这是effect_interface_s**
。 effect_interface_s
结构(已定义here)包含许多函数指针(process
,command
,...)。加载效果时,将使用实际效果功能的指针填充这些内容。这些效果通过结构提供这些指针(在EffectVisualizer
中为 gVisualizerInterface
)。请注意,这些功能的确切位置在不同的Android版本之间可能有所不同。因此,如果您使用的是Android 4.0,则可能会在AudioFlinger.cpp(或其他位置)中找到其中的一些。
关于android - 谁将在Android中调用 “Visualizer_process”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20649217/