(19)国家知识产权局
(12)发明 专利
(10)授权公告 号
(45)授权公告日
(21)申请 号 202210792239.1
(22)申请日 2022.07.07
(65)同一申请的已公布的文献号
申请公布号 CN 114879930 A
(43)申请公布日 2022.08.09
(73)专利权人 北京麟卓信息科技有限公司
地址 100085 北京市海淀区西三 旗昌临801
号27号3层310、 312
(72)发明人 温研
(51)Int.Cl.
G06F 3/16(2006.01)
G06F 16/2455(2019.01)
(56)对比文件
CN 10732 9726 A,2017.1 1.07
CN 111930340 A,2020.1 1.13CN 111381954 A,2020.07.07
CN 107766210 A,2018.0 3.06
WO 2022017007 A1,202 2.01.27
李淑霞.基 于Android的音频系统研究与实
现. 《湖南邮电职业 技术学院学报》 .2014,第13卷
(第3期),全 文.
王峻.基于Android系统的音频架构. 《电声
技术》 .2012,(第1 1期),全文.
审查员 胡一冰
(54)发明名称
一种安卓兼容环境的音频输出优化方法
(57)摘要
本发明公开了一种安卓兼容环境的音频输
出优化方法, 通过在安卓应用播放音频时根据音
频 文 件 的 类 型 为 安 卓 应 用 获 取 或 创 建
AudioFlinger服务实例, 从而实现了为播放音乐
声音的安卓应用分配固定 的AudioFlinger服务
实例, AudioFlinger服务实例采用PulseAudio客
户端的方式将音频数据传输至PulseAudio
Server, 由PulseAudio Server完成混音操作, 因
此有效提高了安卓应用音 频输出的效率, 降低了
音频输出的延迟。
权利要求书1页 说明书5页 附图1页
CN 114879930 B
2022.09.06
CN 114879930 B
1.一种安卓兼容环境的音频输出优化方法, 其特 征在于, 包括以下步骤:
安卓应用播放音频时, 构建包含安卓应用的进程ID及线程ID的 AudioFlinger服务实
例名称, 向安卓兼容环境发送包含AudioFlinger服务实例名称的AudioFlinger服务注册请
求;
监测AudioFlinger服务注册请求, 若其中 的AudioFlinger服务实例名称未包含进程ID
及线程ID, 则令进程ID及线程ID均为特定值, 若AudioFlinger服务实例列表中存在具有相
同进程ID及线程ID的服务实例则返回该服务实例; 否则获取AudioFlinger服务实例, 将设
定的进程ID、 线程ID及AudioFlinger服务实例添加到AudioFlinger服务实例列表中; 若包
含进程ID及线程ID, 且AudioFlinger服务实例列表中存在具有相同进程ID及线程ID的服务
实例则返回该服务实例, 否则创建采用PulseAudio Client输出音频的AudioFlinger服务
实例, 将包含的进程ID、 线程ID及AudioFlinger服务实例添加到AudioFlinger服务实例列
表中; 所述AudioFlinger服务实例列表用于保存进 程ID及线程ID与AudioFlinger服务实例
之间的映射关系; 其中, 所述AudioFlinger服务实例列表用于保存进程ID及线程ID与
AudioFlinger服务实例之间的映射关系;
安卓应用创建AudioTrack时, 根据AudioTrack的类型为新建的AudioTrack关联
AudioFlinger服务实例, 实现音频 数据的输出;
所述安卓应用创建AudioTrack时, 根据AudioTrack的类型为新建的AudioTrack关联
AudioFlinger服务实例的过程为: 若AudioTrack的类型为音乐声音AUDIO_STREAM_MUSIC,
则根据进 程ID及线程ID获取AudioFlinger服务实例, 并将获取到的AudioFlinger服务实例
关联到AudioTrack, 实现音频数据的输出; 否则获取安卓兼容环境中的AudioFlinger服务
实例, 再将获取到的Audi oFlinger服务实例关联到Audi oTrack。
2.根据权利要求1所述的音频输出优化方法, 其特征在于, 所述创建采用PulseAudio
Client输出音频的AudioFlinger服务实例的过程为: 启动 新的AudioFlinger服务, 并将进
程ID及线程ID设置为该服务的成员变量; 在创建Track时创建DirectOutputThread线 程, 且
采用PulseAudi o Client API实现音频设备打开和读写操作。
3.根据权利 要求1所述的音频输出优化方法, 其特征在于, 所述AudioFlinger服务实例
列表是类 型为Map<String, IAudioFlinger>的列表, IAudioFlinger为IAudioFlinger 接口
实例, String为由进程 ID及线程 ID组成的字符串。权 利 要 求 书 1/1 页
2
CN 114879930 B
2一种安卓兼容环境的音频输出优化方 法
技术领域
[0001]本发明属于桌面操作系统上运行移动应用的开发技术领域, 具体涉及 一种安卓兼
容环境的音频输出优化方法。
背景技术
[0002]Audio是安卓系统非常重要的组成部分, 负责音频数据的采集和输出、 音频流的控
制、 音频设备的管理及音量调节等, 主要包括音频应用框架 (Audio Application
Framework) 、 音频本地框架 (Audio Native Framework) 、 音频服务 (Audio Services) 和音
频硬件抽象层 (Audio HAL) 。 此外, 与 Audio 强相关的有 MultiMedia, MultiMedia 负责音
视频的编解码, MultiMe dia 将解码后的数据通过 AudioTrack 输出, 而 AudioRecord 采
集的录音数据交由 MultiMedia 进行编码。
[0003]一般情况下, 安卓系统中安卓应用播放音频可采用MediaPlayer 和 AudioTrack。
其中, MediaPlayer支持播放多种格式的音源, 如: mp3、 flac、 wma、 ogg、 wav等, MediaPlayer
的实现过程中先在 Native 层创建对应的音频解码器和AudioTrack, 并将由音频解码器解
码后的数据交由AudioTrack进行输出, 由此可见, MediaPlayer的应用场景更广使用也更方
便。 AudioTrack仅支持播放解码后的 PCM 数据流, 通常在对声音时延要求非常苛刻的应用
场景才需要用到Audi oTrack。
[0004]安卓系统中安卓应用播放音频的过程为: MediaPlayer解析音频文件格式, 然后调
用解码器生成PCM格式音频数据, 再将PCM音频数据传输给AudioTrack; AudioTrack将音频
数据传输给AudioFlinger; AudioFlinger混音后调用音频设备的HAL接口, 由音频设备的
HAL接口操作音频设备输出音频。
[0005]现有安卓兼容环境xDroid的音频输出架构修改了音频设备的HAL层代码, 具体为
采用PulseAudio的Client API重新实现了安卓环境内的音频HAL设备, 安卓兼容环境内的
音频HAL设备处理的是来自AudioFlinger的音频流。 然而, AudioFlinger位于安卓兼容环境
中负责混音, 同时, 位于Linux端的Pul seAudio Server也负责混音, 这就导致输出音频的过
程中实际执行了两次混音操作, 即安卓兼容环境中的AudioFlinger及Linux端的
PulseAudio Server各执行了一次混音, 增加了音频输出的延 迟, 尤其是AudioFlinger内的
混音是由单独的线程异步实现的具有较高的延迟进一 步增大了音频输出的延迟。
发明内容
[0006]有鉴于此, 本发明提供了一种安卓兼容环境的音频输出优化方法, 能够实现安卓
兼容环境内安卓应用的低延迟音频输出。
[0007]本发明提供的一种安卓兼容环境的音频输出优化方法, 包括以下步骤:
[0008]安卓应用播放音频时, 构建包含安卓应用的进程ID及线程ID的 AudioFlinger服
务实例名称, 向安卓兼容环境发送包含AudioFlinger服务实例名称的AudioFlinger服务注
册请求;说 明 书 1/5 页
3
CN 114879930 B
3
专利 一种安卓兼容环境的音频输出优化方法
文档预览
中文文档
8 页
50 下载
1000 浏览
0 评论
309 收藏
3.0分
温馨提示:本文档共8页,可预览 3 页,如浏览全部内容或当前文档出现乱码,可开通会员下载原始文档
本文档由 人生无常 于 2024-03-18 17:15:03上传分享