参与启智社区开源项目心得分享——韩冰杰

1. 天璇项目简介

2019年3月,第六十八次AVS会议完成AVS3-P2基准档次制定工作,AVS3作为新一代视频压缩标准,相比上一代标准AVS2和HEVC,可节省近30%码率。会议之后,北京大学深圳研究生院数字媒体研究中心王荣刚老师团队便开始着手AVS3解码器开发,并于2019年12月同时在鹏城实验室启智开源平台和Github开源,项目代号为“天璇”,又名“uAVS3d”。开源之时,uAVS3d已成雏形,解码性能达业界领先水平,并覆盖PC、手机等常用智能设备,开源之后至今(2021年1月13日),又迭代代码60余次,性能、平台适配和代码鲁棒性进一步提升。

uAVS3d支持Android/IOS/Windows/Linux/MacOS等常用系统平台,并针对ARMv7/ARMv8/X86架构处理器做了深度优化,支持高位深(10bit)解码,具备高效的并发性能。在PC端可以实现8K实时解码,在移动端可支持4K 30fps视频实时播放。不论是单线程的解码速度还是解码并行度,uavs3d均大幅领先AV1的开源解码器dav1d和aomdec。

PC端uAVS3d与AV1和HEVC常用解码器的解码性能对比如下:

2. 开发心得

天璇项目于2019年3月启动,5月底即输出x86优化版本,可实现8K视频实时解码,之后又快速推出了Android和IOS版本,快节奏加之高性能引起了业内不少关注。华为在uAVS3d移动版本完成之后的第一时间(开源之前)便与我们接触,针对华为手机做定制性优化;腾讯、百度、爱奇艺、Bigo等视频服务商也在开源前后相继测试跟进,部分厂商已上线应用;uAVS3d的接口文件也已集成至多媒体处理开源平台FFmpeg的主分支,方便第三方集成验证。

取得如今的成果,着实不易,技术层面,uAVS3d之所以能快速成型,与所在团队多年的积累是分不开的,数字媒体研究中心曾先后研发AVS+/AVS2编解码器,已积累大量优秀代码和经验。本人作为项目开发者之一,主要负责解码器的关键模块优化,具体贡献为添加分像素插值、帧内预测、IDCT中DCT2部分、ALF、Deblock、SAO以及其它部分细节模块的SIMD指令实现,SIMD指令覆盖SSE/AVX2/ARMv7/ARMv8,并且bitdepth为8和10的两个版本独立优化;数据结构方面,调整UV分量存储结构,以提升SIMD并行效率。本人是15届北大深研院数字媒体研究中心毕业生,读研期间曾参与AVS2解码器的模块优化,对各模块的SIMD优化细节有一定了解,17年重新加入团队,之后,因项目需要,曾负责AVS2解码器移动端优化,对解码器部分结构调整(UV分量重建像素交织存储,熵解码实现调整)、完善ARMv7/ARMv8汇编,使得AVS2解码器性能追齐业内领先的HEVC解码器。有了uAVS2d的开发经验和代码积累,uAVS3d的模块优化就顺利很多,AVS3的基本框架与AVS2一脉相承,多个模块大同小异,只是AVS3的块尺寸类型比AVS2要多不少,给汇编优化带来一定挑战。个人从uAVS3d项目开发中,收获很多,加深了对编解码框架的理解,移动端开发和汇编代码编码也更加得心应手。

关于项目社区的沟通协作和运营,本人也是受益很大。第一次负责开源项目的运营,项目说明、开源协议选择、版本维护都趟过一些坑,好在选择的开源平台(启智社区和Github)以及版本管理工具(git)功能完善,服务稳定易用,目前项目维护已走上正轨。

最后,给开源社区的开发同僚们分享些个人体会和建议:

  1. 认真对待每个开发细节,项目整体的效能是众多细节实现的集中体现,细节实现水平可能就是项目脱颖而出的关键。

  2. 放平心态,开源意在分享,为后来者铺路,减少重复工作,不宜太计较单个项目的得失。技术讲究厚积薄发,认真写下的每一份代码终是个人积累的财富。

  3. 项目启动之前做好调研分析,选择合适的方向,了解现有工作,预估所能达到的效果,尽可能少做无用功。


上一篇:uavs3d_uavs3e开源项目心得——王振宇
下一篇:最后一页