5、EngineBase加载音量曲线和策略 【基于Android Q 】
5.1、音量曲线
5.1.1、mVolumeGroups音量曲线加载
frameworks/av/services/audiopolicy/managerdefault/engine/common/src/EngineBase.cpp
engineConfig::ParsingResult EngineBase::loadAudioPolicyEngineConfig(){
...
auto loadVolumeGroups = [](auto &volumeConfigs, auto &volumeGroups) {
for (auto &volumeConfig : volumeConfigs) {
sp<VolumeGroup> volumeGroup = new VolumeGroup(volumeConfig.name, volumeConfig.indexMin, volumeConfig.indexMax);
/* 小编的打印 */
ALOGI("hippo id:%d, name:%s, min:%d, max:%d volumeConfig.volumeCurves:%d",
volumeGroup->getId(), volumeConfig.name.c_str(), volumeConfig.indexMin,
volumeConfig.indexMax, volumeConfig.volumeCurves.size());
volumeGroups[volumeGroup->getId()] = volumeGroup;
for (auto &configCurve : volumeConfig.volumeCurves) {
device_category deviceCat = DEVICE_CATEGORY_SPEAKER;
/* 小编的打印 */
ALOGI("APM configCurve:%s", configCurve.deviceCategory.c_str());
if (!DeviceCategoryConverter::fromString(configCurve.deviceCategory, deviceCat)) {
ALOGE("%s: Invalid %s", __FUNCTION__, configCurve.deviceCategory.c_str());
continue;
}
sp<VolumeCurve> curve = new VolumeCurve(deviceCat);
for (auto &point : configCurve.curvePoints) {
/* 小编的打印 */
ALOGI("APM index:%d, attenuationInMb:%d", point.index, point.attenuationInMb);
curve->add({
point.index, point