Matrix

CarlyleLiu‘s Blog

编解码器类驱动程序是最基本的,他实现的代码应该利用编解码器设备并公开其硬件属性,以便 amixer 等用户空间工具可以使用它。

由于驱动程序针对特定的编解码器,因此它应该包含音频控制、音频接口功能、编解码器 DAPM 定义和 I/O 功能,每个编解码器必须满足:

  • 通过定义 DAI 和 PCM 配置来提供与其他模块的接口
  • 提供编解码器控制 I/O hook(使用 I2C、SPI 的 API)
  • 根据用户空间的需要,公开其他内核控件(Kernel control,Kcontrol)以动态控制模块行为
  • 定义 DAPM widget,为动态电源切换建立 DAPM 路由,并提供 DAC 数字静音控制(option)
阅读全文 »

ASOC

ALSA 是为桌面计算机而设计的,没有考虑嵌入式设备的限制,在处理嵌入式设备时会产生很多问题,包括但不限于如下:

  • 编解码器和 CPU 之间的耦合太强,导致代码移植困难。
  • 没有处理用户音频相关行为通知的标准方法,在移动场景中,用户的相关音频操作很频繁。
  • 在最初的 ALSA 设置中没有考虑 PM 机制。

ASOC 就是为了解决以上问题而产生的。ALSA(ALSA system on chip, ASOC)层的目的是为嵌入式处理器和各种编解码器提供更好的 ALSA 支持。ASOC 具有以下优势:

  • 独立的编解码器驱动程序。
  • 更方便的配置 CPU 和编解码器动态音频电源管理(dynamic audio power management, DAPM)之间的音频数据接口。
  • 减少弹出和点击操作,并增加与平台相关的控件。
阅读全文 »

USB 控制器可以呈现出两种不同的状态。USB 控制器作为 Host 时,称为 USB 主机控制器,使用 USB 主机控制器驱动。USB 控制器作为 Device 时,称为 USB 设备控制器,使用 UDC(usb device controller)驱动。

USB 控制器作为 Device 时,最上层的是 Gadget Function 驱动,代表了具体设备的驱动,如 U 盘、USB 串口、USB 虚拟网卡、UAC 驱动。Composite 层是一个可选的中间层,可通过一种配置或多种配置高效的支持多种功能的设备,简化了 USB 复合设备驱动的开发。目前最流行的是使用基于 Composite 和 configfs 实现的 USB gadget configfs,可在用户空间灵活的配置 USB 设备。UDC 驱动直接访问硬件,控制 USB 设备与 USB 主机之间的通信。

阅读全文 »

USB 2.0 协议支持 3 种速率:低速 (Low Speed,1.5Mbps)、全速 (Full Speed, 12Mbps)、高速 (High Speed, 480Mbps)。

USB Hub、USB 设备,也分为低速、全速、高速三种类型。一个 USB 设备,可能兼容低速、全速,可能兼容全速、高速,但是不会同时兼容低速、高速。

阅读全文 »

相关概念

直方图 Histogram

在分析图像数据的统计特性时,有时可以抛弃图像的色度分量,只考察图像的亮度分量,此时可以引入图像的亮度直方图(Luminance Histogram),以常用的 8 位精度图像为例,直方图的 X 轴为 0~255,共 256 个桶,每个桶刚好覆盖 1 个像素值,直方图的 Y 轴表示每个桶盛纳了多少个像素。所有桶中盛纳的像素数加到一起应等于图像的总像素数。

阅读全文 »

色调 Hue

hue 的定义

hue 可以理解为占主导地位的纯色颜色,或两种纯色颜色的组合。简单来说,hue 就是颜色的“名字”,人们最常用黄色、橙色等概念来描述一个颜色。 Hue is the color portion of the model, expressed as a number from 0 to 360 degrees.

阅读全文 »

Retinex 理论

Retinex 这个词由 Retina 和 Cortex 两个单词组成。在 Retinex 理论中,物体的颜色是由物体对长波、中波和短波光线的反射能力决定的,而不是由反射光强度的绝对值决定的,并且物体的色彩不受光照非均性的影响,具有一致性。

阅读全文 »
0%