相关规则
-
video_device是用户空间可见的设备节点,如摄像头、编解码器;
v4l2_subdev是不可见于用户空间的中间硬件模块,比如sensor、ISP -
一个实体硬件(entity),也可以是 video_device或者v4l2_subdev;两者的结构体内都有media_entity;
但是,v4l2_subdev内部也有video_device,说明v4l2_subdev和video_device并不是完全互斥的!
比如一个v4l2_subdev,如果希望在调试或测试场景下被用户直接控制,就需要创建设备节点,此时该v4l2_subdev也是一个video_device! -
一个video_device,可能是捕获设备(V4L2_CAP_VIDEO_CAPTURE),也可能是输出设备(V4L2_CAP_VIDEO_OUTPUT);
同样,它们也不是完全互斥的,少数硬件两者都是 -
区分捕获设备和输出设备,是从用户的视角看的:
用户往设备中灌图,用户对外提供数据给该设备,那该设备就是输出设备,比如显示设备;
用户从设备中获取数据,那该设备就是输入设备,比如视频采集卡;
pisp-be 中的设备分析
先看下图:http://https://linuxkernel.org.cn/doc/html/latest/admin-guide/media/raspberrypi-pisp-be.html

根据以上描述,可以得出:
- pispbe整体是一个v4l2_device
- 一个v4l2_device可以包含多个video_device和v4l2_subdev
- 这里的pispbe有一个v4l2_subdev,4个input类型的video_device,4个output类型的video_device