结论:跨度stride尽量设置为16,32,或者64,这样避免出对齐问题;
跨度越大,实际增加的buffer也大一些;
return (CEILING_2_POWER(stSize.u32Width, u32AlignWidth) * \
CEILING_2_POWER(stSize.u32Height,u32AlignWidth) * \
((PIXEL_FORMAT_YUV_SEMIPLANAR_422 == enPixFmt)?2:1.5));
#define CEILING_2_POWER(x,a) ( ((x) + ((a) - 1) ) & ( ~((a) - 1) ) )
上面的返回值实际就是单个缓冲块的大小,我们假设pic_size为720P(即1280*720),计算下面的return返回值:
<假设stride为16>
宽度上的:1295 & (~15) = 101 0000 1111
&111 1111 0000
——————————
101 0000 0000 = 1280
高度上的:735 & (-15) = (1011010000)b = (720)d
<假设stride为64>
宽度上的依然不变,为1280;
高度上的:768,实际缓冲buffer增大了;