vimc驱动程序使用V4L2 API和Media API模拟复杂的视频硬件。它具有一个捕获设备和三个子设备:传感器、去贝尔滤波器和缩放器。
Topology
拓扑结构是硬编码的,尽管您可以在vimc-core中修改它并重新编译驱动程序以实现自己的拓扑结构。这是默认的拓扑结构:
Fig. 7: Media pipeline graph on vimc
Configuring the topology
每个子设备都会附带其默认配置(像素格式、高度、宽度等)。需要配置拓扑结构,以便将每个链接的子设备的配置与通过管道流传输帧的配置匹配。如果配置不匹配,则流将失败。 v4l-utils软件包是一组用户空间应用程序,带有可用于配置vimc配置的media-ctl和v4l2-ctl。此命令序列适用于默认拓扑结构:
media-ctl -d platform:vimc -V '"Sensor A":0[fmt:SBGGR8_1X8/640x480]'
media-ctl -d platform:vimc -V '"Debayer A":0[fmt:SBGGR8_1X8/640x480]'
media-ctl -d platform:vimc -V '"Sensor B":0[fmt:SBGGR8_1X8/640x480]'
media-ctl -d platform:vimc -V '"Debayer B":0[fmt:SBGGR8_1X8/640x480]'
v4l2-ctl -z platform:vimc -d "RGB/YUV Capture" -v width=1920,height=1440
v4l2-ctl -z platform:vimc -d "Raw Capture 0" -v pixelformat=BA81
v4l2-ctl -z platform:vimc -d "Raw Capture 1" -v pixelformat=BA81
Subdevices
子设备定义了拓扑结构中实体的行为。根据子设备的不同,实体可以具有多个类型为源或接收器的接口。
vimc-sensor:使用视频测试模式生成多种格式的图像。公开:
• 1个源接口
vimc-debayer:将bayer格式的图像转换为非bayer格式。公开: //raw转yuv???
• 1个接收器接口
• 1个源接口
vimc-scaler:将图像调整大小以满足源接口的分辨率。例如:如果sync接口配置为360x480,并且源接口为1280x720,则会拉伸图像以适应源分辨率。适用于vimc限制内(甚至在必要时缩小图像)。公开:
• 1个接收器接口
• 1个源接口
vimc-capture:公开节点/dev/videoX以允许用户空间捕获流。公开:
• 1个接收器接口
• 1个源接口