当前位置: 首页 > 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 均添加保存到这个

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 释放Mac潜能,选择Magic Disk Cleaner for Mac
  • MPC源码解读及路径跟踪demo
  • 抖音无货源如何做?
  • 犀牛8 for Mac/Win:重塑三维建模的新标杆
  • kafka跨地区跨集群同步工具MirrorMaker2 —— 筑梦之路
  • 03-ArcGIS For JavaScript结合ThreeJS功能
  • vue项目实战 - 如果高效的实现防抖和节流
  • 软考-程序员 知识点与部分真题梳理
  • qt多语言翻译不生效的原因
  • 回溯大法总结
  • microsoft的azure语音,开发环境运行正常,发布到centos7线上服务器之后无法运行解决方案
  • OneAPI接入本地大模型+FastGPT调用本地大模型
  • Python期末复习知识点大合集(期末不挂科版)
  • AWS安全性身份和合规性之Identity and Access Management(IAM)
  • 数据库--数据库基础(一)
  • Angular 2 DI - IoC DI - 1
  • Docker 笔记(2):Dockerfile
  • export和import的用法总结
  • HTTP那些事
  • Java,console输出实时的转向GUI textbox
  • Linux Process Manage
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 检测对象或数组
  • 前端知识点整理(待续)
  • 收藏好这篇,别再只说“数据劫持”了
  • 我这样减少了26.5M Java内存!
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • ​2020 年大前端技术趋势解读
  • # Spring Cloud Alibaba Nacos_配置中心与服务发现(四)
  • #微信小程序(布局、渲染层基础知识)
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • $NOIp2018$劝退记
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • ( 用例图)定义了系统的功能需求,它是从系统的外部看系统功能,并不描述系统内部对功能的具体实现
  • (k8s)kubernetes 部署Promehteus学习之路
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (笔记)M1使用hombrew安装qemu
  • (大众金融)SQL server面试题(1)-总销售量最少的3个型号的车及其总销售量
  • (回溯) LeetCode 78. 子集
  • (每日一问)操作系统:常见的 Linux 指令详解
  • (强烈推荐)移动端音视频从零到上手(上)
  • (三)终结任务
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (四)图像的%2线性拉伸
  • (转)h264中avc和flv数据的解析
  • (转)菜鸟学数据库(三)——存储过程
  • ./configure,make,make install的作用(转)
  • .dat文件写入byte类型数组_用Python从Abaqus导出txt、dat数据
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .net 验证控件和javaScript的冲突问题
  • .NET连接数据库方式
  • .NET设计模式(8):适配器模式(Adapter Pattern)