ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

v4l2_subdev和video_device区分

v4l2_subdev和video_device区分

相关规则

  • 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
image
 
根据以上描述,可以得出:

  • pispbe整体是一个v4l2_device
  • 一个v4l2_device可以包含多个video_device和v4l2_subdev
  • 这里的pispbe有一个v4l2_subdev,4个input类型的video_device,4个output类型的video_device
返回列表