在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)
{BANNED}最佳终调用的是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
阅读(404) | 评论(0) | 转发(0) |