💡
原文中文,约3900字,阅读约需10分钟。
📝
内容提要
本文对比了FFmpeg libswscale和libyuv两个开源库在图像缩放和格式转换方面的性能,发现libyuv在某些场景下比libswscale快几倍,但在RGB下采样方面稍慢。同时,libswscale经过优化后的速度也有所提升。文章还提到了多线程加速和libswscale的汇编优化等方法。最后,作者总结了libyuv在缩放算法和计算精度上的劣势,并给出了选择libswscale和libyuv的建议。
🎯
关键要点
-
FFmpeg libswscale和libyuv是常用的图像缩放和格式转换库。
-
libyuv在某些场景下比libswscale快几倍,但在RGB下采样方面稍慢。
-
libswscale经过优化后速度有所提升。
-
测试环境为macbook pro M1,主要关注ARM架构的性能表现。
-
RGB转YUV测试中,libyuv耗时5ms,libswscale耗时65ms,libyuv速度是libswscale的11倍。
-
RGB下采样测试中,libyuv耗时11ms,libswscale耗时66ms,libswscale依旧很慢。
-
libyuv在缩放和格式转换时需要用户控制,导致耗时增加。
-
libswscale支持多线程加速,4线程耗时14ms,8线程可达9ms。
-
libswscale缺少ARM架构的汇编优化,libyuv在ARM上的优化覆盖全面。
-
libswscale的复杂设计导致在简单场景性能不如libyuv。
-
libyuv支持的缩放模式较少,计算精度差。
-
在算力充足且重视图像质量时,选择libswscale;在算力敏感时,选择libyuv。
🏷️
标签
➡️