08.音频系统:第004课_Android音频系统详解:第001节_分析思路
在音频系统第一课时的时候,有如下一副框图。围绕这下图讲解了音频系统的框架:
但是该框图不够细致,为了大家更加详细的了解音频系统,存在如下框图:
后续我们将围绕这个框图进行讲解,我们先看看右边:
在右边的AudioHAL下面的prmary_out,low_latency等等我们称其为output,一个output对应一个/多个设备节点(为什么是多个,我们后续进行分析),每一个output都有一个与其对应的线程(MixerThread),在其中可能存在一个或者对个track(音轨:声音的来源)。一个track对应一个AudioTrack(图示最左边)。
如prmary_out,在开发板上执行 ls dev/snd我们可以看到如下节点(controlC0 controlC1 controlC2 pcmC0D0c pcmC0D0p pcmC1D0p pcmC2D0p timer)
其中pcmC0D0p pcmC1D0p pcmC2D0p都属于prmary_out。为了避免麻烦,一个设备节点只有一个thread操作,
播放声音时,声音来源有多个(有多个APP提供声音),他们的声音封装在AudioTrack,由一个线程共同处理,这个线程中的mtracks挂有一个或者多个track。这些track与AudioTrack一一对应。其中APP与这个线程需要通过binder进行跨进程通信。
现在我们提几个问题:
1.MixerThread如何创建?我们知道MixerThread对应着某些设备。
AudioPolicyService是策划的制定者(如:声音时从喇叭播放,还是从耳机播放)
AudioFlinger是策略的执行者(如:打开某些写呗节点)
所以:AudioPolicyService根据配置文件使唤AudioFlinger创建Thread
2.Thread对应的output,output对应哪些节点。
3.AudioTrack和Track的创建过程:AudioTrack对应哪一个Thread,对应哪一个output。
4.AudioTrack如何传输数据给Thread?
AudioTrack如何播放,关闭,暂停?
通过学习后面的章节,我们能回到上述问题之后,我们对整个音频系统,就有比较深刻的印象了。
08.音频系统:第004课_Android音频系统详解:第001节_分析思路相关推荐
- 第10课:底实战详解使用Java开发Spark程序学习笔记
第10课:底实战详解使用Java开发Spark程序学习笔记 本期内容: 1. 为什么要使用Java? 2. 使用Java开发Spark实战 3. 使用Java开发Spark的Local和Cluster ...
- 第8课:彻底实战详解使用IDE开发Spark程序--集群模式运行
第8课:彻底实战详解使用IDE开发Spark程序--集群模式运行 拷贝WordCount.scala生成WordCountCluster.scala. 1. 将object WordCount改为ob ...
- Linux系统下ifconfig和route配置网络详解
Linux系统下ifconfig和route配置网络详解 ifconfig和route合用于配置网络(ip命令综合二者功能,此处不讲),通常在前者设置好ip地址等信息后,采用route命令配置路由.( ...
- win7 64位操作系统中Oracle 11g + plsql安装教程详解(图解)
这篇文章主要介绍了win7 64位操作系统中Oracle 11g + plsql安装教程详解(图解),详细的介绍了Oracle 11g 安装的步骤,有兴趣的可以了解一下. 先去网上把下面列表里的文件下 ...
- 系统批量运维管理器Fabric详解
系统批量运维管理器Fabric详解 Fabrici 是基于python现实的SSH命令行工具,简化了SSH的应用程序部署及系统管理任务,它提供了系统基础的操作组件,可以实现本地或远程shell命令,包 ...
- Linux系统下SVN服务器的搭建过程详解 UpJ}s7+
Linux系统下SVN服务器的搭建过程详解 UpJ}s7+ 1 环境: 服务器放在redhatAS4.0上,客户端在windows 2000. k_lb"5z Z]jSq@%1H* ...
- linux管道命令详解,Linux系统中的管道命令的用法详解
Linux系统中管道命令是linux系统的一个强大之处.下面由学习啦小编为大家整理了Linux系统中的管道命令的用法详解的相关知识,希望对大家有帮助! Linux系统中的管道命令的用法详解 管道命令操 ...
- 金蝶云星空html5的网页主界面如何修改,金蝶云星空系统与嵌套网页进行交互实现详解...
金蝶云星空系统与嵌套网页进行交互实现详解 一.应用场景: 嵌套网页与金蝶云星空进行数据交互,例如:在被嵌套网页中,点击一个按钮,需要把数据发送到金蝶云星空系统当中,并且,星空系统接收发过来的数据,同时 ...
- 申通快递:核心业务系统云原生化上云技术详解
简介:如果说,快递行业上半场的竞争拼的是规模.服务乃至价格,进入下半场,快递企业们还需要比拼硬核的技术实力.--周金龙(遥方) 随着云计算的快速发展和成熟,越来越多的企业正在把自己的核心系统向云上迁移 ...
- #阿里云原生最佳实践# 申通快递:核心业务系统云原生化上云技术详解
随着云计算的快速发展和成熟,越来越多的企业正在把自己的核心系统向云上迁移,从而享受云计算带来的技术红利.IDC发布的<全球云计算IT基础设施市场预测报告>显示:2019年全球云上的IT基础 ...
最新文章
- sql语句中having的作用是?
- Android Handler与Looper原理简析
- CTFshow 命令执行 web57
- UI组件之TextView及其子类(二)RadioButton和CheckBox
- 企业战略:前瞻性决定发展性
- db2 sql执行历史_5 个免费的在线 SQL 数据库环境,比Navicat 香!
- python借助missingno可视化分析缺失值
- 约瑟夫环问题(链表 + 公式)
- Umbrella Network与Linear Finance合作,将专业金融数据带入DeFi
- Android中对已安装应用的管理实现
- python的zip函数_python的zip函数
- Jnotify文件监控的用法以及Jar文件导入的方法
- mysql 中时间和日期函数应用
- 主机不可达和端口不可达
- 事业单位考试计算机专业知识题库,计算机考试题库:计算机考试练习题(29)...
- Java实现MySql分页查询
- iOS 增强现实教程:基于位置定位
- Google秘密入口
- 小学生C++趣味编程 2023 01 09 测试
- mysql 优化思路_Mysql优化思路