android/linux/音频/驱动
(41)
(21)
(20)
发布时间:2017-06-26 15:51:02
忘记了在哪本书上看到过,说必须给 i2c 设备驱动的 id 表数组添加上一个空元素作为最后一个元素,就像下面的代码所展示的那样:
struct i2c_device_id {
char name[i2c_name_size];
kernel_ulong_t driver_data; /* data private to the driver */
}
static const struct i2c_device_id rt5677_i2c_id[] = {
{ "rt5677", 0 },
{ } // 末尾需要是一个空元素
};......
发布时间:2017-06-13 11:53:56
【正文】
这 2 天在回顾《内核设计与实现(第3版)》这本书时又看到了“提领”这种说法,它出现在书上第 75 页。估计译者当时也不知道应该翻译成什么中文词汇比较好,所以在译文后加上了英文原文“dereference”。书上的原文是这样的:
节约两次提领(dereference)
如果你碰巧已经得到了 next 和 prev 指针,你可以直接调用内部链表函数,从而省下一点时间(其实就是提领指针的时间)。前面讨论的所有函数其实没有做什么其他特别的操作,它仅仅是找到 next 和 prev 指针,再去调用内部函数而已。……但这只有在向前和向后指针确实已经被提领过的情况下才有意义。……......
发布时间: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 款耳机的中间键(播放/暂停键)均可以得到正确的响应。
......