audio_route学习

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

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 *

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值