自研rk3566/rk3588+rgbd相机之v4l2出图框架开发二
1 v4l2框架介绍
v4l2是video for linux two的简写,是用于linux设备从内核空间到用户空间传输图像数据的常用框架,是应用程序从驱动程序接收图像数据的桥梁或媒介,出图中扮演重要角色。其常用功能框架有如下几个部分组成:
打开视频设备文件节点
通常是/dev/video*
初始化视频设备:
取得设备的capability
检查是否有视频捕获功能
查询当前设备支持的视频格式
设置视频捕获格式、获取实际的视频格式
帧类型V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
初始化内存映射 init_mmap_video(fd);
启动视频采集:
开始采集视频,打开设备视频流
ioctl(fd, VIDIOC_STREAMON, &type)
循环采集视频流:
取出FIFO缓存中已经采样的帧缓存
ioctl(fd, VIDIOC_DQBUF,&buf)
//将已经捕获好视频的内存拉出已捕获视频的队列
将刚刚处理完的缓冲重新入队列尾,这样可以循环采集 ioctl(fd, VIDIOC_QBUF, &buf)
停止视频采集:
ioctl(fd, VIDIOC_STREAM