Hal audio
-
第一步AudioFlinger (audioserver进程)
eg: AudioFlinger::PatchPanel::createAudioPatch
frameworks/av/services/audioflinger/PatchPanel.cpp
/system/lib/ibaudioflinger.so -
第二步libaudiohal(audioserver进程)
eg: DeviceHalHidl::createAudioPatch
Android P:
frameworks/av/media/libaudiohal/4.0/DeviceHalHidl.cpp
/system/lib/[email protected]
Android Q:
frameworks/av/media/libaudiohal/impl/DeviceHalHidl.cpp
/system/lib/[email protected] -
第三步device impl ([email protected]进程)
eg: Device::createAudioPatch
Android P:
hardware/interfaces/audio/core/all-versions/default/include/core/all-versions/default/Device.impl.h
/vendor/lib/hw/[email protected]
Android Q:
hardware/interfaces/audio/core/all-versions/default/Device.cpp
/vendor/lib/hw/[email protected] -
第四步 audio hal ([email protected]进程)
eg: audio_hw.c create_audio_patch
/vendor/lib/hw/audio.primary.xxx.so
系统上下文
audioserver和[email protected]两个进程之间调用,之间通过vndbinder通信,system分区调用vendor分区。