CANN文档:VDEC输出格式优化
合理选择VDEC视频解码输出格式和分辨率性能更优【免费下载链接】docs该仓库用于维护cann公共文档项目地址: https://gitcode.com/cann/docs背景说明如果用户需要借助DVPP进行视频解码想要得到RGB格式图片在部分AI处理器上当前视频解码接口aclvdecSendFrame支持输出YUV420SP格式或RGB888格式且支持在解码时对图片进行缩放所以从提升性能的角度可以优化代码逻辑直接调用视频解码接口aclvdecSendFrame输出RGB888格式。图 1VDEC解码输出的组合场景基本原理部分AI处理器上视频解码接口aclvdecSendFrame支持输出YUV420SP格式或RGB888格式可设置接口参数输出不同的格式省去调用acldvppVpcConvertColorAsync进行格式转换的步骤减少接口调用。若视频码流分辨率与模型输入图片的分辨率不一致需要对解码后的图片进行缩放处理也可以在视频解码接口aclvdecSendFrame中设置输出图片的分辨率在解码的同时完成图片的缩放省去单独调用缩放接口的步骤减少接口调用。总结下来可以在视频解码接口aclvdecSendFrame中完成解码缩放色域转换三个功能减少调用接口的数量提升性能。使用示例您可以单击vdec_resnet50_classification获取样例。如果视频解码需要输出RGB888格式并且同时实现缩放功能您需要设置aclvdecSendFrame接口的output参数表示输出图片描述信息中的图片格式、宽、高、宽Stride、高Stride例如//创建输出图片描述信息 acldvppPicDesc picOutputDesc acldvppCreatePicDesc(); //定义输出图片格式、宽、高、宽Stride、高Stride以及存放输出图片数据的内存 uint32_t width 224; uint32_t height 224; uint32_t widthStride 224 * 3; uint32_t heightStride 224; uint32_t size widthStride * heightStride; void *picOutBufferDev nullptr; acldvppMalloc(picOutBufferDev, size); //设置输出图片格式、宽、高、宽Stride、高Stride以及存放输出图片数据的内存 acldvppSetPicDescData(picOutputDesc, picOutBufferDev); acldvppSetPicDescSize(picOutputDesc, size); acldvppSetPicDescFormat(picOutputDesc, PIXEL_FORMAT_RGB_888); acldvppSetPicDescWidth(picOutputDesc, width); acldvppSetPicDescHeight(picOutputDesc, height); acldvppSetPicDescWidthStride(picOutputDesc, widthStride); acldvppSetPicDescHeightStride(picOutputDesc, heightStride); //调用解码接口 aclvdecSendFrame(channelDesc, picInputDesc, picOutputDesc, nullptr, nullptr);【免费下载链接】docs该仓库用于维护cann公共文档项目地址: https://gitcode.com/cann/docs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考