libyuv是Google开源的实现各种YUV与RGB之间相互转换、旋转、缩放的库。它是跨平台的,可在Windows、Linux、Mac、Android等操作系统,x86、x64、arm架构上进行编译运行,支持SSE、AVX、NEON等SIMD指令加速。
最近手上有个项目需要把RGB像素转换为YUV I420,得知libyuv采用了CPU的SIMD指令集,可以大幅提高转换的效率,减少耗时。最开始使用的是cmake生成Visual Studio 项目进行编译,这种编译方法网上有很多,也是最为方便和快速的,但是会出现一些问题:如果编译64位版本,由于Visual Studio不支持64位内联,导致无法启用SIMD指令集,转码效率大幅下降。
通过一番查找,决定试用Google官方的编译方法,在此贴上一个官方的地址:
https://chromium.googlesource.com/libyuv/libyuv/+/master/docs/getting_started.md ,按照官方步骤编译发现坑不少,编译过程遇到一些阻碍,在此分享一个比较完整的步骤: