Chinaunix首页 | 论坛 | 博客
  • 博客访问: 342293
  • 博文数量: 41
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 476
  • 用 户 组: 普通用户
  • 注册时间: 2016-09-01 19:08
个人简介

Android/Linux/音频/驱动

文章分类

全部博文(41)

文章存档

2017年(21)

2016年(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 },
{ } // 末尾需要是一个空元素
};......【阅读全文】

阅读(4423) | 评论(0) | 转发(0)

发布时间:2017-06-13 11:53:56

【正文】
  这 2 天在回顾《内核设计与实现(第3版)》这本书时又看到了“提领”这种说法,它出现在书上第 75 页。估计译者当时也不知道应该翻译成什么中文词汇比较好,所以在译文后加上了英文原文“dereference”。书上的原文是这样的:

节约两次提领(dereference)
  如果你碰巧已经得到了 next 和 prev 指针,你可以直接调用内部链表函数,从而省下一点时间(其实就是提领指针的时间)。前面讨论的所有函数其实没有做什么其他特别的操作,它仅仅是找到 next 和 prev 指针,再去调用内部函数而已。……但这只有在向前和向后指针确实已经被提领过的情况下才有意义。……......【阅读全文】

阅读(2824) | 评论(0) | 转发(0)

发布时间: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 转换后,输出到功放芯片进行放大,最终输出到扬声器等音频设备。......【阅读全文】

阅读(3486) | 评论(0) | 转发(0)

发布时间:2017-06-08 18:10:46

【前言】
这是我根据自己的工作经验所总结,有一定代表性,但可能不齐全。这只是个提纲。

【知识点】
按照在操作系统中的层次划分,从上到下依次为:
1、Android系统分层模型。知道 APP、JNI、Frameworks、HAL、Driver 的划分以及 用户空间、内核空间 的概念。
2、Android Audio模块的启动、加载 及 放音/录音 流程。起码应该了解 AudioServer、AudioFlinger、AudioPolicyService、......【阅读全文】

阅读(3109) | 评论(0) | 转发(0)

发布时间:2017-05-27 17:00:58

【问题现象】
根据测试组同事反馈:在我们的设备上使用 JBL 品牌某款带有 3 个按键的有线耳机时,按下“音量+”键时设备会减小音量而不是增加音量,按下“音量-”键时设备无响应;在设备上使用 Samsung 品牌某款带有 3 个按键的有线耳机时,按下“音量-”键时设备会启动语音助手而不是减小音量。但按下 2 款耳机的中间键(播放/暂停键)均可以得到正确的响应。
......【阅读全文】

阅读(4172) | 评论(0) | 转发(0)
给主人留下些什么吧!~~
留言热议
请登录后留言。

登录 注册