Linux之V4L2视频输入
内核部分
Linux系统中视频输入设备主要包括以下四个部分:
- 字符设备驱动:V4L2本身就是一个字符设备,具有字符设备所有的特性,暴露接口给用户空间;
- V4L2驱动核心:主要是构建一个内核中标准视频设备驱动的框架,为视频操作提供统一的接口函数;
- 平台V4L2设备驱动:在V4L2框架下,根据平台自身的特性实现与平台相关的V4L2驱动部分,包括注册
video_devic
e和v4l2_dev
; - 具体的sensor驱动:主要上电、提供工作时钟、视频图像裁剪、流IO开启等,实现各种设备控制方法供上层调用并注册
v4l2_subdev
。
V4L2框架
v4L2的核心源码位于 drivers/media/v4l2-core
,根据功能可以划分为四类:
- 字符设备模块:由
v4l2-dev.c
实现,主要作用申请字符主设备号、注册class和提供video device注册注销等相关函数; - V4L2基础框架:由
v4l2-device.c
、v4l2-subdev.c
、v4l2-fh.c
、v4l2-ctrls.c
等文件构建V4L2基础框架; - videobuf管理:由
videobuf2-core.c
、videobuf2-dma-contig.c
、videobuf2-dma-sg.c
、videobuf2-memops.c
、videobuf2-vmalloc.c
、v4l2-mem2mem.c
等文件实现,完成videobuffer的分配、管理和注销; - Ioctl框架:由
v4l2-ioctl.c
文件实现,构建V4L2ioctl的框架。
应用部分
请参见: https://notes.z-dd.online/2019/05/21/V4L2%E9%87%87%E9%9B%86%E8%A7%86%E9%A2%91/
参考
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 DD'Notes!
评论