全志开发板 视频输入框架

笔记来源于百问网出品的教程。

1.VIN camera驱动框架

• 使用过程中可简单的看成是vin 模块+ device 模块+af driver + flash 控制模块的方式;

• vin.c 是驱动的主要功能实现,包括注册/注销、参数读取、与v4l2 上层接口、与各device 的下层接口、中断处理、buffer 申请切换等;

• modules/sensor 文件夹里面是各个sensor 的器件层实现,一般包括上下电、初始化,各分辨率切换,yuv sensor 包括绝大部分的v4l2 定义的ioctrl 命令的实

现;而raw sensor 的话大部分ioctrl 命令在vin 层调用isp 库实现,少数如曝光/增益调节会透过vin 层到实际器件层;

• modules/actuator 文件夹内是各种vcm 的驱动;

• modules/flash 文件夹内是闪光灯控制接口实现;

• vin-csi 和vin-mipi 为对csi 接口和mipi 接口的控制文件;

• vin-isp 文件夹为isp 的库操作文件;

• vin-video 文件夹内主要是video 设备操作文件;

2.Camera通路框架

  • VIN支持灵活配置单/双路输入双ISP多通路输出的规格
  • 引入media框架实现pipeline管理
  • 将libisp移植到用户空间解决GPL问题
  • 将统计buffer独立为v4l2 subdev
  • 将的scaler(vipp)模块独立为v4l2 subdev
  • 将video buffer修改为mplane方式,使用户层取图更方便
  • 采用v4l2-event实现事件管理
  • 采用v4l2-controls新特性

3.视频输入组件

3.1 ISP硬件

在全志V853芯片中,ISP组件在使用过程中是支持分时复用的,ISP分时复用周期图如下所示:

上图中的isp00/isp01/isp02/isp03分别代表一个周期的1/4。每一个周期中的会被分为4等分,当该周期运行到那一等分的时候,就会去连接到一个摄像头并采集图像数据。通过分时复用的方式,使得芯片端的ISP硬件可以同时连接4个摄像头。

注意:

​ 1.V853芯片支持两路MIPI+一路并口的摄像头,分时复用只会有三个源!

​ 2.在线编码无法使用分时复用!

3.2 VIPP硬件

Video Input Post Processor,即视频输入后处理器。它是一种用于图像传感器的硬件组件,可以对图像进行缩小、打水印、去坏点、增强等处理。它可以支持不同的图像数据格式,如Bayer raw data或YUV格式。

VIPP硬件有4个VIPP通道,4个VIPP通道与ISP一致也可以分时复用,最多可以分时复用出16个VIPP通道。对于应用层来说,我们可以从16个VIPP通道中取数据。

上图中VIPP10,1表示VIPP硬件通道号,0表示分时复用的情况;

注意:由于硬件中只有4路VIPP,那么在开发中只能获取4路不同分辨率的图像。

3.2 虚通道

虚通道(Virtual Channel,简称VC)是一种用于管理和绑定不同功能模块之间的通信路径。在MPP中,音频和视频的处理是独立的,为了避免混乱和通道错乱,引入了虚通道的概念。

虚通道允许将不同的功能模块绑定在一起,以便更好地控制和管理视频处理流程。例如,虚通道可以将视频输入(VI)、视频处理(VPSS)、视频编码(VENC)等模块连接起来,形成一个完整的视频处理流程。

基于前面的VIPP硬件,会为它创建若干个虚通道,虚通道的数量在理论上是不受限制的,我们可以创建很多个虚通道用于传输到其他地方去使用。因为虚通道的本质是对实际VIPP通道中的每一帧图像做引用技术,每个虚通道从VIPP通道获取这一帧图像后,会把这一帧的引用技术+1,如果将这一帧数据还回去的话就将这一帧的引用技术-1。只有当这一帧的引用技术降为0的时候,这一帧数据才会真正还给V4L2驱动/dev/video0。

注意:

​ 1.如果很多个虚通道都使用同一个VIPP通道的数据,那么它们就是公用一个buffer。

​ 2.只要有一个虚通道没有及时还帧,就意味着这一帧buffer没有被还回去,其他虚通道也无法使用。

​ 3.如果占用太多帧没有还,那么其他虚通道也拿不到帧!

​ 4.虚通道要满足:及时还帧,用时创建,用完销毁!

4. VI组件内部结构

视频输入组件内部主要是由通道管理器组成,如下图所示:

ViChnManager:是通道管理器:维护一个通道的链表(通道指的是虚通道)负责管理和调度虚拟通道资源。

VI_CHN_MAP_S 是一个结构体或配置,用于定义视频输入通道(VI Channel)的属性和映射关系。这通常涉及到视频捕获硬件的配置,如分辨率、像素格式、缓冲区数量等。

MM_COMPONENTTYPE 通常指的是多媒体组件类型,它可能是一个接口或抽象类,用于定义多媒体处理组件的通用属性和行为。这样的组件可能包括编解码器、过滤器、转换器等。

相关推荐
weixin_307779132 小时前
流媒体娱乐服务平台在AWS上使用Presto作为大数据的交互式查询引擎的具体流程和代码
大数据·python·音视频·aws
職場上的造物主2 小时前
高清种子资源获取指南 | ✈️@seedlinkbot
python·ios·php·音视频·视频编解码·视频
cuijiecheng20184 小时前
音视频入门基础:RTP专题(7)——RTP协议简介
音视频
cuijiecheng20187 小时前
音视频入门基础:RTP专题(8)——使用Wireshark分析RTP
测试工具·wireshark·音视频
struggle20251 天前
2025开源DouyinLiveRecorder全平台直播间录制工具整合包,多直播同时录制、教学直播录制、教学视频推送、简单易用不占内存
图像处理·计算机视觉·开源·音视频·语音识别
硬件学长森哥2 天前
音视频多媒体编解码器基础-codec
驱动开发·嵌入式硬件·音视频
小镇拾光2 天前
PPT演示设置:插入音频&同步切换&播放时长计算
powerpoint·音视频·ppt播放设置
程序猿玖月柒2 天前
全志 视频输入组件的使用
音视频
soonlyai2 天前
Windows平台最新视频号内容下载工具(MP4格式一键解析)
人工智能·经验分享·产品运营·音视频·流量运营·视频编解码·视频