大家好,欢迎来到IT知识分享网。
转自《嵌入式LINUX》
最近在解决一个音频的问题,所以正好借这个机会来把音频的东西重新梳理一下,总结是一个很好的习惯,能方便自以后遇到问题快速排查问题。
- 平台「MT8167」
- 内核版本「kernel 4.4」
音频读数据函数流程
tinyalsa调用读取函数
IOCTL调用流程
读取数据到应用层
内核注册声卡流程
注册
注册PCM
创建pcm设备
创建pcm设备
内核驱动里面的platform、machine和codec
如果看alsa驱动,不能清楚这三个「怪兽」的联系,会很容易陷入迷宫里面之中不能自拔。
- machine 「可以理解成一个主板、一套代码是可以适配很多很多主板的」
- platform 「这个代表的是CPU型号,平台相关的东西」
- codec「也就是音频芯片,有编解码的AD或者DA」
三者联系
machine、platform、codec 关键结构体
machine用来指定使用哪个platform和codec。
machine
platform
codec
总结
比较简单,主要是画了几张图片,这些图片对初学者或者是排查问题理清楚框架是有作用的,音频下还有一些ring_buff和路由相关的,自己如何计算没一帧数据的大小,下一次再总结下。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/162711.html