v4l2-ctl 常用命令(v4l2-subdev篇)

文章介绍了在V4L2框架结合media-framework下,如何将camerasensor、MIPIDPHY等模块组织成video或v4l-subdev节点,通过pipeline处理数据流。利用v4l2-ctl工具可以对sensor的帧率、分辨率、格式等进行查询和设置,同时也列举了如设置曝光、增益和查询timing等操作。建议使用media-ctl配置视频管道。
摘要由CSDN通过智能技术生成

在V4L2框架中,结合media-framework框架的思路,将camera sensor,MIPI DPHY,CSI HOST,VICAP,ISP等模块虚拟成video或者v4l-subdev的节点,以pipeline的链路形式链接在一起,形成数据流,因此使用v4l2-ctl的时候,如果是需要对数据输出的如VICAP或者ISP执行的话,则需要对应相应的video节点,如果是想控制sensor端或者获取sensor驱动的信息的话,则需要对sensor对应的v4l-subdev节点进行执行。

这篇文章简答介绍一下,对sensor或者一些转接芯片的subdev节点的一些常用命令:

①读取subdev帧率信息

v4l2-ctl -d /dev/v4l-subdev2 --get-subdev-fps

ioctl: VIDIOC_SUBDEV_G_FRAME_INTERVAL (pad=0)
        Frames per second: 30.000 (300000/10000)

返回信息可以看出,调用的是VIDIOC_SUBDEV_G_FRAME_INTERVAL 接口

②获取分辨率格式等信息

v4l2-ctl -d /dev/v4l-subdev2 --get-subdev-fmt 

ioctl: VIDIOC_SUBDEV_G_FMT (pad=0)
        Width/Height      : 3280/2464
        Mediabus Code     : 0x300f
        Field             : None
        Colorspace        : Default
        Transfer Function : Default (maps to Rec. 709)
        YCbCr/HSV Encoding: Default (maps to ITU-R 601)
        Quantization      : Default (maps to Full Range)

最终调用的是VIDIOC_SUBDEV_G_FMT的接口,分辨率是3280*2464,格式为raw10

③枚举支持的格式

v4l2-ctl -d /dev/v4l-subdev2 --list-subdev-mbus-codes

ioctl: VIDIOC_SUBDEV_ENUM_MBUS_CODE (pad=0)
        0x300f

调用VIDIOC_SUBDEV_ENUM_MBUS_CODE 接口

④枚举所有的ctrls

这里以HDMI转MIPICSI类型的驱动为例。

v4l2-ctl -d /dev/v4l-subdev10 --list-ctrls                         

User Controls

            audio_sampling_rate 0x00981a80 (int)    : min=0 max=768000 step=1 default=0 value=48000 flags=read-only
                  audio_present 0x00981a81 (bool)   : default=0 value=0 flags=read-only

Image Processing Controls

                 link_frequency 0x009f0901 (intmenu): min=0 max=9 default=0 value=9
                     pixel_rate 0x009f0902 (int64)  : min=0 max=800000000 step=1 default=800000000 value=800000000 flags=read-only

Digital Video Controls

                  power_present 0x00a00964 (bitmask): max=0x00000001 default=0x00000000 value=0x00000000 flags=read-only

⑤设置驱动格式

调用驱动的set_fmt函数设置需要的格式

v4l2-ctl -d /dev/v4l-subdev2 --set-subdev-fmt=width=1920,height=10>
Note: --set-subdev-fmt is only for testing.
Normally media-ctl is used to configure the video pipeline.
ioctl: VIDIOC_SUBDEV_S_FMT (pad=0)

会提示建议使用media-ctl的方式,media-ctl设置节点的格式方式如下:

media-ctl -d /dev/media0 --set-v4l2 '"m00_b_LT7911UXC 5-0043":0[fmt:UYVY2X8/1920x1080]'

⑥设置曝光增益

v4l2-ctl -d /dev/v4l-subdev2 --set-ctrl 'exposure=1216,analogue_gain=10'

⑦设置马达

v4l2-ctl -d /dev/v4l-subdev3 --set-ctrl 'focus_absolute=64'

⑧查询timing(针对HDMI转MIPI类型)

v4l2-ctl -d /dev/v4l-subdev10 --query-dv-timings     
              
        Active width: 640
        Active height: 480
        Total width: 800
        Total height: 525
        Frame format: progressive
        Polarities: -vsync -hsync
        Pixelclock: 25175000 Hz (59.94 frames per second)
        Horizontal frontporch: 16
        Horizontal sync: 96
        Horizontal backporch: 48
        Vertical frontporch: 10
        Vertical sync: 2
        Vertical backporch: 33
        Standards: CTA-861, DMT
        CTA-861 VIC: 1
        Flags: has CTA-861 VIC

  • 8
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人生苦短,菜的抠脚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值