
原文
https://netflixtechblog.com/svt-av1-an-open-source-av1-encoder-and-decoder-ad295d9b5ca2
SVT-AV1代碼庫狀態(tài)
SVT-AV1代碼庫包括一個(gè)AV1編碼和解碼器,它們共享大量的代碼。SVT-AV1解碼器功能齊全,并符合所有三個(gè)配置文件(Main,High& Professional)的AV1規范。
SVT-AV1編碼器支持所有對壓縮效率有助力的AV1工具。與最新的libaom主版本(AV1參考軟件)相比,SVT-AV1在壓縮效率方面相近,同時(shí)在多核平臺上使用其特有的并行化處理功能時(shí)編碼延遲顯著(zhù)降低。
SVT-AV1中的代碼超過(guò)90%是用C語(yǔ)言寫(xiě)的,可跨平臺進(jìn)行編譯。除了允許進(jìn)行更靈活實(shí)驗的純C函數實(shí)現之外,編解碼器大量采用了匯編以及針對x86平臺的intrinsic優(yōu)化。了解SVT-AV1的主要功能特性,請關(guān)注下一部分。這些功能使得SVT-AV1可以在高壓縮效率競爭力的條件下具有更高的性能。SVT-AV1還包括大量有關(guān)編碼器設計的文檔[3],旨在促進(jìn)新開(kāi)發(fā)人員快速上手。
結構特點(diǎn)
英特爾SVT-AV1開(kāi)發(fā)的目標之一是創(chuàng )建一種具有高性能和可擴展性的AV1編解碼器。
SVT-AV1在編碼過(guò)程的多個(gè)階段實(shí)現并行化,這使得它能夠適應可用內核的數量,包括具有大量?jì)群司(xiàn)程數量的最新服務(wù)器。這使得SVT-AV1可以在有效縮短編碼時(shí)間的同時(shí)仍保持現有壓縮率。
SVT-AV1編碼器使用多維度(基于線(xiàn)程,幀/塊和基于片段)并行、多階段劃分決策、基于塊的多階段和多類(lèi)別決策以及RD優(yōu)化分類(lèi),以在壓縮和性能之間實(shí)現有吸引力的折衷。SVT體系結構的另一個(gè)特征是開(kāi)環(huán)分層運動(dòng)估計,這使得運動(dòng)估計的第一階段與編碼其余部分解耦過(guò)程成為可能。
壓縮率和性能
編碼性能
SVT-AV1在慢速設置下達到與libaom相似的壓縮效率。在編解碼開(kāi)發(fā)過(guò)程中,我們一直在跟蹤https://videocodectracker.dev/站點(diǎn)的壓縮和編碼結果。下圖顯示了隨著(zhù)時(shí)間的推移,SVT-AV1與libaom編碼器相比在壓縮效率方面的改進(jìn)。請注意,隨著(zhù)時(shí)間的推移,libaom壓縮也在不斷迭代,下面的圖表顯示SVT-AV1趕上了移動(dòng)的目標。在該圖中,Y軸顯示了根據三個(gè)度量實(shí)現與libaom編碼器類(lèi)似的質(zhì)量所需的額外碼率(以%表示)。該圖顯示了兩種編解碼器中2-pass編碼模式的結果。SVT-AV1使用4線(xiàn)程模式,而libaom運行在單線(xiàn)程模式。研究中常用的1-pass固定QP編碼模式的SVT-AV1結果更具競爭力,如下所述。

在2-pass編碼模式下隨時(shí)間降低的SVT-AV1和libaom之間的BD-rate(8-bit位深)
下表列出了在Objective-1-FAST[4]測試集上SVT-AV1與libaom的比較結果。為了估計編碼時(shí)間,我們使用英特爾?至強?鉑金 8170@2.10 GHz芯片(具有26核52線(xiàn)程核心和96 GB 內存)處理并行編碼(這里沒(méi)有采用Intel&AMD最新同級芯片處理數據可能會(huì )有另一番驚喜)。兩個(gè)編解碼器都使用16個(gè)畫(huà)面的雙向分層預測結構。給出了具有固定幀級QP偏移量的單程模式的結果。使用單線(xiàn)程壓縮模式。如下我們計算各種質(zhì)量度量的BD-rate:YUV分量的PSNR、VMAF和MS-SSIM。負的BD-rate表示SVT-AV1編碼相同的質(zhì)量時(shí)所需的比特率相對較低。如下所示,與libaom相比,SVT-AV1的編碼時(shí)間減少了16.5%,同時(shí)壓縮能力略有提高。請注意!編碼時(shí)間比率可能因平臺支持的指令集而異。針對libaom主分支(Git Hash Fe72512),在SVT-AV1CS2分支(當前正在并入主分支git hash 3a19f29的開(kāi)發(fā)分支)上獲得了結果。用于計算BD-Rate的QP值為:20、32、43、55、63。

