Audio Codec:
Audio Codec - 简书 (jianshu.com)
----------------------------
音频编解码器(codec):
播放: 数字信号------->模拟声音信号 ---------> 扬声器
录音: 麦克风------>模拟信号------->数字信号
codec功能:(简书摘录)
1.对PCM等信号进行D/A转换,把数字的音频信号转换为模拟信号
2.对Mic、Linein或者其他输入源的模拟信号进行A/D转换,把模拟的声音信号转变CPU能够处理的数字信号
3.对音频通路进行控制,比如播放音乐,收听调频收音机,又或者接听电话时,音频信号在codec内的流通路线是不一样的
4.对音频信号做出相应的处理,例如音量控制,功率放大,EQ控制等等
Linux节点:
/dev/snd/* 声卡节点,由ALSA核心创建和管理
/dev/snd/controlC0 控制节点,app控制音量等
/dev/snd/pcmC0D0p play, 播放设备节点
/dev/snd/pcmC0D0c capture, 录音设备节点
prioc和sysfs接口实现:
/proc/asound 和 /sys/class/sound/
----------------------------
2021/1/6 ,还没搞清楚怎么回事,理解一点记一点自己的想法, 不保证理解正确~ ~
在看的平台是,msm8909.
文件:
kernel/sound/soc/msm/msm8x16.c
kernel/sound/soc/msm/qdsp6v2
外部codec
分别对应的应该:
msm8x16.c ---> msm8x16_asoc_machine_probe --> snd_soc_card ---> machine层
qdsp6v2 ---> snd_soc_platform ---> platform层
外部codec是普通的c驱动,i2c驱动 ---> 对应的codec层
machine驱动结构:
snd_soc_card
|
|-----snd_soc_dai_link
|
|---------snd_soc_ops
|
|--------- .startup =
|
|--------- .shutdown =