Xilinx FPGA,“加速”视频质量提升
Photo by?Chris Peeters?from?Pexels
本文內容來自Xilinx 張吉帥在LiveVideoStackCon2019深圳站上的精彩分享,他將重點討論異構計算中非常具有潛力的一部分 —— FPGA,并詳細介紹賽靈思以及其技術生態合作伙伴在有關視頻加速,圖片轉碼等方面的解決方案。
?
文 / 張吉帥
整理 / LiveVideoStack
1. FPGA的優勢
大家好,我是來自Xilinx的張吉帥,隨著視頻內容的火爆,其在網絡上的傳輸量越來越大,對視頻編解碼算力也有了更高的需求;此外,視頻壓縮的標準也在不斷提升,對于H.264視頻編碼壓縮,CPU基本可以勉強支持,但對于H.265、VP9、AV1等更高的視頻編碼標準來說則難以勝任。根據實際數據顯示,相較于CPU與GPU在BASE LAN加速卡上的表現,基于FPGA可以實現對H.265 1080P 120幀/秒的視頻編碼壓縮,并且在壓縮率、壓縮質量以及功耗上都具有更大的優勢。除此之外,與ASIC相比,其性價比會高于FPGA。FPGA還占有相當大一部分市場份額的原因主要是因為FPGA從方案設計開發到實際應用,整體流程周期非常短。
?
?
具體地說,賽靈思所提供的各種硬件加速解決方案,架構通常為FPGA+CPU的異構方式。從開發者或者應用的角度,實際CPU端包含一個應用程序,FPGA端則包含一段二進制的FPGA邏輯代碼。而從使用的角度來看,只需要考慮圖中橫線以上部分的使用,與傳統軟件類似,使用起來相對簡單。
?
?
在實際應用中,FPGA部分實現的是編碼相關的功能,CPU部分則是通過框架加插件的方式實現FFmpeg的應用,并且插件部分已經集成,無需開發,用戶只要簡單調用FFmpeg,即可使用賽靈思高性能的H.264編碼器。
?
?
圖為賽靈思H.264、HEVC、VP9、AV1等FPGA相關IP產品。FPGA異構計算的靈活性體現在我們可以將多種不同IP放入同一芯片,完成多種不同工作。例如GPU或ASIC可以實現編碼相關工作,而對于賽靈思FPGA,我們可以在芯片中加入HEVC和ABRScaler的IP,從而實現多種不同碼率視頻流的生成。除此之外,還有低延遲等更多特性。
?
2. Xilinx Media Accelerator(XMA)
賽靈思提供了一整套的API,即Xilinx Media Accelerator(XMA),用戶可以基于API完成一系列的開發。從CPU通過PCIE到賽靈思芯片,0拷貝的XMA,可以支持多線程、多進程,當然還包括剛才提到的到FFmpeg框架的接口API。
?
2.1 FPGA接入VP9編碼器
與ASIC不同的是,賽靈思FPGA芯片可用于不同工作。例如接入的是VP9編碼器,圖中淺藍色部分為CPU進行的工作,紅色部分為FPGA芯片進行的工作。數據進入芯片,通過CPU完成解碼,進行音頻和視頻的解碼調試,將解碼出的視頻發送至ABR的IP,再將結果傳遞給VP9編碼器,最終與音頻進行調制,生成VP9編碼的音視頻媒體流。
?
2.2 HEVC+VP9編碼視頻流生成
在上述方案的基礎上,只需要加載HEVC的IP,即可在同一芯片中實現VP9編碼視頻流以及生成HEVC編碼視頻流。
?
2.3 人臉識別
?
除此之外,如果我們希望實現視頻中人臉識別的功能,還可以在其中加入Machine Learning的IP。
2.4?同一芯片中可接入多個IP
上述內容中所提到的ABR的IP,H.264的IP,在同一芯片中可以接入多個,并通過CPU進程進行調度。
編碼器多路視頻流輸入、輸出的應用
?
3. 賽靈思實時視頻轉碼架構
如上架構圖所示,賽靈思實時視頻轉碼包含兩種不同的途徑,XMA和OpenCL。按照層次結構,向下劃分為HAL硬件抽象層,驅動以及最底層的數據通道和管理通道。
?
實現編碼器編程所需要了解的XMA的相關API
?
上述XMA相關API事實上是對編碼、解碼等行為的抽象,因此我們可以看到基本上都是初始化的過程,即發送數據到Lower Edge,再到Video Kernel。
?
Video Kernel與芯片中相關IP接入時的代碼
?
文末給出的參考鏈接,github中的代碼可以直接運行
?
如果不需要通過FPGA開發新的功能,只是簡單的使用編碼器,如圖左所示為傳統的FFmpeg框架,如圖右所示為賽靈思編碼器中FFmpeg的調用。
?
點擊【閱讀原文】訪問購票頁面
總結
以上是生活随笔為你收集整理的Xilinx FPGA,“加速”视频质量提升的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 腾讯视频P2P带宽节省率持续提升之路
- 下一篇: 音视频技术开发周刊 | 137