隨著近幾年移動終端的蓬勃發(fā)展,上一代視頻編碼標準H265/HEVC已經(jīng)得到廣泛應(yīng)用,但其壓縮效率仍無法滿足大量4K/1080P等高清視頻資源的需求。過大的視頻資源壓縮文件,占據(jù)了存儲空間并吞噬著網(wǎng)絡(luò)帶寬,導(dǎo)致用戶觀看視頻時頻繁卡頓。最新一代視頻編碼標準H.266/VVC標準的出現(xiàn),則給視頻內(nèi)容的發(fā)展提供巨大的潛力。
據(jù)悉,字節(jié)跳動自研的新一代編解碼器BVC已支持H.266/VVC標準,可以在Android、iOS、Linux、MacOS和Windows等平臺上,實現(xiàn)超清、高質(zhì)視頻的實時快速解碼。
H.266/VVC全稱為多功能視頻編碼 (Versatile Video Coding,VVC,也稱為H.266),是聯(lián)合視頻專家組制定的最新一代視頻編碼標準,于2020年7月正式定稿。作為HEVC的繼任者,H.266/VVC能夠在相同的質(zhì)量下將壓縮效率再提升一倍。舉個例子,使用H.265/HEVC編碼標準,用戶觀看一部電影需要1GB的流量,換成H.266/VVC編碼標準后,僅需500MB的流量,并且在智能終端播放的時候,畫質(zhì)可以保持不變。H.266/VVC標準,使高清在線視頻不再是流量吞噬者。
盡管H.266/VVC優(yōu)勢十分明顯,但其解碼復(fù)雜度顯著高于H.265/HEVC標準,終端設(shè)備解碼過程中會出現(xiàn)設(shè)備發(fā)熱、耗電增加以及視頻卡頓的現(xiàn)象,影響用戶觀看體驗。因此,在硬件解碼芯片尚未問世的背景下,如何設(shè)計并實現(xiàn)一款超高性能的VVC軟件解碼器是眾多音視頻公司的重要目標。
在各種設(shè)備上,BVC解碼器可實現(xiàn)對H.266/VVC標準視頻資源的解碼
測試數(shù)據(jù)顯示,根據(jù)國際會議提案JEVT-V128,在搭載A14處理器的iPhone 12上,對于4K分辨率標準測試碼流,BVC單線程平均解碼速度達到了22fps;2線程可以實現(xiàn)4K視頻的實時解碼。對于1080p分辨率標準測試碼流,BVC單線程平均解碼速度是86 fps,即單線程可實時解碼1080p視頻。因此,在高端手機上,BVC解碼器支持流暢播放高清甚至超高清視頻。
圖1 對比不同線程的BVC與VTM-11.0的解碼速度
圖1展示了在iPhone12上,BVC和參考軟件VTM-11.0解碼不同分辨率視頻的速度對比。橫軸依次代表解碼4K、1080p、480p和240p分辨率的視頻;縱軸表示使用VTM-11.0解碼和BVC分別使用1、2、4、6線程解碼的平均幀率,數(shù)值越大表明解碼速度越快。虛線表示各分辨率視頻實時播放的常用幀率。可以看出,BVC僅單線程的解碼速度相較于VTM-11.0就有著6-10倍的巨大優(yōu)勢。
除了上述標準測試碼流外,以BVC編碼器生成的抖音視頻碼流測試顯示,BVC解碼器表現(xiàn)出了強大的解碼性能。在性能遜于iPhone 12的小米6手機上,BVC單線程即可完成1080p視頻的實時解碼;在其它中低端手機上,BVC單線程即可完成對720p視頻的實時解碼。
BVC解碼器的出現(xiàn),使得在各種性能的設(shè)備上均可實現(xiàn)對H.266/VVC標準視頻資源的解碼,并為用戶帶來流暢的觀看體驗。
BVC解碼器如何實現(xiàn)技術(shù)突破
流暢的觀看體驗是如何實現(xiàn)的呢?據(jù)悉,為了有效降低BVC解碼器的計算復(fù)雜度,加快解碼速度,字節(jié)跳動旗下火山引擎多媒體實驗室從并行性、代碼框架、匯編指令和訪存效率等方向進行了優(yōu)化,性能改善顯著。
具體如下:
細粒度的并行算法:BVC支持不同層次的并行算法,包括幀級并行、塊級并行和模塊級并行。幀級并行即同時解碼多個視頻幀,可以充分利用多核CPU的性能,并行程度最高;塊級并行即同時解碼多個解碼塊;模塊級并行即利用CPU的剩余資源,同時處理多個較復(fù)雜的模塊。塊級與模塊級相結(jié)合可以高效降低視頻幀的輸出時延,保障視頻會議和直播等實時場景的流暢體驗。
對流水線友好的代碼框架:BVC有著非常輕量級的代碼框架,更加迎合空間較小、性能較差的移動端設(shè)備。針對各個功能模塊特性,BVC有不同的算法實現(xiàn),盡可能減少了分支跳轉(zhuǎn),提升了CPU流水線的飽和度。
高吞吐量的匯編優(yōu)化:采用高吞吐量的SIMD指令,針對像素幀內(nèi)預(yù)測、幀間插值、量化、變換、重建和環(huán)路濾波等復(fù)雜模塊做匯編優(yōu)化,均達到了數(shù)倍的模塊加速比,最大程度提升CPU的計算效率。
高效的訪存設(shè)計:移動設(shè)備內(nèi)存和緩存空間較小,訪存效率有限,這極大地制約了解碼器的性能。為此,火山引擎多媒體實驗室針對BVC解碼器的訪存進行了優(yōu)化,包括減少內(nèi)存讀寫次數(shù)、集中內(nèi)存使用和提高緩存命中率。優(yōu)化后,訪存不再成為在移動設(shè)備上解碼超高清視頻的瓶頸。
BVC解碼器的單線程達到參考軟件的8.8倍
火山引擎多媒體實驗室使用VVC官方參考軟件VTM-11.0做了一組測試。在通用配置下,生成若干組8比特碼流,打開標準測試條件下的全部工具,包括較復(fù)雜的DMVR、BDOF和ALF等。測試的序列為標準通用測試序列,包括class A、B、C、D、F五類。其中,class F是屏幕內(nèi)容場景,分辨率從480p到1080p不等;class A-D為自然場景,視頻的分辨率分別為4K、1080p、480p和240p。
表1 解碼器速度對比詳細數(shù)據(jù)
在iPhone 12(A14處理器)上,BVC單線程解碼4K分辨率、8比特標準測試碼流的速度平均達到了22fps,是參考軟件VTM-11.0解碼速度的10倍;在使用全部6個線程后解碼速度甚至可達55 fps,最高達到78fps。對于1080p分辨率、8比特標準測試碼流,BVC解碼器的單線程平均解碼速度是86 fps,達到參考軟件的8.8倍。
總結(jié)
BVC解碼器可以實現(xiàn)超清、高質(zhì)視頻的實時快速解碼,展現(xiàn)出在移動端上卓越的解碼能力,對視頻行業(yè)的發(fā)展和H.266/VVC標準的落地起到積極的推進作用。據(jù)著名知識產(chǎn)權(quán)媒體IAM報道,截至2021年2月,字節(jié)跳動在H.266/VVC標準貢獻者排行榜上名列全球第三,占比9.33%。
基于實際應(yīng)用中的問題和挑戰(zhàn),字節(jié)跳動的技術(shù)團隊還將持續(xù)發(fā)力,不斷優(yōu)化BVC解碼器的性能,為新一代標準的落地做出更多貢獻。
火山引擎多媒體實驗室 團隊介紹
多媒體實驗室致力于研究、探索多媒體領(lǐng)域的前沿技術(shù),參與國際、國內(nèi)多媒體方向的標準化工作,為多媒體內(nèi)容分析、處理、壓縮、傳輸、創(chuàng)新交互等領(lǐng)域提供完善的解決方案。目前多媒體實驗室所提供的眾多創(chuàng)新算法已經(jīng)廣泛應(yīng)用在了抖音、西瓜視頻等產(chǎn)品的點播、直播、實時通信、圖片等多媒體業(yè)務(wù),在成本、體驗、能力幾方面賦能業(yè)務(wù),為其提供極致的視頻技術(shù)和產(chǎn)品體驗。