从上节总的流程中可以看到,创建AudioPolicyManager的最后一步,是创建SwAudioOutputDescriptor对象,它关联了输出句柄,设备,流类型等重要信息。然后调用其open函数,open函数的流程分析如下:

在调用到AudioFlinger的openOutput_l()时,首先调用findSuitableHwDev_l查找上一步中调用loadHwModule_l加载的AudioHwDevice。如果没有module为0,则再调用loadHwModule_l重新加载
AudioHwDevice* AudioFlinger::findSuitableHwDev_l(
audio_module_handle_t module,
audio_devices_t deviceType)
{
// if module is 0, the request comes from an old policy manager and we should load
// well known modules
AutoMutex lock(mHardwareLock);
if (module == 0) {
ALOGW("findSuitableHwDev_l() loading well know audio hw modules");
for (size_t i = 0; i < arraysize(audio_interfaces); i++) {
loadHwModule_l(audio_interfaces[i]);
}
// then try to find


2813

被折叠的 条评论
为什么被折叠?



