当前位置: 首页 > news >正文

Android Audio基础——AudioFlinger音频流管理(八)

        从前面 AudioTrack、PlaybackThread、输出流设备三者的关系中,我们看到 AudioTrack 把音频流数据送入到对应的 PlaybackThread 中,那么应用进程是如何控制音频流的开始播放 start()、停止播放 stop()、暂停播放 pause()。这一章节我们就来继续分析。

一、音频流管理

        应用进程与 AudioFlinger 并不在一个进程上,这就需要 AudioFlinger 提供音频流管理功能,并提供一套通讯接口可以让应用进程跨进程控制 AudioFlinger 中的音频流状态(通讯接口前面已经介绍过)。

        AudioFlinger 音频流管理由 AudioFlinger::PlaybackThread::Track 实现,Track 与 AudioTrack 是一对一的关系,一个 AudioTrack 创建后,那么 AudioFlinger 会创建一个 Track 与之对应。PlaybackThread 与 AudioTrack/Track 是一对多的关系,一个 PlaybackThread 可以挂着多个 Track。

        具体来说,AudioTrack 创建后,AudioPolicyManager 根据 AudioTrack 的输出标识和流类型,找到对应的输出流设备和 PlaybackThread(如果没有找到的话,则系统会打开对应的输出流设备并新建一个 PlaybackThread),然后创建一个 Track 并挂到这个 PlaybackThread 下面。

        PlaybackThread 有两个私有成员与此相关:

  • mTracks:该 PlaybackThread 创建的所有 Track 均添加保存到这个

http://www.lryc.cn/news/352569.html

相关文章:

  • 二进制部署k8s集群 部署高可用master节点
  • linux创建私有docker仓库以及推拉
  • 如何将照片从 iPhone 传输到闪存驱动器【无质量损坏】
  • 【MySQL精通之路】InnoDB(7)-锁和事务模型(2)-事务模型
  • python中的可哈希和不可哈希
  • docker命令详解大全
  • 体检系统商业源码,C/S架构的医院体检系统源码,大型健康体检中心管理系统源码
  • Vue CLI 的服务介绍与使用(2024-05-20)
  • java连接ldap实现查询
  • openjudge_2.5基本算法之搜索_2990:符号三角形
  • springboot错误
  • linux的用户管理
  • 数美滑块研究
  • 【GESP试卷】2024年03月Scratch四级试卷
  • 每日一题《leetcode--398.随机数索引》
  • 【MySQL精通之路】MySQL的使用(9)-设置环境变量
  • JDBC(Java DataBase Connectivity)Java数据库连接
  • 1.Redis之初识Redis分布式系统
  • 基于SpringBoot的网盘系统设计与实现
  • 【C++初阶】vector
  • elasticsearch 和 RediSerch
  • 删除MySQL中所有表的外键
  • webstorm新建vue项目相关问题
  • 2024年高考考务人员网上培训参考答案
  • JavaEE之线程(9) _定时器的实现代码
  • 纯前端实现将页面数据下载word文档中【包括图片,echarts图,表格,和对话 内容】
  • JavaSE——类和对象(二)~~封装
  • 头歌OpenGauss数据库-I.复杂查询第9关:交换性别
  • 冷干机使用中的注意事项
  • OpenFeign微服务调用组件使用