Line 300:
Line 300:
不仅可以在一个命令中同时配置数据格式,分辨率,帧率,也可以单独修改某一项或某几项。
不仅可以在一个命令中同时配置数据格式,分辨率,帧率,也可以单独修改某一项或某几项。
+
+
=== raw图片格式说明 ===
+
RK3588的VICAP模块支持两种数据保存格式,Compact和Noncompact RAW。可以通过RKCIF的RKCIF_CMD_SET_CSI_MEMORY_MODE ioctl指令修改模式。默认情况下,输出的是Compact RAW格式。
+
[[File:Compact raw and noncompact raw of rk3588 vicap.png|center|thumb|800x800px|Compact raw and noncompact raw of rk3588 VICAP]]
+
<br />
+
====具有填充位的图片格式(Noncompact RAW)====
+
对于10bit深度、12bit深度的像素数据,总是使用两个字节来存储一个像素。这种存储方式方便软件处理,缺点是空间占用较大。根据数据有效数据保存在高位还是低位,又分为high align和low align两种。
+
+
===== Noncompact RAW(high align) =====
+
数据保存到高位,用不到的低位以0填充。RK VICAP支持的一种数据格式。
+
+
===== Noncompact RAW(low align) =====
+
数据保存到低位,用不到的高位以0填充。V4L2标准的'Y10 ' (10-bit Greyscale),'Y12 ' (12-bit Greyscale)格式都是以这种方式存储的。
+
+
后文提到的pixel_layer_convert转换工具,也是将Compact RAW转换为此种存储方式。方便使用图片播放器打开显示。
+
====紧密排列的图片格式(Compact RAW)====
+
像素和像素之间不会进行空bit位填充。
+
+
V4L2标准的'Y10P' (10-bit Greyscale (MIPI Packed)),'Y12P' (12-bit Greyscale (MIPI Packed))格式都是以这种方式存储的。
+
+
==== 行对齐(line stride) ====
+
为了方便对图像进行快速操作,系统通常为每行数据提供行对齐的buffer大小。RK3588使用256字节对齐。
+
+
line_stride = ALIGN_UP(image_width*bits_per_pixel/8,256)
+
+
比如当图像宽度是1456时:
+
+
8bit depth,line_stride=1536。
+
+
10bit depth,preferred_stride=2048。
+
+
12bit depth,preferred_stride=2304。
=== i2c脚本使用说明 ===
=== i2c脚本使用说明 ===