简介: CSDN博客专家、《Android系统多媒体进阶实战》作者
博主新书推荐:《Android系统多媒体进阶实战》🚀 Android Audio工程师专栏地址: Audio工程师进阶系列【原创干货持续更新中……】🚀 Android多媒体专栏地址: 多媒体系统工程师系列【原创干货持续更新中……】🚀 专题一 二:AAOS车载系统+AOSP14系统攻城狮入门视频实战课 🚀 专题三:Android14 Binder之HIDL与AIDL通信实战课 🚀 专题四:Android15快速自定义与集成音效实战课 🚀 专题五:Android15音频策略实战课 🚀 专题六:Android15音频性能实战课(无声/杂音/断音/爆音实战案例) 🚀
人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
更多原创,欢迎关注:Android系统攻城狮
🍉🍉🍉文章目录🍉🍉🍉
-
- 🌻1.前言
- 🌻2.开发需求
- 🌻3.解决方案
-
- 3.1 module-alsa-card的加载方式
- 3.2 module-alsa-card在声卡加载流程中的位置
- 🐓4.实战案例
-
- 4.1 实验准备
- 4.2 查看ALSA声卡编号
- 4.3 通过module-udev-detect自动加载
- 4.4 手动加载module-alsa-card
- 4.5 卸载module-alsa-card
- 4.6 查看module-alsa-card参数
- 4.7 查看PulseAudio card对象
- 4.8 理解Profile的作用
- 4.9 切换声卡Profile
- 4.10 Profile与sink/source的关系
- 4.11 理解Port的作用
- 4.12 module-alsa-card使用UCM
- 4.13 禁用UCM进行对比测试
- 4.14 使用Profile Set
- 4.15 配置初始Profile
- 4.16 配置timer-based scheduling
- 4.17 配置硬件音量处理
- 4.18 固定嵌入式ES8388声卡
- 4.19 验证module-alsa-card是否生效
- 🌻5.常见问题定位
-
- 5.1 module-alsa-card加载失败怎么办?
- 5.2 ALSA能看到声卡,PulseAudio为什么没有card?
- 5.3 card存在,为什么没有sink?
- 5.4 card存在,为什么没有真实录音source?
- 5.5 为什么出现两张相同的PulseAudio card?
- 5.6 切换Profile后为什么播放设备消失?
- 5.7 切换Profile失败怎么办?
- 5.8 use_ucm=yes后为什么没有正确设备?
- 5.9 关闭tsched后仍然爆音怎么办?
- 5.10 设置默认sink后为什么仍然走其他设备?
- 5.11 device_id固定后为什么重启指向了另一张声卡?
- 🌻6.总结
🌻1.前言
本篇目的:Pulseaudio进阶开发之module-alsa-card实战案例
- 1.module-alsa-card:主要负责把一张ALSA声卡封装成PulseAudio中的card对象,并根据UCM配置或Profile Set解析声卡支持的profile、port、sink和source。它位于ALSA硬件和PulseAudio设备模型之间,是PulseAudio管理物理声卡的核心模块。
🌻2.开发需求
通过module-alsa-card管理ALSA声卡,让声卡发现、Profile切换、播放设备创建、录音设备创建、端口切换和嵌入式固定音频拓扑更可控。
实际开发中常见需求:
| 自动发现ALSA声卡 | module-udev-detect | 手动重复加载module-alsa-card | module-udev-detect会为发现的声卡加载module-alsa-card |
| 把一张ALSA声卡注册为PulseAudio ca |

