一行有 11 个像素(Width = 11), 对一个 32 位(每个像素 4 字节)的图像, Stride = 11 * 4 = 44.
但还有个字节对齐的问题, 譬如:
一行有 11 个像素(Width = 11), 对一个 24 位(每个像素 3 字节)的图像, Stride = 11 * 3 + 3 = 36.
为什么不是 Stride = 33? 因为它是按 4 字节对齐的.
根据上面道理, 我们可以手动计算 Stride 的值:
1、Stride = 每像素占用的字节数(也就是像素位数/8) * Width;
2、如果 Stride 不是 4 的倍数, 那么 Stride = Stride + (4 - Stride mod 4);
配置系统控制参数 的API
HI_S32 HI_MPI_SYS_SetConf(const MPP_SYS_CONF_S *pstSysConf);
typedef struct hiMPP_SYS_CONF_S { /* stride of picture buffer must be aligned with this value. * you can choose a value from 1 to 1024, * and it except 1 must be multiple of 16.*/ HI_U32 u32AlignWidth; }MPP_SYS_CONF_S;
整个系统中使用图像的 stride 字节对齐数。取值范围:[1, 1024],一般选择 16 字节对齐。静态属性。
这里就要填入16的倍数。