今天在rk3568开发板上测试硬编硬解的时候发现cpu使用率异常的高,之前测试过只跑一个硬解码demo的话cpu使用率在5-10左右,今天测试居然占用到90


经过排查发现是QByteArray拷贝大内存的原因(项目是在Qt上开发):

在mpp解码后得到yuv格式的图像数据,我用QByteArray将图像数据保存并作为函数的返回值。硬解码本身靠 VPU完成,所以 CPU 占用很低;但一旦把解码后的大帧数据(我解码的是1080p的图像,一帧yuv图像占1920 x 1080 x 1.5 ≈ 3MB大小)塞进 QByteArray,就变成了 纯 CPU memcpy,而且每一帧都要拷贝,所以导致cpu使用率飙升。

最后解决方法是不要用QByteArray保存图像数据,而是直接返回指向图像数据的指针和大小。cpu占用高的原因主要还是因为要拷贝的内存太大了。注释掉QByteArray部分后硬解码cpu占用率正常

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