在固定QP偏移的1-pass編碼模式下,SVT-AV1與libaom的BD速率。負數表示達到相同質(zhì)量級別所需的碼率降低。與libaom相比,SVT-AV1的總體編碼時(shí)間差是所有序列和QPS的總CPU時(shí)間的變化
*整體編碼CPU時(shí)間差以測試的所有序列和QPS的總CPU時(shí)間與錨的CPU總時(shí)間相比的變化來(lái)計算。它不等于每個(gè)序列值的平均值。對于每個(gè)序列,編碼CPU時(shí)間差被計算為該序列的所有QP的總CPU時(shí)間的變化。
由于Objective-1-FAST測試集中的所有序列都有60幀,因此兩個(gè)編解碼器都使用一個(gè)關(guān)鍵幀。已使用以下命令行參數比較編解碼器。
libaom參數:
- passes=1 --lag-in-frames=25 --auto-alt-ref=1 --min-gf-interval=16 -
- max-gf-interval=16 --gf-min-pyr-height=4 --gf-max-pyr-height=4 --kf-
- deltaq-mode=0 --enable-tpl-model=0 --cpu-used=0
SVT-AV1參數:
--preset1--scm2--keyint63--lookahead0--lp1
以上結果證明了SVT-AV1的優(yōu)良客觀(guān)性能。此外SVT-AV1還包括一些主觀(guān)質(zhì)量工具的實(shí)現,如果編解碼器配置為主觀(guān)質(zhì)量則可以使用這些工具。
解碼性能
在Objective-1-FAST測試集上,SVT-AV1解碼器在單線(xiàn)程模式下比libaom略快,在4線(xiàn)程模式下有較大的改進(jìn)。當使用4線(xiàn)程模式解碼具有多塊的碼流時(shí),我們觀(guān)察到比libaom解碼器有更大的速度提升。該測試已在Windows、Linux和MacOS平臺上執行。我們相信對于研究解碼器來(lái)說(shuō)性能是令人滿(mǎn)意的,其中折衷方案更傾向于更容易的實(shí)驗,而不是生產(chǎn)解碼器所需的進(jìn)一步優(yōu)化。
測試框架
為了幫助確保編解碼器的一致性,特別是對于新的代碼貢獻,所有代碼已經(jīng)被單元測試和端到端測試全面覆蓋。單元測試構建在Google測試框架之上。對于GitHub操作支持的對代碼庫的每個(gè)拉取請求,都會(huì )自動(dòng)觸發(fā)單元測試和端到端測試。這些測試支持分片,并且它們并行運行以加快拉取請求的周轉時(shí)間。

此拉入請求的單元和e2e測試通過(guò)
NEXT 未來(lái)
在過(guò)去的幾個(gè)月里,SVT-AV1已經(jīng)成為一個(gè)完整成熟的編/解碼器軟件,提供具有競爭力的壓縮效率和性能折衷。該項目得到了廣泛的單元測試覆蓋和文檔的支持。
我們希望SVT-AV1代碼庫有助于進(jìn)一步利用AV1,并鼓勵在當前AV1工具的基礎上進(jìn)行更多的研究和開(kāi)發(fā)。我們相信SVT-AV1顯示出的優(yōu)勢使其成為一個(gè)很好的實(shí)驗和研究平臺。我們邀請工業(yè)界和學(xué)術(shù)界的同事查看Github上的項目,聯(lián)系代碼庫維護人員詢(xún)問(wèn)問(wèn)題和意見(jiàn),或者參加SVT-AV1Open Dev會(huì )議[5]。我們歡迎更多的開(kāi)發(fā)貢獻者參與這個(gè)項目。
參考:
[1]https://github.com/OpenVisualCloud/SVT-AV1/
[2]https://mp.weixin.qq.com/s/7ZmYrWJH6JrgOSnd0j0w8A
[3]https://github.com/OpenVisualCloud/SVT-AV1/tree/master/Docs
[4]https://tools.ietf.org/html/draft-ietf-netvc-testing-09#section-5.2.5
[5]https://github.com/OpenVisualCloud/SVT-AV1/issues/1134