Android/Linux/音频/驱动
全部博文(41)
发布时间:2017-06-09 16:03:43
【简要说明】
1、APP 将音频文件(比如.mp3文件)数据读取到匿名共享内存中;
2、AudioFlinger 从匿名共享内存中读取音频数据,通过 HAL 层接口将这些数据写入到 DMA 缓冲区;
3、DMA 控制器将 DMA 缓冲区中的数据拷贝到 SoC 的 I2S Tx FIFO 开始向 Codec 传输;
4、Codec 固件会自动将 Codec I2S Rx FIFO 中接收到数据送入 Codec DSP 进行处理;
5、处理后的数据经 DAC 转换后,输出到功放芯片进行放大,最终输出到扬声器等音频设备。......【阅读全文】
发布时间:2017-06-08 18:10:46
【前言】
这是我根据自己的工作经验所总结,有一定代表性,但可能不齐全。这只是个提纲。
【知识点】
按照在操作系统中的层次划分,从上到下依次为:
1、Android系统分层模型。知道 APP、JNI、Frameworks、HAL、Driver 的划分以及 用户空间、内核空间 的概念。
2、Android Audio模块的启动、加载 及 放音/录音 流程。起码应该了解 AudioServer、AudioFlinger、AudioPolicyService、......【阅读全文】
发布时间:2017-05-27 17:00:58
【问题现象】
根据测试组同事反馈:在我们的设备上使用 JBL 品牌某款带有 3 个按键的有线耳机时,按下“音量+”键时设备会减小音量而不是增加音量,按下“音量-”键时设备无响应;在设备上使用 Samsung 品牌某款带有 3 个按键的有线耳机时,按下“音量-”键时设备会启动语音助手而不是减小音量。但按下 2 款耳机的中间键(播放/暂停键)均可以得到正确的响应。
......【阅读全文】
发布时间:2017-05-04 20:27:30
设备在播放视频时有异常,使用Logcat查看日志时发现了如下记录:
14:01:59.136 2825 2825 E SELinux : avc: denied { find } for service=display pid=3015 uid=1046 scontext=u:r:mediacodec:s0 tcontext=u:object_r:display_service:s0 tclass=service_manager permissive=0 04-27
14:01:59.136 2825 2825 I auditd : avc: denied { find } for service=display pid=3015 uid=1046 scontext=u:r:mediacodec:s0 tcontext=u:object_r:display_service:s0 tclass=service_manager permissive=0
从上方的Log中可以看出这个问题是因为mediacodec的sepolicy权限没有添加完善所致。......【阅读全文】
发布时间:2017-04-10 17:23:23
【使用场景相关】
2 个支持 Miracast 功能的设备进行互连时,并不需要将它们连接至同一个 WLAN 网络上(也即不需要连接至同一个无线路由器或AP上)。因为 Miracast 是基于 Wi-Fi Direct 技术实现的。......【阅读全文】