Linux V4L2中的preferred_stride

采用Linux V4L2抓取Image Sensor图形数据时,有时会发现图像所占空间并不符合图像分辨率及bytes_per_pixel所定义的空间,如图像分辨率为400*400,10 bit color depth实际抓取图像却是332800 bytes,理论上图像占用空间为:400*400*2 bytes =320000 bytes,多余的12800 bytes是怎么来的呢?这里就涉及到preferred_stride了。

preferred_stride指一行图像数据需要的内存大小。以Jetson平台为例,它的图像数据是unpacked存储的,即10bit depth和12 bit depth的数据格式下,一个像素占用两个字节。

1.普通情况下,buffer需要64字节对齐。

preferred_stride= ALIGN_UP(width*bytes_per_pixel,64)

比如宽度为3088时:

8bit depth,preferred_stride=3136。

3088/64=48.25,向上取64的整数倍为:49*64=3136

10bit depth,preferred_stride=6208。

3088*2/64=96.5,向上取64的整数倍为:97*64=6208

12bit depth,preferred_stride=6208。

同上

2.如果使用VIC buffer,则需要256字节对齐。

preferred_stride= ALIGN_UP(width*bytes_per_pixel,256)

所以,回到原来的问题上,400*400,10 bit color depth

400*2/64=12.5,向上取64的整数倍为:13*64=832

占用空间为:832*400 bytes=332800 bytes,所以共占用332800 bytes,而非400*400*2 bytes=320000 bytes。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值