腾讯云+FFmpeg打造一条完备高效的视频产品链( 九 )
CPU的加速中,首先想到的是线程,本质上说,使用线程能力优化是想充分释放多核的能力,目前对于大部分的PC来说以4线程或8线程居多,但对于Sever来说核数可能会更多,目前的环境多以48或96线程为主,因此在不互相影响的前提下调动多核的积极性是CPU加速所要解决的首要问题。在FFmpeg中,以AVFilter为例,他有一个AVFILTER_FLAG_SLICE_THREADS的标识,很多实现上,是把一个Frame中不相关的数据以行或者列的方式做加速,以我的经验来看,如果程序出现性能问题,首先应该考虑的问题是是否使用了CPU的多线程能力。第二种CPU加速方式是SIMD加速,SIMD汇编优化形式一般有intrinsics、inline assembly、hand-written assembly三种,FFmpeg汇编优化以第三种为主,这是由于intrinsics在封装是有些潜在的性能损失,相同的功能用intrinsics和hand-written assembly去解决,前者可能会引入一些性能损失;而inline assembly的问题在于比较难以跨平台,比如Linux和Windows,而FFmpeg的跨平台是它的目标之一。所以,现在FFmpeg社区更偏向于hand-written assembly方式,另外,大部分的hand-written assembly汇编优化其实是以x264的汇编优化库为基础做的,并且选择nasm为汇编器(不选择yasm是由于它没有支持最新的一些CPU指令)。
推荐阅读
- 腾讯|腾讯49亿日元投资目标明确:3款新游明后年全球发行,强化主力IP
- 腾讯|LPL年度最佳选手,同队最多三人,选谁?
- 腾讯|LPL官方发新歌,JKL被吐槽累死调音师,网友:Lvmao努力在C了!
- 挂机|腾讯网易都不敢做的事,它却做到了!挂机烤火掉神装,能卖上千元
- 大话西游2|大话西游2:五级神兵打造出的克木炮长啥样?答案在这里
- 腾讯|腾讯Q3财报公布,青少年游戏时长仅占比0.7%,目标却远不止此
- 王者荣耀|《英雄联盟》大热 腾讯成大赢家
- 金铲铲之战|为了防腾讯米哈游抢人,游戏厂商也开始内卷,育碧竟被偷家?
- 腾讯|本来能更火的LOL动画,居然被腾讯耽误了?
- 腾讯|10月网吧热力排行榜公布,LOL第一原神第8,前20腾讯占据10款