1.1.6.17 Rockchip Image Signal Processor (rkisp1)

Introduction
这个文件记录了Rockchip ISP1驱动程序,它是RK3288和RK3399 SoCs的一部分。驱动程序位于drivers/staging/media/rkisp1下,并使用Media-Controller API。

Revisions
这个ISP存在多个较小的修订版本,这些版本在后来的SoCs中得到了引入。可以在UAPI中的枚举rkisp1_cif_isp_version中找到修订版本,并且可以通过ioctl MEDIA_IOC_DEVICE_INFO返回的struct media_device_info中的hw_revision字段读取运行SoC中ISP的版本。
目前使用的版本有:
• RKISP1_V10:至少用于rk3288和rk3399
• RKISP1_V11:在原始供应商代码中声明,但未使用
• RKISP1_V12:至少用于rk3326和px30
• RKISP1_V13:至少用于rk1808

Topology

 这个驱动程序具有4个视频设备:
• rkisp1_mainpath:用于检索图像的捕获设备,通常具有更高的分辨率。
• rkisp1_selfpath:用于检索图像的捕获设备。
• rkisp1_stats:发送统计信息的元数据捕获设备。
• rkisp1_params:接收来自用户空间的参数配置的元数据输出设备。
该驱动程序有3个子设备:
• rkisp1_resizer_mainpath:用于调整大小和降低样本频率以适合主路径捕获设备的帧。
• rkisp1_resizer_selfpath:用于调整大小和降低样本频率以适合自身路径捕获设备的帧。
• rkisp1_isp:连接到传感器,负责所有ISP操作。
rkisp1_mainpath, rkisp1_selfpath - Frames Capture Video Nodes
这些是主路径和自身路径捕获设备,用于捕获帧。 这些实体是将帧写入内存的DMA引擎。 自身路径视频设备可以捕获YUV / RGB格式。 其输入为YUV编码流,可以将其转换为RGB格式。 自身路径无法捕获Bayer格式。 主路径可以捕获Bayer和YUV格式,但无法捕获RGB格式。 两个捕获视频都支持V4L2_CAP_IO_MC功能。
rkisp1_resizer_mainpath, rkisp1_resizer_selfpath - Resizers Subdevices Nodes
这些是主路径和自身路径的调整大小实体。 这些实体可以将帧放大或缩小,并且还可以更改YUV采样(例如YUV4:2:2-> YUV4:2:0)。 它们在sink pad上还具有裁剪功能。 调整大小实体只能在YUV:4:2:2格式(MEDIA_BUS_FMT_YUYV8_2X8)上运行。 主路径捕获设备支持以Bayer格式捕获视频。 在这种情况下,主路径的调整大小器设置为“旁路”模式-它只是将帧转发而无需操作。
rkisp1_isp - Image Signal Processing Subdevice Node
这是ISP实体。它连接到接收器端口0上的传感器,并使用CSI-2协议接收帧。 它负责配置CSI-2协议。 它在连接到传感器的sink pad 0和连接到调整大小实体的source pad 2上具有裁剪功能。 在sink pad 0上裁剪定义了从传感器获取的图像区域。 在source pad 2上裁剪定义了用于图像稳定器(IS)的区域。
rkisp1_stats - Statistics Video Node
统计视频节点输出正在由rkisp1处理的帧的3A(自动对焦,自动曝光和自动白平衡)统计数据,以及直方图统计信息。应用程序可以使用这些数据,通过rkisp_params节点重新调整驱动程序,从而提高视频流中的图像质量。缓冲区格式由struct rkisp1_stat_buffer定义,用户空间应将V4L2_META_FMT_RK_ISP1_STAT_3A设置为数据格式。
rkisp1_params - Parameters Video Node
rkisp1_params视频节点从用户空间接收一组参数,以在视频流期间应用于硬件,允许用户空间动态修改诸如黑电平、串扰校正等值。缓冲区格式由struct rkisp1_params_cfg定义,用户空间应将V4L2_META_FMT_RK_ISP1_PARAMS设置为数据格式。

Capturing Video Frames Example
在下面的示例中,“rkisp1_isp”的pad 0连接的传感器是imx219。可以使用以下命令以900x800平面格式YUV 4:2:2从selfpath视频节点捕获视频。它使用所有可能的裁剪能力(见下面的解释)

