腾讯云+FFmpeg打造一条完备高效的视频产品链(11)

腾讯云+FFmpeg打造一条完备高效的视频产品链

在性能优化过程中,SIMD优化也面临着一些挑战,一是在使用SIMD优化时需要将算法改造成适合SIMD的算法,这并不总是一件容易的事情,其次需要考虑不同硬件之间的移植性。另外,对于SIMD一般都有内容对齐的需求,且算法上要尽量避免分支使得数据可以流化,同时,算法上的一些操作并不都被SIMD指令支持(相较而言x86的SIMD指令要比arm更为丰富一些);另外,还有考虑不同硬件之间浮点算法的精确性,种种挑战,使得SIMD的优化的使用上并不特别的便利。

2.4.2 GPU优化

腾讯云+FFmpeg打造一条完备高效的视频产品链

当时我基于英特尔的GPU做整个转码链路的优化,Codec解码主要有两套plugins,一套是基于MSDK,类似FFmpeg集成x264后依赖第三方去做解码。第二套思路是基于VAAPI的interface去做,使得整个硬件加速Codec是FFmpeg自身的一部分。除了做Codec的加速以外,团队同时还用OpenCL做了一些AVFiltrer的优化,这两种优化之间各有优势。顺带提及一句,即使GPU已经加速,在API的角度依然无法判断是否使用了GPU资源,这个问题目前只能归结到FFmpeg API的设计缺陷。另外,关于更多GPU的优化问题,可以参考我之前的一些文章(FFmpeg在Intel GPU上的硬件加速与优化)。

推荐阅读