我想从音频缓冲区捕获音频波形帧,我发现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,,但是我找不到安卓源代码中的调用者,有人能帮我吗?
非常感谢!
发布于 2013-12-18 10:20:19
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
结构(定义的这里)包含许多函数指针(process
、command
、.)。在加载效果时,用指针填充实际效果的函数。效果通过一个结构(在EffectVisualizer
中是gVisualizerInterface
)提供这些指针。
请注意,在不同的Android版本中,这些函数的确切位置可能有所不同。因此,如果您查看Android4.0,您可能会在AudioFlinger.cpp (或其他地方)中找到其中的一些。
https://stackoverflow.com/questions/20649217
复制相似问题