您當前的位置是:  首頁 > 資訊 > 文章精選 >
 首頁 > 資訊 > 文章精選 >

SVT-AV1:開源編解碼最新進展

2020-04-02 09:34:40   作者:Andrey Norkin等  譯 / 蔣默邱澤   來源:LiveVideoStack   評論:0  點擊:


  SVT-AV1是開源的AV1編解碼器實現(xiàn),托管在GitHub上[1]。如我們先前的文章所述[2],英特爾和Netflix自2018年8月以來一直在就SVT-AV1編解碼器框架進行合作。團隊一直密切合作進行SVT-AV1的開發(fā)、交流架構決策;實施新工具并改善壓縮效率。自從項目開源后更多技術合作伙伴和開源社區(qū)為SVT-AV1做出非常多的貢獻。此篇技術博客中,我們將繼續(xù)報告SVT-AV1項目的當前狀態(tài)以及編解碼器的特性與性能。
  原文
  https://netflixtechblog.com/svt-av1-an-open-source-av1-encoder-and-decoder-ad295d9b5ca2
  SVT-AV1代碼庫狀態(tài)
  SVT-AV1代碼庫包括一個AV1編碼和解碼器,它們共享大量的代碼。SVT-AV1解碼器功能齊全,并符合所有三個配置文件(Main,High& Professional)的AV1規(guī)范。
  SVT-AV1編碼器支持所有對壓縮效率有助力的AV1工具。與最新的libaom主版本(AV1參考軟件)相比,SVT-AV1在壓縮效率方面相近,同時在多核平臺上使用其特有的并行化處理功能時編碼延遲顯著降低。
  SVT-AV1中的代碼超過90%是用C語言寫的,可跨平臺進行編譯。除了允許進行更靈活實驗的純C函數(shù)實現(xiàn)之外,編解碼器大量采用了匯編以及針對x86平臺的intrinsic優(yōu)化。了解SVT-AV1的主要功能特性,請關注下一部分。這些功能使得SVT-AV1可以在高壓縮效率競爭力的條件下具有更高的性能。SVT-AV1還包括大量有關編碼器設計的文檔[3],旨在促進新開發(fā)人員快速上手。
  結構特點
  英特爾SVT-AV1開發(fā)的目標之一是創(chuàng)建一種具有高性能和可擴展性的AV1編解碼器。
  SVT-AV1在編碼過程的多個階段實現(xiàn)并行化,這使得它能夠適應可用內(nèi)核的數(shù)量,包括具有大量內(nèi)核線程數(shù)量的最新服務器。這使得SVT-AV1可以在有效縮短編碼時間的同時仍保持現(xiàn)有壓縮率。
  SVT-AV1編碼器使用多維度(基于線程,幀/塊和基于片段)并行、多階段劃分決策、基于塊的多階段和多類別決策以及RD優(yōu)化分類,以在壓縮和性能之間實現(xiàn)有吸引力的折衷。SVT體系結構的另一個特征是開環(huán)分層運動估計,這使得運動估計的第一階段與編碼其余部分解耦過程成為可能。
  壓縮率和性能
  編碼性能
  SVT-AV1在慢速設置下達到與libaom相似的壓縮效率。在編解碼開發(fā)過程中,我們一直在跟蹤https://videocodectracker.dev/站點的壓縮和編碼結果。下圖顯示了隨著時間的推移,SVT-AV1與libaom編碼器相比在壓縮效率方面的改進。請注意,隨著時間的推移,libaom壓縮也在不斷迭代,下面的圖表顯示SVT-AV1趕上了移動的目標。在該圖中,Y軸顯示了根據(jù)三個度量實現(xiàn)與libaom編碼器類似的質(zhì)量所需的額外碼率(以%表示)。該圖顯示了兩種編解碼器中2-pass編碼模式的結果。SVT-AV1使用4線程模式,而libaom運行在單線程模式。研究中常用的1-pass固定QP編碼模式的SVT-AV1結果更具競爭力,如下所述。
  在2-pass編碼模式下隨時間降低的SVT-AV1和libaom之間的BD-rate(8-bit位深)
  下表列出了在Objective-1-FAST[4]測試集上SVT-AV1與libaom的比較結果。為了估計編碼時間,我們使用英特爾?至強?鉑金 8170@2.10 GHz芯片(具有26核52線程核心和96 GB 內(nèi)存)處理并行編碼(這里沒有采用Intel&AMD最新同級芯片處理數(shù)據(jù)可能會有另一番驚喜)。兩個編解碼器都使用16個畫面的雙向分層預測結構。給出了具有固定幀級QP偏移量的單程模式的結果。使用單線程壓縮模式。如下我們計算各種質(zhì)量度量的BD-rate:YUV分量的PSNR、VMAF和MS-SSIM。負的BD-rate表示SVT-AV1編碼相同的質(zhì)量時所需的比特率相對較低。如下所示,與libaom相比,SVT-AV1的編碼時間減少了16.5%,同時壓縮能力略有提高。請注意!編碼時間比率可能因平臺支持的指令集而異。針對libaom主分支(Git Hash Fe72512),在SVT-AV1CS2分支(當前正在并入主分支git hash 3a19f29的開發(fā)分支)上獲得了結果。用于計算BD-Rate的QP值為:20、32、43、55、63。
  在固定QP偏移的1-pass編碼模式下,SVT-AV1與libaom的BD速率。負數(shù)表示達到相同質(zhì)量級別所需的碼率降低。與libaom相比,SVT-AV1的總體編碼時間差是所有序列和QPS的總CPU時間的變化
  *整體編碼CPU時間差以測試的所有序列和QPS的總CPU時間與錨的CPU總時間相比的變化來計算。它不等于每個序列值的平均值。對于每個序列,編碼CPU時間差被計算為該序列的所有QP的總CPU時間的變化。
  由于Objective-1-FAST測試集中的所有序列都有60幀,因此兩個編解碼器都使用一個關鍵幀。已使用以下命令行參數(shù)比較編解碼器。
  libaom參數(shù):
  • 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-
  min-dist=65 --kf-max-dist=65 --end-usage=q --use-fixed-qp-offsets=1 -
  • deltaq-mode=0 --enable-tpl-model=0 --cpu-used=0
  SVT-AV1參數(shù):
  --preset1--scm2--keyint63--lookahead0--lp1
  以上結果證明了SVT-AV1的優(yōu)良客觀性能。此外SVT-AV1還包括一些主觀質(zhì)量工具的實現(xiàn),如果編解碼器配置為主觀質(zhì)量則可以使用這些工具。
  解碼性能
  在Objective-1-FAST測試集上,SVT-AV1解碼器在單線程模式下比libaom略快,在4線程模式下有較大的改進。當使用4線程模式解碼具有多塊的碼流時,我們觀察到比libaom解碼器有更大的速度提升。該測試已在Windows、Linux和MacOS平臺上執(zhí)行。我們相信對于研究解碼器來說性能是令人滿意的,其中折衷方案更傾向于更容易的實驗,而不是生產(chǎn)解碼器所需的進一步優(yōu)化。
  測試框架
  為了幫助確保編解碼器的一致性,特別是對于新的代碼貢獻,所有代碼已經(jīng)被單元測試和端到端測試全面覆蓋。單元測試構建在Google測試框架之上。對于GitHub操作支持的對代碼庫的每個拉取請求,都會自動觸發(fā)單元測試和端到端測試。這些測試支持分片,并且它們并行運行以加快拉取請求的周轉時間。
  此拉入請求的單元和e2e測試通過
  NEXT 未來
  在過去的幾個月里,SVT-AV1已經(jīng)成為一個完整成熟的編/解碼器軟件,提供具有競爭力的壓縮效率和性能折衷。該項目得到了廣泛的單元測試覆蓋和文檔的支持。
  我們希望SVT-AV1代碼庫有助于進一步利用AV1,并鼓勵在當前AV1工具的基礎上進行更多的研究和開發(fā)。我們相信SVT-AV1顯示出的優(yōu)勢使其成為一個很好的實驗和研究平臺。我們邀請工業(yè)界和學術界的同事查看Github上的項目,聯(lián)系代碼庫維護人員詢問問題和意見,或者參加SVT-AV1Open Dev會議[5]。我們歡迎更多的開發(fā)貢獻者參與這個項目。
  參考:
  [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
【免責聲明】本文僅代表作者本人觀點,與CTI論壇無關。CTI論壇對文中陳述、觀點判斷保持中立,不對所包含內(nèi)容的準確性、可靠性或完整性提供任何明示或暗示的保證。請讀者僅作參考,并請自行承擔全部責任。

相關閱讀:

專題

CTI論壇會員企業(yè)