理解 Audio 音频系统 一 之 Audio 学习思路

理解 Audio 音频系统 一 之 Audio Policy


前面学习了,也转载了挺多大神写的 Audio 文章,学习了比较久,
但看别人的文章终究学习的还是别人的思想,终究还只是看懂了,
估计不久后马上也会忘记,所以一定要自已进入代码,一句一句代码的学习分析,
结合代码,结合自已的理解,如果自已能够写出一篇文章来,才能说明真正懂了。

本文也是一个边学边写的过程,加油!


一、学习思路介绍

先摘抄一张大神画的图(来自:http://zhoujinjian.cc/categories/Android/)
图画的很好很全,接下来,我们就结合这张图来说下,我自已理解的更好的学习 Audio 的思路。

在这里插入图片描述


1.1 自我理解

从图中可以看出,从上层到底层:

  1. Application 层
    对应着具体的 app 软件,其主要是使用 Framwork 层提供的接口来实现具体的auido 实现。
    后面,我们会单独写一章来描述如何写一个音乐播放器 apk 《理解 Audio 音频系统六 之 Audio音乐播放器编写》。

  2. Framework 层 / Libraries 库文件
    在Framework层中,
    主要 AudioTrack、AudioRecord、MediaRecorder、MediaPlayer 这四分别是可以对 Audio 进行播放 或者 采集。
    AudioSystem 、AudioManager 主要是对音点策略的管理

  3. Hal 层
    主要包含 AudioFlinger,AudioPolicyService 。
    AudioPolicyService是策略的制定者及设定相关的参数,AudioFlinger 负责根据 AudioPolicy设定的策略进行执行。
    所以,我们先来学习的就是 AudioPolicyService ,后续会更新文章:《理解 Audio 音频系统二 之 AudioPolicyService》
    既然AudioFliner 是执行者,在懂了 AudioPolicy 后再学,可以后相对好理解一些:《理解 Audio 音频系统三 之 AudioFlinger》

  4. Tinyalsa 层
    在Tinyalsa 中主要是包含了一些可执行程序,如 tinymix,tinyplay,tinycap 等。
    《理解 Audio 音频系统四 之 Tinymix》
    《理解 Audio 音频系统五 之 Audio Hardware 层实现》

  5. Kernel 层
    在Kernel 层中,主要是 ASOC 和 DAPM。
    在 ASOC 中包含了 Platform,Codec,Machine 这三大部驱动。
    DAPM 中主要是对 Audio Kcontrol 的一些控件的电源管理方面。

    一来就是直接学习Kernel 的结构体,很容易让人真接望而却步,
    因此,这里,Kernel 我打算放最后来写,先从上层开始学起,学会怎么用后,再来学习到底原理是啥。
    《理解 Audio 音频系统七 之 ASOC》 和 《理解 Audio 音频系统八 之 DAPM》


1.2 小结

终上,打算写如下文章,也希望自已能够坚持下来:、

理解 Audio 音频系统一 之 Audio 学习思路
理解 Audio 音频系统二 之 AudioPolicyService
《理解 Audio 音频系统三 之 AudioFlinger》
《理解 Audio 音频系统四 之 Tinymix》
《理解 Audio 音频系统五 之 Audio Hardware 层实现》
《理解 Audio 音频系统六 之 Audio音乐播放器编写》
《理解 Audio 音频系统七 之 ASOC》
《理解 Audio 音频系统八 之 DAPM》




参考资料

Audio System 二 之 Audio系统框架

发布了329 篇原创文章 · 获赞 66 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/Ciellee/article/details/101856220