A:一、MTK平台参考Awinic算法压缩包内提供的awinic_audio_effect_porting.patch移植完算法后,编译出现下图的报错信息:
error: invalid operands to binary expression ('const vector<audio_devices_t>' and 'audio_devices_t')
1061 | if (mStreamAttributeSource->output_devices & AUDIO_DEVICE_OUT_SPEAKER) {
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~
报错原因:在安卓15平台两个变量的定义的类型不一致,output_devices是vector<audio_devices_t>类型,而 AUDIO_DEVICE_OUT_SPEAKER是audio_devices_t枚举值,不能直接对vector和枚举值进行位运算操作
原始方案:
output_devices和AUDIO_DEVICE_OUT_SPEAKER直接进行位运算判断音频流的输出设备中是否包含扬声器
修改方案:
使用平台的函数接口 hasTargetDevice()判断当前音频流的输出设备是否包含扬声器
修改参考
/************************************* awinic add ********************************************/
//#ifdef AWINIC_EFFECT_SUPPORT
if (hasTargetDevice(mStreamAttributeSource->output_devices, AUDIO_DEVICE_OUT_SPEAKER)) {
m_awinic.is_module_enable = true;
} else {
m_awinic.is_module_enable = false;
}
//#endif
/************************************** awinic add end ******************************************/