# set the links
"media-ctl" "-d" "platform:rkisp1" "-r"
"media-ctl" "-d" "platform:rkisp1" "-l" "'imx219 4-0010':0 -> 'rkisp1_isp':0 [1]"
"media-ctl" "-d" "platform:rkisp1" "-l" "'rkisp1_isp':2 -> 'rkisp1_resizer_selfpath':0 [1]"
"media-ctl" "-d" "platform:rkisp1" "-l" "'rkisp1_isp':2 -> 'rkisp1_resizer_mainpath':0 [0]"

# set format for imx219 4-0010:0
"media-ctl" "-d" "platform:rkisp1" "--set-v4l2" '"imx219 4-0010":0 [fmt:SRGGB10_1X10/1640x1232]'

# set format for rkisp1_isp pads:
"media-ctl" "-d" "platform:rkisp1" "--set-v4l2" '"rkisp1_isp":0 [fmt:SRGGB10_1X10/1640x1232 crop: (0,0)/1600x1200]'
"media-ctl" "-d" "platform:rkisp1" "--set-v4l2" '"rkisp1_isp":2 [fmt:YUYV8_2X8/1600x1200 crop: (0,0)/1500x1100]'

# set format for rkisp1_resizer_selfpath pads:
"media-ctl" "-d" "platform:rkisp1" "--set-v4l2" '"rkisp1_resizer_selfpath":0 [fmt:YUYV8_2X8/1500x1100 crop: (300,400)/1400x1000]'
"media-ctl" "-d" "platform:rkisp1" "--set-v4l2" '"rkisp1_resizer_selfpath":1 [fmt:YUYV8_2X8/900x800]'

# set format for rkisp1_selfpath:
"v4l2-ctl" "-z" "platform:rkisp1" "-d" "rkisp1_selfpath" "-v" "width=900,height=800,"
"v4l2-ctl" "-z" "platform:rkisp1" "-d" "rkisp1_selfpath" "-v" "pixelformat=422P"

# start streaming:
v4l2-ctl "-z" "platform:rkisp1" "-d" "rkisp1_selfpath" "--stream-mmap" "--stream-count" "10"

v4l2-ctl的"--stream-mmap"什么作用:

--stream-mmap Enable mmap streaming

该选项用于启用mmap流式传输。mmap是一种内存映射I/O技术,可以将文件或设备映射到进程的地址空间中。在视频流传输期间,使用mmap流式传输技术可以有效地减少数据拷贝次数,提高性能。
在上述示例中,传感器被配置为Bayer格式:SRGGB10_1X10 / 1640x1232。应该将rkisp1_isp:0 pad配置为与传感器相同的mbus格式和尺寸,否则会出现“EPIPE”错误。因此,它也被配置为SRGGB10_1X10 / 1640x1232。此外,应将rkisp1_isp:0 pad配置为裁剪(0,0)/ 1600x1200。
裁剪尺寸会自动传播到isp源端口rkisp1_isp:2的格式中。在isp源端口上还配置了另一个裁剪操作:(0,0)/ 1500x1100。 Resizer的sink pad rkisp1_resizer_selfpath应该配置为YUYV8_2X8 / 1500x1100格式,以匹配链接另一侧的格式。此外,在其上也配置了裁剪(300,400)/ 1400x1000。
resizer的源pad,rkisp1_resizer_selfpath:1被配置为YUYV8_2X8 / 900x800格式。这意味着resizer首先从接收到的帧中裁剪出一个(300,400)/ 1400x1000的窗口,然后将此窗口缩放到900x800的尺寸。
请注意,上述示例未使用 stats-params 控制循环。因此,捕获的帧不会经过3A算法,可能质量不好,甚至可能显得暗淡和绿色调。在摄像机中,3A代表自动对焦、自动白平衡和自动曝光控制,这些算法可以使图像得到更好的质量。如果您需要更好的图像质量,请使用正确的相机IQ文件,并确保启用3A算法,以便使图像具有更佳的质量。

Configuring Quantization
驱动程序支持对YUV格式进行有限范围和全范围量化,其中有限是默认值。要在它们之间切换,用户空间应该使用Colorspace Conversion API(CSC)对isp(rkisp1_isp:2)源端口2上的子设备进行配置。在此端口上配置的量化是主路径和自路径视频节点捕获的视频帧的量化。请注意,即使在rkisp1_isp:2上将量化设置为全范围,resizer和capture实体仍将始终报告V4L2_QUANTIZATION_DEFAULT。因此,为了获取已配置的量化,应用程序应从pad rkisp1_isp:2获取它。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值