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)功能完善,服務穩定易用,目前項目維護已走上正軌。
最后,給開源社區的開發同僚們分享些個人體會和建議:
認真對待每個開發細節,項目整體的效能是眾多細節實現的集中體現,細節實現水平可能就是項目脫穎而出的關鍵。
放平心態,開源意在分享,為后來者鋪路,減少重復工作,不宜太計較單個項目的得失。技術講究厚積薄發,認真寫下的每一份代碼終是個人積累的財富。
項目啟動之前做好調研分析,選擇合適的方向,了解現有工作,預估所能達到的效果,盡可能少做無用功。
上一篇:uavs3d_uavs3e開源項目心得——王振宇
下一篇:最后一頁