audio_route.c 是 android 提供的一个 audio route的so 库, 其位于 /system/media/audio_route 目录下。libaudioroute.so 这个动态库的主要功能有一下几点:
1.解析 /system/etc/mixer_paths.xml 配置文件
2. 对audio 的ctl 访问方式进行封装,方便提供给hardware层的audio_hw 进行调用。
mixer_paths.xml
ctl:控件配置项,用于初始化mixer。name为控件名,value为控件值
path:通路配置项,提供各种usecase选择。里面包含多个ctl的配置
数据结构
mixer_state:保存所有mixer选项的状态
struct mixer_state {
struct mixer_ctl *ctl;
unsigned int num_values;
union ctl_values old_value; //mixer的原有值,初始化时(alloc_mixer_state)从底层mixer读取获得的,audio_route_update_mixer/audio_route_update_path函数会将new保存到old
union ctl_values new_value; //临时存储mixer的最新值,用于判断是否更新。初始化(start_tag)时从xml文件中的ctl中读取
union ctl_values reset_value; //保存复位值(从xml文件中的ctl值)
};
API接口
初始化audio route
/* Initialize and free the audio routes *

本文介绍了Android系统中audio_route.c库的功能,包括解析mixin_paths.xml配置文件,封装ctl访问,以及提供一系列API接口如初始化、修改路径和ctl值等。详细阐述了数据结构和关键操作方法。
9084

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



