kCVPixelBufferBytesPerRowAlignmentKey的使用

Author:baohonglai
Email:baohonglai@gmail.com
版权所有。转载本BLOG内任何文章,请以超链接形式注明出处。

最近一些项目经常会用到IOS的硬件编解码接口,其中硬件编解码在IOS8以后开发了videotoolbox框架,提供了接口使用。
不过videotoolbox编码用的比较少,常用的硬件写文件的方法采用的是AVAssetWriter接口,videotoolbox主要用于解码。不过这两套接口都需要配置一些参数,其中一个个人觉得比较容易出问题的就是kCVPixelBufferBytesPerRowAlignmentKey这个参数,它在官方文档中介绍的比较少。我的理解是视频帧的cvpixelbuffer中每行占用的内存按照多少位对齐,如果不设置,默认多少位对齐,还没研究清楚。
在视频编解码时,因为需要创建CVPixelBuffer,如果不明确设置
kCVPixelBufferBytesPerRowAlignmentKey ,对于视频的宽高如果不被16整除的话,在某些机型就会出现用OpenGL渲染时花屏的bug,因为一般OpengGL对pixelBuffer的每行的占用空间是有限制的,一般要求按16位对齐,或者32位对齐。我是在调用VTDecompressionSessionCreate解码之前设置kCVPixelBufferBytesPerRowAlignmentKey 为16 就能避免这个问题。
而在编码调用CVPixelBufferCreate 创建pixelBuffer的时候 NSDictionary *pixelAttributes = (id)kCVPixelBufferBytesPerRowAlignmentKey:@(32)};
以上只是个人在项目中遇到的问题以及解决办法,如有更好的办法,请留言指出

版权所有。转载本BLOG内任何文章,请以超链接形式注明出处。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值